您的位置:首页 > 其它

《UNIX 高手的 10 个习惯》学习记录整理

2016-02-27 02:26 507 查看
平时养成一些好的操作习惯,克服不良的 UNIX 使用模式,提高效率。

原文链接: UNIX 高手的 10 个习惯 by Michael Stutz (stutz@dsl.org)

简要整理如下:

在单个命令中创建目录树。 (实用)

需创建多级目录时,使用 mkdir 的 -p 选项。且可用{ }创建多个同级子目录。如下:

mkdir -p  project/{sub1/d1,sub2,sub3,sub4/{d1,d2,d3},sub5/d1/d1}


更改路径;不要移动存档。

tar解包时,使用大写C参数指定解包到的位置,注意区分-c参数。

参考:tar命令的C参数

将命令与控制操作符组合使用。 (实用)

需执行多个命令时,无关联关系可用 ;

若第二个依赖于前一个命令执行结果,使用

&& (第一个成功才执行第二个命令) (零退出状态表示成功)

cd tmp/a/b/c && tar xvf ~/archive.tar


|| (第一个失败才执行第二个命令)

cd tmp/a/b/c || mkdir -p tmp/a/b/c


谨慎引用变量。 (注意)

一般将变量调用包括在双引号中。否则可能出现 引用和非引用混淆。

条件:
~ $ ls tmp/
目录下两个文件:a b

VAR="tmp/*"


echo $VAR
tmp/a tmp/b (回显变量VAR)

echo "$VAR"
tmp/* (回显变量VAR 替换后的串)

echo $VARa
空 (回显变量VARa)

echo "$VARa"
空 (回显变量VARa 替换后的串)

echo "${VAR}a"
tmp/*a (VAR替换后组合成串)

echo ${VAR}a
tmp/a (替换后为变量tmp/*a,含通配符,仅有一项匹配)

使用转义序列来管理较长的输入。 (实用)

使用反斜杠 \ 来将较长的行延续到下一行

在列表中对命令分组。
配合\ 实现较长的shell输入组合,各个子shell用括号括起来,个人感觉输得太长容易出错,用的不多。

在 find 之外使用 xargs。(实用)
xargs 传递空格分隔的列表,选项用法有 [-i replace-str],改名字可使用该选项

find -type f -name "*.o" | xargs -i mv {} {}.test    (使用-i参数,默认前面的输出用{}代替
find -type f -name "*.o" | xargs -I [] mv [] [].test (使用-I参数,可以指定前面的输出用什么代替,本例中使用[]代替前面的输出)
find -type f -name "*.o" -exec mv {} {}.test \;   (注意最后的\;不能少)


find可以配合xargs,exec,sed,awk等的操作来进行批量修改文件名
关于何时需使用xargs及使用与否的区别,见 管道是否需要使用xargs及其用法

了解何时 grep 应该执行计数——何时应该绕过。
grep "name" * -c 和 grep "name" * | wc -l 的区别
-c
选项的
grep
返回每个文件的单独计数,每行一个计数,而针对
wc
的管道则提供所有文件的组合总计数   

匹配输出中的某些字段,而不只是对行进行匹配。(实用)
当只希望匹配输出行中特定字段 中的模式时,诸如
awk
等工具要优于
grep


ls -l | grep Dec
ls -l | awk '$6 == "Dec"'


停止对 cat 使用管道。
不要将
cat
的输出发送到
grep
以搜索单个文件的内容,grep接受文件名作为参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: