目录
10.cat指令
重点知识echo,>,>>
简单解释什么是一切皆文件
11.more指令
12.less指令(重要)
13.head指令
14.tail指令
用一个小实验简单讲解一下管道
15.时间相关的指令
16.Cal指令
17.find指令:(灰常重要) -name
18.grep指令
19.zip/unzip指令:
20.tar指令(重要):打包/解包
21.bc指令:
22.uname –r指令:
23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
24.关机
以下命令作为扩展:
shell命令以及运行原理
10.cat指令
语法:cat [选项][文件]
功能: 查看目标文件的内容
常用选项:
如图所示是我们的simple.txt文件,下面的三个选项参考我们的这个文件
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
这里不输出多行空行的意思不是说不输出空行,而是我们如果有连续的空行我们就只会打印出1行。
重点知识echo,>,>>
echo指令的作用是向我们的显示器打印你输入的字符串
倘若我们在后面带上>(输出重定向),它就会将我们的输出由显示器文件重定向到我们指定的文件(Linux下一切皆文件)。
输出重定向的执行过程跟C语言的文件操作函数中fopen的w参数意思一样
先判断有没有这个文件,有我们就清空里面的所有内容再将我们所输入的内容填进去,倘若我们没有这个文件那就创建这个文件再把我们的内容输出到文件里。
我们的输出重定向>可以做很多事情:
清空文件内容:
还可以更加简洁地创建文件:
如图所示,我们的test文件一下就创建好了。
>>的意思是追加重定向,它的功能就跟我们C语言的a参数意思是一样的。
跟>的区别是输出内容时是以追加的形式,而不是清空输入。
简单解释什么是一切皆文件
在我们的/dev/pts目录下有我们云服务器的当前终端窗口的虚拟编号:
补充两个知识点:
- 虚拟终端设备:/dev/pts是Linux系统中的一个虚拟终端设备目录,它允许用户通过一个终端窗口访问多个物理终端。
- 伪终端(pty):伪终端是一种虚拟的终端设备,它模拟了一个物理终端的行为,包括输入输出、鼠标操作等。伪终端通常用于创建一个新的会话,例如运行远程登录客户端时,系统会为每个用户分配一个伪终端。
所以我们就能初步的感受到我们在云服务器上所进行的输入也好输出也罢,实际上都是对这个伪终端文件进行操作,这就是说为什么对Linux来说一切皆文件。
如图所示1号就是我们的伪终端的编号,如何确定它是不是真的是·我们的伪终端的编号呢?我们打印一下就知道了。
看到这个结果大家是不是就豁然开朗了。
我们接下来来做个小实验:
如图所示·,我又开了一个窗口,按照道理来讲现在我们虚拟终端目录里面会多一个文件。
我们发现果然如此,那么我们的新的虚拟终端就是0号喽?
没错,实验结果就是如此,这下我相信大家对什么是一切皆文件一定有了初步的了解。
那么我们就继续下面的指令。
接下来的两个指令是针对大文件的,所以我们用big.txt文件来做参照。这个文件有10000行数据。
11.more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat
常用选项:
它会将我们的屏幕占满就停止,我们按enter键就可以往下翻,我们也可以/内容来搜索
-q 退出more
12.less指令(重要)
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup][pagedown](上下键) 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
语法: less [参数] 文件
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向后移动,却不能向前移动,而且less在查看之前不会加载整个文件。
选项:
-i : 忽略搜索时的大小写
我们要查找带有l字符的他就会帮我们大写小写的都找出来。
-N: 显示每行的行号
/字符串:向上搜索“字符串”的功能
这个用法我们第一个参数已经附带演示了。
?字符串:向下搜索“字符串”的功能
跟上一个一样,只不过这个是显示下一页的。
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
13.head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然就是看档案的结尾。
语法: head [参数]... [文件]...
功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
-n<行数> 显示的行数
14.tail指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail - f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
可以看到它的光标会一直停留在最后不断刷新。
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
这个功能刚刚已经展示过了。
-n<行数> 显示行数
这个选项的功能跟head是一样的。
用一个小实验简单讲解一下管道
就拿我们刚刚的那个文件来说,我们能通过head,tail这两个指令来快速查到头和尾,那我们中间部分怎么找呢?比如我们要找6001-6010.
我们有一种做法,我们可以先用head指令将前6010条数据放到一个中转文件,再对这个中转文件进行tail。
这样我们确实是能取到中间部分的值,但是好像有点麻烦,有没有什么办法能让我们操作更加简单呢?有的兄弟有的,像这么好用的指令当然是有的,比如我们的管道|。
我们初步了解管道我们只需要知道它能将我们的多个指令通过管道一起实现。
看,我们只需要一个管道就能对big.txt文件既进行head操作,又进行tail操作。
我们可以再学一个wc指令,它能将我们的文本内容信息打印出来
由此我们也能知道我们确实是取到了10条数据。
15.时间相关的指令
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
我们可以通过%F和%X快速确认时间。
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的 午夜)开始所经过的秒数,不考虑闰秒。
16.Cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历(-y 后面可以自己定年份)
17.find指令:(灰常重要) -name
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只要你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件。
18.grep指令
linux grep命令详解 - ggjucheng - 博客园
语法: grep [选项] 搜寻字符串文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
19.zip/unzip指令:
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递归处理,将指定目录下的所有文件和子目录一并处理
举例:
如图所示。我们的111目录下有这么多文件,我们要想对111目录进行压缩,我们就得带上-r选项,否则我们的压缩只会压缩111空目录。
这样我们就压缩好了,至于为什么只压缩了%0,那是因为我们的文件都是空的,没法再压缩了。
我们将111的压缩文件转移到其它目录再将它解压,我们进入到111中就能看到是不是成功了。
这就是我们压缩和解压的过程。
我们也可以-d选项指定我们要解压到的目的地。
20.tar指令(重要):打包/解包
tar [-cxtzjvf] 文件与目录 .... 参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
我们的tar选项也非常多,但我们有几个固定搭配,我们平时写指令的话就用这个固定搭配就好了。
一个是tar -cvzf name.tgz filename用来我们的压缩操作。
c就是创建我们压缩后的文件,v就是打印压缩过程,z就是压缩算法,f跟我们的压缩文件
我们接下来对111文件进行压缩
如此我们的压缩就成功了。
解压我们就把c选项改成x就好了,如果我们想解压到其它目录我们再在后面接个-C选项就好了。
21.bc指令:
bc命令可以很方便的进行浮点运算
bc实际上就是我们的计算器。
我们使用quit就可以退出bc。
bc还可以配合我们的管道,进行快速的运算。
22.uname –r指令:
这就是我的Linux的内核版本,el7的意思是代指我们的centos7版本。
语法:uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
23.重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
[Tab]按键---具有『命令补全』和『档案补齐』的功能
比如说我们哪个指令忘掉了,但又记得一点我们就可以用这个快捷键
我们只需要输一部分,然后tab它就会把涉及到的都给我们显示出来。
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
比如我们连按两次就能退出shell外壳。
24.关机
语法:shutdown [选项] ** 常见选项:**
-h : 将系统的服务停掉后,立即关机。
-r : 在将系统的服务停掉之后就重新启动 -t
sec : -t 后面加秒数,亦即『过几秒后关机』的意思
这个我们就不展示了,我们基本不会有关机服务器的情况。
以下命令作为扩展:
◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;
◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;
◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash。