[Unix/Linux]UNIX 高手的10大习惯

UNIX 高手的10大习惯

参考自:

http://www.ibm.com/developerworks/cn/aix/library/au-badunixhabits.html

https://www.ibm.com/developerworks/cn/aix/library/au-unixtips/

1.1      习惯1:使用单个命令创建目录树

使用mkdir-p选项可以创建父目录及其子目录。

清单1:使用一个命令来创建目录树

$ mkdir -p tmp/a/b/c

 

清单2:使用一个命令来创建复杂的目录树

$ mkdir -p project/{lib/ext,bin,src,doc/{html,info,pdf},demo/start/a}

少数系统不支持该选项,我们可以使用mkdirhier

$ mkdirhier project/{lib/ext,bin,src,doc/{html,info,pdf},demo/start/a}

 

1.2      习惯2:不要移动存档

清单3:使用选项-C来解压缩.tar存档文件到指定目录

$ tar xvf -C tmp/a/b/c newarc.tag.gz

1.3      习惯3:将命令与控制操作符组合使用

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

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

$ cd tmp/a/b/c || mkdir -p tmp/a/b/c && tar xvf -C tmp/a/b/c ~/archive.tar

1.4      习惯4:谨慎引用变量

一般最好将变量调用包括在双引号中。

fhe@user-desktop:~$ ls project/

bin demo doc lib src

fhe@user-desktop:~$ TEMP="project/*"

fhe@user-desktop:~$ echo $TEMP

project/bin project/demo project/doc project/lib project/src

fhe@user-desktop:~$ echo "$TEMP"

project/*

fhe@user-desktop:~$ echo $TEMPbin

 

fhe@user-desktop:~$ echo "$TEMPbin"

 

fhe@user-desktop:~$ echo ${TEMP}bin

project/bin

fhe@user-desktop:~$ echo "${TEMP}bin"

project/*bin

fhe@user-desktop:~$ echo "${TEMP}"bin

project/*bin

fhe@user-desktop:~$

 

1.5      习惯5:使用转义序列来管理较长的输入

fhe@user-desktop:~$ cd tmp/a/b/c ||"

> mkdir -p tmp/a/b/c &&"

> tar vxf -C tmp/a/b/c ~/archive.tar

 

1.6      习惯6:了解何时grep应该执行计数——何时应该绕过

避免通过管道grep发送到wc –l来输出行数计数。grep-c选项提供了对与特定模式匹配的行的计数,并且一般要比通过管道发送到wc更快。

1.7      习惯7:匹配输出中的某些字段,而不只是对行进行匹配

当您只希望匹配输出行中特定字段时,诸如awk等工具要优于grep

~/tmp $ ls -l /tmp/a/b/c | grep Dec

-rw-r--r-- 7 joe joe 12043 Jan 27 20:36 December_Report.pdf

-rw-r--r-- 1 root root 238 Dec 03 08:19 README

-rw-r--r-- 3 joe joe   5096 Dec 14 14:26 archive.tar

~/tmp $

 

~/tmp $ ls -l | awk '$6 == "Dec"'

-rw-r--r-- 3 joe joe   5096 Dec 14 14:26 archive.tar

-rw-r--r-- 1 root root 238 Dec 03 08:19 README

~/tmp $

 

1.8      习惯8:停止对cat使用管道

grep的一个常见的基本用法错误是用过管道将cat的输出发送到grep以搜索单个文件的内容,这绝对是不必要的,纯粹是浪费时间,因为诸如grep这样的工具接受文件名作为参数。

 

fhe@user-desktop:~$ time cat ~/project/bin/src_apue.tar | grep and

Binary file (standard input) matches

 

real    0m0.021s

user    0m0.008s

sys     0m0.000s

fhe@user-desktop:~$ time grep and ~/project/bin/src_apue.tar

Binary file ~/project/bin/src_apue.tar matches

 

real    0m0.005s

user    0m0.004s

sys     0m0.000s

fhe@user-desktop:~$

 

1.9      习惯9:使用文件名自动完成功能

清单11.1 确定您的shell

$ echo $0

$ ps -p $$

 

一般情况下,系统提供默认的shellbashbash shell提供文件名自动完成功能,使用tab键。

1.10习惯10:最有效地利用正则表达式

序列

说明

脱字符 (^)

匹配出现在首行的表达式

美元符号 ($)

匹配出现在行末的表达式

反斜杠 (")

取消下一个字符的特殊含义

方括号 ([])

匹配括起来的任一字符

[^ ]

匹配除括起来的字符外的任一字符

句号 (.)

匹配除行尾之外的任意单个字符

星号 (*)

匹配零个或多个前驱字符或表达式

"{x,y"}

匹配出现过xy个和前面相同的内容

"{x"}

精确匹配出现过x个和前面相同的内容

"{x,"}

匹配出现过x个或更多和前面相同的内容

 

posted @ 2009-04-29 12:15  fulin  阅读(228)  评论(0编辑  收藏  举报