文件處理命令 剖析一個文件列表 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 cp:overwrite `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 * 命令。 重命名文件 賦予一個文件多個名字的兩種流行的方法是利用鏈接和 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 指示文件類型。