1,登陆系统时,$代表普通用户,#代表管理员用户
2,执行多个命令时cmd1;cmd2 使用分号隔开
3,ehco -e "abc\nabc" 转换转义字符,会生成两个换行
4,拼接环境变量例子:export PATH="$PATH:/home/user/bin"
5,获取字符串的长度:
[root@ganglia ~]# var="abc" ; echo ${#var}
3
[root@ganglia ~]# var="abdc" ; echo ${#var}
4
[root@ganglia ~]# var="中国人" ; echo ${#var}
3
[root@ganglia ~]#
5,识别当前的shell:
[root@ganglia ~]# echo $SHELL
/bin/bash
[root@ganglia ~]# echo $0
-bash
[root@ganglia ~]#
6,检测当前的用户是否为超级用户:
if [ $UID -eq 0 ] ; then
echo "是root用户"
else
echo "不是超级用户"
fi
超级用户的UID为0
7,定义别名,查看别名使用alias -p,定义别名的例子:alias cp='cp -i'
8,tput cols 和tput lines 分别是获取终端的行数和列数,tput longname获取终端名字
9,
(1)获取日期date
(2)打印纪元时,date+%s
(3)检测一组命令花费时间可用如下的代码:
start=$(date +%s)
echo "哈喽"
sleep 3
end=$(date +%s)
r=$(( end - start ))
echo "程序花费时间为$r秒"
10,调式脚本bash -x script.sh
11,
(1)不使用回车键来读取n个字符,read -n 2 var
(2)用无回显的方式读取密码: read -s var
(3)显示提示信息: read -p "请输入: " var
(4)在特定时间内读取输入: read -t time var
(5)用特定的定界符作为输入行的结束: read -d ":" var ,当用户在控制台输入冒号时这个输入就代表结束了
12,比较测试
eq 等于
ne 不等于
gt 大于
lt 小于
ge 大于或等于
le 小于或等于
-a 逻辑与
-o 逻辑或
判断字符串相等使用 [[ $a = $b ]] 也可以 [[ $a == $b]]
不相等使用 [[$a != $b ]]
13,文件系统测试
-f 是否为文件
=x 可执行
-d 是否为目录
-e 是否存在
-c 是否为字符设备
-b 块设备
-w 文件可写
-r 文件可读
-L 是否为符号链接
14,
cat拼接文件 cat file1 file2 ....
cat -s 忽略多余的空行
cat -n 打印行号
15,录制脚本使用序列
script -t 2> timing.log -a output.session
播放序列:
scriptreplay timing.log output.session
16, find . -print 打印文件和目录列表
find /home -name "*.txt -print 通配符打印
find . -iname "abc* -print 忽略大小写
查找两个文件 find . \( -name "*.txt" -o -name "*.pdf" \) -print
find /home -path "*/abc/*" -print 可以在路径里面查找,-name可以在文件名里面查询
除此之外还支持,正则查询
find ! -name "*.txt" -print 排除用法
find . -maxdepth 1 -name "f*" -print 基于深度的查询
find . -mindepth 1 -name "f*" -print 基于深度的查询
find . -type d -print 按文件类型过滤
f 普通文件
l 符号链接
d 目录
c 字符设备
b 块设备
s 套接字
p fifo
按时间搜索
-atime 用户最近一次的访问时间
-mtime 文件内容最后一次被修改的时间
-ctime 文件元数据最后一次变化的时间
find . -type f -atime -7 -print 最近7天,访问过的文件
find . -type f -atime 7 -print 恰好7天访问的文件
find . -type f -atime +7 -print 超过7天 访问过的文件
-amin 访问时间
-mmin 修改时间
-cmin 变化时间
find . -type f -amin +7 打印访问时间超过7分钟的
find . -type f -newer file.txt -print 打印比file.txt修改时间更近的文件
按文件大小查询
b 块 512字节
c 字节
w 字 2字节
k 1024字节
M 1024k字节
G 1024M字节
find . -type f -size +2k 查找大于2kb的文件
find . -type f -size -2k 查找小于2kb的文件
find . -type f -size 2k 查找等于2kb的文件
查找并删除文件:
find . -type f -name "*.txt" -delete
find . -type f -perm 644 -print 查找权限的匹配
find . -type f -user search -print 查找用户search下的文件
下面来看下xargs来格式化,参数:
[root@ganglia 912]# cat aa.txt
1 2 3 4 5 6
7 8 9 10
11 12
[root@ganglia 912]# cat aa.txt | xargs
1 2 3 4 5 6 7 8 9 10 11 12
[root@ganglia 912]# cat aa.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12
[root@ganglia 912]#
[root@ganglia 912]# echo "anbnc" | xargs -d n
a b c
[root@ganglia 912]#
使用-d命令,自己指定定界符
[root@ganglia 912]# echo "anbnc" | xargs -d n -n 1
a
b
c
[root@ganglia 912]#
-n可以指定每行显示几个字符
下面看下tr命令
转换大小写
[root@ganglia 912]# echo "i am CAT" | tr 'A-Z' 'a-z'
i am cat
[root@ganglia 912]#
加密映射:
echo "12354" | tr '0-9' '987456213'
解密
echo "12354" | tr '987456213' '0-9‘
删除指定内容集合
[root@ganglia 912]# echo "cat 12 adf 3 " | tr -d '0-9'
cat adf
[root@ganglia 912]#
16 , 文件校验和 md5sum
17, 排序,去重,统计 sort , uniq , c
18,随机数命令 mktmp test.XXXXX
19,分割文件 split 可以按大小和行数
20,利用多进程并行提高执行效率
[root@ganglia 912]# cat bcc.sh
#存储进程号数组
PIDS=()
for file in a.txt b.xt
do
#生成md5校验和
md5sum $file &
#获取进程号,存进数据
PIDS+=("$!")
done
#阻塞等待所有任务完成
wait ${PIDS[@]}
[root@ganglia 912]#