亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Linux:文件命令精通指南

 更新時間:2006年10月24日 00:00:00   作者:  

  雖然 GUI 桌面(如 KDE 和 GNOME)能夠幫助用戶利用 Linux 特性,而無需關(guān)于命令行接口的功能知識,但還是經(jīng)常會需要更多的功能和靈活性。而且,基本熟悉這些命令對于在 shell 腳本中正確地使某些功能自動化仍然是必需的。

  這篇文章是關(guān)于 Linux 文件命令的一個“速成教程”,它是為那些剛接觸這個操作系統(tǒng)或者只是需要補(bǔ)充這方面知識的用戶提供的。它包含了對一些更有用的命令的一個簡明的概述以及關(guān)于它們的最強(qiáng)大的應(yīng)用的指導(dǎo)。下面包含的信息 — 結(jié)合一些實驗 — 將使您能夠容易地掌握這些基本的命令。(注意:當(dāng)涉及到一個與 Oracle 集群文件系統(tǒng) (OCFS) 結(jié)合的內(nèi)核時,這些命令中的某些命令的行為可能會稍微有所不同。在此情況下,Oracle 提供了一個 OCFS 工具集,該工具集可以為文件命令應(yīng)用提供一個更好的選擇。)

  注意,這里包含的所有示例都在 SUSE Linux 8.0 Professional 上進(jìn)行了測試。雖然沒有理由相信它們在其它的系統(tǒng)上將不能工作,但如果出現(xiàn)問題,您應(yīng)當(dāng)查看您的文檔,以了解可能的變化。

  背景概念

  在深入研究規(guī)范之前,讓我們回顧一些基礎(chǔ)知識。

  文件和命令

  在 Linux/UNIX 操作系統(tǒng)中,所有事物都被當(dāng)作文件來處理:硬件設(shè)備(包括鍵盤和終端)、目錄、命令本身,當(dāng)然還有文件。這個奇怪的慣例實際上是 Linux/UNIX 的能力和靈活性的基礎(chǔ)。

  大多數(shù)(幾乎是全部)的命令形式如下:

  command [option] [source file(s)] [target file]

  獲取幫助

  最有用的命令之一是那些提供幫助的命令(特別是對那些學(xué)習(xí) Linux 的人而言)。Linux 中的兩個重要的信息來源是聯(lián)機(jī)參考手冊,或 man 頁面和 whatis 工具。您可以用 whatis 命令來訪問一個不熟悉的命令的 man 頁面。

  $ whatis echo

  要了解關(guān)于這個命令的更多信息,可以使用:

  $ man echo

  如果您不知道某個特殊任務(wù)所需的命令,您可以用 man -k (也稱為 apropos)和一個主題來生成可能的命令。例如:

  $ man -k files

  一個很有用但常常被忽視的命令可以提供關(guān)于使用 man 本身的信息:

  $ man man

  您可以用 SPACEBAR 來瀏覽任意的 man 頁面;UP ARROW 將向上翻滾文件。.要退出,則輸入 q,!,或 CTRL-Z。

  用戶類別

  記得那句名言“所有動物一例平等但有些動物比其他動物更加平等”嗎?在 Linux 世界中,根用戶掌管一切。

  根用戶可以以另一個用戶名 su (源自 'superuser')登錄。要執(zhí)行諸如添加一個新用戶、打印機(jī)或文件系統(tǒng)之類的任務(wù),必須作為根用戶登錄或者用 su 命令和根用戶密碼切換到超級用戶。系統(tǒng)文件(包括控制初始化過程的系統(tǒng)文件)歸根用戶所有。雖然可能允許普通用戶對它們進(jìn)行讀操作,但出于系統(tǒng)安全性的原因,編輯的權(quán)利將留給根用戶。

  BASH shell

  雖然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默認(rèn) shell。它結(jié)合了與它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。

  BASH 內(nèi)置的命令 history 默認(rèn)記錄最后輸入的 500 條命令。可以通過在命令提示符下輸入 history 來查看它們。要檢索某個特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在歷史列表中輸入它的編號,并在編號前面加上 '!',例如:

  $ !49

  您還可以通過一條命令在歷史列表中離位置最靠前的項目的距離來執(zhí)行該命令:如果在歷史列表中有 53 個事件,$ !-3 將執(zhí)行事件號 51。

  像 UNIX/Linux 世界的其它 shell 一樣,BASH 使用了特殊的環(huán)境變量來方便系統(tǒng)管理。例如:


  HOME,用戶主目錄

  PATH,Linux 用來搜索您輸入的命令的可執(zhí)行鏡像的搜索路徑

  HISTSIZE,系統(tǒng)保存的歷史事件的數(shù)量

  除了這些保留的關(guān)鍵字之外,您還可以定義您自己的環(huán)境變量。例如,Oracle 使用 ORACLE_HOME (還有其它一些變量),要使 Oracle 安裝成功完成,必須在您的環(huán)境中設(shè)置這些變量。

  可以在提示符下臨時設(shè)置變量:

  $HISTSIZE=100

  或者,在 /etc/profile (需要根用戶權(quán)限)中進(jìn)行系統(tǒng)范圍的永久設(shè)置,或在 .profile 中進(jìn)行局部永久設(shè)置。

  可以通過 echo 命令,并用一個 $ 符號來訪問一個環(huán)境變量的值,進(jìn)而查看該值。

  $ echo $HOME
  /home/bluher

  可以用 env 命令來查看當(dāng)前所有的環(huán)境變量。

  正則表達(dá)式和通配符

  許多 Linux 命令使用通配符 * 和 ? 來匹配任意數(shù)量的字符或分別匹配任意的單個字符;正則模式匹配表達(dá)式利用一個句點 (.) 來匹配除“換行符”之外的任意單個字符。這兩種情況下都使用方括號 ([ ]) 來匹配除“*”號之外的字符組。不過,* 號在各種情況下有類似但不同的意義:雖然它在 shell 中將匹配一個或更多的字符,但在正則表達(dá)式中,它匹配上述字符的零個或更多的實例。一些命令(如 egrep 和 awk)使用了一組更廣泛的特殊字符來進(jìn)行模式匹配。



  文件處理命令

  剖析一個文件列表

  ls 命令用來查看用戶有執(zhí)行權(quán)限的任意目錄中的文件列表,該命令有許多有趣的選項。例如:

  $ 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 選項來進(jìn)行正常顯示。

  第 2 列顯示文件類型和文件訪問權(quán)限。

  第3 列顯示鏈接數(shù),包括目錄。

  第 4 和第 5 列顯示文件的所有者和組所有者。這里,所有者 'bluher' 屬于組 'users'。

  第 6 列顯示文件大小(單位為所顯示的單位,而不是默認(rèn)的字節(jié)數(shù),因為我們使用了 -h 選項。

  第 7 列顯示日期(它看起來像是三列),包括月、日和年,以及當(dāng)天的時間。

  第 8 列顯示文件名。在選項列表中使用 -a 將使列表中包含隱藏文件(如 .profile)的列表。

  處理文件

  可以移動 (mv)、復(fù)制 (cp) 或刪除 (rm) 文件和目錄。明智地使用 -i 選項,以獲得確認(rèn)通常是個不錯的主意。

  $ cp -i ls.out ls2.out

  cp:overwrite `ls2.out'?

  mv 命令允許使用 -b 選項,這將在移動文件之前作一個備份拷貝。rm 和 cp 接受功能強(qiáng)大但卻危險的 -r 選項,它將在一個目錄和它的文件上遞歸執(zhí)行。

  $ rm -ir Test

  rm:descend into directory `Test'? y

  可以用 mkdir 來創(chuàng)建目錄,用 rmdir 來刪除目錄。不過,因為不能用 rmdir 來刪除包含文件的目錄,所以使用 rm 加 -r 選項通常要更方便些。

  出于安全的原因,所有的文件都有所有權(quán)和保護(hù)。文件訪問權(quán)限(或文件模式)包含之前提到的相同的 10 個字符:


  第一個字符指示文件類型。最常見的是 - 代表文件,d 代表目錄,而 l 代表鏈接。

  接下來的 9 個字符是三種用戶類別的訪問權(quán)限:文件所有者(字符 2-4),用戶組 (5-7) 和其它 (8-10),其中 r 表示讀權(quán)限,w 表示寫權(quán)限,x 指示一個文件上的執(zhí)行權(quán)限。破折號 - 如果出現(xiàn)在這九個位置的任意一個,則指示這個操作對該類別的用戶禁止。

  可以使用 chmod 命令通過字符符號或二進(jìn)制掩碼來設(shè)置訪問權(quán)限。要使用二進(jìn)制掩碼,必須將三個權(quán)限組的字符表示轉(zhuǎn)換成二進(jìn)制格式,然后轉(zhuǎn)換成八進(jìn)制格式:

  用戶類別: 所有者 用戶組 其它

  字符表示: rwx r-x r--

  二進(jìn)制表示: 111 101 100

  八進(jìn)制表示: 7 5 4

  將寫權(quán)限賦予用戶組,您可以使用:

  chmod g+w test.sh or chmod 774 test.sh

  用 umask 命令,在 /etc/init.dev 文件中進(jìn)行系統(tǒng)范圍內(nèi)的、或在 .profile 文件中進(jìn)行的本地的文件權(quán)限默認(rèn)設(shè)置。這個命令指示用 777 減去這個數(shù)字來獲取默認(rèn)的權(quán)限:

  $ umask 022

  這將為用戶創(chuàng)建的所有新文件生成一個默認(rèn)的文件權(quán)限 755。

  可以用 chown 來修改文件的所有權(quán):

  $ chown bluher ls.out

  這里,bluher 是新的文件所有者。類似地,組成員資格將按以下方式修改:

  $ chgrp devgrp ls.out

  這里,devgrp 是新的用戶組。

  ls 不提供哪些文件是文本的,哪些文件是二進(jìn)制的的信息。要了解這個信息,您可以使用 file * 命令。

  重命名文件

  賦予一個文件多個名字的兩種流行的方法是利用鏈接和 alias 命令。Alias 可以用來為一個更長的命令重新起一個更方便的名字:

  $ alias ll='ls -l'
  $ ll

  注意單引號的使用,這使得 BASH 將該項目傳遞給別名,而不是自己估計它。別名還可用作較長的路徑名的縮寫:

  $ alias jdev9i=/jdev9i/jdev/bin/jdev

  關(guān)于 alias 和它的反命令 unalias 的更多信息,請查看 BASH 的 man 頁面的 'SHELL BUILTIN COMMANDS' 子部分。在最后一個例子中,定義了一個環(huán)境變量來實現(xiàn)相同的結(jié)果。

  $ export JDEV_HOME=/jdev9i/jdev/bin/jdev
  $ echo $JDEV_HOME
  /jdev9i/jdev/bin/jdev
  $ $JDEV_HOME

  鏈接允許幾個文件名引用單個源文件,格式如下:

  ln [-s] fileyouwanttolinkto newname

  單獨的 ln 命令創(chuàng)建到文件的一個硬鏈接,而使用 -s 選項來創(chuàng)建一個符號鏈接。簡而言之,一個硬鏈接幾乎不能和原始的文件區(qū)分開(除了這兩個文件的 inode 將相同之外)。符號鏈接較容易區(qū)分,因為它們出現(xiàn)在一個長的文件列表中,并用 -〉 來指示源文件,l 指示文件類型。



  查看和查找文件

  文件過濾器

  用來讀取文件內(nèi)容和在文件內(nèi)容上執(zhí)行操作的命令有時被稱為 1y濾器。sed 和 awk 命令是兩個濾波器的例子,因為在以前的 OTN 文章中有它們詳細(xì)的討論,在這里將略過。

  諸如 cat、 more 和 less 之類的命令讓您能夠從命令行查看一個文本文件的內(nèi)容,而無需調(diào)用編輯器。Cat 是 'concatenate' 的縮寫,它將默認(rèn)地在標(biāo)準(zhǔn)輸出(顯示屏)上顯示文件內(nèi)容。和 cat 一起提供的最有趣的選項之一是 -n 選項,它用編號的輸出行來顯示文件內(nèi)容。

  $ cat -n test.out
  1 This is a test.

  因為 cat 一次性輸出文件中的所有行,所以您可能更喜歡用 more 和 less,因為它們都一次輸出一屏的文件內(nèi)容。Less 是 more 的一個增強(qiáng)的版本,它允許用來自 vi 文本編輯器的關(guān)鍵命令來增強(qiáng)文件查看。例如,d 向前翻滾、b 向后翻滾 N 行(如果 N 是在 d 或 b 之前指定的)。為 N 輸入的值成為隨后的 d 命令的默認(rèn)值。man 頁面實用工具使用 less 來顯示使用說明的內(nèi)容。

  重定向和管道

  重定向允許將命令輸出重定向到文件中,而不是標(biāo)準(zhǔn)輸出,或者類似地,也可重定向輸入。重定向的標(biāo)準(zhǔn)符號 〉 創(chuàng)建一個新的文件?!怠?符號將輸出添加到一個現(xiàn)有的文件中:

  $ more test2.out
  Another test.
  $ cat test.out 〉〉 test2.out
  $ cat test2.out

  Another test.
  This is a test.

  到文件的標(biāo)準(zhǔn)輸入可以用 〈 符號來重定向:

  $ cat 〈 test2.out

  錯誤消息用 2〉 和 2〉〉 來重定向和添加,格式如下:

  $ command 2〉 name_of_error_file

  要避免無意地覆蓋一個現(xiàn)有的文件,使用 BASH 內(nèi)置的命令集:

  $ set -o noclobber

  可以在命令和輸出文件之間用 〉! 符號來重載這個特性。要關(guān)閉這個特性,用 +o 代替 -o。

  重定向在一個命令和文件之間、或文件和文件之間工作。重定向語句的一項必須是一個文件。

  管道使用 |符號,并且在命令之間工作。例如,您可以用以下方式將一個命令的輸出直接發(fā)送到打印機(jī)上:

  $ ls -l * | lpr

  可以用以下方式快速地找到歷史列表中的一個命令:

  $ history | grep cat

  更多的濾波器

  Grep、fgrep 和 egrep 都顯示匹配一種模式的行。所有這三個命令都在文件中搜索指定的模式,如果您想不起來一個所需文件的名稱,這將非常有用?;靖袷绞牵?

  grep [options] PATTERN [FILE...]

  $ grep -r 'Subject' nsmail

  CTRL-Z 將終止上述或其它任何命令。

  grep 的最有用的選項可能是 -s。如果您以除根用戶之外的任何身份搜索系統(tǒng)文件,那么對于每一個您沒有訪問權(quán)限的文件,都將產(chǎn)生錯誤消息。這個命令禁止那些消息。

  Fgrep(也以 grep -F 調(diào)用)只查找固定的字符串,而不是 grep 接收的正則表達(dá)式。而 egrep 接收包含更大范圍的特殊字符(如 “|”,它指示條件 OR 運算符)的模式。

  $ egrep 'Subject|mailto' *

  查找文件

  find 命令的 GNU 版本非常強(qiáng)大、靈活并且比 UNIX 系統(tǒng)上存在的經(jīng)典版本更具包容性。它對于涉及到目錄結(jié)構(gòu)的任務(wù)非常有用,包括在文件上查找和執(zhí)行命令。find 命令的基本格式是:

  $ find startdirectory options matchcriteria [actionoptions]

  如果您知道文件的名稱、或者甚至名稱的一部分,但不知道它所處的目錄,您可以這么做:

  $ find .-name 'test*'
  ./test
  ./jdevhome/mywork/EmpWS/EmpBC4J/test

  與經(jīng)典的 UNIX 系統(tǒng)不同,在 Linux 中不需要在末尾添加 -print 操作,因為如果沒有指定其它的操作選項,就將假定執(zhí)行這個操作。在目錄起始位置上的一個點 ( . ) 將使 find 在您的工作目錄中開始搜索。兩個點, ..,在父目錄中開始搜索。您可以在任意目錄下開始搜索。

  注意,您可以使用通配符作為搜索準(zhǔn)則的一部分(只要用單引號將整個項目括起來)。

  $ find .-name 'test*' -print
  ./test.out
  ./test2.out

  顯示擁有 .out 擴(kuò)展名的一系列文件:

  $ find /home -name '*.out'

  不過記住,除非您是作為超級用戶運行這個命令,否則您將可能得到許多的 'Permission denied' 錯誤消息。

  最強(qiáng)大的搜索工具之一是和 grep 一起使用的 -exec 操作:

  $ find .-name '*.html' -exec grep 'mailto:foo@yahoo.com' {} ;

  這里,我們讓 find 命令在當(dāng)前目錄中開始執(zhí)行, .,查找一個 html 文件,*.html,并在當(dāng)前文件上執(zhí)行 (-exec) grep 命令,{}。當(dāng)使用 -exec 操作時,需要一個分號 ;,這是用來在使用 find 命令時執(zhí)行其它一些操作。需要反斜線 和引號來確保這些項目通過 BASH,以使它們由命令而不是 shell 來進(jìn)行解釋。

  立即掌握 Linux 文件命令

  在 Linux 中提供了許多有用的命令和利用它們的強(qiáng)大的方法,在此無法一一說明。此外,完成許多任務(wù)通常都存在多種方法。

  我們已經(jīng)看到了一些最常用和最有啟發(fā)意義的 Linux 文件命令。掌握這些基礎(chǔ)但卻關(guān)鍵的工具將使您的 Linux 學(xué)習(xí)走上快車道。利用您手頭上的 man 頁面,和試驗的積極性,您現(xiàn)在擁有了足夠的信息來開始探索 Linux 文件操作的力量。

  在我的下一篇文章中,我將提供 Linux 系統(tǒng)命令的一個類似的說明。

  關(guān)于作者:

  Sheryl Calish [scalish@earthlink.net] 是 Blue Heron Consulting 的一位專門研究 Linux 的 Oracle 開發(fā)人員。她還是 Central Florida Oracle Users Group 的基金主席和 IOUG Linux SIG 的銷售主席。

相關(guān)文章

  • linux在終端輸入密碼時顯示星號的實現(xiàn)方法

    linux在終端輸入密碼時顯示星號的實現(xiàn)方法

    這篇文章主要介紹了如何在終端輸入密碼時顯示星號的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • RedHat linux 8.0下內(nèi)核編譯步驟和說明

    RedHat linux 8.0下內(nèi)核編譯步驟和說明

    RedHat linux 8.0下內(nèi)核編譯步驟和說明...
    2006-10-10
  • 用LKM更改linux缺省安全等級

    用LKM更改linux缺省安全等級

    用LKM更改linux缺省安全等級...
    2006-10-10
  • Linux 環(huán)境下編譯安裝MySQL5.6的筆記記錄

    Linux 環(huán)境下編譯安裝MySQL5.6的筆記記錄

    這篇文章主要介紹了Linux 環(huán)境下編譯安裝MySQL5.6的筆記記錄,需要的朋友可以參考下
    2017-07-07
  • Ubuntu下如何更改root密碼

    Ubuntu下如何更改root密碼

    安裝Ubuntu系統(tǒng)時,只提示了設(shè)定用戶密碼,該密碼可用于普通用戶暫時獲取root的權(quán)限,執(zhí)行一些需要root權(quán)限的操作,而沒有要求我們設(shè)置root密碼,在需要用到root密碼時,卻想不起來,非常尷尬,下面小編給大家分享ubuntu下如何更改root密碼,一起看看吧
    2017-04-04
  • 詳細(xì)介紹Linux的定時任務(wù)crontab

    詳細(xì)介紹Linux的定時任務(wù)crontab

    在linux系統(tǒng)中,有些工作需要周而復(fù)始的工作,有些任務(wù)需要在某個特定的時間啟動工作,這就可以通過crontab這個命令來進(jìn)行設(shè)置,下面我們就來好好介紹這個crontab,有需要的可以參考借鑒。
    2016-08-08
  • CentOS 7 安裝并配置 MySQL 5.6的步驟詳解

    CentOS 7 安裝并配置 MySQL 5.6的步驟詳解

    這篇文章主要介紹了CentOS 7 安裝并配置 MySQL 5.6的步驟,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-11-11
  • Linux環(huán)境下使用GFS文件系統(tǒng)

    Linux環(huán)境下使用GFS文件系統(tǒng)

    Linux環(huán)境下使用GFS文件系統(tǒng)...
    2006-10-10
  • Linux 下rename 命令的用法

    Linux 下rename 命令的用法

    剛學(xué)習(xí)linux的時候,對文件重命名首先想到的就是rename命令,但是按照在windows下對文件重命名的方式試了N多次都沒有反應(yīng),在網(wǎng)上一搜索,發(fā)現(xiàn)很多人都對rename命令知之甚少,甚至有一部分人說linux下沒有rename命令,建議大家用mv命令。鑒于此,于是man rename一下,好好的研究了一下它的用法 ,在此對rename命令和mv命令在重命名文件方面做一個比較,有不足之處,希望各位博友指正!
    2008-04-04
  • linux學(xué)習(xí)筆記 linux目錄架構(gòu)

    linux學(xué)習(xí)筆記 linux目錄架構(gòu)

    linux學(xué)習(xí)筆記 linux目錄架構(gòu)...
    2007-11-11

最新評論