2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【Linux系统】基本指令(中) {输入输出 重定向 管道;显示时间和日期;打包和压缩

【Linux系统】基本指令(中) {输入输出 重定向 管道;显示时间和日期;打包和压缩

时间:2022-09-11 16:22:57

相关推荐

【Linux系统】基本指令(中) {输入输出 重定向 管道;显示时间和日期;打包和压缩

【Linux系统】基本指令(上) {用户相关操作、查看和切换文件目录、创建删除文件或路径、构建Linux回收机制、查看文件}

2.6 输入输出

echo指令 && printf指令

echo指令——与C语言中的puts类似

语法:echo [OPTION]… [STRING]…功能:将一行文本输出到指定流(默认stdout),文本末尾自动换行。举例:

printf指令——与C语言中的printf类似

语法:printf FORMAT [ARGUMENT]功能:格式化输出到指定流(默认stdout)用法:与C语言中的printf类似,C语言中的格式控制符和转义字符在此命令中通用。举例:

重定向——改变数据的流向

所谓重定向,就是改变数据的来源(输入)或流向(输出)。

重定向符:

输出重定向符:>追加重定向符:>>输入重定向符:<

输出重定向:本应输出到显示器的内容,重定向写入到目标文件中。若目标文件不存在,会自动创建。若存在会清空原始内容,重新写入。

举例:echo -n hello > log.txt

追加重定向:本应输出到显示器的内容,重定向写入到目标文件中。若目标文件不存在,会自动创建。若存在会将内容追加到原始内容之后。

举例:echo linux! >> log.txt

输入重定向:本应由键盘输入的内容,重定向到由指定文件输入。若指定文件不存在,则错误。

举例:cat < log.txt (注意cat指令默认从stdin获取输入)

管道——进行流水线数据处理

管道允许用户将经过处理的文件内容传给下一条指令继续处理。管道符:|举例:我们知道head用来输出文件的前N行而tail输出文件的后N行,那么中间的内容如何输出呢?

这里就用到了管道:

head指令先将test1中的前15行截取出来再将处理过的内容交给tail,将前15行的后5行截取并输出到stdout这样我们就看到了最终结果由此我们可以看出使用管道的时候,隐式的发生了重定向。

2.7 时间相关的指令

date指令——显示日期

date 指定格式显示时间:date +%Y:%m:%d

date 用法:date [OPTION]… [+FORMAT]

1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下

%H : 小时(00…23)%M : 分钟(00…59)%S : 秒(00…61)%X : 相当于 %H:%M:%S%d : 日 (01…31)%m : 月份 (01…12)%Y : 完整年份 (0000…9999)%F : 相当于 %Y-%m-%d

2.在设定时间方面

date -s //设置当前时间,只有root权限才能设置,其他只能查看。date -s 0523 //设置成0523,这样会把具体时间设置成空00:00:00date -s 01:01:01 //设置具体时间,不会对日期做更改date -s “01:01:01 -05-23″ //这样可以设置全部时间date -s “01:01:01 0523″ //这样可以设置全部时间date -s “-05-23 01:01:01″ //这样可以设置全部时间date -s “0523 01:01:01″ //这样可以设置全部时间

3.时间戳

时间->时间戳:date +%s时间戳->时间:date -d@1508749502Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

Cal指令——显示日历

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

命令格式:cal [参数][月份][年份]功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份常用选项:

-3 显示系统前一个月,当前月,下一个月的月历-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)-y 显示当前年份的日历

举例:显示全年日历

Cal –y

2.8 打包和压缩

zip/unzip指令——压缩/解压

zip

语法:zip [-options] file[.zip] [dir/file]功能:将目录或文件压缩成zip格式常用选项:

zip -r 递归处理,将指定目录下的所有文件和子目录一并处理
举例:将test2目录压缩:

zip -r test2.zip test2

unzip

语法:unzip file[.zip] [-d exdir]功能:将.zip格式的压缩包解压常用选项:

[-d exdir] 指明解压路径,若不加选项指明,默认解压到当前路径。
举例:将test2解压到tmp目录:

unzip test2.zip -d /tmp

tar指令——打包/解包

语法:tar [option] [newfile] [target]常用选项:
-c :建立一个压缩文件的参数指令(打包选项);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?-v :压缩的过程中显示文件;常看文件时显示详细信息;-f :使用档名(指定路径),请留意,在 f 之后要立即接档名喔!不要再加参数!-C : 解压到指定目录
举例:范例一:将整个 /etc 目录下的文件全部打包成为/tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩![root@linux ~]# tar -czvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩[root@linux ~]# tar -cjvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

上述指令在执行的时候,会显示一个警告讯息:

tar: Removing leading/" from member names`』那是关於绝对路径的特殊设定。

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,就得要加上 z 这个参数了!这很重要的!加上v选项可以显示包内文件的详细信息。

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

//在当前目录下解压[root@linux ~]# cd /usr/local/src[root@linux src]# tar -xzvf /tmp/etc.tar.gz//在指定目录下解压[root@linux src]# tar -xzvf /tmp/etc.tar.gz -C /usr/local/src

在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,则解开的目录会在/usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc则会发现,该目录下的文件属性与 /etc/(原文件)可能会有所不同喔!如果要在指定目录下解压文件,则要在指定目录前带-C选项。范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

[root@linux ~]# cd /tmp[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 /06/01 新的文件才备份

[root@linux ~]# tar -N "/06/01" -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

[root@linux ~]# cd /tmp[root@linux tmp]# tar -cvf - /etc | tar -xvf -

这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

这分别代表 standard output, standard input 与管线命令啦!

打包vs压缩

打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这 两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另外的工具将这一大堆文件先打 成一个包,然后再就原来的压缩程序进行压缩。

包和文件的区别

1、包是一种特殊的文件夹,不仅可以储存文件而且可以显示文件的状态。而文件夹仅仅能够储存文件。

2、功能不同:包的数据是可以实时更新及备份的而普通文件办不到

3、隶属关系不同:包中的文件来自于其它文件夹,而文件夹内的文件就是自身的

4、权限不同:包可以在不同的电脑或者硬盘与移动盘、U盘之间同步更新文件,而文件夹可以复制粘贴,但是不能方便更新

5、来源不同:文件夹无法追溯内部文件的来源,包可以显示内部文件是否可以链接到主计算机的原始文件,或者某个文件是否为“孤立文件|”

总的来说,包其实是文件的一种,但是文件夹下还可以填充很多层文件,而包只有一层。另外就是包可以在不同的电脑或移动盘中实时更新而文件不行。

【Linux系统】基本指令(下) {其他指令,扩展指令,热键}

【Linux系统】基本指令(中) {输入输出 重定向 管道;显示时间和日期;打包和压缩 包和文件的区别}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。