Shell的一些注意点(逐渐补充)

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补上。

这是五个字母对应五个字母的替换。


这是五个字母对应四个字母的替换。总而言之,这个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+\。


7)用wget进行一个ftp下载:wget -m ftp://路径。


8)shell 几种专用修饰符 :- :+ := ${variable:offset:length}

${variable:-word} 如果variable已经被设置且非空,则代入它的值,否则代入word;

$ fruit=peach
$ echo ${fruit:-plum}
peach
$ echo ${newfruit:-apple}
apple

 

${variable:=word}如果variable已经被设置且非空,则代入它的值,否则代入word,并且在后面variable始终为word的值。位置参量不能用这种方式赋值。

$ name=
$ echo ${name:=peter}
peter
$ echo $name
peter

 

 

${variable:+word} 如果变量variable已被设置且值为非空,代入word值,否则什么也不代入,

$ foo=grapes
$ echo ${foo:+pears}
pears
$ echo $foo
grapes

 

 

${variable:?word} 如果变量variable已被设置值且为非空,就代入它的值,否则输出word并从shell中退出,如果有省略了word,就会显示信息:parameter null or not set.

$ echo ${namex:?"namex is undefined"}
  namex: namex is undefined
 
$ echo ${y?]
 y: parameter null or not set

 

 

${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。

你可能感兴趣的:(编程,linux,shell)