目录标题
cat
这个指令的功能就是显示文件里面的内容:
我们首先使用下面的指令往一个文件里面循环输入内容:
cnt=0; while [ $cnt -le 10000 ] ; do echo "hello world [$cnt]"; let cnt++; done > test1
将内容输入完之后就可以使用nono来查看这个文件里面的内容,nono相当于是一个记事本,使用这个记事本之前我们得先使用下面的指令来下载nono
yum install -y nano
下载完成之后就可以使用nano打开我们创建的文件,这里使用的方式就是nano加上文件名:nano test2
按下回车后页面就变成了这样:
通过键盘的上下键可以将内容上翻或者下翻,如果想要退出的话就可以按CTRL加x来退出记事本,当然这是记事本的查看方法,我们这里还可以使用cat来查看,这里的方式就是cat加上文件名:
cat test2
按下回车后,这个指令就把这个该文件中的所有内容全部显示了出来,如果我们想让这里显示的内容自带行号的话,我们这里可以给该指令添加选项 -n :cat -n test2
那么这里运行的结果就是这样
这就是cat运行的样子。
tac
上面的cat指令是按照顺序将文件中的内容全部打印出来,那么这里的tac指令和cat指令名字是相反的,所以该指令的作用就是逆序将文件中的内容全部打印出来:
虽然这两个指令能够打印出来文件中的内容,但是对于大型文件来说这样的打印方式太过于麻烦了,比如说我们这里有1w行代码,但是我们想查看中的5000行代码的话就得用鼠标慢慢的滑到5000行的位置上去这就非常的麻烦,所以就有了下面的查看方式,当然对于内容较少的文件这种查看方式还是非常不错的比如说这样的文件:
里面就几句话,那这时用cat就非常的nice
more
如果我们想要查看大文本的话就可以使用more指令:
按下回车就出现了这样的页面:
more指令有个特点就是只能通过回车来将页面往下翻,不能通过键盘的上下键来翻动内容并且只能往下翻,当我们查看结束之后我们就可以按q来退出这个页面,我们一开始显示的是前35行,如果我们想要显示第500行的话就可以加上一个-n选项这里的n就填入500:
按一下回车就可以看到编译器将这个文件的前500显示出来:
在more执行的时候我们还可以进行内容的查找,输入/加上你想要搜索的内容就可以了比如说这样:
这里输入的地方是在页面的最下方,这里我们按下回车就可以看到编译器没找到:
结果是没找到因为这里的内容都太相似了所以找不到,所以我们这里就可以通过记事本来将文本中的内容进行修改比如说将第130行的内容修改成胃yechaofan:
然后我们再使用more来进行查找的时候就可以很好的显示这里查找的内容:
按下回车就会出现下面的场景:
显示了我们要查找内容的周围内容,那么这就是more指令的查找功能。
less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。我们来看看less的语法介绍:
那这些功能大家可以自行下去试一下跟more差不多只是多了一些更加细致的功能而已。
head
英文中的head是头部的意思,所以在显示内容这里的head就是显示头部内容的意思,我们来看看这里head的语法
默认不加选项的head是显示最前面的10行,比如说下面的操作:
如果我们想要显示更多行的话就可以加上 参数 -n,比如说显示前20行就可以这样:
那么这就是head指令的用法。
tail
tail是尾部的意思,所以他的功能和head的功能相反他是显示文件尾部内容。tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容.
我们来看看下面的操作:
当不给参数的时候这里的tail会显示文件的最后10行,当然如果我们想要查看更多内容的话也可以给个选项比如说-30,他就会将末尾的三十行全部都打印出来:
一个思考题
我们上面的test2文件含有10000行hello world那我们如何显示这10000行中的第1000行到第1010行的内容呢?那这里就可以采用head和tail指令来实现这里的显示,首先我们得知道创建文件的方式有很多种touch可以创建文件,>这个也可以创建文件比如说下面的操作:
当后面不添加 > 和文件名的时候 echo会把内容输入到屏幕上面,如果我们加了>和文件名的话echo会把内容输入到文件里面,如果文件不存在的话系统会自动的创建一个文件出来
head和tail也会把内容输出到屏幕上面,所以我们使用>也可以将内容重定向输入到指令的文件里面,并且我们不用手动创建文件因为>可以帮我们自动创建文件,那么这里要输出1000到1010行的内容的话就可以先使用head指令将前1010行的内容输入到一个文件里面,
head -1010 "test2" > tem
然后我们再使用tail指令将tmp文件中的后10行拿出来再重定向输入到一个tmp1文件里面,再对tmp1文件使用cat指令这样就可以将1000行到1010行的内容全部显示出来,我们来看看下面的操作:
这样看的话我们确实是完成了显示任务,但是这里我们创建了两个临时文件来显示这里的内容,那能不能不创建文件呢?答案是可以的,我们可以通过管道来实现内容的打印,比如说先将前1010行的内容输入到管道里面就是这样的操作:
head -1010 test1 |
这个 | 就是管道,前1010行的内容就输入到 | 里面 然后再显示后十行就是在| 后面加上tail -10指令,这样我们就将管道的后十行内容显示到了屏幕上面那么这里的操作就如下:
这里就没有创建任何临时文件,那这里我们再增加一些难度,如果我们想将第1008 1009 1010 行逆序打印出来那又该怎么去做呢?这不还是同样的道理嘛,首先用head指令将前1010行输入到管道里面,再使用tail指令从管道里面提取后三行的内容并放到管道里面,最后再重管道里面提取内容并且使用tac指令将其逆置,那么这里的操作就是这样:
date
这个指令就是专门用来显示时间的,比如说下面的操作:
这里就显示了当前时间的年月日,当然这样的显示有点不符合我们中国人的逻辑,那么这里就可以根据date的选项来自定义显示的规律:
比如说我们想将时间改成先年 月 日 小时 分钟 秒 的规律的话就可以这样:
如果我们想要年月日在后面时间在前面的话就可以将前面三个选项和后面三个选项进行交换:
我们这里的年月日以及时间的时分秒都是采用其他字符来分割开,那这里大家注意一下不能用空格将其分割开
如果你使用空格将其分割开的话,系统会认为这里的%M和%S等都是一个个单独的指令,这样的话就出问题了:
这里大家需要注意一下。date指令还有个%s选项,这里的s是小写的,这个选项的功能是显示当前时间的时间戳,比如说下面的操作:
时间戳是自 1970 年 1 月 1 日(00:00:00 )至当前时间的总秒数。它也被称为 Unix 时间戳(Unix Timestamp)。Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从 格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中(比如 Linux系统),也在许多其他操作系统中被广泛采用。那么上面显示的一大段数字就是我现在的时间距离1970 1月1日的总秒数,那么在date指令这里,时间戳可以被转化为对应的日期,其具体的用法如下:
在date后面加上一个空格-d@时间戳,就可以将这个时间戳转化为对应的时间比如说下面的操作:
那么这就是date指令的内容。
cal
这个指令就是查看日历的,比如说我们单独输入一个cal就会显示我当前月份的日历,并且还会显示当前是几号:
如果我想显示莫一年的日历的话就可以在cal后面添加哪一年:
如果想显示哪一年的那一月的话就可以在年的前面加上月份
cal后面加上个 -3就会将这个月下个月前一月的日历都显示出来:
find
find命令有很多的选项,但是我们这里是初学者所以就学习-name选项就可以了,-name是用来查找指定路径下文件的选项,这里的pathname是你指定查找的路径,options是你的选项使用时把options改成name即可,然后在这个选项后面跟上你要查找的文件名即可比如说下面的操作:
在家目录里面创建多个test1文件,并分布在不同的文件夹里面,当我们使用find指令查找test1文件时,系统会将该路径下的所有test1文件全部找出来,那么这里就会存在一个问题find命名是全局的搜索,当我们给他一个很宽放的一个路径时,他要找很久才能找到指定文件,并且不是所有的操作系统文件都会被加载到内存里面,所以当我们使用find命令查找一个文件时可能需要访问磁盘,而磁盘是一个外设他的速度是很低的,所以访问到外设时find命名就又会进一步降低,比如说我在根目录下查找stdio文件,他就会卡一下,那么这就是find命名,这里大家就只用知道他是全局查找会到硬盘中查找效率会变低很厉害就可以了。
which
这个指令也是用来查找的,但是他查找的内容只能是指令所在的文件地址,比如说我要查找pwd指令在哪个文件就可以输入which pwd,这时他就会显示实现pwd指令所在的文件
但是看到上面的图片有小伙伴就会感到疑惑了,这里的which ll和ls为什么还会显示其他内容呢?这里的alias是什么意思呢?这里我们就继续往下看。
alias
这个指令的功能和c语言中的typedef非常的相似,通过alias可以将一些指令进行重命名,比如说将ls -l 重命名为ll,我们平时使用的ll的底层其实还是ls -l来实现的,并且使用ls的时候文件夹会自动显示成蓝色,而普通文件是白色,这就是因为这里重命名的时候还添加了一个color=auto这个选项,所以会自动的显示颜色,比如我们下面的操作:top指令可以显示一些内容:
那么我们可以通过alias指令将top指令重命名为zhangshan,这样我们输入zhangshan的时候会达到与top一样的效果:
当然也可以将ls -l也重名为zhangshan
当输入zhangshan的时候也可以达到一样的效果,那么这就是重命名alias的用法。
whereis
whereis也是一个查找指令,他可以查找文件也可以查找指令,但是只能在特定的路径下进行查找,并且这里的查找是相关查找,也就是所谓的关键字查找,比如说whereis test,他就会把特定路径下的所有出现test的文件或者指令全部都查找出来,我们来看看下面的操作:
对于这个指令大家只用知道它可以通过关键字的方式来查找指令或者文件,但是只能在特定指令下进行查找即可。
grep
这个指令也是一个功能十分丰富的指令,但是作为初学者只用学习其中的几个即可,首先grep是一个文本内容的行过滤工具,在默认情况下也就是不给选项的情况下它会匹配文本哪一行出来了这个关键字,如果匹配成功的话就会显示行内容:比如说test1文件中含有1w行hello world并且还有对应的数字,那么这里我们就可以使用grep来查找这个文件中出现9999内容的地方,grep指令的用法如下:
我们来看看下面的操作:
这里就会把出现9999的行内容显示出来,如果把关键字换成999这里就会显示多个出现关键字999的行内容:
如果我们想让这里查找出来的内容显示对应在文件中的行号的话就可以加个选项-n
我们使用nano修改一下这个文件中的内容:
这里我们将行中的一些内容修改成了不同大小写的ycf,然后我们再使用grep来查找关键字ycf就可以看到这里只显示了一个地方:
那这就说明grep在不加选项的情况下是会区分大小写的,如果我们不想让他在查找时有大小写之分的话我们就可以加上一个 - i选项,比如说下面的例子:
grep还有一个-v选项,这个选项就是反转的功能,不加这个选项grep是找文件中出现关键字的行,那加了-v选项就是查找文件中没有出现字符串的地方,比如说test1内容中含有很多hello world,那么这里我们就可以使用-v选项来查找没有出现hello world的地方,比如说下面的操作:
grep指令还可以通过管道和其他指令配合着使用,比如说我们想要查看文件中匹配成功了多少行就可以通过wc -l和grep来配合着使用,
比如说我们可以通过ps ajx 来查看系统的进程:
但是这里会显示很多内容不方便我们查看,那这里就可以通过grep来进行查找比如说下面的操作:
zip/unzip
首先先看看自己的服务器安装了这两个指令没,如果没有安装的话就先通过下面的指令来进行安装:
yum install -y zip unzip
大家在使用自己的电脑的时候基本上都会见到压缩包这个东西,那么在linux这里,zip就相当于将一些文件或者目录变成压缩包,而unzip就相当于将这里的压缩包解压变成其原本的文件,比如说下面的操作:首先我们这里的目录文件情况如下
然后我们使用zip将folder2文件进行压缩,那么这里的zip语法就如下:
首先在zip后面自定义一下压缩包的名称,比如说tmp.zip,test.zip等等这里加个后缀好区分哪些是压缩包哪些是普通文件,然后再跟上你要压缩的目录或者文件,那么这里大家要注意的一点就是zip 默认对一个目录进行打包压缩的时候,只会对目录本身进行打包压缩不会对目录里面的文件进行操作,所以当我们对一个文件夹进行压缩的时候得加一个-r,比如说下面的操作:
首先查看一下这里的文件和目录的情况,进去folder1文件里面使用zip指令将folder1文件夹中的folder2文件夹进行压缩,那么这里我们就把生成的压缩包称为tmp.zip:
按下回车就会出现这样的场景,然后我们再查看一下文件的分布就可以看到这里多出了一个压缩包名为tmp.zip,然后我们将这个压缩包转移到folder1文件夹下,
然后再使用unzip对这个压缩包进行解压,这里解压的方式就是unzip加上压缩包的相对路径或者绝对路径即可,比如说下面的操作:
这里的解压就会解压到当前的路径下如果你想解压到其他路径的话就得在压缩包名后面加上一个-d选项,然后加上你想要解压到的路径,比如说下面的操作:
那么这就是指定路径的解压。看到这里我们来想一个问题:为什么要打包和压缩呢?这个问题非常的简单,因为互联网中有很多大小文件,这些文件在下载的时候很容易丢失,而且一个文件丢失很可能会导致整个程序无法正常运行,所以当我们使用压缩包的时候可以将多个文件压缩成一个文件这样就可以方便我们下载,并且压缩之后所占的内容会更小这样的话也就更加的便于文件的传输和保存,那么这就是压缩的目的,希望大家可以理解。
tar
这个指令既可以用来打包压缩,也可以用来解包并解压,我们可以使用不同的选项来执行不同的功能,那么tar指令的选项如下:
如果我们想用tar打包压缩的话这里的选项就得是 -czf,使用这种方式压缩生成的压缩文件后缀一般为tgz,如果你想用tar解压的话这里的选项就得是-xzf,tar使用的方式就是tar + 选项 +压缩包名 +被压缩的文件/目录,我们来看看下面的操作:
我们可以看到这里在当前路径下生成了一个压缩包文件,我们将这个文件移动到上级目录,然后使用解压选项进行解压:
这里也是当前路径下进行解压,并且这里的解压不会显示解压的过程,如果想要查看解压过程的话就可以在f之前加个选项v,比如说这样:
如果我们想查看一个压缩包里面的内容,而不像解开压缩包的话就可以使用-tf选项,这里的f表明的意思是指定压缩包,所以-tf就是查看压缩包的内容,这里没有x选项所以这里不会解开压缩包,比如说下面的操作:
这里就显示了这个压缩包中的内容。当然使用tar指令可以指定位置进行解压,那么这里就得加上一个-C选项,并且这个选项在压缩包名后面,然后-C后面加上要解压到的地址即可,那么这里的操作就如下:
bc
这个指令就是启动linux系统中的计算器,比如说下面的操作:
当然这个计算器很low啊,我们平时要用计算器的话直接使用windows的计算器就可以了,但是这个bc指令有一个特点就是它可以支持命令行操作,比如说下面的操作:
这个不常用大家知道就行。
uname
这个指令就是用来查看云服务器的相关配置的,比如说单独输入一个uname就会显示这是linux机器:
加上一个-a选项就会显示的更加详细:
依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。使用uname -r就会显示机器的体系结构:
3表示的是主版本,10表示的是次版本,0表示的是修订次数后面的都是小补丁次数,el7是centos7系统的简称,x86_64就是cpu架构也就是所谓的体系结构,那么这就是uname指令的功能,用来查看机器的信息。
快捷键
tab
这个快捷键能够帮我们将命令补齐,比如说我输入一个a,然后按Tab就会把所有a开头的指令全部显示出来,如果我输入b再按Tab就会把所有b开头的指令全部显示出来:
如果我输入whci再按Tab的话就会自动补齐称为which,并且还会加上一个空格:
那么这就是该快捷键的用法。
CTRL c
这个指令就是终止前台的一切异常程序,比如说下面的操作,首先创建一个文件,然后使用nano往这个文件里面写入死循环代码:
我们运行一下这个文件就可以看到屏幕中不停的打印了hello:
这里就不停的打印了hello,那如果我们想要这里停止打印的话就可以是输入同时按ctrl c 来结束打印:
上下键
通过上线键可以查找我们之前输入的命令:
CTRL+r
如果哪天你输入了一个特别长的命令,但是你记不起这个命令的全部了,你就可以输入CTRL+r来查找历史命令,比如说下面的操作:按下ctrl r就成了这样
输入一个while就可以看到之前输入的那个循环指令
按下回车就选择并执行了这个指令。那么以上就是本篇文章的全部内容,希望大家能够理解。