shell中常用命令
ls
功能:列出文件目录的内容
常用选项:
-a 显示所有文件,包括隐藏的
-t 长格式列出信息
-i 显示文件inode号
-t 按修改时间排序
-r 按修改时间倒序排序
示例:
按修改时间排序:
[root@Zabbix server ~]# ll -t
total 53864
-rw-r--r-- 1 root root 5096 Mar 16 11:12 screendump.txtg
-rw-r--r-- 1 root root 116 Mar 14 15:57 ff.sh
-rw-r--r-- 1 root root 17 Mar 14 15:23 test.txt
-rw-r--r--. 1 root root 228 Mar 9 17:56 expect-scp.sh
-rw-r--r--. 1 root root 3 Mar 9 17:49 mysql.bak.2017-03-08
-rw-r--r--. 1 root root 4 Mar 9 17:44 mysql.
-rw-r--r--. 1 root root 35 Mar 6 21:51 A.txt
-rw-r--r--. 1 root root 479 Mar 6 17:24 slect.sh
-rwxr-xr-x. 1 root root 213 Mar 1 21:53 ex.sh
-rw-r--r--. 1 root root 45008350 Mar 1 17:53 grafana-4.1.2-1486989747.x86_64.rpm
drwxr-xr-x. 16 root root 4096 Feb 28 23:59 ntopng
drwxr-xr-x. 10 root root 4096 Feb 28 23:32 nDPI
drwxr-xr-x. 8 root root 4096 Feb 27 17:20 redis
-rw-r--r--. 1 root root 188 Feb 25 22:37 check.sh
drwxr-xr-x. 2 root root 4096 Feb 25 21:50 backup
-rw-r--r--. 1 root root 64 Feb 25 21:35 useraddtest.sh
-rw-r--r--. 1 root root 111 Feb 3 17:13 test.log
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Desktop
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Documents
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Downloads
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Music
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Pictures
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Public
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Templates
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Videos
-rw-------. 1 root root 3318 Jan 22 05:32 anaconda-ks.cfg
-rw-r--r--. 1 root root 41433 Jan 22 05:32 install.log
-rw-r--r--. 1 root root 9154 Jan 22 05:29 install.log.syslog
-rw-r--r--. 1 root root 9976177 Jun 22 2016 redis.tar.gz
ll -t
按修改时间倒序排序
[root@Zabbix server ~]# ll -rt
total 53864
-rw-r--r--. 1 root root 9976177 Jun 22 2016 redis.tar.gz
-rw-r--r--. 1 root root 9154 Jan 22 05:29 install.log.syslog
-rw-r--r--. 1 root root 41433 Jan 22 05:32 install.log
-rw-------. 1 root root 3318 Jan 22 05:32 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Videos
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Templates
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Public
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Pictures
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Music
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Downloads
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Documents
drwxr-xr-x. 2 root root 4096 Jan 22 06:38 Desktop
-rw-r--r--. 1 root root 111 Feb 3 17:13 test.log
-rw-r--r--. 1 root root 64 Feb 25 21:35 useraddtest.sh
drwxr-xr-x. 2 root root 4096 Feb 25 21:50 backup
-rw-r--r--. 1 root root 188 Feb 25 22:37 check.sh
drwxr-xr-x. 8 root root 4096 Feb 27 17:20 redis
drwxr-xr-x. 10 root root 4096 Feb 28 23:32 nDPI
drwxr-xr-x. 16 root root 4096 Feb 28 23:59 ntopng
-rw-r--r--. 1 root root 45008350 Mar 1 17:53 grafana-4.1.2-1486989747.x86_64.rpm
-rwxr-xr-x. 1 root root 213 Mar 1 21:53 ex.sh
-rw-r--r--. 1 root root 479 Mar 6 17:24 slect.sh
-rw-r--r--. 1 root root 35 Mar 6 21:51 A.txt
-rw-r--r--. 1 root root 4 Mar 9 17:44 mysql.
-rw-r--r--. 1 root root 3 Mar 9 17:49 mysql.bak.2017-03-08
-rw-r--r--. 1 root root 228 Mar 9 17:56 expect-scp.sh
-rw-r--r-- 1 root root 17 Mar 14 15:23 test.txt
-rw-r--r-- 1 root root 116 Mar 14 15:57 ff.sh
-rw-r--r-- 1 root root 5096 Mar 16 11:12 screendump.txtg
ll -rt
查看文件inode
[root@Zabbix server ~]# ll -i check.sh
131228 -rw-r--r--. 1 root root 188 Feb 25 22:37 check.sh
ll -i
echo
功能:打印一行
常用选项:
-n 不加换行符
-e 解释转义符
实例:
解释换行符:
[root@Zabbix server ~]# echo -e "1\n2\n3\n"
1
2
3
echo -e
printf
功能:格式化打印数据,默认打印字符串不换行
格式:printf format [argeuments]
常用选项:
format:
%.ns 输出字符串,n是输出几个字符
%m.nf 输出浮点数,m是输出的整数位数,n是输出的小数位数
%x 不带正负号的十六进制值,使用a至f表示10至15
%X 不带正负号的十六进制,使用A至F表示10至15
%% 输出单个%
一些常用的空白符:
\n 换行
\r 回车
\t 水平制表
对齐方式:
%-5s 对参数每个字段左对齐,宽度为5
%-4.2f 左对齐,宽度为4,保留两位小数 (不加横线“-”表示右对齐)
实例:
输出一个字符:
[root@Zabbix server ~]# printf "%.1s\n" abc
a
printf "%.1s
保留一个小数点:
[root@Zabbix server ~]# printf "%.1f\n" 1233.333
1233.3
[root@Zabbix server ~]# printf "%.2f\n" 1233.333
1233.33
[root@Zabbix server ~]# printf "%.3f\n" 1233.333
1233.333
printf "%.nf
格式化输出:
[root@Zabbix server ~]# printf "user: %s\tpass: %d\n" abc 123
user: abc pass: 123
printf "user: %s\tpass: %d\n" abc 123
左对齐宽度为10:
[root@Zabbix server ~]# printf "%-10s %-10s %-10s\n" ID Name Number
ID Name Number
printf "%-10s %-10s %-10s\n"
右对齐宽度为10:
[root@Zabbix server ~]# printf "%10s %10s %10s\n" ID Name Number
ID Name Number
printf "%10s %10s %10s\n"
每段对齐:
[root@Zabbix server ~]# printf "%-10s\n" ID Name Number
ID
Name
Number
printf "%-10s\n"
[root@Zabbix server ~]# printf "%10s\n" ID Name Number
ID
Name
Number
printf "%10s\n"
cat
功能:连接文件和标准输出打印
常用选项:
-b 显示非空行行号
-n 显示所有行行号
-T 显示tab,用^I表示
-E显示以$结尾
实例:
连接两个文件:
[root@Zabbix server ~]# cat A.txt ff.sh
A 90
B 91
C 80
A 92
D 21
D 21
E 15
#!/bin/bash
gt80=F
for NVALUE in `seq 81`
do
if [ $NVALUE -lt 80 ];then
:
else
gt80=T
fi
done
echo ${gt80}
cat file1 file2
将EOF标准输入作为cat标准输出在写到a.txt
[root@Zabbix server ~]# cat > a.txt << EOF
123
456
abc
efg
EOF
[root@Zabbix server ~]# cat a.txt
123
456
abc
efg
<
显示非空行行号:
[root@Zabbix server ~]# cat -b a.txt
1 123
2 456
3 abc
4 efg
cat -b
tac
功能:连接文件和倒叙打印文件
常用选项:
实例:
倒序打印每一行:
[root@Zabbix server ~]# tac a.txt
efg
abc
456
123
tac file
rev
功能:反向打印文件的每一行
常用选项:
实例:
[root@Zabbix server ~]# echo "123" | rev
321
rev
wc
功能:统计文件行数,字节,字符数
常用选项:
-c 打印文件字节数,一个英文字母占1个字节,一个汉字占2-4字节 (根据编码)
-m 打印文件字符数,一个汉字占2个字符
-l 打印多少行
实例:
统计文件多少行:
wc -l file
cp
功能:复制文件或目录
常用选项:
-a 归档 (等同于-dR 复制符号链接 处理指定目录以及子目录)
-b 目标文件如果存在那么自动创建备份,备份文件的名称是文件名跟~
-f 强制复制文件或目录
-r 递归复制文件或目录
-p 保留原有文件或目录的属性
-i 覆盖文件之前先询问用户
-u 当源文件比目的文件修改时间新的时候才复制
-v 显示复制过程
实例:
复制相同名字的文件,同时生成备份文件:
[root@Zabbix server ~]# cd /tmp/
[root@Zabbix server tmp]# touch test
[root@Zabbix server tmp]# cd
[root@Zabbix server ~]# touch test
[root@Zabbix server ~]# echo 111 > test
[root@Zabbix server ~]# cat test
111
[root@Zabbix server ~]# cp -b test /tmp/test
cp: overwrite `/tmp/test'? y
[root@Zabbix server ~]# cd /tmp/
[root@Zabbix server tmp]# ll test
test test~
cp -b
复制目录:
[root@Zabbix server ~]# cp -rf redis /opt/
cp -rf
mkdir
功能:创建目录
常用选项:
-p 递归创建目录
-v 显示创建过程
实例:
创建多级目录:
[root@Zabbix server ~]# mkdir -p /shenjianyu/test/test1
mkdir -p
创建多个目录:
[root@Zabbix server shenjianyu]# mkdir {test5,test6}
[root@Zabbix server shenjianyu]# ls
data DejaVuSans.ttf mysql-5.5.49.tar.gz nginx-1.9.15 nginx-1.9.15.tar.gz php-5.5.35 php-5.5.35.tar.gz screendump.txt test5 test6 zabbix-3.0.4 zabbix-3.0.4.tar.gz
mkdir { , }
创建连续目录:
[root@Zabbix server shenjianyu]# mkdir {a..c}
[root@Zabbix server shenjianyu]# ls
a b c data DejaVuSans.ttf mysql-5.5.49.tar.gz nginx-1.9.15 nginx-1.9.15.tar.gz php-5.5.35 php-5.5.35.tar.gz screendump.txt test5 test6 zabbix-3.0.4 zabbix-3.0.4.tar.gz
mkdir { .. }
mv
功能:移动文件,目录或者重命名
常用选项:
-b 目标文件存在创建备份。备份文件是”文件名后跟~“
-u 当源文件比目的文件修改时间新时才移动
-v 显示移动过程
实例:
移动文件:
[root@Zabbix server ~]# mv a.txt /opt/
mv
重命名文件:
[root@Zabbix server ~]# mv a.txt b.txt
mv
本文并非原创,是根据李振良老师的总结加上我自己的一些实例