今天学习的是一些简单的命令

1.head   :查看文件的头部内容 ,默认是前十行

            它有一个选项是  -n :number   比如 -n3   它可以查看文件的前三行  n可以省略

[root@zhang ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

 2.tail  :查看文件的尾部内容 ,默认是后十行,从最后一行往前数十行。

         它也有一个选项是 -n : number  比如-n3 它可以查看文件的后三行  n可以省略

       还有一个选项是 -f   :它的作用是追踪文件尾部变化 (一般用于查看日志) 

[root@zhang ~]# tail -3 /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

    head和tail 组合使用  :

          查看/etc/passswd 里的2-5行

[root@zhang ~]# head -5 /etc/passwd | tail -4
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 我们在上一部分使用了 |  这个符号  它的意思是 管道  :  将左边的命令执行后的结果,传递给右边命令的输入;

3.我们接下来学习了如何将互联网上的资源下载到Linux服务器上

    wget  : 由于我们是最小化安装的操作系统,里面没有wget命令  ,所有我们需要先安装上

                  安装wget命令:yum install wget-y

                           命令的使用是  wget 加上网址就可以下载到Linux服务器上

                                          选项:  -O  :可以指定路径  + 想要保持的名称

4.将Linux上已有的文件下载到{MacOS | windows}上、将windows上的文件上传到Linux服务器上

                      我们先安装这个命令:yum install lrzsz-y   

安装完成后  :  rz:直接输入命令,选择windows的文件,即可完成上传

                          sz: /PATH 路径    下载到Windows

 

      注意:它们都1.不支持断点续传、

                            2.仅支持上传文件,如果上传其他的,可以选择将文件夹打成.zip包,再上传就可以了

                            3.不支持上传单个文件超过4Gb以上的.iso镜像

5.查找命令:不是查找文件,而是查找命令的。

                  可以获取一个命令的绝对路径; 因为有些命令都带有了别名,而当我们通过相对路径执行命令时,就会先执行别名;

         

  which:   它会查找命令的别名和绝对路径            

[root@zhang ~]# which cp
alias cp='cp -i'
	/usr/bin/cp

whereis  :它会查找命令的绝对路径 和相关的文件 

               选项 : -b   定位可执行的文件 ,我们可以用它来查找命令的绝对路径

[root@zhang ~]# whereis cp
cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz
[root@zhang ~]# whereis -b cp
cp: /usr/bin/cp

 

如果查找失败的话那就说明:1.根本不存在这个命令

                                                2.没有安装这个命令

[root@zhang ~]# which xxx
/usr/bin/which: no xxx in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@zhang ~]# where xxx
-bash: where: command not found

 

那么现在就有了一个问题:

            为什么在相对路径执行的命令,它可以执行成功,而命令实际上存储在另一个目录下,它们是如何关联起来的?

             

实际上,它们是通过一个叫环境变量关联起来的;

[root@zhang ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

比如当执行ls命令时,他会读取 $PATH 存储的路径,通过这个路径去获取该命令是否存在,存在就执行
                     
    如果想加入新的命令 我们可以有两种方式:

                           
                                    1.修改Path路径,但可能会带来不同版本执行顺序;  [高版本  ---》 低版本  ] 
                                    2.将命令直接拷贝到  $PATH  查找命令的路径中;

 

6.过滤:grep “过滤关键字” 文件路径     

[root@zhang ~]# cat 1.txt 
z  b  c   d   e 
1  2  3  4  5
99
98
[root@zhang ~]# grep "98" 1.txt 
98

           

            -v:排除某个关键字

[root@zhang ~]# grep -v "98" 1.txt 
z  b  c   d   e 
1  2  3  4  5
99


            -E:支持多条件匹配;

[root@zhang ~]# grep -E '99|98' 1.txt 
99
98


             -i: 忽略大小写

[root@zhang ~]# cat 1.txt 
z  b  c   d   e 
1  2  3  4  5
99
98
B
b
[root@zhang ~]# grep -i 'b' 1.txt 
z  b  c   d   e 
B
b


           -o:提取某个关键字,并打印出来      

[root@zhang ~]# grep -o 'z' 1.txt 
z

 

7.排序 sort  去重 uniq 

           选项 :

                     -n:以number方式排序

[root@zhang ~]# cat 1.txt 
1
3
5
8
34
69
134
53
98

[root@zhang ~]# sort -n 1.txt 

1
3
5
8
34
53
69
98
134

                          -r :反转(从大到小)

 

[root@zhang ~]# sort -nr 1.txt 
134
98
69
53
34
8
5
3
1

                                 -k:指定列(默认以空格为分隔符)

[root@zhang ~]# cat 1.txt 
1  223  :  434
3 434  :  33
23  32 : 33 
5
8
     377  3838 
    263 
34
69
134
53
98

[root@zhang ~]# sort -k2 1.txt 

134
34
5
53
69
8
98
    263 
1  223  :  434
23  32 : 33 
     377  3838 
3 434  :  33

 

去重 

 uniq    选项    -c :cpunt  出现的次数 ;统计           它和排序是组合起来使用的

[root@zhang ~]# sort -nr | uniq -c 1.txt 
      1 1  223  :  434
      1 3 434  :  33
      1 23  32 : 33 
      1 5
      1 8
      1      377  3838 
      1     263 
      1 34
      1 69
      1 134
      1 53
      1 98
      1 

7.取列 :awk 

            默认以空格为分割线

[root@zhang ~]# cat 1.txt 
1  223  :  434
3 434  :  33
23  32 : 33 
5
8
     377  3838 
    263 
34
69
134
53
98

[root@zhang ~]# awk  '{print $1}' 1.txt 
1
3
23
5
8
377
263
34
69
134
53
98

                       选项:-F  指定分隔符

            

[root@zhang ~]# awk -F ":" '{print $2}' 1.txt 
  434
  33
 33 



 

8.替换 :sed   

            sed  s#旧#新#g            #:可以改成任何字符   g:如果取消掉g  :只是替换每一行出现的第一个旧的内容

                                                                                                                     如果加上g  那么会替换掉匹配到的所有

 

[root@zhang ~]# sed s#3838#zbc#g 1.txt 
1  223  :  434
3 434  :  33
23  32 : 33 
5
8
     377  zbc 
    263 
34
69
134
53
98

 

sed -r  ’s#()()()#\1\ 2 \3#g' :分组匹配

 

[root@zhang ~]# cat 1.txt 
123  22  QQ
abc  zhang  san 
abc  AS   SS
efg  SAK  QQ
AYH  WSZ  QQ
cad  YOU  W
[root@zhang ~]# grep "san" 1.txt  |  sed -r 's#(.*c)(.*)(s.*$)#\2#g'
  zhang