1. 在 shell 中获取当前执行脚本的路径 1 2 3 current_dir=$(cd "$(dirname "$0")";pwd) echo $current_dir
2. ls 2.1. 展示绝对路径 1 2 3 4 5 6 7 8 9 10 11 12 13 # 假如当前的目录结构为这样,在 a 目录需要删除包含字母 b 的 txt 文件: . |____a | |____a.txt |____b | |____b.xtx | |____c.txt | |____bd.txt bash-3.2$ ls ~/Downloads/test/b| /usr/local/bin/gsed "s:^:`pwd`/: " /Users/MoMo/Downloads/test/a/b.xtx /Users/MoMo/Downloads/test/a/bd.txt /Users/MoMo/Downloads/test/a/c.txt
3. rm 3.1. 常用参数 rm 输出删除文件的明细: rm -rfv
r:删除目录;
f:直接删除,不询问;
v:输出删除的具体文件
3.2. ls 搭配使用的注意事项 通过 ls /usr/share/zoneinfo | grep | xargs rm -rfv 来删除文件的时候,需要先 cd 到 /usr/share/zoneinfo 的目录,否则,rm 会删除执行 ls 目录的文件,而不是 /usr/share/zoneinfo 这个目录的文件。
1 2 3 4 5 6 7 8 9 10 11 # 假如当前的目录结构为这样,在 a 目录需要删除包含字母 b 的 txt 文件: . |____a | |____a.txt |____b | |____b.xtx | |____c.txt | |____bd.txt # 这个命令不能生效,因为 ls 列出来的只是文件名,所以 rm 删除的时候,会在 a 目录下面去找,但是 a 没有,所以不能生效。 cd a;ls ~/Downloads/test/b | grep -i "b" | /usr/local/bin/gxargs xargs rm -rfv;
两个解决办法:
ls 时添加上绝对路径
先 cd 到 b 目录,再 ls 删除。
4. cp
cp 输出具体的操作明细: cp -v
5. sed 5.1. 常用参数
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑www.it165.net;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
5.2. 常用命令
a ∶ 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行);
c ∶ 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行;
d ∶ 删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶ 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶ 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作;
s ∶ 取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 bash-3.2$echo "test-all.json" | gsed -e 's/\./-win\./g' test-all-win.json [root@localhost ruby] # sed ’1d’ ab #删除第一行 [root@localhost ruby] # sed ‘$d’ ab #删除最后一行 [root@localhost ruby] # sed ’1,2d’ ab #删除第一行到第二行 [root@localhost ruby] # sed ’2,$d’ ab #删除第二行到最后一行 显示某行 [root@localhost ruby] # sed -n ’1p’ ab #显示第一行 [root@localhost ruby] # sed -n ‘$p’ ab #显示最后一行 [root@localhost ruby] # sed -n ’1,2p’ ab #显示第一行到第二行 [root@localhost ruby] # sed -n ’2,$p’ ab #显示第二行到最后一行 使用模式进行查询 [root@localhost ruby] # sed -n ‘/ruby/p’ ab #查询包括关键字ruby所在所有行 [root@localhost ruby] # sed -n ‘/\$/p’ ab #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义