一. 路径篇
cd 变换路径
# 返回上一次访问的路径,反复修改文件必备
cd -
pwd 当前路径
pwd -P # 输出当前no-link路径
readlink 查找软链接地址
二. 字符串篇
grep 字符串查找神技
# 查找文件中的包含某字符串的行
grep -n 'finding-string' finding-path
# 找文件夹中所有cpp文件包含某字符串的行
grep -nr --include='*.cpp' 'find-string' your-path
find 文件搜索引擎
find path -option "keyword" [-print][-exec -ok command]{} ;
# 利用文件名模糊查询当前目录
find ./ -name '*.hpp' # 或者 find ./ -name \*.hpp
# 查找类型仅为文件
find . -type f -name '*'
sed 文件流中大牛,字符串/文件读写就靠它(行优先)
# 1.匹配的时候用双反斜线"/.../"
# 2.功能符[放在最后面]:d(删除行),p(输出行),a(追加行),c(替换行),g(全局替换)
# 3.Options:-i(在原文件上修改),-n(只输出符合条件行)
# 4.搜索范围为闭区间
# 每行的最后面添加"01"
sed 's/$/01/g'
# 替换字符串(str2替换str1)
sed 's/str1/str2/g' file
# 替换字符,在包含ABC的行将A替换成a
sed '/ABC/{s/A/a/}'
awk 高级模式匹配查找神技(列优先)
# 分割字符串 -F后面直接跟分隔符
echo "1:2:3" | awk -F: '{print $1 $2 $3}' # 123
正则表达式
cut 噶啦
实用习题
1.把某个文件夹中的所有后缀为.jpg的文件名输入到fileName.txt中
# 先递归找到所有后缀为.jpg 的文件列表,再把"./"去除,最后输入到fileName文件中
find . -name '*.jpg' | cut -c 3- > fileName.txt
参数传递
- argc 和 argv表示
# 参数个数,表示不算shell自己的其他参数个数. 如:./script.sh 1.txt 2.txt 参数个数为2.
$#
# 参数值,利用"$"符号来取值,后面数字表示第几个参数,
# 多余参数没有作用
$1 $2 $N
# 获取全部参数值
$* 或 $@
小细节
1) ' ' 和 " " 区别
' ': 任何都是字符串. 我们不希望把变量转换为值的时候用
" ": 变量替换. 会计算所有变量的值,最后使用${}加上大括号
2)$(( )) 与 $( ) 还有${ }的区别
$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的
嵌套反引号需要进行转义,故简单命令用反引号,否则用$()
${ } 用来作变量替换
$(( )) 用来做整数运算
$ a=2;b=4;c=2
$ echo $((a+b*c))