- more
- less(自由查找)
- head (查看头部的内容)
- tail(查看尾部的内容)
- wc(统计文本行数)
- date(显示时间)
- 时间戳
- cal(日历)
- find(查找文件)
- grep(读取文件中带有的关键字)
- zip和unzip(打包压缩和解压)
- tar(打包/解包,不打开它,直接看内容)
- 例子1(将整个 /etc 目录下的文件全部打包成为 `/tmp/etc.tar)
- 例子2(查阅上述 /tmp/etc.tar.gz 文件内有哪些文件)
- 例子3(将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下)
- 例子4(在 /tmp 下,将 /tmp/etc.tar.gz 内的 etc/passwd 解开)
- 例子5(将 /etc/ 内的所有文件备份下来,并且保存其权限)
- 例子6(在 /home 当中,将 2005/06/01 新的文件才备份)
- 例子7(备份 /home, /etc ,但不要 /home/dmtsai)
- 例子8(将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件)
- sz
- rz将电脑桌面的压缩包传输到云服务器上
- bc(计算器)
- uname –r(获取电脑和操作系统的相关信息)
- 热键Tab Ctrl+C Ctrl+D
more
之前我们所用的指令大多适用于小文件,当遇到大文件时效果就不是那么好了
下面是用于制造出大文件的操作
补充1(echo和>)重定向
Linux有一个指令叫做echo,echo"hello Linux"是将hello Linux打印到屏幕上
当输入echo"hello Linux" > log.txt时发现hello Linux并没有打印到屏幕上(log.txt是一个文件,但在之前并没有创建)
当输入ll指令时发现log.txt出现了
用cat指令打印log.txt文件内容,发现hello Linux已经写入文件里了
上面例子中我们加入一个>符号就创建出了一个不存在的文件,这里会有人说会不会需要echo+>才可以创建出文件,其实不是的,我们看看下面的例子
输入echo指令后发现没有多出来的文件
而后面输入echo > file.txt可以创建出文件file.txt
当值输入> new.txt后发现new.txt被创建出来了
下面来讲解一下这个原理,Linux有个理念叫做一切皆文件
对于仍会文件来说我们的操作都是读和写文件,而显示器我们也可以理解成显示器文件, 所以我们对显示器的操作也是读和写
因此echo "hello Linux"我们可以理解成将hello Linux写入显示器文件中,让显示器文件打印在屏幕上
echo “hello Linux”>xxx.txt则表示将应该写入显示器文件的数据写入了xxx文件中,这种操作叫做重定向,因为是输出,所以叫做输出重定向
之前log.txt我们输入了hello Linux,那么如果我们再输入jack,结果是否会变成hello Linuxjack呢
根据结果来看是不会的,jack覆盖了原来的内容
当echo什么都不输入的时候,log.txt什么都没有(其实有一个换行符)
或者我们在已经存在log.txt文件时输入> log.txt,此时log.txt就真的什么都没有了(换行符也没有)
根据上面的例子可以得出结论,每次进行重定向时,都会从文件开始写入文件,当想创建一个空文件或清空一个文件时,直接输入> xxxx.txt就可以了
补充2>>(追加重定向)
要想不覆盖原来所输入的数据时,我们可以使用>>也就表示追加
这个的本质就是每次在写入时都是在文件的结尾处写入
补充3
首先我们先创建一个code.c的文件,然后输入下面的代码
在一开始我们没有创建log.txt文件,所以没有显示,但是上面的代码却是打开log.txt文件
当我们运行之后发现又有了log.txt文件了
所以我们得出一个结论就是当我们以写方式打开一个不存在的文件时,他会自动帮我们创造出一个文件
当我们向log.txt里面写入数据时,用ll指令可以看到log.txt占5个字节
code.c文件我们只是进行了打开和关闭,并没有其他的任何操作
当我们运行后log.txt文件所占大小为0字节,且cat log.txt没有打印里面的内容,这说明log.txt文件内容被清空了
所以当我们用写方式打开文件内容时,在打开之前都会把文件内容清空
补充4
之前的操作只是打开和关闭文件,现在我们多了一步输入数据,用fputs函数进行操作,代码如下
通过gcc编译后log.txt文件会被清空,运行之后log.txt就会被写入数据
当我们多次运行之后发现log.txt的内容没有变化,这是因为我们用的是"w",他的意思是只写,但是没有追加写的意思,如果要追加写的话应该用"a"
只有这里发生了变化
这样后当我们多次运行log.txt的内容会越来越多,并且这样也说明了当我们用"a"的时候文件内容是不会被清空的,因为是追加写,所以必须要有之前的内容
制造大文件
制造大文件我们不可能一直慢慢的在文件后面追加,Linux上也有循环指令,输入下面的这个指令就可以创建出大文件了,注意这里的i是变量,$i表示的循环过程中i的值,如果中间的格式不正确会运行不了(我自己就试了好几次),所以这里了解一下就可以了
但是在这里我还想说一下就是我们可以不用上面那种方法,而是直接在code.c里面进行用C语言的循环制造大文件
more 命令的使用
面对大文件时我们很难查找到最开始的数据,比如我们想要看第一行,我们可能会慢慢的往上滑动去找,但是有了more命令后我们输入more log.txt就可以一行一行的去查找,如果想要直接跳到某一行, 比如跳到100行,我们就输入/100,这里的100是关键字,当查找完后我们可以按Q+回车退出
less(自由查找)
less指令和more指令方法一样,但是less指令可以支持上查找,而more只能下查找和输入关键字查找
head (查看头部的内容)
有时我们只想查看一个文件的前几行内容,我们只需要输入head+文件名就可以了
如果我们想要查看前20行内容,那么就输入head -20 +文件名
tail(查看尾部的内容)
tail指令和head用法一样
tail+文件名查看尾部的内容
tail -20 +文件名查看尾部20行的内容
查找中间部分方法
方法一(思路)
比如我们想要取11行到20行的内容
我们可以先用head指令再加上重定向符号>,将数据输入到一个临时文件
head -20 log.txt>tmp.txt表示的是取前20行内容到tmp文件里
然后我们再用tail指令去尾部10行就可以了
但是这个方法的缺陷就是要重新创建一个文件
方法二
对于上面要去11行到20行的内容,可以直接输入head -20 log.txt | tail -10,这里的 | 叫做管道
这个管道的意思就是数据从head -20 log.txt里面拿,然后放入管道中,之后要用数据的时候再到管道里面拿
这个管道的用法有很多,比如我们要对中间数据逆置可以输入head -20 log.txt| tail-10 | tac
wc(统计文本行数)
输入wc -l可以统计有多少行数
如果我们想要统计log.txt的行数我们可以输入wc -l log.txt
同时也可以用管道来统计文本行数 head -20 log.txt | tail -10 | wc -l
date(显示时间)
如果我们之间输入date的话就会出现下面这样的时间
这样的显示时间不符号我们日常的习惯,所以我们通常输入date +%…
其中M表示的是分钟,m表示的是月份,总的来说这些字母就是英文的首个字母
连续打印的话可以在每个字母之间用 : 隔开(不一定非要用 : )
时间戳
输入date +%s时的时间是一直变化的,这个时间其实是一个相对时间
但是那个时间我们是看不懂的,如果想要看懂可以像下面这样输入
date +%Y:%m:%d:%H:%M:%S -d @1725859896
当输入@0时就会出现最开始的时间(北京时间)
cal(日历)
输入cal可以直接打印出日历
直接输入cal +年可以查看这个年的所以日历
输入cal -3可以查看最近三个月的日历
find(查找文件)
find+路径 -name +xxx文件名 就是在指定路径下查找名字叫xxx的文件名
find / -name log.txt 表示的是在根目录下开始查找叫log.txt的文件,因为是根目录,所以在查找的时候要过一会才找的到
grep(读取文件中带有的关键字)
格式就像grep “关键字” xxx文件
输入grep “jack” log.txt就是在log.txt里面查找带有jack关键字的内容
当使用grep -n时可以让带有关键字的内容加上他们在原内容上的行数
grep -v表示的是不显示带有关键字的内容
grep -i表示显示带有关键字的内容,并且这个关键字忽略大小写
这些也可以组合使用,grep -iv是将带有关键字的内容无论大小写都忽略掉
zip和unzip(打包压缩和解压)
输入which zip的时候发现zip并没有下载
如何下载指令
对于像这种没有下载的指令直接在网上搜索centos yum安装xxx指令
对于要打包压缩一个目录,因为目录里面有文件和其他的目录,所以要递归压缩,因此要输入zip -r +压缩包名.zip +文件名
解压文件就输入unzip +解压文件名
有时候我们解压时会遇到将某个文件解压到一个指定路径下,在Linux下我们可以输入 unzip test2.zip -d /tmp 表示解压到tmp目录
tar(打包/解包,不打开它,直接看内容)
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令
-t :查看 tarfile 里面的文件!
-z :压缩文件
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程
-f :使用档名,请留意,在 f 之后要立即接档名,不要再加参数
-C : 解压到指定目录
例子1(将整个 /etc 目录下的文件全部打包成为 `/tmp/etc.tar)
仅打包,不压缩!
[root@linux ~]# tar -cvf /tmp/etc.tar /etc
打包后,以 gzip 压缩
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc
打包后,以 bzip2 压缩
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc
特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
如果加 j 参数,则以 .tar.bz2 来作为附档名啊
上述指令在执行的时候,会显示一个警告讯息:
『tar: Removing leading
/" from member names`』那是关於绝对路径的特殊设定
例子2(查阅上述 /tmp/etc.tar.gz 文件内有哪些文件)
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
由于我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时
就得要加上 z 这个参数了
例子3(将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下)
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
在预设的情况下,我们可以将压缩档在任何地方解开
以这个例子来说
我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
则解开的目录会在 /usr/local/src/etc
另外,如果您进入 /usr/local/src/etc则会发现,该目录下的文件属性与 /etc/ 可能会有所不同
例子4(在 /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 内的根目录 / 是被拿掉了
例子5(将 /etc/ 内的所有文件备份下来,并且保存其权限)
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时
例子6(在 /home 当中,将 2005/06/01 新的文件才备份)
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
例子7(备份 /home, /etc ,但不要 /home/dmtsai)
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
例子8(将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件)
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
这个动作有点像是 cp -r /etc /tmp
要注意的地方在於输出档变成 - 而输入档也变成 -
这分别代表 standard output, standard input 与管线命令
sz
这个指令可以将压缩包下载到我们的电脑上
输入sz 压缩包文件名就可以了
但是在用之前我们还得下载指令 输入yum -y install lrzsz即可
rz将电脑桌面的压缩包传输到云服务器上
直接输入rz即可
bc(计算器)
直接输入bc,然后后面输入算式
输入完后按Ctrl+C退出
uname –r(获取电脑和操作系统的相关信息)
uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息
热键Tab Ctrl+C Ctrl+D
Tab按键具有命令补全和档案补齐的功能
比如我只输入c,按Tab键就可以显示c的所以命令
Ctrl+C让当前的程序停掉
Ctrl+D键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,也可
以用来取代exit
按Ctrl+D可以快速退出Xshell