Bash 和 Bash 脚本

目录

7.1. 什么是外壳
7.2. 编写外壳脚本
7.3. 重定向命令事件
7.4. 使用别名
7.5. 在 Bash 中使用变量
7.6. 将命令分组和组合
7.7. 使用通用流程构造语句
7.8. 更多信息

摘要

今天,许多人使用具有诸如 KDE 或 GNOME 的图形用户界面 (GUI) 的计算机。尽管它们提供大量功能,但当要执行自动任务时,它们的用途非常有限。外壳是对 GUI 的很好补充,本章提供关于外壳(在本例中为 Bash)的某些方面的概述。

什么是外壳

通常来说,外壳就是指 Bash(Bourne again 外壳)。在本章中提到外壳时,指的是 Bash。事实上,除了 Bash 还存在很多其他外壳(ash、csh、ksh、zsh、…),每种外壳都具备不同的功能和特征。如果需要关于其他外壳的更多信息,请在 YaST 中搜索外壳

了解 Bash 配置文件

外壳可调用为:

  1. 交互式登录外壳。当登录计算机时需要使用此方式,即使用 --login 选项调用 Bash 或通过 SSH 登录到远程计算机时。

  2. 普通交互式外壳。这通常在启动 xterm、konsole、gnome 终端或类似工具时使用。

  3. 非交互式外壳。当在命令行调用外壳脚本时使用。

根据所用外壳的类型,会读取不同的配置文件。下表显示登录和非登录外壳的配置文件。

表 7.1. 登录外壳的 Bash 配置文件

文件

描述

/etc/profile

不要修改此文件,否则在下一次更新时可能损坏您的修改!

/etc/profile.local

如果扩展 /etc/profile,请使用此文件

/etc/profile.d/

包含特定程序的系统范围配置文件

~/.profile

在此处插入特定于用户的登录外壳配置


表 7.2. 非登录外壳的 Bash 配置文件

/etc/bash.bashrc

不要修改此文件,否则在下一次更新时可能损坏您的修改!

/etc/bash.bashrc.local

使用此文件插入系统范围的修改(仅 Bash)

~/bashrc

在此处插入特定于用户的配置


此外,Bash 还使用更多文件:

表 7.3. 用于 Bash 的特殊文件

文件

描述

~/.bash_history

包含已键入的所有命令的列表

~/.bash_logout

注销时执行


目录结构

下表简要介绍 Linux 系统上最重要的较高级别目录。以下列表中是关于这些目录和重要子目录的更多详细信息。

表 7.4. 标准目录树概述

目录

内容

/

根目录 - 目录树的起点。

/bin

基本二进制文件,例如系统管理员和普通用户都需要的命令。通常还包含外壳,如 Bash。

/boot

引导加载程序的静态文件。

/dev

访问特定于主机的设备所需的文件。

/etc

特定于主机的系统配置文件。

/home

储存系统上具有帐户的所有用户的用户主目录。但是,root 的用户主目录不在 /home 中,而是在 /root 中。

/lib

基本共享库和内核模块。

/media

可卸媒体的安装点。

/mnt

临时装入文件系统的安装点。

/opt

附加应用程序软件包。

/root

超级用户 root 的用户主目录。

/sbin

基本系统二进制文件。

/srv

系统提供的服务的数据。

/tmp

临时文件。

/usr

具有只读数据的辅助层次结构。

/var

变量数据,如日志文件。

/windows

只在系统上同时安装了 Microsoft Windows* 和 Linux 时可用。包含 Windows 数据。


以下列表提供有关这些目录中有哪些文件和子目录的更多详细信息,并给出一些示例:

/bin

包含 root 和其他用户都可使用的基本外壳命令。这些命令包括 lsmkdircpmvrmrmdir/bin 也包含 Bash,它是 SUSE Linux Enterprise Desktop 中的默认外壳。

/boot

包含引导所需的数据,如引导加载程序、内核以及内核开始执行用户模式程序之前使用的其他数据。

/dev

储存代表硬件组件的设备文件。

/etc

包含控制诸如 X Window 系统等程序操作的本地配置文件。/etc/init.d 子目录包含引导过程中执行的脚本。

/home/username

储存在系统中建立帐户的所有用户的私人数据。这里的文件只能由其拥有者或系统管理员修改。默认情况下,电子邮件目录和个人桌面配置以隐藏文件和目录的形式位于此处。KDE 用户应在 .kde.kde4 中查找其桌面的个人配置数据。GNOME 用户应在 .gconf 中查找。

[Note]网络环境中的用户主目录

如果在网络环境中工作,则您的用户主目录可能映射到文件系统中除 /home 之外的其他目录中。

/lib

包含引导系统和运行 root 文件系统中的命令所需的基本共享库。共享库相当于 Windows 中的 DLL 文件。

/media

包含 CD-ROM、USB 记忆棒和数码相机(如果它们使用 USB)等可卸媒体的安装点。/media 通常包含除系统硬盘驱动器之外的各类驱动器。可卸媒体插入或连接到系统并装入之后,可以从此处访问该媒体。

/mnt

此目录提供临时装入的文件系统的安装点。root 可以在此处装入文件系统。

/opt

保留用于安装其他软件。在此处可以找到可选软件和较大外接式附件程序包。KDE3 位于此处,而 KDE4 和 GNOME 现在已移到 /usr

/root

root 用户的用户主目录。root 的个人数据位于此处。

/sbin

s 所表明的,该目录储存超级用户的实用程序。/sbin 包含 /bin 中的二进制文件以及引导和恢复系统所需的其他二进制文件。

/srv

储存系统提供的服务(如 FTP 和 HTTP)的数据。

/tmp

此目录由需要临时储存文件的程序使用。

/usr

/usr 与用户无关,而是 UNIX 系统资源的缩写。/usr 中的数据是可以在符合文件系统层次结构标准 (FHS) 的各个主机之间共享的静态只读数据。此目录包含所有应用程序并建立文件系统中的辅助层次结构。KDE4 和 GNOME 也位于此处。/usr 储存有大量子目录,例如 /usr/bin/usr/sbin/usr/local/usr/share/doc

/usr/bin

包含一般可访问的程序。

/usr/sbin

包含为系统管理员保留的程序,例如维修功能。

/usr/local

在此目录中,系统管理员可以安装本地的独立于分发包的扩展。

/usr/share/doc

储存系统的各种文档文件和发行描述。在 manual 子目录中可以找到此手册的联机版本。如果安装了多种语言,则此目录可能包含这些手册不同语言的版本。

packages 下可以找到系统上安装的软件包中包含的文档。对于每个包,都会创建一个子目录 /usr/share/doc/packages/packagename,经常用于储存该包的自述文件,有时储存示例、配置文件或附加脚本。

如果系统上安装了操作指南,/usr/share/doc 还会包含 howto 子目录,其中有与 Linux 软件的安装和操作相关的许多任务的附加文档。

/var

/usr 用于储存静态只读的数据,而 /var 用于在系统操作期间写入并成为变量数据的数据,例如日志文件或假脱机数据。有关最重要日志文件的概述,可以在 /var/log/ 下找到,请参见表 28.1 “日志文件”

/windows

只在系统上同时安装了 Microsoft Windows 和 Linux 时可用。包含系统的 Windows 分区上可用的 Windows 数据。是否可以编辑此目录中的数据取决于 Windows 分区使用的文件系统。如果是 FAT32,则您可以打开和编辑此目录中的文件。对于 NTFS,SUSE Linux Enterprise Desktop 还包括写权限支持。但是,NTFS-3g 文件系统的驱动程序的功能有限。