歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux命令大全----常用文件操作命令

Linux命令大全----常用文件操作命令

日期:2017/3/1 12:23:15   编辑:關於Linux

林炳文Evankaka原創作品。轉載請注明出處http://blog.csdn.net/evankaka

摘要:本文主要講了Linux命令大全----常用文件操作命令,並附有實例

ls

這個命令是經常用到的,用來顯示當前目錄下有哪些文件 ,ls最常用的參數有三個: -a -l -F。
ls -a
說明:Linux上的文件以“.”開頭的文件被系統視為隱藏文件,僅用ls命令是看不到他們的,而用ls -a除了顯示 一般文件名外,連隱藏文件也會顯示出來。

\ls -l(這個參數是字母L的小寫,不是數字1)
說明:這個命令可以使用長格式顯示文件內容,如果需要察看更詳細的文件資料,就要用到ls -l這個指令。

\ 第一個欄位,表示文件的屬性。Linux的文件基本上分為三個屬性:可讀(r),可寫(w),可執行(x)。但是這裡有十個格子可以添(具體程序實現時,實際上是十個bit位)。第一個小格是特殊表示格,表示目錄或連結文件等等,d表示目錄,例如drwx------;l表示連結文件,如lrwxrwxrwx;如果是以一橫“-”表示,則表示這是文件。其余剩下的格子就以每3格為一個單位。因為Linux是多用戶多任務系統,所以一個文件可能同時被許多人使用,所以我們一定要設好每個文件的權限,其文件的權限位置排列順序是(以-rwxr-xr-x為例):
  rwx(Owner)r-x(Group)r-x(Other)
  這個例子表示的權限是:使用者自己可讀,可寫,可執行;同一組的用戶可讀,不可寫,可執行;其它用戶可讀,不可寫,可執行。另外,有一些程序屬性的執行部分不是X,而是S,這表示執行這個程序的使用者,臨時可以有和擁有者一樣權力的身份來執行該程序。一般出現在系統管理之類的指令或程序,讓使用者執行時,擁有root身份。
  第二個欄位,表示文件個數。如果是文件的話,那這個數目自然是1了,如果是目錄的話,那它的數目就是該目錄中的文件個數了。
  第三個欄位,表示該文件或目錄的擁有者。若使用者目前處於自己的Home,那這一欄大概都是它的賬號名稱。
  第四個欄位,表示所屬的組(group)。每一個使用者都可以擁有一個以上的組,不過大部分的使用者應該都只屬於一個組,只有當系統管理員希望給予某使用者特殊權限時,才可能會給他另一個組。
  第五欄位,表示文件大小。文件大小用byte來表示,而空目錄一般都是1024byte,你當然可以用其它參數使文件顯示的單位不同,如使用ls –k就是用kb來顯示一個文件的大小單位,不過一般我們還是以byte為主。
  第六個欄位,表示創建日期。以“月,日,時間”的格式表示,如Aug 15 5:46表示8月15日早上5:46分。
  第七個欄位,表示文件名。我們可以用ls –a顯示隱藏的文件名。

ls –F(注意,是大寫的F)
說明:使用這個參數表示在文件的後面多添加表示文件類型的符號,例如*表示可執行,/表示目錄,@表示連結文件,這都是因為使用了-F這個參數。但是現在基本上所有的Linux發行版本的ls都已經內建了-F參數,也就是說,不用輸入這個參數,我們也能看到各種分辨符號。

\當然,以上命令還可以一起用,如下

cd
 Linux cd 命令可以說是Linux中最基本的命令語句,其他的命令語句要進行操作,都是建立在使用 cd 命令上的。切換當前目錄至dirName
cd /

說明:進入系統根目錄,上面命令執行完後拿ls命令看一下,當前目錄已經到系統根目錄了

\
cd .. 或者 cd .. //

說明:進入系統根目錄可以使用“ cd .. ”一直退,就可以到達根目錄

\

cd ../.. //
說明:使用cd 命令實現進入當前目錄的父目錄的父目錄。

\

mkdir、rmdir
  mkdir命令用來建立新的目錄,rmdir用來刪除已建立的目錄

mkdir創建目錄,如果目錄存在會報錯

\rmdir刪除目錄

\

注意,如果linlin內容非空

\

rmdir 命令只能刪除空的文件夾,如果文件夾非空,將不能刪除,它也沒有-f選項,所以你的命令都是錯的。
要刪除非空的文件夾,可以使用rm命令,加rf兩個選項,如:

\

cp

cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或目錄。它可以將單個源文件復制成一個指定文件名的具體的文件或一個已經存在的目錄下。cp命令還支持同時復制多個文件,當一次復制多個文件時,目標文件參數必須是一個已經存在的目錄,否則將出現錯誤。

