Linux系统Linux入门(中) {基本指令:输入输出,重定向输入输出,管道,显示时间和日期,打包和压缩,打包VS压缩,包和文件}
Posted 芥末虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统Linux入门(中) {基本指令:输入输出,重定向输入输出,管道,显示时间和日期,打包和压缩,打包VS压缩,包和文件}相关的知识,希望对你有一定的参考价值。
【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 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
- date -s 01:01:01 //设置具体时间,不会对日期做更改
- date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
- date -s “01:01:01 20080523″ //这样可以设置全部时间
- date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
- date -s “20080523 01:01:01″ //这样可以设置全部时间
3.时间戳
- 时间->时间戳:date +%s
- 时间戳->时间:date -d@1508749502
- Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
Cal指令——显示日历
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
- 命令格式: cal [参数][月份][年份]
- 功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
- 常用选项:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
举例: 显示2018年全年日历
Cal –y 2018
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 当中,比 2005/06/01 新的文件才备份
[root@linux ~]# tar -N "2005/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入门(下) 其他指令,扩展指令,热键
Linux的基本指令-Linux从入门到精通第二天
文章大纲
一、指令与选项
二、基础指令(重点)
三、进阶指令(重点)
四、学习资料下载
五、参考文章
一、指令与选项
什么是Linux的指令?
指在Linux终端(命令行)中输入的内容就称之为指令。
一个完整的指令的标准格式:Linux通用的格式
#指令主体(空格) [选项](空格) [操作对象]
一个指令可以包含多个选项
操作对象也可以是多个
例如:需要让张三同学帮忙去楼下小卖铺买一瓶农夫山泉水和清风餐巾纸,在这个指令中“买东西”是指令的主体,买的水和餐巾纸是操作的对象,农夫山泉、清风是操作的选项。
二、基础指令(重点)
1、ls指令
含义:ls (list)
用法1:#ls -a
含义:列出当前工作目录下的所有文件/文件夹的名称
用法2:#ls 路径
含义:列出指定路径下的所有文件/文件夹的名称
关于路径(重要):
路径可以分为两种:相对路径、绝对路径。
(1)相对路径:相对首先得有一个参照物(一般就是当前的工作路径);相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“../”【上一级目录下】。
(2)绝对路径:绝对路径不需要参照物,直接从根“/”开始寻找对应路径;
用法3:#ls 选项 路径
含义:在列出指定路径下的文件/文件夹的名称,并以指定的格式进行显示。
常见的语法:
#ls -l 路径
#ls -la 路径
选项解释:
-l:表示list,表示以详细列表的形式进行展示
-a:表示显示所有的文件/文件夹(包含了隐藏文件/文件夹)
上述列表中的第一列字符表示文档的类型,其中“-”表示改行对应的文档类型为文件,“d”表示文档类型为文件夹。
在Linux中隐藏文档一般都是以“.”开头。
用法4:#ls -lh 路径
含义:列出指定路径下的所有文件/文件夹的名称,以列表的形式并且在显示文档大小的时候以可读性较高的形式显示
参数含义:
2. pwd指令
用法:# pwd (print working directory,打印当前工作目录)
3. cd指令
命令:#cd (change directory,改变目录)
作用:用于切换当前的工作目录的
语法:# cd 路径
案例:当前在“/”下,需要使用绝对路径切换到/usr/local。
补充:
在Linux中有一个特殊的符号“~”,表示当前用户的家目录。
切换的方式:#cd ~
4. mkdir指令
指令:mkdir (make directory,创建目录)
**语法1:# mkdir 路径 **
【路径,可以是文件夹名称也可以是包含名称的一个完整路径】
案例:在当前路径下创建出目录“yunweihenniux”
注意:ls列出的结果颜色说明,其中蓝色的名称表示文件夹,黑色的表示文件,绿色的其权限为拥有所有权限。
案例:在指定路径下创建出一个文件夹“yunweihenniux”
语法2:#mkdir -p 路径
含义:当一次性创建多层不存在的目录的时候,添加-p参数,否则会报错
语法3:#mkdir 路径1 路径2 路径3
【表示一次性创建多个目录】
5. touch指令
作用:创建文件
语法:#touch 文件路径 【路径可以是直接的文件名也可以是路径】
案例:使用touch来在当前路径下创建一个文件,命名为Linux.txt
案例:使用touch来同时创建多个文件
案例:使用touch来在“Linux123”用户的家目录中创建文件,Linux.txt
6. cp指令
指令:cp (copy,复制)
作用:复制文件/文件夹到指定的位置
语法:#cp 被复制的文档路径 文档被复制到的路径
案例:使用cp命令来复制一个文件
注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
案例:使用cp命令来复制一个文件夹
注意:当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
7. mv指令
指令:mv (move,移动,剪切)
作用:移动文档到新的位置
语法:#mv 需要移动的文档路径 需要保存的位置路径
确认:移动之后原始的文件还在不在原来的位置?原始文件是不在原始位置的
案例:使用mv命令移动一个文件
案例:使用mv命令移动一个文件夹
补充:在Linux中重命名的命令也是mv,语法和移动语法一样。
8. rm指令
指令:rm (remove,移除、删除)
作用:移除/删除文档
语法:#rm 选项 需要移除的文档路径
选项:
-f:force,强制删除,不提示是否删除
-r:表示递归
案例:删除一个文件
在删除的时候如果不带选项,会提示是否删除,如果需要确认则输入“y/yes”,否则输入“n/no”按下回车。
注意:如果在删除的时候不想频繁的确认,则可以在指令中添加选项“-f”,表示force(强制)。
案例:删除一个文件夹
注意:删除一个目录的时候需要做递归删除,并且一般也不需要进行删除确认询问,所以移除目录的时候一般需要使用-rf选项。
案例:删除多个文档
案例:要删除一个目录下有公共特性的文档,例如都以Linux开头
其中称之为通配符,意思表示任意的字符,Linux,则表示只要文件以Linux开头,后续字符则不管。
9. vim指令
指令:vim (vim是一款文本编辑器)
语法:#vim 文件的路径
作用:打开一个文件(可以不存在,也可以存在)
案例:使用vim来打开文件
退出打开的文件:在没有按下其他命令的时候,按下shift+英文冒号,输入q,按下回车即可
10. 输出重定向
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
>:覆盖输出,会覆盖掉原先的文件内容
>>:追加输出,不会覆盖原始文件内容,会在原始内容末尾继续添加
语法:#正常执行的指令 > / >> 文件的路径
注意:文件可以不存在,不存在则新建
案例:使用覆盖重定向,保存ls -la 的执行结果,保存到当前目录下的ls.txt
案例:使用追加重定向,保存ls -la的执行结果到ls.txt中
11. cat指令
作用1:cat有直接打开一个文件的功能。
语法1:# cat 文件的路径
作用2:cat还可以对文件进行合并
语法2:#cat 待合并的文件路径1 待合并的文件路径2 …. 文件路径n > 合并之后的文件路径
例如,合并3个文件,并存到一个文件中【配合输出重定向使用】
三、进阶指令(重点)
1. df指令
作用:查看磁盘的空间
语法:# df -h
-h表示以可读性较高的形式展示大小
2. free指令
作用:查看内存使用情况
语法:# free -m
-m表示以mb为单位查看
剩余的真实可以用的内存为1665mb。
Swap:用于临时内存,当系统真实内存不够用的时候可以临时使用磁盘空间来充当内存。
3. head指令
作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。
语法:#head -n 文件路径
【n表示数字】
4. tail指令
作用1:查看一个文件的未n行,如果n不指定默认显示后10行
语法:#tail -n 文件的路径
n同样表示数字
作用2:可以通过tail指令来查看一个文件的动态变化内容【变化的内容不能是用户手动增加的】
语法:#tail -f 文件路径
该命令一般用于查看系统的日志比较多。
5. less指令
作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多
语法:#less 需要查看的文件路径
在退出的只需要按下q键即可。
6. wc指令
作用:统计文件内容信息(包含行数、单词数、字节数)
语法:# wc -lwc
需要统计的文件路径
-l:表示lines,行数
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数
7. date指令(重点)
作用:表示操作时间日期(读取、设置)
语法1:#date 输出的形式:2018年 3月 24日 星期六 15:54:28
语法2:#date +%F (等价于#date “+%Y-%m-%d” ) 输出形式:2018-03-24
语法3:#date “+%F %T” 引号表示让“年月日与时分秒”成为一个不可分割的整体
等价操作#date “+%Y-%m-%d %H:%M:%S”
输出的形式:2018-03-24 16:01:00
语法4:获取之前或者之后的某个时间(备份)
#date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
符号的可选值:+(之后) 或者 - (之前)
单位的可选值:day(天)、month(月份)、year(年)
%F:表示完整的年月日
%T:表示完整的时分秒
%Y:表示四位年份
%m:表示两位月份(带前导0)
%d:表示日期(带前导0)
%H:表示小时(带前导0)
%M:表示分钟(带前导0)
%S:表示秒数(带前导0)
8. cal指令
作用:用来操作日历的
语法1:#cal 等价于 #cal -1 直接输出当前月份的日历
语法2:#cal -3 表示输出上一个月+本月+下个月的日历
语法3:#cal -y 年份 表示输出某一个年份的日历
9. clear/ctrl + L指令
作用:清除终端中已经存在的命令和结果(信息)。
语法:clear 或者快捷键:ctrl + L
需要注意的是,该命令并不是真的清除了之前的信息,而是把之前的信息的隐藏到了最上面,通过滚动条继续查看以前的信息。
10. 管道(重要)
管道符:|
作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
①过滤案例(100%使用):需要通过管道查询出根目录下包含“y”字母的文档名称。
#ls / | grep y
针对上面这个命令说明:
①以管道作为分界线,前面的命令有个输出,后面需要先输入,然后再过滤,最后再输出,通俗的讲就是管道前面的输出就是后面指令的输入;
②grep指令:主要用于过滤
②特殊用法案例:通过管道的操作方法来实现less的等价效果(了解)
之前通过less查看一个文件,可以#less 路径
现在通过管道还可以这么:#cat 路径|less
③扩展处理:请使用学过的命令,来统计某个目录下的文档的总个数?
答:#ls / | wc -l
四、学习资料下载
链接:https://pan.baidu.com/s/1hYUje_CFlTsm1fj0T4d84Q
提取码:rt18
五、参考文章
https://blog.csdn.net/w1416520110/article/details/79987578
以上是关于Linux系统Linux入门(中) {基本指令:输入输出,重定向输入输出,管道,显示时间和日期,打包和压缩,打包VS压缩,包和文件}的主要内容,如果未能解决你的问题,请参考以下文章