【Linux】Linux基本指令(下)

前言:

紧接上期【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】指令之前,我们需要先在一个文件中放入很多的数据。这个指令当做了解,现阶段不要求大家掌握,具体如下所示:

cnt=0; while [ $cnt -le 1000 ]; do echo "hello $cnt"; let cnt++; done > myfile.c

然后当我们打印这个文件中的内容时,最终结果就是循环打印出1000条【hello】指令,具体如下:

 但是当我们想要去具体看一行的代码时,这样来回的翻动会显得很不方便,于是我们有专门的指令可以进行观看,基于这种情况,就引出了【more】指令。

存在的缺点:

  • 对于【more】指令,存在一个问题就是它显示到一个屏幕满了之后就不显示了,而且只能下翻,不能上翻,在下翻的过程中按回车就可以了,想要退出的话按【q】
  • 因此不难看出这个指令还是比较麻烦,所以这个命令我们用得比较少一些。

常用选项:

  • -n 对输出的所有行编号
  • q 退出more

👉less指令(重要)

  • less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极 其强大。
  • less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
  • 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用 来查看一个文件的内容!
  • 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜

 除此之外,还支持上下翻动的功能,只需按键盘中的这两个键

选项:

  • -i  忽略搜索时的大小写
  • -N  显示每行的行号
  • /字符串:向下搜索“字符串”的功能
  • ?字符串:向上搜索“字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)
  • q:quit

👉head指令

【head 】与 【tail 】就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,【head 】用来显示档案的 开头至标准输出中,而  【tail 】想当然尔就是看档案的结尾。

我们直接上代码来进行直观的理解:

 不仅如此,我们还可以指定行数进行打印,具体如下(这里的【n】可以省略不写):

选项:

  • -n 显示的行数

👉tail指令

tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail - f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.

老规矩,直接上代码:

 跟【head】一样,这里也可以指定行数进行打印操作:

选项:

  • -f 循环读取
  • -n 显示行数

拓展知识——管道

“|”是管道命令操作符,简称管道符。利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

  • 管道符:“|”
  • 语法:“command1 | command2 [ | commandN... ]” ,“|”符左边命令的输出会作为“|”符右边命令的输入
  • 功能:将两个或者多个命令连接到一起,把一个命令的输出作为下一个命令的输入

在正式学习之前,我们先来研究下列代码代码什么意思:

cat myfile.c | wc -l

什么意思呢?我们直接运行,结果如下:

 大概就可以如下图理解:

 我们在通过例子来带大家进一步认知,当我们想要只显示【myfile.c】中500行到520行的内容时我们可以怎么做呢?这里我们给出两种方法:

  • 我们通过中间文件来进行操作,具体如下:

 紧接着我们在用【tail】打印最后20行即可:

  •  上述做法我们就要用一个额外的文件,那么当我们不想那么做,可以直接一步到位吗?答案是当然可以啊!这就需要用到管道技术,看我们是如何实现的:

  • 除此之外,还可以继续添加,这些内容有多少行数。就是加一个【wc -l】

 到此,我们拓展的管道的知识便到此了。


👉时间相关的指令

date显示

当我们在Linux下如何获取时间呢?我们可以直接在命令行敲入【date】命令就可以了,具体如下:

 上述看着是不是看着不好去认呀!我们可以对其进行格式化操作,让时间显示得一眼便可以看出的效果:

  1. 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

因此,我们可以这样去做;

  1.  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″ //这样可以设置全部时间
  1. 3.时间戳

什么是时间戳:

时间戳有什么用:

用法:

  • 时间->时间戳:date +%s
  • 时间戳->时间:date -d@1508749502

Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的 午夜)开始所经过的秒数,不考虑闰秒。

具体如下述所示:

还可以像以下这样写:


👉Cal指令

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳 历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

基本介绍:

当我们想要查看【2022】年的日历时,我们只需要输入:

cal 2022

 当我们只输入【cal】时,显示的是当前的月份:

 当我们想知道跟本月挨着的三个月是哪个月时,我们可以这样:

常用选项:

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j  显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
  • -y  显示当前年份的日历


