Linux 文件命令学习速成教程(2)

虽然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默认 shell。它结合了与它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。

BASH 内置的命令 history 默认记录最后输入的 500 条命令。可以通过在命令提示符下输入 history 来查看它们。要检索某个特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在历史列表中输入它的编号,并在编号前面加上 "!",例如:

$ !49

您还可以通过一条命令在历史列表中离位置最靠前的项目的距离来执行该命令:如果在历史列表中有 53 个事件,$ !-3 将执行事件号 51。

像 UNIX/Linux 世界的其它 shell 一样,BASH 使用了特殊的环境变量来方便系统管理。例如:

* HOME,用户主目录

* PATH,Linux 用来搜索您输入的命令的可执行镜像的搜索路径

* HISTSIZE,系统保存的历史事件的数量

除了这些保留的关键字之外,您还可以定义您自己的环境变量。例如,Oracle 使用 ORACLE_HOME (还有其它一些变量),要使 Oracle 安装成功完成,必须在您的环境中设置这些变量。

可以在提示符下临时设置变量:

$HISTSIZE=100

或者,在 /etc/profile (需要根用户权限)中进行系统范围的永久设置,或在 .profile 中进行局部永久设置。

可以通过 echo 命令,并用一个 $ 符号来访问一个环境变量的值,进而查看该值。

$ echo $HOME

/home/bluher

可以用 env 命令来查看当前所有的环境变量。

正则表达式和通配符

许多 Linux 命令使用通配符 * 和 ? 来匹配任意数量的字符或分别匹配任意的单个字符;正则模式匹配表达式利用一个句点 (.) 来匹配除“换行符”之外的任意单个字符。这两种情况下都使用方括号 ([ ]) 来匹配除“*”号之外的字符组。不过,* 号在各种情况下有类似但不同的意义:虽然它在 shell 中将匹配一个或更多的字符,但在正则表达式中,它匹配上述字符的零个或更多的实例。一些命令(如 egrep 和 awk)使用了一组更广泛的特殊字符来进行模式匹配。

文件处理命令

剖析一个文件列表

ls 命令用来查看用户有执行权限的任意目录中的文件列表,该命令有许多有趣的选项。例如:

$ ls -liah *

22684 -rw-r--r--    1 bluher   users         952 Dec 28 18:43 .profile

19942 -rw-r--r--    1 scalish  users          30 Jan  3 20:00 test2.out

925 -rwxr-xr-x    1 scalish  users         378 Sep  2  2002 test.sh

上面的列表显示 8 列:

* 第 1 列指示文件的 inode,因为我们使用了 -i 选项。剩下的列通过 -l 选项来进行正常显示。

* 第 2 列显示文件类型和文件访问权限。

* 第3 列显示链接数,包括目录。

* 第 4 和第 5 列显示文件的所有者和组所有者。这里,所有者 "bluher" 属于组 "users"。

* 第 6 列显示文件大小(单位为所显示的单位,而不是默认的字节数,因为我们使用了 -h 选项。

* 第 7 列显示日期(它看起来像是三列),包括月、日和年,以及当天的时间。

* 第 8 列显示文件名。在选项列表中使用 -a 将使列表中包含隐藏文件(如 .profile)的列表。

处理文件

可以移动 (mv)、复制 (cp) 或删除 (rm) 文件和目录。明智地使用 -i 选项,以获得确认通常是个不错的主意。

$ cp -i ls.out ls2.out

cpverwrite `ls2.out'?

mv 命令允许使用 -b 选项,这将在移动文件之前作一个备份拷贝。rm 和 cp 接受功能强大但却危险的 -r 选项,它将在一个目录和它的文件上递归执行。

$ rm -ir Test

rm:descend into directory `Test'? y

可以用 mkdir 来创建目录,用 rmdir 来删除目录。不过,因为不能用 rmdir 来删除包含文件的目录,所以使用 rm 加 -r 选项通常要更方便些。

出于安全的原因,所有的文件都有所有权和保护。文件访问权限(或文件模式)包含之前提到的相同的 10 个字符:

* 第一个字符指示文件类型。最常见的是 - 代表文件,d 代表目录,而 l 代表链接。

* 接下来的 9 个字符是三种用户类别的访问权限:文件所有者(字符 2-4),用户组 (5-7) 和其它 (8-10),其中 r 表示读权限,w 表示写权限,x 指示一个文件上的执行权限。破折号 - 如果出现在这九个位置的任意一个,则指示这个操作对该类别的用户禁止。

可以使用 chmod 命令通过字符符号或二进制掩码来设置访问权限。要使用二进制掩码,必须将三个权限组的字符表示转换成二进制格式,然后转换成八进制格式:

用户类别:    所有者    用户组    其它

字符表示:    rwx    r-x    r--

二进制表示:    111    101    100

八进制表示:    7    5    4

将写权限赋予用户组,您可以使用:

chmod g+w test.sh or chmod 774 test.sh

用 umask 命令,在 /etc/init.dev 文件中进行系统范围内的、或在 .profile 文件中进行的本地的文件权限默认设置。这个命令指示用 777 减去这个数字来获取默认的权限:

$ umask 022

这将为用户创建的所有新文件生成一个默认的文件权限 755。

可以用 chown 来修改文件的所有权:

$ chown bluher ls.out

这里,bluher 是新的文件所有者。类似地,组成员资格将按以下方式修改:

$ chgrp devgrp ls.out

这里,devgrp 是新的用户组。

ls 不提供哪些文件是文本的,哪些文件是二进制的的信息。要了解这个信息,您可以使用 file * 命令。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/62d0dc6e74a5589123235074f0f5e27d.html