whatis命令在用catman -w命令創建的資料庫中查找command參數指定的命令、系統調用、庫函數或特殊文件名。whatis命令顯示手冊部分的頁眉行。然後可以發出man命令以獲取附加的信息。whatis命令等同於使用man -f命令。
實例
2. 如何在linux查看幫助
可以使用man查看命令的手冊。man命令查看的幫助文件與命令是分開的,幫助文件和命令的作者可以不是一個人。
用法示例:查看ls命令的手冊
$ man ls
使用whatis命令查看命令的一句話說明
用法示例:查看ls命令的一句話說明
$ whatis ls
大多數命令還支持加上--help參數來查看幫助。這個幫助是命令提供的,是作者寫命令時候寫在代碼裡面的。
用法示例:查看ls命令的幫助
$ ls --help
3. Linux虛擬機的whatis用不了是怎麼回事看圖!!求辦法,
root用戶執行/usr/sbin/makewhatis
然後再用whatis命令
4. Linux 命令 格式 (命令的詳細,排列,順序,樣式。。。。)
樓上說的是linux中help的使用方法,使用man命令和參數可以查詢到樓主提問的所有問題。
常見的列文件和目錄:dir和list
排序:需要使用參數
樣式:需要使用參數
任何命令後跟--help 會列出所有的參數的使用方法的。另外linux有命令提示功能,例如按d後再按tab鍵2下,那麼所有d開頭的命令都會羅列出來。然後用--help參數看使用方法即可。
5. linux whatis命令為什麼會顯示nothing appropriate
後面參數表示文件沒有對應的描述
6. 如何閱讀linux幫助命令
1.首先讓我們來學習幫助明令man
$man man
man命令可以查看常用命令的用法,如:
$man ls
此命令將會列出ls命令的基本使用方法及相應的參數列表。
我們可以用
$whereis man
來查看man手冊所在的位置,我使用的是Ubuntu系統,上述命令輸出結果為:
man: /usr/bin/man /usr/local/man /usr/share/man /usr/share/man/man7/man.7.gz /usr/share/man/man1/man.1.gz /usr/share/man/man1/man.1posix.gz
所以當我們遇到一些比較陌生的命令時,又不知道其用法,此時此刻,我們就可以向man手冊尋求幫助。
2.cd(進行不同目錄之間的切換)命令
例如:
$cd /usr/bin
此命令可以將工作目錄切換到/usr/bin下
$cd ..
此名將返回上一級目錄
$cd ../..
可以將工作目錄切換到/(根目錄下)
$cd ~
將工作目錄切到用戶子目錄
當不知道自己現在所在的目錄,可以輸入如下命令查看你現在的工作目錄
$pwd
3.find
find命令是一個功能強大的操作命令,可以使用它在文件系統上查找文件,如:
$find /usr/bin -type f -atime +100 -print
該命令用來查找子目錄/usr/bin中最近100天沒有使用過的程序,有關find的其他復雜的內容可以查看幫助文檔。
4.whereis
whereis命令可以迅速地找到文件,而且還可以提供這個文件的二進制可執行文件、源代碼文件和使用手冊頁存放的位置。例如查看ls命令的使用手冊存放的位置
$whereis ls
5.locate
使用 locate命令查找文件要比使用 find命令快得多,其原因是 locate命令直接去檢索這個資料庫文件,從中找到匹配的文件名並顯示它的查詢結果。locate命令很容易使用。比如:
$locate 公共的
即可搜索到「公共的」所在的位置或者目錄中與之匹配的字元的目錄
依我個人的經驗,locate是最容易使用,也是最快最好的搜索命令。
6.whatis
whatis命令能夠從某個程序的使用手冊頁中抽出一行簡單的介紹性文字,幫助你迅速了解所查命令的簡單功能。例如:
$whatis more
more (1) - 在顯示器上閱讀文件的過濾器
more (1) - file perusal filter for crt viewing
more (1posix) - display files on a page-by-page basis
如上結果,上面顯示了中文幫助文檔,那是我安裝了中文幫助手冊,若沒有中文幫助手冊,那隻會顯示英文幫助信息。
7.ls
ls(列出子目錄內容清單)命令會是你最經常使用的程序命令之一。使用它最簡單的格式,ls命令可以列出當前子目錄下幾乎所有的文件。如:
$ls
ls也可以使用參數,使用-m參數把文件用逗號,使用-x參數按水平對齊的方式而不是預設的垂直對齊方式列出文件,使用-F參數使得ls命令可以在顯示子目錄的時候在它的文件名之後加上一個斜線("/")字元,還有其他的命令如-l,-a等等,可以查看man使用手冊。
8.dir和vdir
dir和vdir命令與ls命令一樣可以列出子目錄的內容清單,使用dir命令的時候就像普通的ls命令一樣把文件按列對齊列出,如:$dir 。使用vdir命令的時候將像使用ls -l 命令。大家可以上機試一試就知道了,如有其他需要,可以查看使用手冊。
9.cat
cat(合並文件)命令用來把文件內容送到你的屏幕上去顯示,也可以使用這個命令通過一個叫做輸出"重定向"的過程把文件內容嗯送到其他的文件中去。如:
$cat test.txt
此命令可查看test.txt文件中的內容。若帶上參數-n,可以在閱讀文件的時候加上行號。
假設你的工作目錄有test1.txt,test2.txt,若沒有我們可以用touch命令建立它們。
輸入下列命令:
$cat test* > test3.txt
$ ls -l test*
$cat test3.txt
我們會發現新建了test3.txt,並且將test1.txt和test2.txt的內容合並到了test3.txt的文件中去了。
如果我們想把test1.txt的內容追加到test3.txt中去,怎麼辦呢?,別急,看下面的命令
$cat test1.txt >> test3.txt
該命令就實現了上面提到的功能,你可以試試看哦!
10.more
more命令是Linux操作系統命令中我們稱之為頁命令的家族中的一員。頁命令使你在瀏覽文件的時候可以一次閱讀一屏或者一行。 如果需要幫助,請按下「 H」 鍵,將看到一個幫助畫面。如果使用了驚嘆號 ( ! ),還可以從m o r e命令中去執行其他的命令。閱讀一個文本文件是相當容易的,因為可以敲空格鍵閱讀後一頁,也可以敲 B鍵閱讀前一頁。
11.less
less命令有點象more但功能更強大。less命令提供了許多比more命令優秀的功能:
�6�1 可以使用游標鍵在文本文件中前後滾屏。
�6�1 可以用行號或百分比作為書簽來瀏覽文件。
�6�1 可以實現在多個文件中進行復雜的檢索、格式匹配、高亮度顯示等操作。
�6�1 鍵盤操作與字處理程序如 emacs兼容。
�6�1 閱讀到文件結束或者標准輸入結束的時候 less命令不會退出。
�6�1 屏幕底部的信息提示更容易控制使用,而且提供了更多的信息。
�6�1 帶有許多的附件,包括一個獨立的鍵定義程序 lesskey,這樣就可以定義使用哪些按鍵來
控制less命令.
12.head/tail
有的時候,我們對文件的所有內容並不想知道多少,而是想瀏覽其頭部幾行或是尾部幾行,我們就可以使用head/tail,例如:
$:tail -n 12 /var/log/messages
上述命令就是用來查看登入文件的最後12行,確認一下最近有那些用戶登入系統及時間。
有關其他的參數可參考使用手冊。
我學的也不很全,很多參數我也沒有試,在這表示抱歉,
還有其他的命令請參考其他的參考書,這僅僅是我個人的學習隨筆,如有錯誤,幫忙指正,謝謝。
7. Linux系統中的redhat的常用輸入命令有哪些
redhat linux的命令
一. 啟動,關機,登入,登出相關命令
<login> 登錄
<logout> 登出
<exit> 登出
<shutdown> 停止系統
<halt> 停止系統
<reboot> 重啟動
<poweroff> 切斷電源
<sync> 把內存里的內容寫入磁碟
<lilo> 安裝lilo啟動管理程序
<grub> 安裝lilo啟動管理程序
二. Shell相關命令
<chsh> 切換Shell
<history> 顯示命令履歷
<alias> 設置命令別名
<unalias> 取消命令別名
<which> 顯示命令所在位置
<type> 查詢命令種類
<echo> 顯示字元串或者變數內容
<set> 設置/顯示Shell變數
<printenv> 顯示環境變數
<export> 設置環境變數
<env> 設置臨時環境變數
<unset> 釋放環境變數
<setenv> 設置環境變數
<unsetenv> 釋放環境變數
<source> 執行文件當中的命令
<man> 查詢命令手冊
<info> 查詢超文本命令手冊
<whatis> 顯示命令簡介
<apropos> 通過關鍵字查詢手冊
三. 用戶管理相關命令
<su> 切換到其他用戶
<useradd> 追加用戶
<adser> 追加用戶
<userdel> 刪除用戶
<usermod> 修改用戶設置
<chfn> 修改用戶私人信息
<groupadd> 追加組
<groupdel> 刪除組
<groupmod> 修改組設置
<passwd> 更改密碼
<whoami> 顯示用戶名
<logname> 顯示登錄用戶帳號
<users> 顯示所有登錄用戶信息
<who> 查詢登錄用戶信息
<w> 查詢登錄用戶信息
<id> 顯示指定用戶的ID信息
<groups> 顯示指定用戶的所屬組
<finger> 顯示指定用戶的個人信息
<mesg> 開關與他人收發消息
<write> 給其他用戶發消息
<wall> 給所有用戶發消息
<talk> 和其他用戶聊天
四. 系統消息相關命令
<date> 顯示/設置當前時間
<uptime> 顯示系統運行時間
<arch> 顯示機器的核心構架(如i386)
<uname> 顯示操作系統信息
<tty> 顯示終端名
<last> 顯示登錄/登出在履歷
<lastb> 顯示非法登錄信息
<mpkeys> 顯示當前鍵盤配置
<loadkeys> 變更鍵盤配置
<df> 查詢磁碟使用信息
<> 查詢磁碟使用信息
<dmesg> 顯示系統啟動消息
<script> 保存輸入輸出到文件
五. 文件操作相關命令
<ls> 顯示文件列表
<tree> 顯示目錄樹
<pwd> 顯示當前路徑
<cd> 更改當前路徑
<pushd> 追加路徑到目錄堆棧
<popd> 從目錄堆棧刪除路徑
<dirs> 顯示目錄堆棧的內容
<mkdir> 創建路徑
<rmdir> 刪除路徑
<cp> 復制文件/目錄
<rm> 刪除文件/目錄
<mv> 移動文件/目錄,修改文件名
<chown> 更改文件/目錄的所有者
<chgrp> 修改文件/目錄的所有組
<chmod> 修改文件/目錄的許可權
<touch> 更改文件時間
<ln> 建立文件/目錄鏈接
<find> 查找文件
<whereis> 顯示文件存在的路徑名
<file> 查詢文件種類
<size> 查詢文件大小
六. 文件編輯相關命令
<cat> 顯示文件內容
<tee> 輸出到文件和屏幕
<more> 分屏顯示文件內容
<less> 分屏顯示文件內容
<head> 顯示文件頭部內容
<tail> 顯示文件尾部內容
<fold> 折疊顯示長行
<sort> 排列文件的行
<cmp> 比較文件內容
<diff> 顯示文件差異
<nkf> 更改日語文件編碼
<dd> 變更文件之後復制
<wc> 統計文本單詞數,文件大小等
<split> 分割文件
<paste> 以行連接文件
<join> 以欄位連接文件
<grep> 查詢文字
<uniq> 過濾重復部分顯示文件內容
<tr> 替換文字
<sed> 替換文字
七. 壓縮/解壓縮相關命令
<ar> 壓縮/解壓縮文件
<tar> 壓縮/解壓縮文件
<compress> 壓縮/解壓縮文件
<uncompress> 解壓縮
<gzip> 壓縮/解壓縮文件
<gunzip> 解壓縮
<zcat> 顯示壓縮文件的內容
<lha> 壓縮/解壓縮文件
<uuencode> 把二進制文件編碼為文本文件
<uudecode> 把經過編碼的文本文件還原為二進制文件
八. MS-DOS工具集[mtools]命令
<mdir> 顯示文件列表
<mcd> 改變當前目錄
<mmd> 新建目錄
<mrd> 刪除目錄
<mdeltree> 刪除目錄樹
<m> 復制文件
<mdel> 刪除文件
<mmove> 移動文件
<mren> 更改文件或目錄名
<mattrib> 修改文件屬性
<mtype> 顯示文件內容
<m> 查詢文件或目錄大小
<minfo> 顯示磁碟信息
<mformat> 以MS-DOS方式格式化磁碟
<mlabel> 設置磁碟標簽
九. 控制外部設備相關命令
<mount> mount上設備
<umount> 解除已經mount上的設備
<eject> 彈出(CD/DVD等)
<fdformat> 格式化軟盤
<fdisk> 配置/顯示硬碟分區
<mkfs> 格式化磁碟分區
<fsck> 檢查/修復磁碟錯誤
<lpr> 列印到列印機
<lprm> 中斷列印任務
<lpq> 顯示列印任務的狀態
<lpc> 管理/控制列印任務
<ifconfig> 顯示/設定NIC配置
十. 進程及任務管理相關命令
<ps> 顯示正在運行的進程
<jobs> 顯示後台運行任務
<fg> 把任務切換到前台
<bg> 把任務切換到後台
<kill> 中止進程或任務
<killall> 中止進程或任務
<wait> 等待進程或任務的結束
<at> 設置定時執行任務
<atq> 顯示尚未執行的任務
<atrm> 刪除定時執行任務
<batch> 在系統負荷減輕的時候執行任務
<nice> 改變優先度並執行任務
<nohup> 在後台執行任務,Logout之後也不退出
<sleep> 休眠一定的時間
十一. 網路管理相關命令
<netstat> 顯示當前網路連接狀況
<route> 顯示/設置路由
<host> 顯示網路主機情況
<hostname> 顯示/設置當前主機的名字
<ping> 確認和遠程機器的連接情況
<traceroute> 顯示路由信息
<rwho> 查詢網上機器的登陸用戶
<ruptime> 查詢網上機器的系統運行時間
<rlogin> 登陸到遠程機器
<telnet> 用telnet登陸到遠程機器
<rsh> 給遠程機器發送命令
<rcp> 在遠程機器之間復制文件
<mail> 收取郵件
<sendmail> 發送郵件
<mailq> 確認郵件隊列
<ftp> 用ftp傳輸文件
十二. 其他命令
<cal> 顯示日歷
<clear> 清屏
<gcc> 編譯C語言代碼
<as> 匯編
<bc> 計算
<rpm> Redhat的包管理
<dpkg> Debian的包管理
<installpkg> Slackware的包安裝(刪除命令則是removepkg)
<XF86Setup,turboxfg,Xconfigurator> 配置 X 伺服器
<startx> 啟動 X-Window 系統
附:組合命令
重定向,如
$ ls -l /bin > ls-output
$ more ls-output
管道命令,如
$ cat file1 file2 | sort | uniq
經常被用於管道的命令
awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc
很多了
8. 求:linux遠程伺服器與本地終端文件傳輸命令
Linux 文件命令精通指南
作者:Sheryl Calish
為剛接觸 Linux 文件命令的初學者提供的速成教程
雖然 GUI 桌面(如 KDE 和 GNOME)能夠幫助用戶利用 Linux 特性,而無需關於命令行介面的功能知識,但還是經常會需要更多的功能和靈活性。而且,基本熟悉這些命令對於在 shell 腳本中正確地使某些功能自動化仍然是必需的。
這篇文章是關於 Linux 文件命令的一個「速成教程」,它是為那些剛接觸這個操作系統或者只是需要補充這方面知識的用戶提供的。它包含了對一些更有用的命令的一個簡明的概述以及關於它們的最強大的應用的指導。下麵包含的信息 — 結合一些實驗 — 將使您能夠容易地掌握這些基本的命令。(注意:當涉及到一個與 Oracle 集群文件系統 (OCFS) 結合的內核時,這些命令中的某些命令的行為可能會稍微有所不同。在此情況下,Oracle 提供了一個 OCFS 工具集,該工具集可以為文件命令應用提供一個更好的選擇。)
注意,這里包含的所有示例都在 SUSE Linux 8.0 Professional 上進行了測試。雖然沒有理由相信它們在其它的系統上將不能工作,但如果出現問題,您應當查看您的文檔,以了解可能的變化。
背景概念
在深入研究規范之前,讓我們回顧一些基礎知識。
文件和命令
在 Linux/UNIX 操作系統中,所有事物都被當作文件來處理:硬體設備(包括鍵盤和終端)、目錄、命令本身,當然還有文件。這個奇怪的慣例實際上是 Linux/UNIX 的能力和靈活性的基礎。
大多數(幾乎是全部)的命令形式如下:
command [option] [source file(s)] [target file]
獲取幫助
最有用的命令之一是那些提供幫助的命令(特別是對那些學習 Linux 的人而言)。Linux 中的兩個重要的信息來源是聯機參考手冊,或 man 頁面和 whatis 工具。您可以用 whatis 命令來訪問一個不熟悉的命令的 man 頁面。
$ whatis echo
要了解關於這個命令的更多信息,可以使用:
$ man echo
如果您不知道某個特殊任務所需的命令,您可以用 man -k (也稱為 apropos)和一個主題來生成可能的命令。例如:
$ man -k files
一個很有用但常常被忽視的命令可以提供關於使用 man 本身的信息:
$ man man
您可以用 SPACEBAR 來瀏覽任意的 man 頁面;UP ARROW 將向上翻滾文件。.要退出,則輸入 q,!,或 CTRL-Z。
用戶類別
記得那句名言「所有動物一例平等但有些動物比其他動物更加平等」嗎?在 Linux 世界中,根用戶掌管一切。
根用戶可以以另一個用戶名 su (源自 "superuser")登錄。要執行諸如添加一個新用戶、列印機或文件系統之類的任務,必須作為根用戶登錄或者用 su 命令和根用戶密碼切換到超級用戶。系統文件(包括控制初始化過程的系統文件)歸根用戶所有。雖然可能允許普通用戶對它們進行讀操作,但出於系統安全性的原因,編輯的權利將留給根用戶。
BASH shell
雖然提供了其它的 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 * 命令。
重命名文件
賦予一個文件多個名字的兩種流行的方法是利用鏈接和 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 指示文件類型。
查看和查找文件
文件過濾器
用來讀取文件內容和在文件內容上執行操作的命令有時被稱為 ¹&濾器。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 內置的命令集:
$ set -o noclobber
可以在命令和輸出文件之間用 >;! 符號來重載這個特性。要關閉這個特性,用 +o 代替 -o。
重定向在一個命令和文件之間、或文件和文件之間工作。重定向語句的一項必須是一個文件。
管道使用 |符號,並且在命令之間工作。例如,您可以用以下方式將一個命令的輸出直接發送到列印機上:
$ ls -l * | lpr
可以用以下方式快速地找到歷史列表中的一個命令:
$ history | grep cat
更多的濾波器
Grep、fgrep 和 egrep 都顯示匹配一種模式的行。所有這三個命令都在文件中搜索指定的模式,如果您想不起來一個所需文件的名稱,這將非常有用。基本格式是:
grep [options] PATTERN [FILE...]
$ grep -r 'Subject' nsmail
CTRL-Z 將終止上述或其它任何命令。
grep 的最有用的選項可能是 -s。如果您以除根用戶之外的任何身份搜索系統文件,那麼對於每一個您沒有訪問許可權的文件,都將產生錯誤消息。這個命令禁止那些消息。
Fgrep(也以 grep -F 調用)只查找固定的字元串,而不是 grep 接收的正則表達式。而 egrep 接收包含更大范圍的特殊字元(如 「|」,它指示條件 OR 運算符)的模式。
$ egrep 'Subject|mailto' *
查找文件
find 命令的 GNU 版本非常強大、靈活並且比 UNIX 系統上存在的經典版本更具包容性。它對於涉及到目錄結構的任務非常有用,包括在文件上查找和執行命令。find 命令的基本格式是:
$ find startdirectory options matchcriteria [actionoptions]
如果您知道文件的名稱、或者甚至名稱的一部分,但不知道它所處的目錄,您可以這么做:
$ find .-name 'test*'
./test
./jdevhome/mywork/EmpWS/EmpBC4J/test
與經典的 UNIX 系統不同,在 Linux 中不需要在末尾添加 -print 操作,因為如果沒有指定其它的操作選項,就將假定執行這個操作。在目錄起始位置上的一個點 ( . ) 將使 find 在您的工作目錄中開始搜索。兩個點, ..,在父目錄中開始搜索。您可以在任意目錄下開始搜索。
注意,您可以使用通配符作為搜索准則的一部分(只要用單引號將整個項目括起來)。
$ find .-name 'test*' -print
./test.out
./test2.out
顯示擁有 .out 擴展名的一系列文件:
$ find /home -name '*.out'
不過記住,除非您是作為超級用戶運行這個命令,否則您將可能得到許多的 "ermission denied" 錯誤消息。
最強大的搜索工具之一是和 grep 一起使用的 -exec 操作:
$ find .-name '*.html' -exec grep 'mailto:[email protected]' {} \;
.,查找一個 html 文件,*.html,並在當前文件上執行 (-exec) grep 命令,{}。當使用 -exec 操作時,需要一個分號 ;,這是用來在使用 find 命令時執行其它一些操作。需要反斜線 \ 和引號來確保這些項目通過 BASH,以使它們由命令而不是 shell 來進行解釋。