关闭

bash备忘

806人阅读 评论(0) 收藏 举报

 

bash备忘

hanlray@gmail.com
Revision: 1.01 Date: 2006/09/02

1. String比较操作符

  • str1 = str2
  • str1 != str2
  • str1 > str2
  • str2 < str2
  • -n str1 str1 is not null
  • -z str1 str1 is null

2. && 和 ||

  • statement1 && statement2 执行statement1,如果它的退出状态是0,执行statement2
  • statement1 || statement2 执行statement1,如果它的退出状态不是0,执行statement2

3. job control

当我们知道某个命令需要执行很久时,可以在该命令后加一个&号把它放到background执行;但当执行了一个命令后才发现它需要执行很久时,我们可以用Ctrl+Z来suspend当前在foreground执行的命令,然后用bg把它放到background执行;把某个在把background里执行的命令放回foreground,用fg [jobid],不带参数就选择最近被放到background的job;用jobs列出在background里的job

4. .bash_profile/.bash_login/.profile、.bashrc、.bash_logout

.bash_profile是只被login shell执行,当其不存在时会找.bash_login,当.bash_login不存在时找.profile .bashrc是当你在命令行上键入bash来新开一个shell时执行的文件 .bash_logout是每次login shell退出时执行的文件 当然.bash_profile里应该执行.bashrc

5. 变量和环境变量

给一个变量赋值:varname=value 使之成为环境变量:export varname 或者写在一起:export varname=value,用unset来取消赋值,就像该变量

怎么判断某个变量是否是环境变量呢?export命令会列出所有的环境变量

5.1. 重要的环境变量

  • PATH 如果没有指命令路径的话,bash将会到这里来寻找命令

5.2. 特殊变量

  • $? 上一个命令的退出状态

     

  1. 表达式 +
    • $(unix command) 其值为命令输出到标准输出的内容
    • ${varname:-expr} 若varname存在则返回其值,否则返回expr的值

6. #!

在bash中除了可以运行function、build-in command外,还可以运行属性为x的可执行文件,这时bash会创建一个子进程并通过检查文件开头是否有#!来判断是一个binary executable还是一个script,对binary executable直接运行(exec)该程序,对script则会运行#!指定的script解释器,然后由该解释器负责执行script中的各个语句。

7. exec

如上所述,当运行一个bash script时,当前shell会创建一个subshell,如果该script充当的是另一个程序的启动器,那么在script的最后就需要调用这个可执行程序,这时如果像在login bash中一样直接通过文件名来启动,那么当前subshell将会另建一个子进程来运行它,并且当该子进程退出后subshell才会退出,这样在这个程序的运行期间,这个subshell就是多余的,白白空占资源。这时可以用bash的exec命令来执行这个程序,它用指定的程序替换当前的shell,因此没有多余的进程产生。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:171832次
    • 积分:2533
    • 等级:
    • 排名:第14976名
    • 原创:79篇
    • 转载:0篇
    • 译文:0篇
    • 评论:24条
    文章分类
    最新评论