一、echo指令
这个指令在上篇文章我也用了但是忘了说了,这个指令的大概用法就是把后面跟的文本等输出在显示器上,如下代码所示打印的“Hello Linux”
[root@VM-24-9-centos ~]# echo "Hello Linux" Hello Linux
二、输出重定向与输入重定向
着个输出重定向和输入重定向,从字面的意思来理解就是改变输入输出,但是有点抽象了,他们是怎么进行重定向的呢?用什么符号呢?
首先我们要了解echo是把跟在指令后面的文本输出在显示器上,那么这个输入输出是什么,输入在我的认知中无外乎是键盘,要不就是缓冲区,echo从键盘中和缓冲区中取得数据输出在显示器上,所以显示器就是输出,大概就如下图所示,这样,所输出重定向就是把显示器给换掉,换成别的东西,测试及效果如下代码,就是利用输出重定向进行把echo的输出改向了t1.txt这个文档中,可以看出第一个重定向时,如果文件夹中没有这个文件的名字是,会创建一个这个文件,并把数据保存在里面,里面的输出重定向符号就是大于号,这个是覆盖式的,直接覆盖原来的数据,用法如下方块。可以看出一个大于号就是输出重定向,两个时就是追加,就是如代码中所示的效果。
> 输出重定向
>>追加重定向
[root@VM-24-9-centos ~]# echo "Hello Linux" > t1.txt [root@VM-24-9-centos ~]# ls d1 hello.c t1.txt test.txt [root@VM-24-9-centos ~]# cat t1.txt Hello Linux [root@VM-24-9-centos ~]# echo "test" >t1.txt [root@VM-24-9-centos ~]# cat t1.txt test [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# cat t1.txt test d1 [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# echo "d1" >> t1.txt [root@VM-24-9-centos ~]# cat t1 .txt cat: t1: No such file or directory cat: .txt: No such file or directory [root@VM-24-9-centos ~]# cat t1.txt test d1 d1 d1 d1 d1 d1 d1 d1 [root@VM-24-9-centos ~]#
输入重定向刚好和输出重定向相反,他就是改变输入的方式,可以看下下方代码可以看出,cat什么都不带就是直接读取键盘上的数据并且输出在显示器上,而加上文档时就是读取文档的数据输出在显示器上,而后面就是输入重定向,这里是不是觉得和cat没啥区别,那就朝下看,这里是输入冲定向,取出t1的数据然后输入重定向输入到t2里面,并且用cat查看下,是否在t2里面存入了数据,结果发现时是我想要的,这就是输入重定向。
< 输入重定向
[root@VM-24-9-centos ~]# cat 12 12 13 13 2334 2334 434 434 56 56 ^C [root@VM-24-9-centos ~]# cat t1.txt test d1 d1 d1 d1 d1 d1 d1 d1 [root@VM-24-9-centos ~]# cat < t1.txt test d1 d1 d1 d1 d1 d1 d1 d1 [root@VM-24-9-centos ~]# cat < t1.txt > t2.txt [root@VM-24-9-centos ~]# ls d1 hello.c t1.txt t2.txt test.txt [root@VM-24-9-centos ~]# cat t2.txt test d1 d1 d1 d1 d1 d1 d1 d1 [root@VM-24-9-centos ~]#
三、more指令
这个指令类似与cat也是查看文档,但他不是全部输出出来,他只是输出一个屏幕,然后停下来,如果想接着朝后查看按下回车就会一行一行输出,按下q退出,如下方所示,这里是利用了代码输出了一万个数据在文档里面,用cat的话就会全部出来,但是用more就只会到一个屏幕停下,产生数据的代码如下方第二个块,常用选项如下
-n 对输出的所有行编号
q 退出more
count=0; while [ $ccount -le 10000 ]; do echo "Hello ${count}"; let count++; done > test.txt
[root@VM-24-9-centos ~]# more test.txt Hello 0 Hello 1 Hello 2 Hello 3 Hello 4 Hello 5 Hello 6 Hello 7 Hello 8 Hello 9 Hello 10 Hello 11 Hello 12 Hello 13 Hello 14 Hello 15 Hello 16 Hello 17 Hello 18 Hello 19 Hello 20 Hello 21 Hello 22 Hello 23 Hello 24 Hello 25 Hello 26 Hello 27 Hello 28 Hello 29 Hello 30 Hello 31 Hello 32 Hello 33 Hello 34 Hello 35 Hello 36 Hello 37 Hello 38 Hello 39 Hello 40 Hello 41 Hello 42 Hello 43 Hello 44 Hello 45 Hello 46 Hello 47 Hello 48 Hello 49 Hello 50 Hello 51 Hello 52 Hello 53 Hello 54 Hello 55 --More--(0%)
四、less指令
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件,常用选项如下,如下方代码所示,在less推出后并不会留下很多数据,不学cat和more。
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
1 Hello 0 2 Hello 1 3 Hello 2 4 Hello 3 5 Hello 4 6 Hello 5 7 Hello 6 8 Hello 7 9 Hello 8 10 Hello 9 11 Hello 10 12 Hello 11 13 Hello 12 14 Hello 13 15 Hello 14 16 Hello 15 17 Hello 16 18 Hello 17 19 Hello 18 20 Hello 19 21 Hello 20 22 Hello 21 23 Hello 22 24 Hello 23 25 Hello 24 26 Hello 25 27 Hello 26 28 Hello 27 29 Hello 28 30 Hello 29 31 Hello 30 32 Hello 31 33 Hello 32 34 Hello 33 35 Hello 34 36 Hello 35 37 Hello 36 38 Hello 37 39 Hello 38 40 Hello 39 41 Hello 40 42 Hello 41 43 Hello 42 44 Hello 43 45 Hello 44 46 Hello 45 47 Hello 46 48 Hello 47 49 Hello 48 [root@VM-24-9-centos ~]# less test.txt [root@VM-24-9-centos ~]# [root@VM-24-9-centos ~]# less -N test.txt [root@VM-24-9-centos ~]# [root@VM-24-9-centos ~]#
五、head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示文档的开头至标准输出中,而 tail 想当然就是看文档的结尾,常用选项如下,代码然是如下,这里是指定了10行。
-n<行数> 显示的行数
[root@VM-24-9-centos ~]# head -10 test.txt Hello 0 Hello 1 Hello 2 Hello 3 Hello 4 Hello 5 Hello 6 Hello 7 Hello 8 Hello 9 [root@VM-24-9-centos ~]#
六、tail指令
上面也说了tail的用法和head一样,这里就直接用代码演示最后10行数据了,常用选项如下。
-f 循环读取
-n<行数> 显示行数
[root@VM-24-9-centos ~]# tail -10 test.txt Hello 9991 Hello 9992 Hello 9993 Hello 9994 Hello 9995 Hello 9996 Hello 9997 Hello 9998 Hello 9999 Hello 10000 [root@VM-24-9-centos ~]#
七、通道
知道head和tail指令后,如果想要读取中间的数据咋办,例如想要500到510行数据咋整,我想到的是先读取前510行存入文件,然后在读取最后11行,这样会产生一个文件,如何避免呢?这时就有一个指令叫做通道,我的理解就是相当于把head取出前510行的数据通过这个通到,传入tail指令中,进行截取数据,这样就避免了产生文件了,如下方代码所示的效果。
| 通道
[root@VM-24-9-centos ~]# head -511 test.txt | tail -11 Hello 500 Hello 501 Hello 502 Hello 503 Hello 504 Hello 505 Hello 506 Hello 507 Hello 508 Hello 509 Hello 510 [root@VM-24-9-centos ~]#
八、时间指令
时间肯定都清楚,这个指令主要是获取时间以及时间戳的,用法是data+时间格式,具体如下,这里要注意一下小写s是时间戳,要是以及使用如下方代码。
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
%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
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″ //这样可以设置全部时间
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
[root@VM-24-9-centos ~]# date +%H 18 [root@VM-24-9-centos ~]# date +%M 05 [root@VM-24-9-centos ~]# date +%S 20 [root@VM-24-9-centos ~]# date +%X 06:05:28 PM [root@VM-24-9-centos ~]# date +%d 24 [root@VM-24-9-centos ~]# date +%m 03 [root@VM-24-9-centos ~]# date +%Y 2024 [root@VM-24-9-centos ~]# date +%F 2024-03-24 [root@VM-24-9-centos ~]# date +%s 1711274963 [root@VM-24-9-centos ~]#
九、cal指令
这个指令怎么说呢,就是查看日历,是阳历的日历,感觉没啥用,代码演示如下,常用选项如下。
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
[root@VM-24-9-centos ~]# cal March 2024 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [root@VM-24-9-centos ~]# cal -y 2024 January February March Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 2 7 8 9 10 11 12 13 4 5 6 7 8 9 10 3 4 5 6 7 8 9 14 15 16 17 18 19 20 11 12 13 14 15 16 17 10 11 12 13 14 15 16 21 22 23 24 25 26 27 18 19 20 21 22 23 24 17 18 19 20 21 22 23 28 29 30 31 25 26 27 28 29 24 25 26 27 28 29 30 31 April May June Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 4 1 7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8 14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15 21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22 28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29 30 July August September Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7 7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14 14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21 21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 28 29 30 31 25 26 27 28 29 30 31 29 30 October November December Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 4 5 1 2 1 2 3 4 5 6 7 6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14 13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21 20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28 27 28 29 30 31 24 25 26 27 28 29 30 29 30 31 [root@VM-24-9-centos ~]# cal -3 February 2024 March 2024 April 2024 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 3 1 2 1 2 3 4 5 6 4 5 6 7 8 9 10 3 4 5 6 7 8 9 7 8 9 10 11 12 13 11 12 13 14 15 16 17 10 11 12 13 14 15 16 14 15 16 17 18 19 20 18 19 20 21 22 23 24 17 18 19 20 21 22 23 21 22 23 24 25 26 27 25 26 27 28 29 24 25 26 27 28 29 30 28 29 30 31 [root@VM-24-9-centos ~]# cal -j March 2024 Sun Mon Tue Wed Thu Fri Sat 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 [root@VM-24-9-centos ~]#
十、find指令
这个指令从名字就可以看出他是一个查找的指令,有点像Windows下的搜索,用法如代码所示。
-name 按照文件名查找文件
[root@VM-24-9-centos /]# find -t1 find: unknown predicate `-t1' [root@VM-24-9-centos /]# find -name t1.txt ./root/t1.txt
十一、grep指令
这个指令也是查找不过是查找某个文档里面的数据,常用选项如下,演示代码如下
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
[root@VM-24-9-centos ~]# grep '666' test.txt Hello 666 Hello 1666 Hello 2666 Hello 3666 Hello 4666 Hello 5666 Hello 6660 Hello 6661 Hello 6662 Hello 6663 Hello 6664 Hello 6665 Hello 6666 Hello 6667 Hello 6668 Hello 6669 Hello 7666 Hello 8666 Hello 9666
十二、zip指令与unzip指令
我们都知道压缩包,压缩包里面的东西有很多,在Windows环境下下载个软件就可以自由解压和压缩了,在Linux环境呢?这里是利用zip和unzip两个指令进行压缩与解压,这里是压缩了一个文件夹就是d1,我先利用ll指令查看了一下,然后进行压缩,可以看到压缩后的字节数明显下去了,再用unzip解压到d1的文件夹内,用tree指令查看是否解压成功。
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
[root@VM-24-9-centos ~]# ll total 124 drwxr-xr-x 4 root root 4096 Mar 24 18:38 d1 -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]# zip -r dd.zip d1 adding: d1/ (stored 0%) adding: d1/d2/ (stored 0%) adding: d1/d3/ (stored 0%) [root@VM-24-9-centos ~]# ll total 128 drwxr-xr-x 4 root root 4096 Mar 24 18:38 d1 -rw-r--r-- 1 root root 436 Mar 24 18:50 dd.zip -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]# unzip dd.zip -d ./d1 Archive: dd.zip creating: ./d1/d1/ creating: ./d1/d1/d2/ creating: ./d1/d1/d3/ [root@VM-24-9-centos ~]# ll total 128 drwxr-xr-x 5 root root 4096 Mar 24 18:50 d1 -rw-r--r-- 1 root root 436 Mar 24 18:50 dd.zip -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]# tree . |-- d1 | |-- d1 | | |-- d2 | | `-- d3 | |-- d2 | `-- d3 |-- dd.zip |-- hello.c |-- t1.txt |-- t2.txt `-- test.txt 6 directories, 5 files [root@VM-24-9-centos ~]#
十三、tar指令
这个就是打包,一般都是直接利用组合,如下方的常用选项中的czvf就是直接压缩加打包,xzvf就是解压加解开这个包,如下方代码所演示。
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目
[root@VM-24-9-centos ~]# ll total 128 drwxr-xr-x 5 root root 4096 Mar 24 18:50 d1 -rw-r--r-- 1 root root 436 Mar 24 18:50 dd.zip -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]# tar -czvf d1.tgz d1 d1/ d1/d2/ d1/d1/ d1/d1/d2/ d1/d1/d3/ d1/d3/ [root@VM-24-9-centos ~]# ll total 132 drwxr-xr-x 5 root root 4096 Mar 24 18:50 d1 -rw-r--r-- 1 root root 179 Mar 24 18:58 d1.tgz -rw-r--r-- 1 root root 436 Mar 24 18:50 dd.zip -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]# rm -rf d1 [root@VM-24-9-centos ~]# ll total 128 -rw-r--r-- 1 root root 179 Mar 24 18:58 d1.tgz -rw-r--r-- 1 root root 436 Mar 24 18:50 dd.zip -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]# tar -xzvf d1.tgz d1/ d1/d2/ d1/d1/ d1/d1/d2/ d1/d1/d3/ d1/d3/ [root@VM-24-9-centos ~]# ll total 132 drwxr-xr-x 5 root root 4096 Mar 24 18:50 d1 -rw-r--r-- 1 root root 179 Mar 24 18:58 d1.tgz -rw-r--r-- 1 root root 436 Mar 24 18:50 dd.zip -rw-r--r-- 1 root root 72 Mar 23 23:09 hello.c -rw-r--r-- 1 root root 29 Mar 24 17:21 t1.txt -rw-r--r-- 1 root root 29 Mar 24 17:32 t2.txt -rw-r--r-- 1 root root 108902 Mar 24 09:01 test.txt [root@VM-24-9-centos ~]#
十四、bc指令
bc就是相当于一个计算器,就可以直接进行简单的加减乘除等运算,按下quit就是退出,如下方代码所示。
[root@VM-24-9-centos ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1 1 (standard_in) 1: syntax error 1+1 2 2+1 3 2*12 24 12/4 3 quit [root@VM-24-9-centos ~]#
十五、uname指令
这个就是用来查看LInux的内核版本,uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息,常用选项如下,代码演示如下。
a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
[root@VM-24-9-centos ~]# uname -ra Linux VM-24-9-centos 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux [root@VM-24-9-centos ~]# uname -r 3.10.0-1160.108.1.el7.x86_64 [root@VM-24-9-centos ~]#
十六、重要的热键
这里介绍三个热键,也就是快捷键,Tab按键具有命令补全和档案补齐的功能Ctrl-c按键让当前的程序停掉Ctrl-d按键通常代表着键盘输入结束的意思另外他也可以用来取代exit,这里Tab不太好演示,就是按下Tab就会把没有大打完的命令补充完,另外两个我就用代码来进行演示,ctrl-c就是第一个在cat运行时停止运行,ctrl-d就是第二个,他俩的区别可以看出一个有^C一个没有。
[root@VM-24-9-centos ~]# cat as as 123 123 qwe qwe saasd saasd ^C [root@VM-24-9-centos ~]# cat asd asd asd asd [root@VM-24-9-centos ~]#
最后附上我总结的这下指令的思维导图