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

wKioL1cYSGHSOcsaAABOEes1d_Q889.png

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

wKioL1cYSJCwm5igAAAsZNBJlSI269.png

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

1
2
3
4
5
$ fruit=peach
echo  ${fruit:-plum}
peach
echo  ${newfruit:-apple}
apple

 

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

1
2
3
4
5
$ name=
echo  ${name:=peter}
peter
echo  $name
peter

 

 

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

1
2
3
4
5
$ foo=grapes
echo  ${foo:+pears}
pears
echo  $foo
grapes

 

 

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

1
2
3
4
5
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。


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


相关文章
|
8月前
|
监控 关系型数据库 MySQL
Shell脚本案例大全
Shell脚本案例大全
63 1
|
6月前
|
Shell Linux Go
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
《Linux操作系统编程》第七章 shell的交互功能: 了解shell的启动过程,shell的功能,shell的命令形式,shell程序的建立和运行,理解管道和重定向,环境变量和系统变量以及变量引用
46 0
|
9月前
|
Shell Linux C语言
01-shell-简介及第一个脚本
01-shell-简介及第一个脚本
|
10月前
|
Unix Shell Linux
【Shell编程】Shell基本概述与脚本执行方式
【Shell编程】Shell基本概述与脚本执行方式
95 0
|
存储 监控 Shell
|
机器学习/深度学习 Shell Perl
|
Unix Shell 应用服务中间件
Shell 编程(一):Shell 变量的高级用法(二)
Shell 编程(一):Shell 变量的高级用法
111 0
|
分布式计算 Hadoop Shell
Shell 编程(一):Shell 变量的高级用法(一)
Shell 编程(一):Shell 变量的高级用法
87 0
|
监控 Shell 应用服务中间件
Shell 编程(二):Shell 函数的高级用法
Linux Shell 中的函数和大多数编程语言中的函数一样 将相似的任务或代码封装到函数中,供其他地方调用
99 0
|
Shell Linux 开发者
Shell脚本基础| 学习笔记
快速学习Shell脚本基础
423 0