Linux的学习之路:3、基础指令(2)

发布于:2024-03-29 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、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 [ $count -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 ~]# 

最后附上我总结的这下指令的思维导图

本文含有隐藏内容,请 开通VIP 后查看