上 Linux系统文件命令精通指南( 三 )


用户类别: 所有者 用户组 其它
字符表示: 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 * 命令 。
重命名文件
赋予一个文件多个名字的两种流行的方法是利用链接和 alias 命令 。Alias 可以用来为一个更长的命令重新起一个更方便的名字:
$ alias ll="ls -l"
$ ll
注意单引号的使用,这使得 BASH 将该项目传递给别名,而不是自己估计它 。别名还可用作较长的路径名的缩写:
$ alias jdev9i=/jdev9i/jdev/bin/jdev
关于 alias 和它的反命令 unalias 的更多信息,请查看 BASH 的 man 页面的 "SHELL BUILTIN COMMANDS" 子部分 。在最后一个例子中,定义了一个环境变量来实现相同的结果 。
$ export JDEV_HOME=/jdev9i/jdev/bin/jdev
$ echo $JDEV_HOME
/jdev9i/jdev/bin/jdev
$ $JDEV_HOME
链接允许几个文件名引用单个源文件,格式如下:
ln [-s] fileyouwanttolinkto newname
单独的 ln 命令创建到文件的一个硬链接,而使用 -s 选项来创建一个符号链接 。简而言之,一个硬链接几乎不能和原始的文件区分开(除了这两个文件的 inode 将相同之外) 。符号链接较容易区分,因为它们出现在一个长的文件列表中,并用 -> 来指示源文件,l 指示文件类型 。
查看和查找文件
文件过滤器
用来读取文件内容和在文件内容上执行操作的命令有时被称为 1y滤器 。sed 和 awk 命令是两个滤波器的例子,因为在以前的 OTN 文章中有它们详细的讨论,在这里将略过 。
诸如 cat、 more 和 less 之类的命令让您能够从命令行查看一个文本文件的内容,而无需调用编辑器 。Cat 是 "concatenate" 的缩写,它将默认地在标准输出(显示屏)上显示文件内容 。和 cat 一起提供的最有趣的选项之一是 -n 选项,它用编号的输出行来显示文件内容 。
$ cat -n test.out
1 This is a test.
因为 cat 一次性输出文件中的所有行,所以您可能更喜欢用 more 和 less,因为它们都一次输出一屏的文件内容 。Less 是 more 的一个增强的版本,它允许用来自 vi 文本编辑器的关键命令来增强文件查看 。例如,d 向前翻滚、b 向后翻滚 N 行(如果 N 是在 d 或 b 之前指定的) 。为 N 输入的值成为随后的 d 命令的默认值 。man 页面实用工具使用 less 来显示使用说明的内容 。
重定向和管道
重定向允许将命令输出重定向到文件中,而不是标准输出,或者类似地,也可重定向输入 。重定向的标准符号 > 创建一个新的文件 。>> 符号将输出添加到一个现有的文件中:
$ more test2.out
Another test.
$ cat test.out >> test2.out
$ cat test2.out
Another test.
This is a test.
到文件的标准输入可以用 < 符号来重定向:
$ cat < test2.out
错误消息用 2> 和 2>> 来重定向和添加,格式如下:
$ command 2> name_of_error_file
要避免无意地覆盖一个现有的文件,使用 BASH 内置的命令集:

推荐阅读