1)如果要搜以AB开头的文件名,#find / -name "AB*",注意要有双引号,不然会报错。
如果搜某文件里,AB开头的句子,#grep "^AB" 文件名,如果用cat的话,是展现全文。
2)#!!:执行上一次输入的命令
#!$:执行上一次执行的变量,这俩个命令用向上箭头是翻阅不出来的。
3)ctrl+z 是休眠(虽然它提示是stop,其实就是暂停),ctrl+c 是彻底down了这个任务。
ctrl+z之后,可以使用#jobs查看已经休眠的任务,如果要重新启动已经被休眠的任务,就是#fg + 序号。
4) tr命令是替换命令,#cat 1.txt|tr 'a-z' 'A-Z',这个命令就是代表把1.txt 的所有小写字母对应都换成大写字母。
但是这个命令其实不是很智能,#cat 1.txt|tr 'james' 'bond',这样的命令并不是单独把james这个单词更换成bond,而是把所有 j a m e s 的字母都换成 b o n d 这四个字母,但是bond 少一个,那么就用末尾的d补上。
<a href="http://s2.51cto.com/wyfs02/M01/7F/42/wKioL1cYSGHSOcsaAABOEes1d_Q889.png" target="_blank"></a>
这是五个字母对应五个字母的替换。
<a href="http://s2.51cto.com/wyfs02/M02/7F/42/wKioL1cYSJCwm5igAAAsZNBJlSI269.png" target="_blank"></a>
这是五个字母对应四个字母的替换。总而言之,这个tr命令还不如进vim之后,用替换更舒服一些。
5)#export a=65535,这个是设定全局变量a为65535,如果使用#bash进入子shell,那么$a是等于65535,这时候可以单独设定a=777, 那么在这一层的子shell里a=777,使用#exit退出这个子shell的话,a还是等于65535 。
如果要取消对某变量的赋值,#unset 变量。
6)如果ctrl+c不好用了,那就ctrl+\。
8)shell 几种专用修饰符 :- :+ := ${variable:offset:length}
${variable:-word} 如果variable已经被设置且非空,则代入它的值,否则代入word;
1
2
3
4
5
<code>$ fruit=peach</code>
<code>$ </code><code>echo</code> <code>${fruit:-plum}</code>
<code>peach</code>
<code>$ </code><code>echo</code> <code>${newfruit:-apple}</code>
<code>apple</code>
${variable:=word}如果variable已经被设置且非空,则代入它的值,否则代入word,并且在后面variable始终为word的值。位置参量不能用这种方式赋值。
<code>$ name=</code>
<code>$ </code><code>echo</code> <code>${name:=peter}</code>
<code>peter</code>
<code>$ </code><code>echo</code> <code>$name</code>
${variable:+word} 如果变量variable已被设置且值为非空,代入word值,否则什么也不代入,
<code>$ foo=grapes</code>
<code>$ </code><code>echo</code> <code>${foo:+pears}</code>
<code>pears</code>
<code>$ </code><code>echo</code> <code>$foo</code>
<code>grapes</code>
${variable:?word} 如果变量variable已被设置值且为非空,就代入它的值,否则输出word并从shell中退出,如果有省略了word,就会显示信息:parameter null or not set.
<code>$ </code><code>echo</code> <code>${namex:?</code><code>"namex is undefined"</code><code>}</code>
<code> </code><code>namex: namex is undefined</code>
<code> </code>
<code>$ </code><code>echo</code> <code>${y?]</code>
<code> </code><code>y: parameter null or not </code><code>set</code>
${variable:offset} 获得变量从variable值中位置从offset开始的子串,偏移为从0到串尾。
${variable:offset:length} 获得variable值位置从offset开始长度为length的子串。
$var=notebook
$ echo ${var:0:4}
note
$ echo ${var:4:4]
book
9)ctrl+s 在ssh下是锁死屏幕,光标不会移动,不会添加内容,但鼠标滑轮可以,需要解除的话使用ctrl+q。
10)关于su和su -的区别
切换用户是可以使用su tom或者su - tom来实现,但是两者有区别:
su只是切换身份,但shell环境仍然是原用户的shell,su -是连用户的shell环境一起切换,切换了shell环境,PATH的环境变量才有效。
举例子:
比如说 root用户在/root/目录下, su tom,切换到了tom 用户,但是目录仍然在/root/下。
如果使用su - tom,你可以发现目录也切换到tom用户的家目录下。
这也是造成一些命令报错:command not found的原因。
本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1766126