-a:此參數的效果和同時指定"-dpR"參數相同;
 -d:當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄;
-f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
 -i:覆蓋既有文件之前先詢問用戶;
 -l:對源文件建立硬連接,而非復制文件;
 -p:保留源文件或目錄的屬性; 
-R/r:遞歸處理,將指定目錄下的所有文件與子目錄一並處理;
 -s:對源文件建立符號連接,而非復制文件;
 -u:使用這項參數後只會在源文件的更改時間較目標文件更新時或是名稱相互對應的目標文件並不存在時,才復制文件;
 -S:在備份文件時,用指定的後綴“SUFFIX”代替文件的默認後綴;
 -b:覆蓋已存在的文件目標前將目標文件備份; -v:詳細顯示命令執行的操作

具體用法是:cp –r 源文件(source) 目的文件(target)。 參數r是指連同源文件中的子目錄一同拷貝。

如下,將/home/linlin1下的linlin.c復制到/home/linlin2下

\

如下,將/home/linlin1下的linlin.c復制到/home/linlin2下並改名為hello.c

\

我們在Linux下使用cp命令復制文件時候,有時候會需要覆蓋一些同名文件,覆蓋文件的時候都會有提示:需要不停的按Y來確定執行覆蓋。文件數量不多還好,但是要是幾百個估計按Y都要吐血了,於是折騰來半天總結了一個方法:

