天天看點

linux 檔案管理指令

  1. cp   (copy)

格式:

    cp SRC   DEST

    cp指令隻能把一個檔案複制成另外一個檔案,或者把多個檔案複制到一個目錄下。

    是以當我們使用指令  cp  file1  file2 file3 時,linux會先判斷file3是一個目錄還是文檔,

如果是目錄,則把file1、file2拷貝到file3目錄中,如果是文檔則會報錯提示:cp: target `file3' is not a directory(檔案不存在也會報這個錯)。

    當我們cp file1  file2  的時候,如果檔案不存在,則會拷貝file1這個檔案,并改名為file2,如果檔案存在且為文檔,則會提示‘是否覆寫這個檔案’。如果文檔存在且為目錄,則會拷貝這個檔案到這個目錄下。

    特殊情況:如果file1是軟連接配接的話,那麼cp file1 file2 會把file1所指向的檔案拷貝到file2(同樣地,要判斷下file2是否為目錄,規則同上)。如果我們想拷貝file1這個軟連接配接的話,可以在cp前面加上-P參數。

    注意:當我們cp file1 file2 的時候,file2的時間戳屬性會跟目前系統時間一樣,如果我們不想修改原來檔案的時間戳,那麼可以在前面加上-p參數。當我們想拷貝一個目錄到另一個目錄的時候可以用-r或者-R參數,當我們拷貝一個目錄到另一個目錄且不想修改檔案的屬性和軟連接配接時可以使用-ap參數..以此類推。

舉例:  

[root@logstach ~]# cp  /etc/passwd   /tmp/123

[root@logstach ~]# cat  /tmp/123 

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@logstach ~]# cp  /etc/{passwd,shadow}  /tmp/123

cp: target `/tmp/123' is not a directory

[root@logstach ~]# cp  /etc/{passwd,shadow}  /tmp/

[root@logstach ~]# ls  /tmp/

123    shadow    passwd

2.mv   (move)

      mv SRC    DEST

   或 mv  -t DEST    SRC (DEST必須為目錄)

    mv指令的使用方法與cp差不多,也是一對一,或者多對一的關系(必須為目錄)。不同的是,當我們使用mv  file1  file2 的時候,如果檔案不存在則會把file1改名為file2.

    如果我們想把目的檔案放前面,源檔案放後面,那麼可以使用-t參數指定檔案的目的。但是這個檔案必須為目錄。

install 

       install [OPTION]... [-T] SOURCE DEST

       install [OPTION]... SOURCE... DIRECTORY

       install [OPTION]... -t DIRECTORY SOURCE...

       install [OPTION]... -d DIRECTORY...

    這個指令的作用是複制檔案并修改屬性,用得比較少。

linux發行版三大派系:

    Redhat:紅帽裡面又有fedora(偏向桌面)和Centos(偏向伺服器)

    SUSE:商用版SUSE和開源openSUSE

    debian:炫酷的桌面(Ubuntu和Mint)

    這三個派系中的版本都有各自的特點,比如redhat加入了很多自己的東西(軟體程式什麼的),是以操作起來更簡單而且更容易上手,而debian則相對輕量,是以性能更好,但是也更不易上手。

發行版的linux為了可以向下相容(比如說酷睿cpu上可以跑的linux到奔騰系列也能跑),是以都是用通用格式編譯的,是以發行版并不能完全發揮硬體特性,不過沒有關系,我們還有另外兩個更自由的linux版本,可以根據自己的需求進行編譯,用以發揮硬體的最大性能。這兩個就是 Gentoo和LFS(linux from scartch)

檢視文本指令:

 cat     

    這個指令的定義是連接配接檔案并列印在标準螢幕上。

示例:

    同時顯示2個檔案

[root@logstach ~]# cat  /etc/issue  /etc/redhat-release 

CentOS release 6.7 (Final)

Kernel \r on an \m

    -n參數可以顯示行号

[root@logstach ~]# cat  -n /etc/issue

     1CentOS release 6.7 (Final)

     2Kernel \r on an \m

     3

    -E參數可以顯示每行的行結束符$

[root@logstach ~]# cat  -E  /etc/issue

CentOS release 6.7 (Final)$

Kernel \r on an \m$

$          

關于行結束符的來曆和不同作業系統的差別可以參照此文: http://www.tuicool.com/articles/QbuEbe2

    有時候我們想讓檔案逆序輸出,這個時候可以使用cat的相反指令tac

[root@logstach ~]# tac  /etc/issue

    當cat後面不接任何參數的時候,它會從标準輸入中讀取資訊并輸出到标準輸出,如果想退出的話可以摁ctrl+c鍵。

[root@logstach ~]# cat

456486

ssd

^C

[root@logstach ~]# 

     cat的缺陷: 當一個檔案裡面的内容很多時,cat顯示的話隻能顯示最後幾屏的内容(這是因為我們要顯示的内容都在記憶體的緩存中,而緩存的空間總是有限的。這個時候我們就需要用到其他指令:more和less

more:

    more指令的作用是把一個檔案過濾并分屏顯示

    more  files

    空格:向下翻屏

    b鍵:向上翻屏

    enter:向下翻一行

    不支援向上翻一行

    到最底部直接退出,中途退出可以使用q鍵

less:

    less的作用和more差不多

    差別在于less可以用 ↑和k鍵向上翻一行,并且到底部不會退出

head:

    顯示檔案前面部分

    -n參數:可以選擇顯示前幾行

tail:

    與head相對應顯示檔案的後面部分

    -n參數:可以顯示後幾行

    -f參數:一個比較有用的參數,不加數字預設顯示後十行,但是顯示完并沒有直接結束程序,而是類似于一種“等待”,當有新的資料寫入到目前顯示的檔案的時候,-f參數會使資訊實時顯示在螢幕上,這是個對我們linux排錯特别有用的功能

cut:

    把檔案進行分割顯示

    -d:指定字段分隔符,預設是空格

    -f:指定要顯示的字段

        -f 1,3  (顯示第1和第3行)

        -f 1-3  (顯示第1到第3行)

sort

    -n:數值排序

    -r:降序

    -t:字元分隔符

    -k:以哪個字段為關鍵字進行排序

    -u:排序後隻顯示一次

    -f:排序時忽略字元大小寫

    sort 指令預設是按ascii字元編碼順序對文本進行排序,是以當我們對一串數字進行排序的時候,結果可能不是我們想要的:

[root@logstach ~]# sort test 

123

342

45

58324

777

    當我們想讓文本按數字大小進行排序時,可以使用-n,參數

[root@logstach ~]# sort  -n  test

    利用-k、-n和-t的結合使用功能可以實作按字段并根據數字大小進行排序

[root@logstach ~]# sort -t: -k3 -n /etc/passwd

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

uniq:

    -c:顯示檔案行中重複的次數

    -d:隻顯示重複的行

注:uniq指令執行過程中,它隻認為相鄰兩個行資料相同是重複行,如果不相鄰,即使資料一樣,它也認為是單行。

[root@logstach ~]# cat test 

[root@logstach ~]# uniq -d test 

[root@logstach ~]# !sor

sort  test |uniq -d

文本統計:wc(word count)

    -l:計算一共有幾行(line)

    -w:幾個詞(word)   

    -c:幾個字元或者位元組(byte)

    -L:最大行長度

字元處理指令:tr--轉換或删除字元

[root@logstach ~]# tr  ab AB

sdddaf

sdddAf