shell命令(持续更新)
命令
-
head
- 默认返回前10行
- head -15 test.txt 返回前15行
-
tail
- 默认返回后10行
- head 和 tail 经常一起用,返回中间的行
- head -15 test.txt | tail -5 返回第11到15行,|是管道符
-
cut
- 截取指定数据
- 默认按照TAB分隔
- cut -d" " -f1,3 test.txt 按照空格分隔,并返回第1列和第3列
- cut -d" " -f1-3 test.txt 按照空格分隔,并返回第1至3列
- cut -d" " -f1-3,5 test.txt 按照空格分隔,并返回第1至3列,以及第5列
- cut -d" " -f2- test.txt 按照空格分隔,并返回第2列及以后
- cut -d" " -f-2 test.txt 按照空格分隔,并返回前2列
-
cat
- 返回所有数据
-
sort
- 排序,默认按ASCII
- sort -r 反序
- sort -n 按照数值排序
-
uniq
- 去重,但只能去除连续的重复数据
- 通常需要先sort排序后,再uniq去重
- sort test.txt | uniq 返回去重后的数据
- uniq -d 返回重复的数据
- uniq -c 返回去重后的数据及对应重复的个数
-
wc
- word count
- wc -l 行数统计
- wc -w 单次统计
输入输出
- read -p "请输入:" name1
- 不指定参数名,默认参数名为REPLY
- echo
引用
- 变量名
- "${变量名}"
- 命令$()
- $(cat test.txt)
- 数值计算$(())
- $(( 1 + 2 ))
- $(( 2 * 2 ))
- 支持: + - * / % **
- ++ --
- < <= > >= == !=
- ~ | & ^ << >>
- ! && ||
- 表达式$[]
- 条件成立返回0,不成立返回非0
- 数值表达式: -gt -lt -eq -ne
- $[ 1 -gt 2 ]
- 逻辑表达式:&& ||
- $[ 1 -eq 2 ] && echo "Yes" || echo "No"
- 文件表达式-f是否为文件 -d是否为目录 -x是否可执行 -e是否存在
-:$[ -e test.txt ] && echo "Yes" || echo "No" - 字符串比较: == !=
脚本格式
#!/bin/bash
# 单行注释
<<某字符
多行注释
相同字符
函数及传参
parameter='123'
function test()
{
echo "这是一个function, ${parameter}"
echo -e "参数1:$1 \n参数2:$2"
}
# 参数从命令行传入 bash function.sh a1 a2
test $1 $2
# 参数直接传入
test2 1 2
流程控制
- if
read -p "请输出一个整数:" num
if (( "${num}" > 10 ))
then
echo "数大于10"
elif (( "${num}" > 5 ))
then
echo "数大于5且小于等于10"
else
echo "数小于5"
fi
- for
i=0
for file in $(dir)
do
i=$(( ${i} + 1 ))
echo "第${i}个文件为:${file}"
done
max=7
for (( i=1;i<=max;i++))
do
echo "第${i}次循环"
done
- while
read -p "请输入一个数字:" a
while [ "${a}" -lt 10 ]
do
echo "${a}"
a=$(( a + 1 ))
done
- until
- 条件不满足则执行
- case
read -p "请输入一个数字:" a
case "${a}" in
3)
echo "条件1: ${a}";;
5)
echo "条件2: ${a}";;
7)
echo "条件3: ${a}";;
*)
echo "条件4: ${a}";;
esac