cp aaa/* /bbb 復制目錄aaa下所有到/bbb目錄下,這時如果/bbb目錄下有和aaa同名的文件,需要按Y來確認並且會略過aaa目錄下的子目錄。
cp -r aaa/* /bbb 這次依然需要按Y來確認操作,但是沒有忽略子目錄。
cp -r -a aaa/* /bbb 依然需要按Y來確認操作,並且把aaa目錄以及子目錄和文件屬性也傳遞到了/bbb。 
cp -r -a aaa/* /bbb 成功,沒有提示按Y、傳遞了目錄屬性、沒有略過目錄。

把一個文件夾下的內容全部復制到另一個文件夾下

\

rm
  這個命令是用來刪除文件的,和dos下面的rm(刪除一個空目錄)是有區別的,大家千萬要注意。rm命令常用的參數有三個: -i,-r,-f。
  

    -f, --force    忽略不存在的文件,從不給出提示。
    -i, --interactive 進行交互式刪除
    -r, -R, --recursive   指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
    -v, --verbose    詳細顯示進行的步驟
      	--help     顯示此幫助信息並退出
      	--version  輸出版本信息並退出
  rm –r 目錄名:這個操作可以連同這個目錄下面的子目錄都刪除,功能上和rmdir相似。
  rm –f 文件名(目錄名):這個操作可以進行強制刪除。

一般將r和f組合-rf一起使用

如下,交互刪除

\

全部強制刪除

\

mv
  這個命令的功能是移動目錄或文件,引申的功能是給目錄或文件重命名。當使用該命令來移動目錄時,他會連同該目錄下面的子目錄也一同移走。

-b :若需覆蓋文件,則覆蓋前先行備份。 
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,才會更新(update)
-t  : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後。
文件改名

mv 原文件(目錄)名 新的文件(目錄)名。

\

文件 移動

\


du,df
  du命令可以顯示目前的目錄所占的磁盤空間,df命令可以顯示目前磁盤剩余的磁盤空間。如果du命令不加任何參數,那麼返回的是整個磁盤的使用情況,如果後面加了目錄的話,就是這個目錄在磁盤上的使用情況

查看當前目錄以及子目錄的大小:

\

查看整個磁盤大小

\
cat

cat主要有三大功能:
1.一次顯示整個文件。$ cat filename
2.從鍵盤創建一個文件。$ cat > filename
只能創建新文件,不能編輯已有文件.
3.將幾個文件合並為一個文件: $cat file1 file2 > file
參數:

-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting

它的用法如下:

  cat text 顯示text這個文件;

  cat file1 file2 依順序顯示file1,file2的內容;

\  cat file1 file2>file3 把file1,file2的內容結合起來,再“重定向(>)”到file3文件中。
  “〉”是一個非常有趣的符號,是往右重定向的意思,就是把左邊的結果當成是輸入,然後輸入到file3這個文件中。這裡要注意一點是file3是在重定向以前還未存在的文件,如果file3是已經存在的文件,那麼它本身的內容被覆蓋,而變成file1+file2的內容。如果〉左邊沒有文件的名稱,而右邊有文件名,例如:

把 text.c和 text1.c的檔案內容加上行號(空白行不加)之後將內容附加到 text2.c 裡。

\  另外,如果你使用如下的指令:
  cat file1>>file2:這將變成將file1的文件內容“附加”到file2的文件後面,而file2的內容依然存在,這種重定向符〉〉比〉常用,可以多多利用。

\

more,less
  這是兩個顯示一般文本文件的指令。如果一個文本文件太長了超過一個屏幕的畫面,用cat來看實在是不理想,就可以試試more和less兩個指令。More指令可以使超過一頁的文件臨時停留在屏幕,等你按任何的一個鍵以後,才繼續顯示。而less除了有more的功能以外,還可以用方向鍵往上或往下的滾動文件,所以你隨意浏覽,閱讀文章時,less是個非常好的選擇。

more:選項 文件名

+n 從笫n行開始顯示
-n 定義屏幕大小為n行
+/pattern 在每個檔案顯示前搜尋該字串(pattern),然後從該字串前兩行之後開始顯示
-c 從頂部清屏,然後顯示
-d 提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字符
-p 通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似
-s 把連續的多個空行顯示為一行
-u 把文件內容中的下畫線去掉

在每個檔案顯示前搜尋該字串lin,然後從該字串前兩行之後開始顯示

\

less

less 工具也是對文件或其它輸出進行分頁顯示的工具,應該說是linux正統查看文件內容的工具,功能極其強大。less 的用法比起 more 更加的有彈性。在 more 的時候,我們並沒有辦法向前面翻, 只能往後面看,但若使用了 less 時,就可以使用 [pageup] [pagedown] 等按鍵的功能來往前往後翻看文件,更容易用來查看一個文件的內容!除此之外,在 less 裡頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜。

less 選項 文件名

選項

-b <緩沖區大小> 設置緩沖區的大小
-e  當文件顯示結束後,自動離開
-f  強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件
-g  只標志最後搜索的關鍵詞
-i  忽略搜索時的大小寫
-m  顯示類似more命令的百分比
-N  顯示每行的行號
-o <文件名> 將less 輸出的內容在指定文件中保存起來
-Q  不使用警告音
-s  顯示連續空行為一行
-S  行過長時間將超出部分捨棄
-x <數字> 將“tab”鍵顯示為規定的數字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重復前一個搜索(與 / 或 ? 有關)
N:反向重復前一個搜索(與 / 或 ? 有關)
b  向後翻一頁
d  向後翻半頁
h  顯示幫助界面
Q  退出less 命令
u  向前滾動半頁
y  向前滾動一行
空格鍵 滾動一行
回車鍵 滾動一頁
[pagedown]: 向下翻動一頁
[pageup]:   向上翻動一頁

\

退出按Q

向下搜索含lin的字符串

\

在Linux系統中有三種命令可以用來查閱全部的文件,分別是cat、more和less命令。它們查閱文件的使用方法也比較簡單都是 命令 文件名 ,但是三者又有著區別。
1.cat命令可以一次顯示整個文件,如果文件比較大,使用不是很方便;
2.more命令可以讓屏幕在顯示滿一屏幕時暫停,此時可按空格健繼續顯示下一個畫面,或按Q鍵停止顯示。
3.less命令也可以分頁顯示文件,和more命令的區別就在於它支持上下鍵卷動屏幕,當結束浏覽時,只要在less命令的提示符“: ”下按Q鍵即可。
另外,多數情況下more和less命令會配合管道符來分頁輸出需要在屏幕上顯示的內容。

tail

也是用於用於查看文件內容

tail語法格式:
tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
或者
tail [ -r ] [ -n Number ] [ File ]
使用說明:
tail 命令從指定點開始將 File 參數指定的文件寫到標准輸出。如果沒有指定文件,則會使用標准輸入。 Number 變量指定將多少單元寫入標准輸出。 Number 變量的值可以是正的或負的整數。如果值的前面有 +(加號),從文件開頭指定的單元數開始將文件寫到標准輸出。如果值的前面有 -(減號),則從文件末尾指定的單元數開始將文件寫到標准輸出。如果值前面沒有 +(加號)或 -(減號),那麼從文件末尾指定的單元號開始讀取文件。
主要參數:
-b Number 從 Number 變量表示的 512 字節塊位置開始讀取指定文件。
-c Number 從 Number 變量表示的字節位置開始讀取指定文件。
-f 如果輸入文件是常規文件或如果 File 參數指定 FIFO(先進先出),那麼 tail 命令不會在復制了輸入文件的最後的指定單元後終止,而是繼續從輸入文件讀取和復制額外的單元(當這些單元可用時)。如果沒有指定 File 參數,並且標准輸入是管道,則會忽略 -f 標志。tail -f 命令可用於監視另一個進程正在寫入的文件的增長。
-k Number 從 Number 變量表示的1KB 塊位置開始讀取指定文件。
-m Number 從 Number 變量表示的多字節字符位置開始讀取指定文件。使用該標志提供在單字節和雙字節字符代碼集環境中的一致結果。
-n Number 從首行或末行位置來讀取指定文件,位置由 Number 變量的符號(+ 或 - 或無)表示,並通過行號 Number 進行位移。
-r 從文件末尾以逆序方式顯示輸出。-r 標志的缺省值是以逆序方式顯示整個文件。

如果文件大於 20,480 字節,那麼-r標志只顯示最後的 20,480 字節。 -r 標志只有 與 -n 標志一起時才有效。否則,就會將其忽略。

tail -f 命令可用於監視另一個進程正在寫入的文件的增長。 特別是在看日志時非常有用,你實時更新了日志,它就實時顯示出來

\

pwd
  pwd [--help][--version]
  說明:執行pwd指令可立刻得知您目前所在的工作目錄的絕對路徑名稱。

\clear
  這個命令是用來清除屏幕的,它不需要任何參數

grep
  用於查找文件中符合字符串的哪行。
  參數說明:

    -a :將 binary 文件以 text 文件的方式搜尋數據
  -c :計算找到 '搜尋字符串' 的次數
  -i :忽略大小寫的不同,所以大小寫視為相同
  -n :順便輸出行號
  -v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行! 
如。顯示包含st的行,及其行號

\將沒有出現st的給顯示出來

\

根據文件內容遞歸查找目錄

# grep ‘energywise’ *           #在當前目錄搜索帶'energywise'行的文件
# grep -r ‘energywise’ *        #在當前目錄及其子目錄下搜索'energywise'行的文件
# grep -l -r ‘energywise’ *     #在當前目錄及其子目錄下搜索'energywise'行的文件,但是不顯示匹配的行,只顯示匹配的文件

如下

\

grep功能是很強大的,這裡只簡單說明了一下,有興趣的同學自己下來研究下吧!

find

  $ find  -name "*.txt" -print 用於查找所有的‘ *.txt’文件在當前目錄及子目錄中
  $ find  -name "[A-Z]*" -print 用於當前目錄及子目錄中查找文件名以一個大寫字母開頭的文件
  $ find /etc -name "host*" -print 在/etc目錄中查找文件名以host開頭的文件
  $find  -name "[a-z][a-z][0--9][0--9].txt" -print 在當前目錄查找文件名以兩個小寫字母開頭,跟著是兩個數字,最後是.txt的文件
  如,當前目錄中查找以.c結尾的文件

\

1.在某目錄下查找名為“elm.cc”的文件
find /home/lijiajia/ -name elm.cc
 
2.查找文件名中包含某字符(如"elm")的文件
find /home/lijiajia/ -name '*elm*'
find /home/lijiajia/ -name 'elm*'
find /home/lijiajia/ -name '*elm'
 
3.根據文件的特征進行查詢
find /home/lijiajia/ -amin -10        #查找在系統中最後10分鐘訪問的文件
find /home/lijiajia/ -atime -2        #查找在系統中最後48小時訪問的文件
find /home/lijiajia/ -empty           #查找在系統中為空的文件或者文件夾
find /home/lijiajia/ -group cat       # 查找在系統中屬於groupcat 的文件(試了,命令不對。)
find /home/lijiajia/ -mmin -5         # 查找在系統中最後5 分鐘裡修改過的文件
find /home/lijiajia/ -mtime -1        #查找在系統中最後24 小時裡修改過的文件
find /home/lijiajia/ -nouser          #查找在系統中屬於作廢用戶的文件(不明白是什麼意思)
find /home/lijiajia/ -amin 10         #查找在系統中最後10分鐘訪問的文件
find /home/ftp/pub -user lijiajia     #查找在系統中屬於lijiajia這個用戶的文件
(PS:以上都是在 /home/lijiajia/文件夾下進行的操作)
 
4.使用混合查找方式查找文件
find /tmp -size +10000000c -and -mtime +2      #查找/tmp目錄中大於10000000字節並且在48小時內修改的某個文件
find /tmp -user tom -or -user george           #查找/tmp目錄中屬於tom或者george這兩個用戶的文件
find /tmp ! -usr fred                          #查找/tmp目錄中不屬於fred的文件
 
5.查找並顯示文件
find /home/lijiajia/ -name 'elm.cc' -ls        #在目錄下查找名為“elm.cc”的文件,並顯示這些文件的信息
Copyright © Linux教程網 All Rights Reserved