Linux 基础知识(2)—shell 简介

Shell 简介


一 shell 家族

  • shell:
    是核心程序kernel之外的指令解析器,是一个程序,同时是一种命令语言和程序设计语言。shell是命令解释器,根据输入的命令执行相应命令。

    1 shell 类型:
    —– sh、ash、bash、ksh、csh、tcsh
    察看当前系统下有哪些shell:

        jianliu@ubuntu:~$ cat /etc/shells
        # /etc/shells: valid login shells
        /bin/sh
        /bin/dash
        /bin/bash
        /bin/rbash
  • bash 是主流的shell.

2 查看当前系统正在使用的shell

jianliu@ubuntu:~$ echo $SHELL
/bin/bash

3 常见的shell

**/bin/sh (已经被 /bin/bash 所取代)
/bin/bash (就是 Linux 默认的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已经被 /bin/tcsh 所取代)
/bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)**

4 shell中可以运行子shell

    /bin/csh 退出子shell

二 bash

  • bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格
    的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
  • Linux下默认的shell是bash

    1 命令和路径补齐

  • 在bash下敲命令时,Tab键可以补全已经敲了一部分的文件名和目录名。如果是Ubuntu
    系统,系统默认启用了bash completion,还可以补全命令的某些参数、Makefile目标等
    等。如果是Debian系统,可以用以下命令启用bash completion:
    $ source /etc/bash_completion

  • 建议将这一行加入∼/.bashrc启动脚本中。比如使用sudo后面接命令,如果没有bash completion则只有sudo可以补全,后面的命令不能补全。如果启用了bash completion, 则后面的命令,包括命令的某些参数(比如aptitude命令的install)都可以补全了。比如在主目录下要列出桌面目录的内容,输入(不回车)
    $ ls De
    然后按Tab键,如果以De开头的文件或文件夹只有Desktop一个,就自动补全为
    $ ls Desktop

    否则,再敲一次Tab键,将会把所有以De开头的文件或文件夹列在下面供你选择(在这里我们手动创建另外一个以De开头的文件)

    $ touch Death
    $ ls De
    Death Desktop/
  • 你可以再补敲一个s再Tab,这次Desktop就会补全到命令后面了。
    有的人是从DOS时代过来的,留下一个很不好的习惯就是在找一个文件时反复地cd、ls、cd、ls。。。等找到了要找的文件时再想回到先前的目录,已经不记得先前是从哪个目录转到这里来的了。

  • 我们从上面可以看出,Tab补全本身就具备了ls的功能,上面的Tab补全相当于ls -FdDe*命令。所以我们完全不必反复地cd到别的目录然后ls去找文件,多按几次Tab就可以一条命令完成了,这样的好处是我们的当前目录不用变,不需要找完了文件再cd回来,同时省去了大量的按键次数。更重要的是,自动补全同时兼具了检查拼写错误的功能,如果前面几个字母拼写错了,就补全不出东西来,用户就知道拼写错了,如果前面几个字母没有拼写错,那么由系统补全出来的文件名肯定也不会有拼写错误,避免了用户在敲很长的文件名时易犯的拼写错误。

2 历史记录

  • 历史记录是另外一个非常方便的功能。

    (1) 按上下移动光标键(或者Ctrl-p、Ctrl-n)可以一条一条浏览以前输过的命令。如果有需要重复输入的命令就不用输第二次了。
    (2)如果你能记住以前输过的某条命令中的某个关键字,可以按Ctrl-r,然后输入关键字,随着你每输入一个字母,bash会做增量式(increasingly)查找,也可以反复按Ctrl-r或Ctrl-s向前向后查找。
    (3)如果找到了,按左右移动光标键或Home键(Ctrl-a)或End键(Ctrl-e)将该命令带回提示符下进一步修改,或者直接按Enter键原封不动地执行该命令。

  • history 命令 用于显示之前输入的所有命令

3 主键盘快捷键

  • bash的快捷键和emacs保持一致,用惯其中之一再用另一个程序会很顺手的。请记住一条原则:尽量使用主键盘快捷键而不使用移动光标键和编辑键。因为手不必离开主键盘是效率最高的,这样在你一生之中所节省的来回移动手的时间绝对可以用星期来计算,是绝对值得你花十分钟的时间记住这些快捷键的。
功能 快捷键 助记
Ctrl-p previous
Ctrl-n next
Ctrl-b backward
Ctrl-f forward
Del Ctrl-d delete光标后面的
Home Ctrl-a the first letter
End Ctrl-e end
Backspace Backspace delete光标前面的
终端字体放大 ctrl shift + 调节Terminal显示的大小
终端字体缩小 ctrl shift -

你可能感兴趣的:(LINUX,基本知识)