linux的九个Shell技巧[转]

linux的九个Shell技巧

一、用mkdir创建目录树:

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

mkdir -p a/b/c

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

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

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

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

cd a/b/c && ls

/*

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

*/

cd a/b/c || mkdir -p a/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 -c and ./a/test

并且上面这个方法将优于:grep -o and ./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); print i}’ ./a/test

awk ‘{i = index($0,”a”); print i}’ ./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

将返回:

a 3

b 7

c 11

七、使用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 会显示当前用户名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值