目录
Shell
1.1 shell家族
shell:命令解释器,根据你输入的命令执行相应的命令。
cat /etc/shells 可以查看你当前Linux系统中有哪些shell命令。
例如上图中的sh 、dash、bash、rbash都是shell命令解释器,只是有所不同。
传统的UNIX下最开始支持的shell是sh,Linux使用dash,Ubuntu使用bash,bash就是增强版的sh。
echo $SHELL 查看当前系统正在使用的shell。
$SHELL 是一个系统变量,里面记录了你当前系统中使用的shell是什么。
例如上图,也就是我所使用的系统当前使用的shell就是bash。
注释:echo命令是dos批处理命令的一条子命令。功能是:打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo命令将显示当前回显设置。
linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
常见的shell:
/bin/sh( /bin/bash所取代)
/bin/bash(就是Linux默认的shell)
/bin/ksh(Kornshell 由AT&T Bell lab. 发展出来的,兼容于bash)
/bin/zsh(基于ksh发展出来的,功能更强大的shell)
/bin/tcsh(整合C Shell,提供更多的功能)
/bin/csh(已经被/bin/tcsh所取代)
1.2 bash
bash 是一个为GNU计划编写的Unix shell。
它的名字是一系列缩写:Bourne-Again Shell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。
bash是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。
bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
1.3 命令和路径补齐
在bash下敲命令时,Tab键可以补全已经敲了一部分的文件名和目录名。
例如在家目录下要列出桌面目录的内容,输入(不回车)
然后敲Tab键,如果以De开头的文件或文件夹只有Desktop一个,就自动补全为
否则,再敲一次Tab键,将会把所有以De开头的文件或文件夹列在下面供你选择(在这里我们手动创建另外一个以De开头的文件)
这是因为产生了歧义,也就是系统不能自己做主从都是以De开头的文件或命令中选择一个。所以系统会吧以De开头的文件都显示出来,让用户来选择。
你可以再补敲一个s再Tab,这次Desktop就会补全到命令后面了。
如果是Ubuntu系统,系统默认启用了bash completion,还可以补全命令的某些参数、Makefile目标等等。如果是Debian系统,可以用以下命令启用bash completion:
$ source /etc/bash_completion
建议将这一行加入/.bashrc启动脚本中。比如使用sudo后面接命令,如果没有bashcompletion则只有sudo可以补全,后面的命令不能补全。如果启用了bash completion,则后面的命令,包括命令的某些参数(比如aptitude命令的install)都可以补全了。
1.4 历史记录
历史记录是另外一个非常方便的功能。在终端中输入history,再回车,就会显示之前输入的命令历史记录。如下图所示:
你还可以按上下移动光标键(或者Ctrl-p、Ctrl-n)可以一条一条浏览以前输过的命令。如果有需要重复输入的命令就不用输第二次了。如果你能记住以前输过的某条命令中的某个关键字,可以按Ctrl-r,然后输入关键字,随着你每输入一个字母,bash会做增量式(increasingly)查找,也可以反复按Ctrl-r或Ctrl-s向前向后查找。如果找到了,按左右移动光标键或Home键(Ctrl-a)或End键(Ctrl-e)将该命令带回提示符下进一步修改,或者直接按Enter键原封不动地执行该命令。
1.5 主键盘快捷键
bash的快捷键和emacs保持一致,用惯其中之一再用另一个程序会很顺手的。请记住一条原则:尽量使用主键盘快捷键而不使用移动光标键和编辑键。因为手不必离开主键盘是效率最高的,这样在你一生之中所节省的来回移动手的时间绝对可以用星期来计算,是绝对值得你花十分钟的时间记住这些快捷键的。
————————————————————————————————————————————
快捷键—————功能——————助记——————
Ctrl-p 上 上一个指令
Ctrl-n 下 下一个指令
Ctrl-b 左 向左移动一个字符
Ctrl-f 右 向右移动一个字符
Ctrl-d Del 删除光标后面的
Ctrl-a HOME 切换到你现在正在输入的命令的第一个字母。
Ctrl-e End 切换到你现在正在输入的命令的最后一个字母。
Backspace Backspace delete光标前面的
————————————————————————————————————————————