前言:
紧接上期【Linux】基本指令(上)的学习,今天我们继续学习基本指令操作,深入探讨指令的基本知识。
目录
(一)常用指令
👉more指令
👉less指令(重要)
👉head指令
👉tail指令
👉时间相关的指令
👉Cal指令
👉sort指令
👉find指令:(灰常重要) -name
👉which指令
👉whereis指令
👉alias指令
👉grep指令
👉top指令
👉zip/unzip指令
👉tar指令(重要):打包/解包,不打开它,直接看内容
👉bc指令
👉uname –r指令
👉热键[Tab],[ctrl]-c, [ctrl]-d
👉关机
(二)扩展命令
(一)常用指令
👉more指令
语法:more [选项][文件]
功能:more命令,功能类似 cat
在讲【more】指令之前,我们需要先在一个文件中放入很多的数据。这个指令当做了解,现阶段不要求大家掌握,具体如下所示:
cnt=0; while [ $cnt -le 1000 ]; do echo "hello $cnt"; let cnt++; done > myfile.c
然后当我们打印这个文件中的内容时,最终结果就是循环打印出1000条【hello】指令,具体如下:
但是当我们想要去具体看一行的代码时,这样来回的翻动会显得很不方便,于是我们有专门的指令可以进行观看,基于这种情况,就引出了【more】指令。
存在的缺点:
- 对于【more】指令,存在一个问题就是它显示到一个屏幕满了之后就不显示了,而且只能下翻,不能上翻,在下翻的过程中按回车就可以了,想要退出的话按【q】
- 因此不难看出这个指令还是比较麻烦,所以这个命令我们用得比较少一些。
常用选项:
- -n 对输出的所有行编号
- q 退出more
👉less指令(重要)
对于上述【more】存在的不足,【less】就很好的解决了相关情况。接下来,我们具体聊聊【less】指令。
- less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 其强大。
- less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
- 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容!
- 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法: less [参数] 文件
功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前 不会加载整个文件。
除此之外,还支持上下翻动的功能,只需按键盘中的这两个键
选项:
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
👉head指令
【head 】与 【tail 】就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,【head 】用来显示档案的 开头至标准输出中,而 【tail 】想当然尔就是看档案的结尾。
语法: head [参数]... [文件]...
功能: head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
我们直接上代码来进行直观的理解:
不仅如此,我们还可以指定行数进行打印,具体如下(这里的【n】可以省略不写):
选项:
- -n 显示的行数
👉tail指令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail - f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
老规矩,直接上代码:
跟【head】一样,这里也可以指定行数进行打印操作:
选项:
- -f 循环读取
- -n 显示行数
拓展知识——管道
讲完了【head】和【tail】的有关知识,这里我给大家拓展一个知识点,即-管道
“|”是管道命令操作符,简称管道符。利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。
- 管道符:“|”
- 语法:“command1 | command2 [ | commandN... ]” ,“|”符左边命令的输出会作为“|”符右边命令的输入
- 功能:将两个或者多个命令连接到一起,把一个命令的输出作为下一个命令的输入
在正式学习之前,我们先来研究下列代码代码什么意思:
cat myfile.c | wc -l
什么意思呢?我们直接运行,结果如下:
大概就可以如下图理解:
我们在通过例子来带大家进一步认知,当我们想要只显示【myfile.c】中500行到520行的内容时我们可以怎么做呢?这里我们给出两种方法:
- 我们通过中间文件来进行操作,具体如下:
紧接着我们在用【tail】打印最后20行即可:
- 上述做法我们就要用一个额外的文件,那么当我们不想那么做,可以直接一步到位吗?答案是当然可以啊!这就需要用到管道技术,看我们是如何实现的:
- 除此之外,还可以继续添加,这些内容有多少行数。就是加一个【wc -l】
到此,我们拓展的管道的知识便到此了。
👉时间相关的指令
date显示
date 指定格式显示时间: date +%Y:%m:%d date
用法:date [OPTION]... [+FORMAT]
当我们在Linux下如何获取时间呢?我们可以直接在命令行敲入【date】命令就可以了,具体如下:
上述看着是不是看着不好去认呀!我们可以对其进行格式化操作,让时间显示得一眼便可以看出的效果:
- 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),如有两个参数,则表示月份和年份
当我们想要查看【2022】年的日历时,我们只需要输入:
cal 2022
当我们只输入【cal】时,显示的是当前的月份:
当我们想知道跟本月挨着的三个月是哪个月时,我们可以这样:
常用选项:
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
👉sort指令
语法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]]
功能:【sort】将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
怎么用呢?具体如下图所示:
默认的情况下是进行的升序排列,那么我们是否可以进行降序排序呢?当然是可以的啦,我们只需要加上【-r】即可,具体如下:
常用选项:
- -b 忽略每行前面开始出的空格字符。
- -c 检查文件是否已经按照顺序排序。
- -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
- -f 排序时,将小写字母视为大写字母。
- -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
- -m 将几个排序好的文件进行合并。
- -M 将前面3个字母依照月份的缩写进行排序。
- -n 依照数值的大小排序。
- -u 意味着是唯一的(unique),输出的结果是去完重了的。
- -o<输出文件> 将排序后的结果存入指定的文件。
- -r 以相反的顺序来排序。
👉find指令:(灰常重要) -name
- Linux下find命令在目录结构中搜索文件,并执行指定的操作。
- Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很 多,其中大部分选项都值得我们花时间来了解一下。
- 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
- 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系 统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
具体使用如下图所示当我们想要去查找【my.txt】文件时,我们只需加上对应的指令即可:
不仅可以在当面路径下进行查找,还可以指定目录下去进行查找,具体如下:
常用选项:
- -name 按照文件名查找文件。
👉which指令
跟【find】类似,这个指令也是查找类的指令。
语法:which [文件...]
功能:搜索对应指令的路径
用法如下:
参数:
- -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
- -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
- -w 指定输出时栏位的宽度。
- -V 显示版本信息。
👉whereis指令
语法:whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
功能:用于查找文件。该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
用法如下:
参数:
- -b 只查找二进制文件。
- -B<目录> 只在设置的目录下查找二进制文件。
- -f 不显示文件名前的路径名称。
- -m 只查找说明文件。
- -M<目录> 只在设置的目录下查找说明文件。
- -s 只查找原始代码文件。
- -S<目录> 只在设置的目录下查找原始代码文件。
- -u 查找不包含指定类型的文件。
以上三个就是在Linux下经常用到的查找指令。
👉alias指令
在操作 Linux 的过程中,最令你感到不爽的是什么?答案可能就是命令太多,选项太多,记不住。命令可以通过本书学习,但选项太多可真的不好办了,基于上述情况【Linux 】系统中有一个叫作 【alias 】的命令,它可以给一些命令设置别名,利用它我们就可以不必记住太多复杂的选项,只需将这些选项设置成别名就好啦。
语法:alias [name[=value]]
这里需要注意的是:
- 等号(=)前后不能有空格,否则就会出现语法错误了。
- 如果value中有空格或tab,则value一定要使用引号(单、双引号都行)括起来。
了解了别名的基础知识之后,我们来看一个定义别名的例子:
alias myls='ls -a -l -n -i'
这个例子定义了一个 【ls -a -l -n -i】命令的别名,以后,当我们执行 【myls】命令时,其实真正执行的是 【ls -a -l -n -i】。是不是很简单呢!
👉grep指令
语法: grep [选项] 搜寻字符串文件
功能: 在文件中搜索字符串,将找到的行打印出来
具体怎么用呢?我们结合下面的代码进行理解:
常见的还有带【-n】选项的,意思为额外输出对应的行号:
接下来,我们在介绍几个:
正式介绍之前,我们需要改动一下测试用例,因为之前是在【myfile.c】文件中写的,那么我们把它情况重新写入呢?这里介绍一个方法就是【>+文件名】,即为情况文件中的内容:
接下来我们重新向文件中写入数据,在进行操作,具体如下:
常用选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
👉top指令
功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
当我们想要退出时,及输入【q】即可。
👉zip/unzip指令
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
接下来还是以代码的方式带大家去感受这个指令。此时,当我们想压缩【test1】这个目录,我们直接输入代码,当运行然之后再去查看当前路径下时,就会多显示一个一个压缩好的,具体如下:
既然有压缩就有解压缩,那么我们该如何进行解压缩呢?我们只需执行【unzip +压缩文件】即可。(因为当前有个一样的文件,为了实验的正确性,我们先把压缩包移动到【tmp】下)
紧接着通过以下代码大家就可以直观的感受到解压的过程:
此时已经解压了,当我们想要查看当前目录下的文件时,我们发现竟然什么都没有。什么原因呢?这是因为上述方法,我们只是压缩了目录而已,并没有把目录下的内容进行压缩:
我们需要进行递归处理,把目录下的所有文件递归的进行压缩,只需加上【-r】即可,具体如下:
还有就是当我们想解压到指定目录下时,可以怎么做呢?大家通过代码进行感受:
👉tar指令(重要):打包/解包,不打开它,直接看内容
上述两个命令只能对以【.zip】为后缀的压缩文件起效果,但是在我们日常生活中,遇到的肯定不止这一种压缩文件,还有.rar、.tgz、.7z等等,因此为了能够操作更多的压缩文件,我们还需要学习一个指令叫做【tar】
语法: tar [-cxtzjvf] 文件与目录
功能: 将目录或文件压缩成zip格式
我们具体也压缩一个文件为例进行说明(开始时目录下只有一个【test1】文件,当我们执行相关代码之后,在【ll】我们就可以发现此时已经多出了压缩的文件):
那么解压缩呢?还是通过代码进行观察:
解压到指定的目录呢?(跟zip差不多,只是这里后面加的是【-c】)
参数:
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C : 解压到指定目录
👉bc指令
语法:bc(选项)(参数)
功能:bc 命令是任意精度计算器语言,通常在linux下当计算器用。它类似基本的计算器, 使用这个计算器可以做基本的数学运算。
bc指令还可以和我们上面说过的管道一起使用
👉uname –r指令
语法:uname [选项]
功能: uname用来获取电脑和操作系统的相关信息。
补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。
这里简单介绍两个选项,具体如下:
还有一个就是【-r】指令:
常用选项:
- -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类 型,硬件平台类型,操作系统名称
👉热键[Tab],[ctrl]-c, [ctrl]-d
- [Tab]按键---具有『命令补全』和『档案补齐』的功能
- [Ctrl]-c按键---让当前的程序『停掉』
- [Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit
👉关机
语法: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。
以上便是关于【Linux】基本指令的全部知识,大家做笔记的同时多上手敲两遍这样会大大的加深我们的理解!!!
最后,如果文章对您有帮助的话记得点赞三连哟!!!