下一页 上一页 目录

4. 文件和程序

4.1 文件:初步概念

Linux 的目录和文件结构与 DOS/Win 非常相似。文件具有遵循特殊规则的文件名,存储在目录中,有些是可执行文件,其中大多数都有命令开关。此外,您可以使用通配符、重定向和管道。只有一些细微的差别

您现在可以跳转到 从 DOS 到 Linux 的命令翻译 部分,但如果我是您,我会继续阅读。

4.2 符号链接

UNIX 有一种 DOS 下不存在的文件类型:符号链接。这可以被认为是文件或目录的指针,并且可以用来代替它指向的文件或目录;它类似于 Windows 快捷方式。符号链接的示例有 /usr/X11,它指向 /usr/X11R6/dev/modem,它指向 /dev/ttyS0/dev/ttyS1

要创建符号链接

$ ln -s <file_or_dir> <linkname>

示例

$ ln -s /usr/doc/g77/DOC g77manual.txt

现在您可以使用 g77manual.txt 而不是 /usr/doc/g77/DOC。链接在目录列表中显示如下

$ ls -F
g77manual.txt@
$ ls -l
(several things...)           g77manual.txt -> /usr/doc/g77/DOC

4.3 权限和所有权

DOS 文件和目录具有以下属性:A(存档)、H(隐藏)、R(只读)和 S(系统)。只有 H 和 R 在 Linux 下有意义:隐藏文件以点开头,对于 R 属性,请继续阅读。

在 UNIX 下,文件具有“权限”和一个所有者,所有者又属于一个“组”。看看这个例子

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

第一个字段包含文件 /bin/ls 的权限,该文件属于 root 用户,组为 bin。撇开其余信息不谈,记住 -rwxr-xr-x 的意思是,从左到右

- 是文件类型(- = 普通文件,d = 目录,l = 链接等);rwx 是文件所有者的权限(读取、写入、执行);r-x 是文件所有者所属组的权限(读取、执行);(我不会涵盖组的概念,只要您是初学者,您就可以在没有它的情况下生存 ;-) r-x 是所有其他用户的权限(读取、执行)。

目录 /bin 也具有权限:有关更多详细信息,请参见 目录权限 部分。这就是为什么除非您是 root 用户,否则您无法删除文件 /bin/ls:您没有这样做的权限。要更改文件的权限,命令是

$ chmod <whoXperm> <file>

其中 who 是 u(用户,即所有者)、g(组)、o(其他),X 是 +-,perm 是 r(读取)、w(写入)或 x(执行)。chmod 的常见用法示例如下

$ chmod +x file

这设置了文件的执行权限。

$ chmod go-rw file

这移除了除所有者之外所有人的读取和写入权限。

$ chmod ugo+rwx file

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

# chmod +s file

这创建了一个所谓的“setuid”或“suid”文件---一个每个人都可以使用其所有者权限执行的文件。通常,您会遇到 root suid 文件;这些通常是重要的系统文件,例如 X 服务器。

引用权限的较短方法是使用数字:rwxr-xr-x 可以表示为 755(每个字母对应一位:--- 是 0,--x 是 1,-w- 是 2,-wx 是 3...)。这看起来很困难,但稍加练习,您就会理解这个概念。root 用户作为超级用户,可以更改所有人的文件权限。RMP。

4.4 文件:命令翻译

左侧是 DOS 命令;右侧是它们的 Linux 对等命令。

ATTRIB:         chmod
COPY:           cp
DEL:            rm
MOVE:           mv
REN:            mv
TYPE:           more, less, cat

重定向和管道操作符: < > >> |

通配符:* ?

nul: /dev/null

prn, lpt1: /dev/lp0 或 /dev/lp1; lpr

示例

DOS                                     Linux
---------------------------------------------------------------------

C:\GUIDO>ATTRIB +R FILE.TXT             $ chmod 400 file.txt
C:\GUIDO>COPY JOE.TXT JOE.DOC           $ cp joe.txt joe.doc
C:\GUIDO>COPY *.* TOTAL                 $ cat * > total
C:\GUIDO>COPY FRACTALS.DOC PRN          $ lpr fractals.doc
C:\GUIDO>DEL TEMP                       $ rm temp
C:\GUIDO>DEL *.BAK                      $ rm *~
C:\GUIDO>MOVE PAPER.TXT TMP\            $ mv paper.txt tmp/
C:\GUIDO>REN PAPER.TXT PAPER.ASC        $ mv paper.txt paper.asc
C:\GUIDO>PRINT LETTER.TXT               $ lpr letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ more letter.txt
C:\GUIDO>TYPE LETTER.TXT                $ less letter.txt
C:\GUIDO>TYPE LETTER.TXT > NUL          $ cat letter.txt > /dev/null
        n/a                             $ more *.txt *.asc
        n/a                             $ cat section*.txt | less

注释

4.5 运行程序:多任务和会话

要运行程序,请像在 DOS 下一样键入其名称。如果程序存储的目录(使用目录 部分)包含在 PATH 中(系统初始化文件 部分),程序将启动。例外:与 DOS 不同,在 Linux 下,除非目录包含在 PATH 中,否则当前目录中的程序不会运行。变通方法:假设 prog 是您的程序,键入 ./prog

这是典型的命令行外观

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

其中 -s1, ..., -sn 是程序开关,par1, ..., parn 是程序参数。您可以在命令行上发出多个命令

$ command1 ; command2 ; ... ; commandn

这就是运行程序的全部内容,但很容易更进一步。使用 Linux 的主要原因之一是它是一个多任务操作系统---它可以同时运行多个程序(从现在开始称为进程)。您可以启动后台进程并立即继续工作。此外,Linux 允许您拥有多个会话:这就像同时拥有多台计算机来工作!

使用这些命令,您可以同时格式化磁盘、压缩一批文件、编译程序和解压缩存档,并且仍然可以使用提示符。用 Windows 尝试一下,只是为了看看性能上的差异(如果它没有崩溃,当然)。

4.6 在远程计算机上运行程序

要在名为 remote.machine.edu 的远程机器上运行程序

$ telnet remote.machine.edu

登录后,启动您喜欢的程序。不用说,您必须在远程机器上拥有 shell 帐户。

如果您有 X11,您甚至可以在远程计算机上运行 X 应用程序,并将其显示在您的 X 屏幕上。让 remote.machine.edu 成为远程 X 计算机,让 local.linux.box 成为您的 Linux 机器。要从 local.linux.box 运行位于 remote.machine.edu 上的 X 程序,请执行以下操作

瞧!现在 progname 将在 remote.machine.edu 上启动,并将显示在您的机器上。不过,不要尝试通过调制解调器进行此操作,因为它太慢而无法使用。此外,这是一种粗糙且不安全的方法:请阅读 http://www.linuxdoc.org/HOWTO/mini/Remote-X-Apps.html 上的“远程 X 应用程序 mini-HOWTO”。


下一页 上一页 目录