这里写目录标题
- Linux的自我修养
- 文件的含义及其相关基本概念
- Linux下基本指令
- 01. pwd指令
- 02.ls指令
- 03.cd指令
- 04.touch指令
- 05.mkdir指令
- 06.rmdir和rm指令
- 07.man指令
- 08.echo命令
- 09.cp指令
- 10.mv指令
- 11.nano指令
- 12.一条命令
- 13.cat指令
- 14.more指令
- 15.less指令
- 16.head指令
- 17.tail指令
- 18.文件指针
- 19.date指令
- 20.时间戳
- 21.cal指令
- 22.find指令
- 23.which命令
- 24.alias指令
- 25.whereis指令
- 26.grep指令
- 27.zip和unzip指令
- 28.tar命令
- 29.bc指令
- 30.uname指令
- 31.相关热键
- 32.关机
- 33.lscpu指令
- 34.lsmem指令
- 35.df -h指令
- 36.who指令
- 37.whoami指令
Linux的自我修养
Linux是一款开源的操作系统,操作系统是一款管理软件,对上提供良好的(稳定,安全,高效)运行环境,对下管理好软硬件资源,操作系统相当于是包工头,要管理好手底下的工人,又要给老板交工,创造价值,我们写Linux的指令等同于在学习win的基本操作,win系统是图形化界面,Linux虽然有图形化界面,但是以命令行居多,图形化界面和命令行在操作系统层面上没有区别,都是学习操作系统的手段,键盘,鼠标,触摸板也相等于是现有的命令行。那么鼠标和键盘是谁先出现的呢??打字机-》早期键盘-》键盘:只能用键盘进行交互,所以只能通过输入命令行的方式与电脑进行交互,时间久了,就有了命令行的交互方式。鼠标的存在,相比较键盘更符合人类习惯,有了图形化界面的产生。
文件的含义及其相关基本概念
1.如何理解文件??2.如果创造一个空文件会不会占磁盘空间??
文件包括文件的内容和文件的属性(元数据),文件的属性也是数据,包括创建时间,权限等等(博主还没学 完,待补充)所以说一个空文件指的是内容是空文件但是文件属性也是数据所以一个空文件也是会占磁盘的空间的 了,文件=文件内容数据+文件属性数据,对应的学习操作的方法有两个,一个是操作文件内容的方法另一个是操 作文件属性的方法。
2.普通文件vs目录
文件之间,分为普通文件和目录,,目录也是一种特殊的文件,目录是文件夹,能保存其他文件的场所。
3.以.开头的文件在Linux下我们叫作隐藏文件。
-
windows下,文件夹里可以继续放文件夹,同样的在Linux下目录可以放目录也可以放文件,且几乎在任何操作系统下文件的目录组织结构都是一颗多叉树,它的路上节点只能是目录,叶子节点是普通文件和空目录。
-
家目录:特定用户登录时,默认所处的路径,一种是普通用户,一种是root用户,普通用户的家目录是类似于/home/*** 这是叫作某某某用户的工作路径,或者家目录,root用户的家目录是/root,windows同样也具有家目录。
-
路径:路径分为绝对路径和相对路径,用路径来标识文件,我们一般从 / 开始到指定文件下,路径+文件名具有唯一性,一定能找到指定文件。相对路径是相当于自身当前所处的路径,进行文件定位,这就是相对路径。
Linux下基本指令
01. pwd指令
语法:pwd
功能:显示当前用户所在路径。
[root@VM-8-17-centos ~]# pwd
/root
[root@VM-8-17-centos ~]# cd /root/106/lesson4/
[root@VM-8-17-centos lesson4]# pwd
/root/106/lesson4
02.ls指令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
ls默认不显示隐藏文件
-a列出目录下所有文件,包括以.开头的的隐含文件
-al 列出目录下的所有文件及其详细信息,包括以 . 开头的隐含文件。
[root@VM-8-17-centos 106]# ls -al
total 20
drwxr-xr-x 5 root root 4096 Oct 2 10:23 .
dr-xr-x---. 8 root root 4096 Sep 28 10:45 ..
-rw-r--r-- 1 root root 0 Oct 2 10:23 b.c
drwxr-xr-x 2 root root 4096 Oct 2 10:21 lesson4
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson5
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson6
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。ls-l等同于ll
[root@VM-8-17-centos 106]# ls -l
total 12
drwxr-xr-x 2 root root 4096 Oct 2 10:21 lesson4
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson5
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson6
[root@VM-8-17-centos 106]# ll
total 12
-rw-r--r-- 1 root root 0 Oct 2 10:23 b.c
drwxr-xr-x 2 root root 4096 Oct 2 10:21 lesson4
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson5
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson6
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
[root@VM-8-17-centos 106]# ls -R
.:
b.c lesson4 lesson5 lesson6
./lesson4:
a.c
./lesson5:
./lesson6:
-1 一行只输出一个文件。
03.cd指令
Linux系统中,磁盘上的文件和目录组成一颗目录树,每个节点都是目录或者文件
语法:cd 目录名 写cd命令记得加空格!!!
cd不能跟文件名只能进入目录
功能:改变工作目录。将当前工作目录改变到指定的目录下。
我当前的目录树
|-- 106
| |-- lesson4
| | `-- a.c
| |-- lesson5
| `-- lesson6
|-- lesson3
| `-- test.c
`-- test.txt
1.cd+空格+目录名但是cd不是任何目录都能进的,只能进入当前目录下的的目录,而不能进入当前目录下的目录的子目录。
[root@VM-8-17-centos ~]# pwd
/root
我当前处于家目录,所以当前能用cd +目录名的只有106和lesson3两个目录,test.txt是文件。
lesson4,lesson5等都属于106目录下的目录。用例如下:
cd lesson4
-bash: cd: lesson4: No such file or directory
我想直接进入目录lesson4,跨目录进入是不允许的,会报错。
[root@VM-8-17-centos ~]# cd 106
[root@VM-8-17-centos 106]# pwd
/root/106
而进入家目录下(当前目录)的子目录是可以进入的!!!
2.cd+空格 +路径
cd+空格+绝对路径(比较官方,是作为配置文件中的一个配置):绝对路径一定要从根目录-》家目录-》开始,如果是root用户的话,就必须要要从/root/开始,不然就会报错。
错误写法
[root@VM-8-17-centos lesson5]# cd /106/lesson4/
-bash: cd: /106/lesson4/: No such file or directory
正确写法
[root@VM-8-17-centos 106]# cd /root/106/lesson4/
[root@VM-8-17-centos lesson4]# pwd
/root/106/lesson4
便于方便理解,展示当前目录树
|-- 106
| |-- lesson4
| | `-- a.c
| |-- lesson5
| `-- lesson6
|-- lesson3
| `-- test.c
`-- test.txt
cd+空格+相对路径:相对路径是从当前路径出发,要找到自己的目标路径,
现在我们处于/root/106/lesson4这条路径,我现在要找到lesson5,用相对路径怎么做?
[root@VM-8-17-centos lesson4]# cd ../lesson5/
[root@VM-8-17-centos lesson5]# pwd
/root/106/lesson5
用cd …回退到上级目录,也就是106目录,然后再进入lesson5,书写较为简单于绝对路径!!!
3.cd + 空格 + …
回退到上级目录,例子如上。
4.cd+空格+~
立刻回到用户家目录
[root@VM-8-17-centos lesson5]# pwd
/root/106/lesson5
[root@VM-8-17-centos lesson5]# cd ~
[root@VM-8-17-centos ~]# pwd
/root
5.cd + 空格 + -
返回最近访问目录,相当于遥控器的回看功能,回看到你上次看的台,会进入到你上次所在的目录
[root@VM-8-17-centos lesson5]# pwd
/root/106/lesson5
[root@VM-8-17-centos lesson5]# cd ~
[root@VM-8-17-centos ~]# pwd
/root
[root@VM-8-17-centos ~]# cd -
/root/106/lesson5
[root@VM-8-17-centos lesson5]# cd -
/root
04.touch指令
语法:touch [选项]+文件
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间(待补充),或者新建一个不存在的文件。
touch指令就是创建一个新的文件(暂时只需要这么多)
[root@VM-8-17-centos ~]# cd /root/106/
[root@VM-8-17-centos 106]# cd lesson4
[root@VM-8-17-centos lesson4]# touch b.c
[root@VM-8-17-centos lesson4]# tree
.
|-- a.c
`-- b.c
我写到这里终于知道怎么插入图片了!!!直接拖曳(我晕)
05.mkdir指令
语法:mkdir[选项]+目录名
功能:在当前目录下创建一个目录。
常用选项:-p + 空格 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立
好那些尚不存在的目录,即一次可以建立多个目录。
我现在在/root/106/lesson4这个路径下,例子稍微不妥当,但是还是能看出来的
我在lesson4下又创建了一个名叫106的目录,在106的目录下创建了一个叫lesson7的目录,本来我就是想用mkdir -p+路径名创建一个lesson7的目录在大的106目录下,但是这样也ok,刚好可以验证后面的rmdir和rm指令!!!
06.rmdir和rm指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
rmdir -p这种形式就不演示了,也很容易理解,删除了,我懒得再建啦!!!
所有使用者均可使用rm!!!
1.rm指令可以同时删除文件和目录。
2.rm + 空格 + -r
递归删除目录及其目录下所有文件。
用rm -r指令成功删除了lesson7目录和目录下的d.c文件,rm指令会询问你是否要删除d.c文件和lesson7这个目录y代表yes,n代表no,会提醒你是否会误操作。
3.rm -f指令是强制删除,即使文件只有只读属性
f 可以理解为force,所以有rm -rf这种指令,也很好理解,递归强制删除指令的目录及其内部文件!!!
rm -r /这种指令千万不要试,强制删除根目录及其内部文件,这样的话操作系统直接就挂了,Linux是一个企业后端服务器,上面会部署很多重要的服务,MySQL数据库等。
问:新员工的身份进入了公司,误删了公司非常重要的数据,仅仅是你的责任吗??
答:你是第一责任人,不一定是主要责任人,第一,新员工怎么能直接接触到公司重要的数据,第二,接触到的数据应该是备份才对,所以尽量还是少使用rm -rf
4.rm -i指令是删除前逐一询问确定
像上述例子一样你需要回答 y 或者是 n 才能继续下面的操作。
07.man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是
man。
语法: man [选项] 命令
man指令是manual的缩写,可以理解成为一本手册,是一个查看系统命令(Linux),系统接口(比如说fork),C接口的一个手册!!手册是有编号的。
重点理解前三本手册(编号为1/2/3)的手册就ok,一号手册命令手册,二号手册系统接口,三号手册C的库函数,因为Linux是用C写的,所以具有C手册,而没有Cpp手册,想要查Cpp手册,可以去Cplus网站上去查。
man默认是从1号手册开始查找,找到即停。
man可以根据指定手册查找man 1/2/3 命令/接口/C
同样你不知道man如何用??可以man man
退出man 手册 按q退出
man 1 cp
man 2 fork
man 3 scanf
1 2 3代表他们在几号手册,我可以根据我所知道的类型命令,在查找时,精准定位到哪一本手册,如若不加数字,默认从第一本开始找起!!!上下左右按键可以观看手册!!!
08.echo命令
1.echo命令是在显示器上显示的一个命令,但是不能格式化输出
2.echo配合>可以将内容重定向到一个文件里。如果文件不存在,会自动创建一个文件。
待补充…
例子 1
[root@VM-8-17-centos ~]# echo "hello zjn"
hello zjn
[root@VM-8-17-centos ~]# echo "hello zjn %s"
hello zjn %s
例子 2
[root@VM-8-17-centos ~]# tree
.
|-- 106
| |-- b.c
| |-- lesson4
| | |-- a.c
| | `-- b.c
| |-- lesson5
| `-- lesson6
|-- lesson3
| `-- test.c
`-- test.txt
5 directories, 5 files
[root@VM-8-17-centos ~]# cd 106
[root@VM-8-17-centos 106]# cd lesson5
[root@VM-8-17-centos lesson5]# echo "hello 106" > file.txt
[root@VM-8-17-centos lesson5]# cat file.txt
hello 106
[root@VM-8-17-centos lesson5]# tree
.
`-- file.txt
0 directories, 1 file
09.cp指令
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,
则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存
在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
1.将源文件拷贝到到指定目录下,并自动生成一个名字一样的拷贝文件,源文件不受影响,拷贝不是剪贴
2.将源目录拷贝到目标目录
拷贝目录,要用递归拷贝,用cp -r
很明显我把cp_file这个目录拷贝到上级目录,然后进行删除,综合运用了,rm指令,相对路径和cp指令!!!
3.cp -i就是询问你是否要拷贝,因为拷贝命令如果文件名相同的话是直接覆盖源文件的
10.mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) fifiles),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
1.move类似剪贴功能,move,移动文件或者目录
2.对文件或者目录进行重命名
例子1
我创建了一个mv_test的目录,将file.txt移动到了mv_test的目录下,然后再将cp_file这个目录移动到了mv_test这个目录下。
例子2
重命名前
重命名后
[root@VM-8-17-centos mv_test]# mv file.txt file1.txt
[root@VM-8-17-centos mv_test]# tree
.
|-- cp_file
| `-- file.txt
`-- file1.txt
Linux下删除文件,就真的删了,有一定概率可以恢复,但是非常麻烦
11.nano指令
类似于记事本,查看大文本。
语法:nano + 文件名
ctrl + x退出记事本
12.一条命令
cnt=0; while [ c n t − l e 10000 ] ; d o e c h o " h e l l o 106 [ cnt -le 10000 ] ; do echo "hello 106 [ cnt−le10000];doecho"hello106[cnt]"; let cnt++; done > test.txt
形成一万行代码的大文本。
13.cat指令
语法:cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
1.显示文本内容
2.显示带行号的文本内容
注意:cat vs tac
命令反过来了,打印的内容也反过来了,是打印的内容顺序反过来了。
但是cat指令并不适合查看大文本,只适合查看小文本和代码片段!
14.more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat
常用选项:
-n 对输出的所有行编号//more - 123会跳转到123行的代码
q 退出more
more命令好处在于,它不会一下显示大文本的全部内容,它会显示整个屏幕自动停止显示,用enter键完成下翻功能。
查找:语法:/ + 查看的文本内容
more命令还有查找功能,查找指定文本,为了验证,我用nano test.txt进入到文本内容里面去,将146行的代码改成了test 106,验证如下:
146行代码,被搜索出来了!!!
15.less指令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法: less [参数] 文件
功能:
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前
不会加载整个文件。
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
less整体用法和more一样,less能上下翻动文本,而more不行,less支持查文本,并且查到的文本会高亮,所以一般用less,但是less不支持查行号文本。我就不验证了。
补充:大文本的含义
大文本:大型代码和日志
日志:如果程序挂掉了,去查看日志,记录着程序的状态,要从后面往前面看,去找代码哪里出了问题、
16.head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然就是看档案的结尾。
语法: head [参数]… [文件]…
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:-n<行数> 显示的行数
1.不带 - n默认输出前十行
[root@VM-8-17-centos ~]# head test.txt
hello 106 [0]
hello 106 [1]
hello 106 [2]
hello 106 [3]
hello 106 [4]
hello 106 [5]
hello 106 [6]
hello 106 [7]
hello 106 [8]
hello 106 [9]
*2.*带-n,n是个具体的数字,输出前n行
17.tail指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f fifilename会把fifilename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
语法: tail+[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文档。tail用法对比head,不多解释,用例子来理解。
一个问题
如何打印[1000-1010]行的代码???
***1、***临时文件的方案
可以借助一个临时的文件tmp.txt,用head -1010 test.txt将1到1010行的代码重定向到tmp.txt这个文件里面,然后现在的目标代码行,变成了临时文件的尾巴,再用tail -10 tmp.txt打印到屏幕上。
***2、***管道
1.
都是传输资源的
2.
都要一个入口,一个出口
注意:只学习管道的命令行操作
后面,进程间通信的时候,专门来讲管道的原理和实现编码
head -10 test.txt | tail -10
head默认是往显示器打印的,tail默认是从文件中读取数据的
这里可以粗俗理解为加了管道之后 head 将内容打印到管道里,tail从管道里拿内容。
像管道一样一边出一边进。详细理解及实现等后面补充!!!
补充问:怎样实现得到1000-1010行代码,并且将它逆置,取得前三行代码???
18.文件指针
stdin:标准输入
stdout:显示器
stderr:显示器
他们都对应的是FILE*的指针,文件指针,所以说,键盘、显示器都是文件
Linux下一切皆文件。Linux设计哲学(待补充)
19.date指令
直接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
注意,date里面可以用任何标识符,增添在时分秒,年月日中间,但是不能加空格,加空格就错误,一般选项后面加空格,时分秒年月日是一个整体。
2.设定时间
有待补充…
20.时间戳
含义:代表的是从1970年1月1日的00:00,到现在为止,开始经历过的秒数。
date +%s //将现在的时间变成时间戳
时间戳线性递增!!!
时间戳很重要
date +%Y.%m.%d-%H:%M:%S -d@0
为什么是8时0分0秒,因为我们这里和格林威治时间有八个小时的时差,我们在东八区。
时间戳可能会溢出!!!千年虫危机,有兴趣可以了解!!!攻击银行就是把银行的时间戳搞乱,这可是很刑的!!!(开个玩笑)大家也不用担心,不出意外的话,这个时间戳可能会送我们走,笑死了。
21.cal指令
cal是calenda的缩写,代表日历。
1
cal -1显示本月日历
2
cal -3显示上,本,下三个月日历
3
cal -年份显示本年日历
22.find指令
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很
多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系
统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件
目前需要掌握的是 -name选项
[root@VM-8-17-centos ~]# find /root -name a.c
/root/106/lesson4/a.c
find /root -name test.txt
/root/test.txt
find命令有可能会访问磁盘,从而使效率变得低下。
待补充。
23.which命令
功能:which命令搜索指令在哪个路径下
[root@VM-8-17-centos ~]# which pwd
/usr/bin/pwd
[root@VM-8-17-centos ~]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@VM-8-17-centos ~]# which mkdir
/usr/bin/mkdir
which只用来搜索命令
24.alias指令
功能:对指令进行重命名,相当于给命令起别名
用上面所学的which指令作出如下演示
1.
首先可以发现alias的语法是
alias+空格+指令=''
2.
其次可以发现ll的底层也是根据ls来实现的,都在/usr/bin/ls下
下面我们自己来用一用alias
我们将Judy命令成了ls指令 和 ls指令有着同样的效果。
25.whereis指令
#在特定的路径下,查找指定的文件名对应的指令或者文档,近似查找。
搜索范围大小比较:which<where<find
26.grep指令
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
grep:文本内容的行过滤工具,默认会匹配文本中的关键字,匹配上的进行行显示。
grep -n/i '查找内容' 文件名字
Eg:
1.
grep普通查找
2.
grep -n查找,显示所在内容行号
3.
grep -i,i可以理解为ignorance。
也可以两个选项综合
4.
grep -v
grep -v '99' test.txt// 这条代码是将不包含99的显示出来
反向选择!!!
补充:
1.
grep可以配合其他命令,以及管道一起使用。
2.
wc命令可以统计行数
[root@VM-8-17-centos ~]# grep '999' test.txt | wc -l
19
3.
sort命令可以排序,以行为单位,按照ASCII码表排序
4.
uniq命令会去掉重复行
27.zip和unzip指令
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
注意:zip默认对一个目录进行打包压缩的话,只会对目录文件本身进行打包压缩。
[root@VM-8-17-centos ~]# tree//tree一下看一下文件树
.
|-- 106
| |-- b.c
| |-- lesson4
| | |-- a.c
| | `-- b.c
| |-- lesson5
| | `-- mv_test
| | |-- cp_file
| | | `-- file.txt
| | `-- file1.txt
| `-- lesson6
|-- lesson3
| `-- test.c
|-- test.txt
`-- tmp.txt
[root@VM-8-17-centos ~]# mkdir tmp.dir//为了不影响代码,创建了一个临时的tmp的目录
[root@VM-8-17-centos ~]# cd 106//为了压缩lesso4进入到106目录
[root@VM-8-17-centos 106]# zip -r my.zip lesson4//-r 进行递归压缩,压缩目录本身及其所有文件
adding: lesson4/ (stored 0%)//压缩中
adding: lesson4/a.c (stored 0%)
adding: lesson4/b.c (stored 0%)
[root@VM-8-17-centos 106]# ll//显示详细信息,形成了一个my.zip的压缩包
total 16
-rw-r--r-- 1 root root 0 Oct 2 10:23 b.c
drwxr-xr-x 2 root root 4096 Oct 2 21:14 lesson4
drwxr-xr-x 3 root root 4096 Oct 3 10:56 lesson5
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson6
-rw-r--r-- 1 root root 466 Oct 4 22:39 my.zip
[root@VM-8-17-centos 106]# tree
.
|-- b.c
|-- lesson4
| |-- a.c
| `-- b.c
|-- lesson5
| `-- mv_test
| |-- cp_file
| | `-- file.txt
| `-- file1.txt
|-- lesson6
`-- my.zip
5 directories, 6 files
[root@VM-8-17-centos 106]# mv my.zip ../tmp.dir//将文件移动到临时目录
[root@VM-8-17-centos 106]# ll
total 12
-rw-r--r-- 1 root root 0 Oct 2 10:23 b.c
drwxr-xr-x 2 root root 4096 Oct 2 21:14 lesson4
drwxr-xr-x 3 root root 4096 Oct 3 10:56 lesson5
drwxr-xr-x 2 root root 4096 Oct 1 11:07 lesson6
[root@VM-8-17-centos 106]# cd ..
[root@VM-8-17-centos ~]# ll
total 196
drwxr-xr-x 5 root root 4096 Oct 4 22:42 106
drwxr-xr-x 3 root root 4096 Oct 1 11:20 lesson3
-rw-r--r-- 1 root root 168898 Oct 4 18:04 test.txt
drwxr-xr-x 2 root root 4096 Oct 4 22:42 tmp.dir
-rw-r--r-- 1 root root 16060 Oct 3 22:22 tmp.txt
[root@VM-8-17-centos ~]# cd tmp.dir
[root@VM-8-17-centos tmp.dir]# ll
total 4
-rw-r--r-- 1 root root 466 Oct 4 22:39 my.zip
[root@VM-8-17-centos tmp.dir]# unzip my.zip//解压压缩包
Archive: my.zip
creating: lesson4/
extracting: lesson4/a.c
extracting: lesson4/b.c
[root@VM-8-17-centos tmp.dir]# ll
total 8
drwxr-xr-x 2 root root 4096 Oct 2 21:14 lesson4//解压完成
-rw-r--r-- 1 root root 466 Oct 4 22:39 my.zip
[root@VM-8-17-centos tmp.dir]# tree lesson4//压缩的文件目录及其内容
lesson4
|-- a.c
`-- b.c
[root@VM-8-17-centos tmp.dir]# cd ~
[root@VM-8-17-centos ~]# tree
.
|-- 106
| |-- b.c
| |-- lesson4
| | |-- a.c
| | `-- b.c
| |-- lesson5
| | `-- mv_test
| | |-- cp_file
| | | `-- file.txt
| | `-- file1.txt
| `-- lesson6
|-- lesson3
| `-- test.c
|-- test.txt
|-- tmp.dir
| |-- lesson4
| | |-- a.c
| | `-- b.c
| `-- my.zip
`-- tmp.txt
zip -r 你的压缩包(自定义) dir(要打包压缩的目录)
unzip 你的压缩包(自定义) --在当前目录下进行解包解压的功能
**补充:**要解压到指定目录应该怎么做呢?
unzip 你的压缩包 -d +指定目录
lesson6最开始是空目录,解压my.zip之后,有了打包内容。
为什么要打包和压缩呢
在互联网当中有很多大小的文件,方便下载,便于传输,将多个文件,打包成一个文件,不牵扯部分丢失,可以高效传输
28.tar命令
tar [-cxtzjvf] 文件与目录 …
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfifile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
有的命令先不了解,后面用到再补充
例子:
tar -czf my.tgz lesson4//打包并压缩
tar命令后跟选项 c代表create创造一个压缩包,z代表具有gzip属性,要用gzip来压缩,f代表后跟新压缩包的名字。一般用tar来压缩的用tgz做后缀。
tar -xzf my.tgz//解包并解压
用tar命令解压压缩包,命令形式大体一样,将c换成x即可,后跟压缩包的名字。
tar -xvzf my.tgz//带-v显示解压过程
tar -tf my.tgz//-t 不打开压缩文件,直接查看压缩包里面的文件内容
tar -xvzf my.tgz -C ../106/lesson6//-C代表解压到目标路径下
解释:我这里是首先进入到lesson6用rm -rf删除了上个实验留下的解压压缩包,然后回到tmp.dir这个目录,重新解压,用-C选项结合相对路径解压到lesson6,所以仍然有lesson4目录及其文件。
29.bc指令
Linux下的计算器
按quit退出
开始还是以为按q退出,做了一个小小的错误示范。
bc支持命令行操作,和管道操作。
30.uname指令
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类
型,硬件平台类型,操作系统名称
3.10.0-1160.71.1 Linux内核版本
31.相关热键
1.
[Tab]按键—具有『命令补全』和『档案补齐』的功能。
2.
[Ctrl]-c按键—让当前的程序『停掉』,中止在前台的异常程序。
3.
[Ctrl]-d按键—通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可
以用来取代exit,退出当前用户,退出一层。
4.
[Ctrl]-r按键—我们可以写部分命令,回忆写过的命令,左右键选中。
5.
上下翻可以查看历史命令。
6.
命令后+ 反斜杠 也就是 \,可以竖排输入多个选项,\具有续航功能。
32.关机
语法:shutdown [选项] ** 常见选项:**
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
Linux很强大可以永远不关机。
33.lscpu指令
查看cpu的指令
34.lsmem指令
查看内存情况指令
35.df -h指令
查看磁盘结构
36.who指令
查看谁当前正在登陆机器
37.whoami指令
查看我是谁