一些Linux命令技巧
Saturday, 16. December 2006, 12:59:07
1.
mkdir只能建立一级目录,要创建多级目录,使用mkdir -p。比如:
相当于:
2.
&&和||有时会很有用,比如:
如果cd tmp/a/b/c失败,也就是没有此目录,那么就建立一个。如果成功,后面的就不用执行了。
类似,&&则是执行两个命令。如果前一个失败,则停止。
3.
长命令如果要分两行来写,也可以像宏那样使用来换行。
4.
5.
grep本身就可以计数,有时根本就没必要使用wc。
可替换为:
更没必要把grep和cat组合。
上面是多此一举,试试下面的:
6.
sed和awk很好用。(awk比你想像中的还要强大~)对比下面的例子:
再来个sed的例子:
而且它们两个还有个不同之处。如果foo.txt没有1000行那么长,前者会输出最后一行,而后者什么都不会输出。
7.
你可能不知道的命令:pushd和popd。看看它们的用法:
8.
另外两个你可能没用过的命令:fuser和scp。查看一下它们的man手册就知道它们是干什么的了,很强大,不是吗?
9.
耗尽你所有内存的命令:
解释如下:
:() #声明一个函数
{:|:&} #函数定义,递归调用,而且还用了管道
;: #定义结束,调用函数
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_args
perl -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.
耗尽你所有内存的命令:
$ :(){ :|:& };:
解释如下:
:() #声明一个函数
{:|:&} #函数定义,递归调用,而且还用了管道
;: #定义结束,调用函数