一些Linux命令技巧

Saturday, 16. December 2006, 12:59:07

1.
mkdir只能建立一级目录,要创建多级目录,使用mkdir -p。比如:


~ $ mkdir -p tmp/a/b/c

相当于:

~ $ mkdir tmp
~ $ cd tmp
~/tmp $ mkdir a
~/tmp $ cd a
~/tmp/a $ mkdir b
~/tmp/a $ cd b
~/tmp/a/b/ $ mkdir c
~/tmp/a/b/ $ cd c
~/tmp/a/b/c $


2.
&&和||有时会很有用,比如:


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

如果cd tmp/a/b/c失败,也就是没有此目录,那么就建立一个。如果成功,后面的就不用执行了。

类似,&&则是执行两个命令。如果前一个失败,则停止。

3.
长命令如果要分两行来写,也可以像宏那样使用来换行。

4.
`有时很好用(看清楚,是重音号),比如:(分清单引号和重音号) <pre> ./want_many_argsperl -e ‘print “A”x202;’`


5.
grep本身就可以计数,有时根本就没必要使用wc。


grep and tmp/a/longfile.txt | wc -l

可替换为:

grep -c and tmp/a/longfile.txt

更没必要把grep和cat组合。

cat tmp/a/longfile.txt | grep and

上面是多此一举,试试下面的:

grep and tmp/a/longfile.txt


6.
sed和awk很好用。(awk比你想像中的还要强大~)对比下面的例子:


$ 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


$ 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 READM

再来个sed的例子:


head -1000 foo.txt | tail -1


sed -n ‘1000p;1000q’ foo.txt

而且它们两个还有个不同之处。如果foo.txt没有1000行那么长,前者会输出最后一行,而后者什么都不会输出。

7.
你可能不知道的命令:pushd和popd。看看它们的用法:

$ pwd
/Users/parrt
$ pushd /tmp
/tmp ~
$ pwd
/tmp
$ popd
~
$ pwd
/Users/parrt


8.
另外两个你可能没用过的命令:fuser和scp。查看一下它们的man手册就知道它们是干什么的了,很强大,不是吗?

9.
耗尽你所有内存的命令:

$ :(){ :|:& };:

解释如下:

:() #声明一个函数

{:|:&} #函数定义,递归调用,而且还用了管道

;: #定义结束,调用函数