常用命令实践
[root@b ~]# cat c.txt
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
[root@b ~]# cat c.txt |sed 's/^/& /' &作用是代替前面需要替换旧的内容,这里指^。而^有指代以某某开头。
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
[root@b ~]# cat c.txt |sed 'N;s/\n/ /'|sed 'N;s/\n/ /' N指每次读取2行,然后将换行符替换为空格
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4
tr -d "\n" tr命令的作用——删除换行符,合并多行
[root@b ~]# cat c.txt | tr -d "\n 默认删除换行符后,所有字段连在一起
1.1.1.12.2.2.23.3.3.34.4.4.4
[root@b ~]# cat c.txt |sed 's/^/& /' | tr -d "\n" 利用sed替换命令在每个字段行首添加空格符
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4
sed和tr命令对比:
[root@b ~]# cat c.txt |sed 's/^/& /' | tr -d "\n" | xargs echo
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 #开头无空格
[root@b ~]# cat c.txt |sed 'N;s/\n/ /'|sed 'N;s/\n/ /'
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 #开头无空格
[root@b ~]# echo " 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4"
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 #开头有空格
[root@b ~]# echo " 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4" | xargs echo
1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 #开头无空格
sort排序命令使用
[root@b ~]# sort -nr -t ":" -k 3 /etc/passwd | head -n表示以数值型进行排序,-t指定分隔符为冒号,-r表示反向排序,-k指定排序的字段范围,这里是按第三个3字段排序
abc:x:1002:1003::/home/abc:/bin/bash
feng:x:1001:1002::/home/feng:/bin/bash
no:x:1000:1001:no:/home/no:/bin/bash
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
polkitd:x:998:997:User for polkitd:/:/sbin/nologin
saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin
unbound:x:996:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
geoclue:x:995:994:User for geoclue:/var/lib/geoclue:/sbin/nologin
mysql:x:994:1000::/home/mysql:/sbin/nologin
[root@b ~]# find . -maxdepth 1 -name "*.sh" #find查找当前目录下一级目录的所有符合条件的文件,-maxdepth 参数用于指定find查找目录的层级深度,默认find查找当前目录及目录下所有子目录内符合条件的文件。
./a.sh
[root@b ~]# tar czf a.tar.gz a.sh #tar打包文件,多次打包用同一个打包名称时,后面打包内容会覆盖前面打包内容。需要注意!
[root@b ~]# tar czf a.tar.gz c.txt
[root@b ~]# tar czf a.tar.gz a.sh.bak
[root@b ~]# tar -tf a.tar.gz
a.sh.bak
[root@b ~]# i=1 #$((i++)) 与$i区别,需要注意。i++等价于i=$i+1的意思。
[root@b ~]# echo $((i++))
1
[root@b ~]# echo $i
2
[root@b ~]# echo $((i++))
2
[root@b ~]# echo $i
3
[root@b ~]# echo $((i++))
3
[root@b ~]# echo $i
4
while read 用法,表示逐行去读取某个文件
[root@b ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@b ~]# while read line;do echo $line;done </etc/hosts # </etc/hosts代表read文件内容的来源
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
select选择菜单,PS3为固定语句格式。
[root@b linshi]# cat b.sh
#!/bin/bash
PS3="what system do you like?"
select i in CentOS Ubuntu Redhat
do
echo "you like system is:" $i
done
[root@b linshi]# sh b.sh
1) CentOS
2) Ubuntu
3) Redhat
what system do you like?1
you like system is: CentOS
what system do you like?2
you like system is: Ubuntu
what system do you like?3
you like system is: Redhat
what system do you like?^C