👉sort指令

怎么用呢?具体如下图所示:

 默认的情况下是进行的升序排列,那么我们是否可以进行降序排序呢?当然是可以的啦,我们只需要加上【-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字节以上的文件系统)。

具体使用如下图所示当我们想要去查找【my.txt】文件时,我们只需加上对应的指令即可:

 不仅可以在当面路径下进行查找,还可以指定目录下去进行查找,具体如下:

常用选项:

  • -name   按照文件名查找文件。


👉which指令

跟【find】类似,这个指令也是查找类的指令。

用法如下:

参数

  • -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
  • -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。
  • -w  指定输出时栏位的宽度。
  • -V  显示版本信息。


👉whereis指令

用法如下:

参数:

  • -b  只查找二进制文件。
  • -B<目录>  只在设置的目录下查找二进制文件。
  • -f  不显示文件名前的路径名称。
  • -m  只查找说明文件。
  • -M<目录>  只在设置的目录下查找说明文件。
  • -s  只查找原始代码文件。
  • -S<目录>  只在设置的目录下查找原始代码文件。
  • -u  查找不包含指定类型的文件。

以上三个就是在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指令

具体怎么用呢?我们结合下面的代码进行理解:

 常见的还有带【-n】选项的,意思为额外输出对应的行号:

正式介绍之前,我们需要改动一下测试用例,因为之前是在【myfile.c】文件中写的,那么我们把它情况重新写入呢?这里介绍一个方法就是【>+文件名】,即为情况文件中的内容:

 接下来我们重新向文件中写入数据,在进行操作,具体如下:

常用选项:

  • -i :忽略大小写的不同,所以大小写视为相同
  • -n :顺便输出行号
  • -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行


👉top指令

功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

 当我们想要退出时,及输入【q】即可。


👉zip/unzip指令

接下来还是以代码的方式带大家去感受这个指令。此时,当我们想压缩【test1】这个目录,我们直接输入代码,当运行然之后再去查看当前路径下时,就会多显示一个一个压缩好的,具体如下:

 既然有压缩就有解压缩,那么我们该如何进行解压缩呢?我们只需执行【unzip +压缩文件】即可。(因为当前有个一样的文件,为了实验的正确性,我们先把压缩包移动到【tmp】下)

 紧接着通过以下代码大家就可以直观的感受到解压的过程:

 此时已经解压了,当我们想要查看当前目录下的文件时,我们发现竟然什么都没有。什么原因呢?这是因为上述方法,我们只是压缩了目录而已,并没有把目录下的内容进行压缩:

我们需要进行递归处理,把目录下的所有文件递归的进行压缩,只需加上【-r】即可,具体如下:

 还有就是当我们想解压到指定目录下时,可以怎么做呢?大家通过代码进行感受:


 

👉tar指令(重要):打包/解包,不打开它,直接看内容

上述两个命令只能对以【.zip】为后缀的压缩文件起效果,但是在我们日常生活中,遇到的肯定不止这一种压缩文件,还有.rar、.tgz、.7z等等,因此为了能够操作更多的压缩文件,我们还需要学习一个指令叫做【tar】

我们具体也压缩一个文件为例进行说明(开始时目录下只有一个【test1】文件,当我们执行相关代码之后,在【ll】我们就可以发现此时已经多出了压缩的文件):

 那么解压缩呢?还是通过代码进行观察:

 解压到指定的目录呢?(跟zip差不多,只是这里后面加的是【-c】)

 

参数:

  • -c :建立一个压缩文件的参数指令(create 的意思);
  • -x :解开一个压缩文件的参数指令!
  • -t :查看 tarfile 里面的文件!
  • -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
  • -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
  • -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
  • -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
  • -C : 解压到指定目录

👉bc指令

 bc指令还可以和我们上面说过的管道一起使用

 


👉uname –r指令

补充说明: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】基本指令的全部知识,大家做笔记的同时多上手敲两遍这样会大大的加深我们的理解!!!

 

本文链接:https://my.lmcjl.com/post/4093.html

展开阅读全文

4 评论

留下您的评论.