8. 高级主题

这里游戏开始变得棘手。学习这些特性,然后你就可以说你“对 Linux 有所了解”了 ;-)

8.1. 权限和所有权

文件和目录具有权限(“保护”)和所有权,就像在 VMS 下一样。 如果你无法运行程序,或无法修改文件,或无法访问目录,那是因为你没有执行此操作的权限,和/或因为该文件不属于你。 让我们看下面的例子

$ ls -l /bin/ls
-rwxr-xr-x   1 root     bin         27281 Aug 15  1995 /bin/ls*

第一个字段显示文件的权限ls(所有者 root,组 bin)。 所有权有三种类型:所有者、组和其他人(类似于 VMS 所有者、组、世界),权限有三种类型:读取、写入(和删除)和执行。

从左到右,-是文件类型(-= 普通文件,d= 目录,l= 链接等);rwx是文件所有者的权限(读取、写入、执行);r-x是文件所有者组的权限(读取、执行);r-x是所有其他用户的权限(读取、执行)。

要更改文件的权限

$ chmod <whoXperm> <file>

其中 who 是u(用户,即所有者),g(组),o(其他人),X 要么是++-, perm 是r(读取),w(写入),或者x(执行)。 例子

$ chmod u+x file

这为文件所有者设置执行权限。 快捷方式chmod +x 文件.

$ chmod go-wx file

这会删除除所有者以外的所有人的写入和执行权限。

$ chmod ugo+rwx file

这会赋予所有人读取、写入和执行权限。

一种更简短的引用权限的方式是使用数字rwxr-xr-x可以表示为 755(每个字母对应一位---是 0,--x是 1,-w-是 2...)。

对于目录,rx表示你可以cd到该目录,并且w表示你可以删除目录中的文件(当然,根据文件的权限),或目录本身。 这仅仅是问题的一部分 --- RMP。

要更改文件的所有者

$ chown username file

总结一下,表格

VMS				Linux			Notes
------------------------------------------------------------------------------

SET PROT=(O:RW) file.txt	$ chmod u+rw file.txt
				$ chmod 600 file.txt
SET PROT=(O:RWED,W) file	$ chmod u+rwx file
				$ chmod 700 file
SET PROT=(O:RWED,W:RE) file	$ chmod 755 file
SET PROT=(O:RW,G:RW,W) file	$ chmod 660 file
SET FILE/OWNER_UIC=JOE file	$ chown joe file
SET DIR/OWNER_UIC=JOE [.dir]	$ chown joe dir/

8.2. 多任务处理:进程和作业

更多关于运行程序。 Linux 下没有你习惯的“批处理队列”;多任务处理的处理方式非常不同。 同样,这是典型的命令行外观

$ command -s1 -s2 ... -sn par1 par2 ... parn < input > output &

其中-s1, ..., -sn是程序开关,par1, ..., parn是程序参数。

现在让我们看看多任务处理是如何工作的。 在前台或后台运行的程序称为“进程”。

除此之外,shell 允许你停止或临时挂起进程,将进程发送到后台,以及将进程从后台带到前台。 在这种情况下,进程称为“作业”。

8.3. 文件,再探

有关文件的更多信息。

8.4. 打印队列

你的打印作业像在 VMS 下一样排队。 当你发出打印命令时,你可以指定打印机名称。 例子

$ lpr file.txt          # this goes to the standard printer
$ lpr -Plaser file.ps   # this goes to the printer named 'laser'

要处理打印队列,你可以使用以下命令

VMS					Linux
------------------------------------------------------------------------------

$ PRINT file.ps				$ lpr file.ps
$ PRINT/QUEUE=laser file.ps		$ lpr -Plaser file.ps
$ SHOW QUEUE				$ lpq
$ SHOW QUEUE/QUEUE=laser       		$ lpq -Plaser
$ STOP/QUEUE				$ lprm <item>