linux的九个Shell技巧[转]

linux的九个Shell技巧

一、用mkdir创建目录树:

mkdir不加参数使用时,只能建立一层目录,如果要建立多层目录,需要使用-p选项:

mkdir-pa/b/c

如果要建立一个复杂的目录,可以用加上{}的方法。例如想建立./a/a1./b/b1./b/b2三个目录树:

mkdir-p{a/a1,b/{b1,b2}}

二、带条件执行的组合Shell:

在linux中,Shell可以连续输入,并且用“;”隔开,但是这样只是简单的依次执行,如果前后Shell有依赖,就会很尴尬。这个时候我们就可以引入有条件执行:

cda/b/c&&ls

/*

*&&表示如果前一Shell执行成功,则执行下一条Shell。这里表示:如果能进入指定目录,则列出目录里的内容。

*/

cda/b/c||mkdir-pa/b/c

/*

*||表示如果迁移Shell执行失败,则执行下一条Shell。这里表示:如果指定目录不存在,这建立这个目录。

*/

三、在Shell中使用变量:

linux的Shell是可以使用变量的:

VAR=”./a/*.pdf”//“var”是变量名,命名规则应该和C/C++的命名规则差不多,不过羽毛建议大家只用全大写且简单的字串。

//注意等号两边不能有空格,否则不能正确理解。

echo$VAR//这个变量的使用,类似于C/C++中的宏定义,所以这条命令等价于:echo./a/*.pdf。

echo“$VAR”//这里等价于:echo“./a/*.pdf”。

如果变量名需要和其他字符组合使用,注意用{}隔开:

echo“${VAR}x”//等价于输入:echo“./a/*.pdfx”。

四、在Shell中使用SubShell:

在Shell中,如果将Shell用()括起来,将使得Shell执行在SubShell中:

(cd./a)&&ls//执行以后,会发现显示的内容还是原来路径中的,而不是./a中的。

五、Shell中grep的两个技巧:

1、假设有一个文本,如果我们只是需要知道字串“and”出现的行数,则更好的命令是:

grep-cand./a/test

并且上面这个方法将优于:grep-oand./a/test|wc-l

2、使用正则表达式(正则表达式表可以参见这里)。这里我们简单演示一个表达式:

grep‘[^a-zA-Z0-9]‘./a/test

六、Shell中awk的简单介绍:

1、查找具体的字段。例如我们需要将目录中2010/10/10创建的文件列出来,可以使用:

ll./a/|awk‘$6=“2010-10-10″‘//$7是表示匹配第六个字段。每一个字段都以空格为界限。注意awk后面总体被单引号括起来的。

2、在awk中可以使用length()函数返回每行文本的长度;index()函数返回首次发现匹配字串的位置;split()函数将字串按需拆分。这几个函数的用法和C/C++里的用法是基本相同的:

awk‘{i=length($0);printi}’./a/test

awk‘{i=index($0,”a”);printi}’./a/test

3、在上面的指令中,我们引用了$0,这个是表示使用输入的第零个参数——也就是输入的内容,在下面,我们还可以做一些高级的处理:

例如我们在文件./a/text2中数据为:

a,1,2

b,3,4

c,5,6

则:

awk-F,’{printf$1,$2+$3}’./a/text2//其中-F选项后面紧跟的逗号是指文中内容按逗号划分。

//若将文中逗号改为空格,则:

awk-F’‘‘{print$1,$2+$3}’./a/text2

将返回:

a3

b7

c11

七、使用pushd和popd管理目录:

有时候我们会在几个不同而且很深的目录中来回切换,这个时候使用pushd和popd将非常方便:

加入我们现在在目录“~”中,

dirs//将返回显示:~

pushd./a/a1///目录会切入到指定目录

pushd~/b/b1/

pushd../b2/

dirs//将返回显示:~/b/b2~/b/b1~/a/a1~

popd//路径会改变,且~/b/b2将出栈

dirs//将返回显示:~/b/b1~/a/a1~

pushd+//路径变为~/a/a1

dirs//将返回显示:~/a/a1~~/b/b1

pushd-

八、重用上一次参数:

1、!$:返回上一次使用的路径名(或文件名)。

2、!:1!:2…:依次返回上一次使用的第一、二……个参数。

九、其他:

1、echo$0和ps-p$$都可以返回当前所用的Shell。

2、df会显示你当硬盘信息。

3、cat>file可以将接下来输入的信息存入到file文件中,可以用Ctrl+D(即^D)来结束。

4、whoami会显示当前用户名

相关推荐