《UNIX 高手的 10 个习惯》学习记录整理
2016-02-27 02:26
507 查看
平时养成一些好的操作习惯,克服不良的 UNIX 使用模式,提高效率。
原文链接: UNIX 高手的 10 个习惯 by Michael Stutz (stutz@dsl.org)
简要整理如下:
在单个命令中创建目录树。 (实用)
需创建多级目录时,使用 mkdir 的 -p 选项。且可用{ }创建多个同级子目录。如下:
更改路径;不要移动存档。
tar解包时,使用大写C参数指定解包到的位置,注意区分-c参数。
参考:tar命令的C参数
将命令与控制操作符组合使用。 (实用)
需执行多个命令时,无关联关系可用 ;
若第二个依赖于前一个命令执行结果,使用
&& (第一个成功才执行第二个命令) (零退出状态表示成功)
|| (第一个失败才执行第二个命令)
谨慎引用变量。 (注意)
一般将变量调用包括在双引号中。否则可能出现 引用和非引用混淆。
条件:
使用转义序列来管理较长的输入。 (实用)
使用反斜杠 \ 来将较长的行延续到下一行
在列表中对命令分组。
配合\ 实现较长的shell输入组合,各个子shell用括号括起来,个人感觉输得太长容易出错,用的不多。
在 find 之外使用 xargs。(实用)
xargs 传递空格分隔的列表,选项用法有 [-i replace-str],改名字可使用该选项
find可以配合xargs,exec,sed,awk等的操作来进行批量修改文件名
关于何时需使用xargs及使用与否的区别,见 管道是否需要使用xargs及其用法
了解何时 grep 应该执行计数——何时应该绕过。
grep "name" * -c 和 grep "name" * | wc -l 的区别
带
匹配输出中的某些字段,而不只是对行进行匹配。(实用)
当只希望匹配输出行中特定字段 中的模式时,诸如
停止对 cat 使用管道。
不要将
原文链接: 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 $VARtmp/a tmp/b (回显变量VAR)
echo "$VAR"tmp/* (回显变量VAR 替换后的串)
echo $VARa空 (回显变量VARa)
echo "$VARa"空 (回显变量VARa 替换后的串)
echo "${VAR}a"tmp/*a (VAR替换后组合成串)
echo ${VAR}atmp/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接受文件名作为参数
相关文章推荐
- IEEE font, matlab eps图片 font Helvetica, not embedded
- 碰撞检测之Ray-Capsule检测
- [kaggle实战] Digit Recognizer -- 从KNN,LR,SVM,RF到深度学习
- C#进行AutoCAD二次开发实例之倒角功能实现原理介绍
- cordova开发ios时候getScript函数无效的解决办法
- 设计模式——抽象工厂
- zookeeper的学习小结
- Python基础0227
- POJ 3637 解题报告
- Spring AOP学习笔记(2):AOP前置通知&后置通知
- Spring AOP学习笔记(1):AOP基础知识
- 校园通项目总结
- POJ 3580 SuperMemo SplayTree
- NS3 的Application类运行机制
- Apache Commons DbUtils
- Application相关的系列类
- 36. Valid Sudoku
- Centos6.X安装smokeping
- 代码适配(Autolayout)
- POJ 1230 解题报告