Bash 基础
Bash 基础
对 Bash 的简单认识
shell 只定义了一个非常简单的编程语言,所以,如果你的脚本程序复杂度较高,或者要操作的数据结构比较复杂,那么还是应该使用 Python、Perl 这样的脚本语言,或者是你本来就已经很擅长的高级语言。因为 sh 和 Bash 在这方面很弱,比如说:
- 它的函数只能返回字串,无法返回数组
- 它不支持面向对象,你无法实现一些优雅的设计模式
- 它是解释型的,一边解释一边执行,连 PHP 那种预编译都不是,如果你的脚本包含错误 (例如调用了不存在的函数),只要没执行到这一行,就不会报错
总的来说,感觉 shell 脚本很简单也很原始,学习来不难,上手很快。
脚本语言天生适合拿来做面向过程的工作,Python 对面向对象和函数式编程的支持页都是后来加的,一开始也是不支持的
Java 作为严格的遵循面相对象的语言,限制比脚本语言多很多,但是同时,严格的的编程泛式也保证了代码的质量
查看当前系统中 Bash 的信息
下面的命令可以查看当前设备的默认 Shell。
|
|
当前正在使用的 Shell 不一定是默认 Shell,一般来说,ps
命令结果的倒数第二行是当前 Shell。
|
|
上面示例中,ps
命令结果的倒数第二行显示,运行的命令(cmd
)是bash
,表明当前正在使用的 Shell 是 Bash。
下面的命令可以查看当前的 Linux 系统安装的所有 Shell。
|
|
上面三个命令中,$
是命令行环境的提示符,用户只需要输入提示符后面的内容。
Linux 允许每个用户使用不同的 Shell,用户的默认 Shell 一般都是 Bash,或者与 Bash 兼容。
用户可以通过bash
命令的--version
参数或者环境变量$BASH_VERSION
,查看本机的 Bash 版本。
在安装了 Python 之后,也是通过
python --version
来查看安装的 Python 的版本
|
|
终端 Terminal
如果是不带有图形环境的 Linux 系统(比如专用于服务器的系统),启动后就直接是命令行环境。
不过,现在大部分的 Linux 发行版,尤其是针对普通用户的发行版,都是图形环境。用户登录系统后,自动进入图形环境,需要自己启动终端模拟器,才能进入命令行环境。
所谓“终端模拟器”(terminal emulator)就是一个模拟命令行窗口的程序,让用户在一个窗口中使用命令行环境,并且提供各种附加功能,比如调整颜色、字体大小、行距等等。有的终端自带了一些配色方案,可以让用户在使用 Base 的时候获得更好的视觉体验,用户也可以手动修改 Bash 的配色,具体请参考 Linux 修改 Shell 命令提示符及颜色_linux shell 高亮 颜色 时间_-纸短情长的博客-CSDN 博客 。
不同 Linux 发行版(准确地说是不同的桌面环境)带有的终端程序是不一样的,比如 KDE 桌面环境的终端程序是 konsole,Gnome 桌面环境的终端程序是 gnome-terminal,用户也可以安装第三方的终端程序。所有终端程序,尽管名字不同,基本功能都是一样的,就是让用户可以进入命令行环境,使用 Shell。
进入命令行环境以后,用户会看到 Shell 的提示符。提示符往往是一串前缀,最后以一个美元符号$
结尾,用户可以在这个符号后面输入各种命令。
|
|
上面例子中,完整的提示符是[user@hostname] $
,其中前缀是用户名(user
)加上@
,再加主机名(hostname
)。比如,用户名是bill
,主机名是home-machine
,前缀就是bill@home-machine
。
注意,根用户(root)的提示符,不以美元符号($
)结尾,而以井号(#
)结尾,用来提醒用户,现在具有根权限,可以执行各种操作,务必小心,不要出现误操作。例如
|
|
这个符号是可以自己定义的,详见《命令提示符》一章。
为了简洁,后文的命令行提示符都只使用$
表示。
进入和退出
进入命令行环境以后,一般就已经打开 Bash 了。如果你的 Shell 不是 Bash,可以输入bash
命令启动 Bash。
|
|
退出 Bash 环境,可以使用exit
命令,也可以同时按下Ctrl + d
。
|
|
之后,我们会学习其他的脚本工具,比如 Python,我们会发现,我们是通过输入python
命令进入 Python 的 shell 环境,输入exit
退出 Python 的 shell 环境,这些方式跟 Bash 是一样的。其他的脚本接其实应该也是这种方式