第 3 章 Linux 编程环境
3.1 Linux 常用工具
3.1.2 常用 Shell 命令
可以看到,用户得到了一个没有找到该命令的错误信息。
3.1.2 常用 Shell 命令
目前,Linux 下基于图形界面的工具越来越多,许多工作都不必使用 Shell 就可以完成了。
然而,专业的 Linux 使用者还是认为 Shell 是一个非常必要的工具,使用 Linux 时一定要熟悉 Sheel 的使用,至少要掌握一些基础知识和基本的命令。
由于 Bash 是 Linux 上缺省的 Shell,本章主要介绍 Bash 及其相关知识,Shell 命令可以 分为两种。
• 包含于 Shell 内部的命令,如 cd 命令;
• 存在于系统文件内部的某个应用程序,如 ls 命令。
对用户使用 Shell 来说,不必关心一个命令是建立在 Shell 内部还是一个单独的程序。在 图 3.2 shell 提示符
tyw藏书
实际执行的时候,Shell 会首先检查输入的命令是否是 Shell 的内部命令,如果不是,再检查 是否是一个内部的应用程序。然后 Shell 在搜索路径里寻找这些应用程序(搜索路径就是一 个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到 这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序 将被分解为系统调用并传给 Linux 内核。
Shell 命令的一般格式如下。
命令名 【选项】 【参数 1】 【参数 2】…
用户登录时,实际就进入了 Shell,它遵循一定的语法将输入的命令加以解释并传给系统。
命令行中输入的第一个部分必须是一个命令的名字,第二个部分是命令的选项或参数,命令 行中的每个部分必须由空格或 Tab 键隔开,注意,这里的选项和参数都用【】标注,这是说 明它们都是可选的,因为有的命令不需要选项和参数就可以执行。
1.对于选项和参数的说明
【选项】是包括一个或多个字母的代码,它前面有一个减号(-),Linux 用它来区别选项 和参数,【选项】可用于改变命令执行的动作的类型。多个【选项】可以用一个减号(-)连 起来,例如‘ls -l-a’ 与‘ls -la’相同。
以常用的 ls 命令为例,ls 命令可以查看当前目录的内容,加入选项-l 可以以长格式查看 当前目录内容,如图 3.3 所示.。
加入-l 选项,将会为每个文件列出一行信息,诸如数据大小和数据最后被修改的时间。
使用该指令可以查看文件的权限位,如上图中的“-rw-r--r--”符号,它表示的是 3 组不 同用户对该文件的使用权限,每组有 3 个权限位,如下所示。
• rw- 用户权限
图 3.3 ls 命令
• r-- 同组用户权限
• r-- 其他用户权限
tyw藏书
【参数】提供命令运行的信息,或者是命令执行过程中所使用的文件名。使用分号(;)
可以将 2 个命令隔开,这样可以实现一行中输入多个命令。命令的执行顺序和输入的顺序相 同。当然,ls 命令也可以加入参数,例如 ls -l /home/zxq 命令会将/home/zxq 目录的内容详细 地列出。
2.命令行输入
命令行输入实际上是可以编辑的一个文本缓冲区,在命令行中就可以输入 Shell 命令了。
在按“回车键”以确认当前操作之前,可以对输入的内容进行编辑。比如删除、复制、粘贴 等,还可以插入字符,使得用户在输入命令,尤其是复杂命令时,若出现键入错误,无须重 新输入整个命令,只要利用编辑操作,即可改正错误。
Bash 可以保存以前键入命令的列表,这一列表被称为命令历史表。按向上箭头键,便可 以在命令行上逐次显示各条命令。同样,按向下箭头键可以在命令列表中向下移动,这样可 以将以前的各条命令显示在命令行上,用户可以修改并执行这些命令,这样可以不用重复输 入以前执行的命令。
3.常用 Shell 命令介绍
Shell 命令种类很多,功能也很复杂,下面主要就几种常用的 Shell 命令来介绍。
(1)输入命令行自动补齐(automatic command line completion)功能
在 Linux 下有时比如对文件操作的时候,有的文件名或文件夹的名称可能会很长,完全 逐字输入比较麻烦,在输入命令的任何时刻,可以按<Tab>键,当这样做时,系统将试图补 齐此时已输入的命令。例如,假设当前目录下有一文件:Busybox-pre-1.00.tar.gz,现在想要 解压该文件,而该文件是当前目录下惟一以 B 开头的文件名,此时就可以如下操作。
# tar zxvf B<Tab>usy-pre-1.00.tar.gz
此时,系统会自动补齐该文件名后面的部分,这样用起来就会非常方便。
使用命令行自动补齐功能,对于使用长命令或操作较长名字的文件或文件夹都是非常有 意义的。
(2)对目录和文件的操作
• 改变当前目录
# cd [目的目录名]
这里的目的目录名可用相对路径表示,也可以用绝对路径表示。如果要切换到上一级目 录,可以采用下面的命令。
# cd ..
• 显示当前所在目录
Linux 下 pwd 命令是最常用的命令之一,用于显示用户当前所在的目录。例如:
# pwd /home/TH
tyw藏书
执行 pwd 指令后,系统提示当前所在的目录是/home/TH。
• 创建目录
在 Linux 下可以使用 mkdir 指令来创建一个目录。
# mkdir [新目录名]
例如:mkdir /home/TH,改命令的功能就是在/home/目录下创建 TH 子目录。
• 删除一个目录/文件
rm [选项] 被删除的文件/目录 对于选项的说明如下。
-r:完全删除目录,就其下的目录和文件也一并删除。
-i:在删除目录之前需要经过使用者的确认才能被删除。
-f:不需要确认就可以删除,也不会产生任何错误信息。
例如:rm –rf /home/TH/tmp,就是不必经过确认就把/home/TH/tmp/下的目录和文件全部 删除。
• 拷贝文件/目录
# cp [ 选项] [源文件/目录] [指定文件/目录]
对于选项的说明如下。
-i:采用-i 选项时,当指定目录下已存在被复制的文件时,会在复制之前要求确认是否要 覆盖,如使用者的回答是 y(yes)才执行复制的动作。
-p:保留权限模式和更改时间。
-r:此参数是用来将一目录下的所有文件都复制到另一个指定目录中。
例如:cp /etc/ld.conf ~/,拷贝/etc/目录下的 ld.conf 文件到系统的主目录中;
cp -r dir1 dir2,将目录 dir1 的全部内容全部复制到目录 dir2 里面。
• 建立文件的符号链接
建立文件的符号链接是 Linux 中一个很重要的命令,它的基本功能是为某一个文件在另 外一个位置建立一个不同的链接,这个命令最常用的选项是-s,具体用法如下。
# ln [-s] [源文件] [目标文件]
在实际的操作过程当中,有时在不同的目录中要用到相同的文件,我们不需要在每一个 需要的目录下都放一个相同的文件,而是使用 ln 命令链接(link)它就可以(相当于建立了 一个快捷方式),这样可以避免重复的占用磁盘空间。例如:ln –s /bin/test /usr/local/bin/test,
这就为/bin 下的 test 文件在/usr/local/bin 目录下建立了一个符号链接。
注意
使用 ln 命令需要注意:ln 命令会保持每一处链接文件的同步性,也即是说如果改动了某一文件,
其他的符号链接文件都会发生相应的变化;其次,ln 命令的链接方式又有软链接和硬链接两种,
上面提到的用法就是软链接,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空 间,硬链接没有选项-s,它会在指定的位置上生成一个和源文件大小相同的文件,无论是软链 接还是硬链接,文件都保持同步变化。
tyw藏书
• 改变文件/目录访问权限
在 Linux 系统下面,一个文件有可读(r)、可写(w)、可执行(x)3 种模式,chmod 可 以用数字来表示该文件的使用权限,其语法如下。
# chmod [XYZ] 文件
其中 X、Y、Z 各为一个数字,分别表示 User(用户)、Group(同组用户)及 Other(其 他用户)对于该文件的使用权限。对于文件的属性,r(可读)=4,w(可写)=2,x(可执 行)=1。对于每一位用户来说,若要具有 rwx 属性则对应的位应为 4+2+1=7,若要 rw-属性 则为 4+2=6,若要 r-x 属性则为 4+1=5。比如下面的例子:
# chmod 751 /home/TH/test
其执行结果就是使程序 test 对于用户可读、写、执行,对于同组用户可读、执行,对于 其他用户可执行。
Chmod 还有一种用法就是使用包含字母和操作符表达式的字符设定法(相对权限设定), 通过参数-r、-w、-x 来设定权限,这里不再详细地介绍。
• 改变文件/目录的所有权 chown [-R] 用户名 文件/目录 例如
# chown TH File1
将当前目录下的文件 File 改为用户 TH 所有。
# chown -R TH Dir1
将当前目录 Dir1 改为用户 TH 所有。
(3)用户管理
• 添加/删除用户
# adduser user1,由具有 root 权限的用户添加用户 user1;
# userdel user2,由具有 root 权限的用户删除用户 user2;
• 设置用户口令
为了更好地保护用户账号的安全,Linux 允许用户随时修改自己的口令。修改口令的命 令是 passwd,它将提示用户输入旧口令和新口令,之后还要求用户再次确认新口令,以避免 用户无意中按错键。
(4)文件的打包和压缩
先来看一下 Linux 下打包命令。Linux 下最常用的打包程序就是 tar(tape archive-磁带存 档),使用 tar 程序打出来的包都是以.tar 结尾的。Tar 命令可以为文件和目录创建档案(备份 文件),也可以在档案中改变文件,或者向档案中加入新的文件。使用 tar 命令,可以把一大 堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便 于传输是非常有用的。其语法如下。
# tar [选项]f targetfile.tar 文件/目录
tyw藏书
注意 选项后面的 f 是必须的,通常用来指定包的文件名。
选项说明如下。
c:创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
例如:
# tar -cf test.tar /home/tmp --- 将/home/tmp 目录下的文件打包为 test.tar
r:增加文件到已有的包,如果发现还有一个目录或是一些文件忘记备份了,这时可以使 用该选项,将还需要的目录或文件添加到包文件中,例如:
# tar -rf test.tar *.jpg
该命令将所有的 jpg 文件添加到 test.tar 包里面去。-r 是表示增加文件的意思。
t:列出包文件的所有内容,查看已经备份了哪些文件。例如:
# tar -tf test.tar
x:从 tar 包文件中恢复所有文件,事实上是一个解包的过程。例如:
x:从 tar 包文件中恢复所有文件,事实上是一个解包的过程。例如: