今天学习的是一些简单的命令
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