bash shell


bash(/bin/bash)是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准shell。 bash为Bourne Again Shell的简写, 为Bourne shell的加强版本。既然bash能作为绝大部分linux发行版的默认shell,那么就一定有一些优点。bash 主要的优点有以下几个:
1.history历史命令记忆功能
bash可以记忆使用过的命令!只需要在命令行按上下键就可以前后浏览执行过的命令! bash会将用户执行过的命令记录在登录用户家目录下的.bash_history文件中, 不过.bash_history文件中记录的是登录用户上一次登录之前的历史命令。而本次登录所执行的命令会先暂时存放在内存中,用户退出本次登录后, 会将本次登录所执行的命令全部追加到.bash_history文件中。 大多数linux distribution默认可以记录1000个历史命令。
有时候系统中出现了一些预期之外的结果,就可以用bash的历史记录功能查询一下曾经执行过哪些命令, 或者我们可能会重复执行一个刚刚执行过的命令,就可以用命令历史记录非常快速的找到刚刚输入的命令,大大提高的工作效率。 当然shell的历史记录功能也可能会带来麻烦,例如可能会被黑客利用。
2.tab键命令与文件补全功能
在bash命令行下输入命令的时候,时不时的按下tab键是个很好的习惯!tab键可以快速补全你想要输入的命令或者命令选项参数。
bash的补全功能可以让用户快速输入字符,并且可以帮助用户检查拼写错误。例如使用cat命令查看文件/etc/passwd. 在命令行输入ca,但是突然忘记了cat命令怎么拼写了,此时就可以按两下tab键,bash会把所有以ca开头的命令列出来, 我们就可以查看bash给出的命令列表,帮助我们想起原来要输入的命令是cat。
当然这里cat命令拼写比较简单,在你遇到记忆不清的命令的时候可以尝试使用tab帮助恢复记忆。 接着刚才的输入cat /e,此时再次按两下tab键,bash就会找到/目录下所有以e开头的文件或目录,因为根目录下以e开头的文件或者目录只有/etc, 所有bash就会自动把参数补全为cat /etc/,接着输入cat /etc/pasw, 此时再次按两下tab键,没有任何反应,怎么回事儿呢?如果你多次按下tab键都没有任何反应,说明你的输入可能是有问题的, 因为还是跟刚才同样的道理,bash会在/etc目录下寻找以pasw开头的文件或者目录,但是bash并没有找到,所以就不会有任何反应了。 这时候我们就应该很快意识到是不是自己的输入有问题呢,检查发现确实是拼写错了,应该是cat /etc/pass,此时再次按两下tab键, bash就会帮我们把命令补全为cat /etc/passwd了,这就是tab键的快速补全与拼写检查功能了。
使用tab键的时机依据tab接在命令后或参数后而有所不同。我们再复习一次:
Tab接在一串命令的第一个字的后面,则为命令补全;
Tab接在一串命令的第二个字以后时,则为文件补齐;
若安装bash-completion软件,则在某些命令后面使用tab按键时,可以进行选项/参数的补齐功能! 所以说,如果我想要知道环境当中所有以c为开头的命令,就按下c[tab][tab],bash就会把所有以c开头的命令全部列出来!
3.alias命令别名设置功能
linux命令别名 可以给一个命令起一个别名绰号,例如我们经常用ls -alF命令查看当前目录下所有文件的详细信息,但是我太懒了,真的不想输入太多的字符, 这时候就可以给这么一串命令起一个别名,比如ll,这样在命令行下执行ll就相当于执行ls -alF命令了。 使用alias命令就可以给一个命令起别名。上面我们给ls -alF起别名绰号为ll,就可以这样:
              [root@initroot ~]$ alias ll='ls -alF'
            
也可以直接使用alias命令不加任何参数,alias会列出当前系统中所有的命令别名:
[root@initroot ~]$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
              
4.bash作业管理机制
bash将工作环境分为前台foreground和后台background,bash把通过它启动的命令进程称为作业(job), bash可以将作业放到前台执行,也可以将作业放在后台执行或者暂停。后台运行的作业不会被Ctrl+c组合键强制退出。 通过作业管理(job control),可以在bash提供的单一命令行环境下同时运行多个作业。
5.程序脚本shell scripts
shell scripts类似DOS中的批处理文件,将一堆命令写在一个文件中。不过Linux下的shell scripts具有更强大的功能。 bash有自己的变量、条件分支语句、判断语句、循环语句,具备完善的程序设计功能, shell scripts可以被认为是一门程序设计语言。 在linux运维工作中,系统管理员为了完成某一项特定工作,经常需要编写shell脚本程序。shell脚本程序的编写也是系统管理必备的技能之一。
6.通配符Wildcard
bash支持许多命令通配符,可以帮助用户快速的执行命令。例如想要知道/usr/bin目录下有哪些以X开头的文件,就可以向下面这样使用*通配符:
              [root@initroot ~]$ ls -l /usr/bin/X*
            
7.限制用户资源使用ulimit
linux ulimit命令

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读