linux文件管理必會知識

linux文件管理必會知識

一、文件查看類命令
         ① less 選項  參數(文件名)    
            分屏顯示文件內容(查看至文件的結尾不會退出,按q退出)
            快捷鍵
                ctrl+d 向下翻半屏
                ctrl+u 向上翻半屏
                回車鍵 向下翻一行
                K鍵 向上翻一行
                空格鍵 向下翻一整屏
                b 向上翻一整屏
                #G 跳轉至第#行

wKioL1UklwCQvRG1AAEseYuSfds198.jpg

            關鍵字查找:
                /+關鍵子 從首部向尾部
                n-next 下一個關鍵字
                N 向上查找關鍵字
                ?+關鍵字 從尾部向首部
                n 下一個(向上查找)
                N 上一個(從下向上)--注:不要看起來好像迷迷糊糊,別隻顧看,動手試試

wKioL1UkpPGy_bWcAAI-X-gcTXY126.jpg

        ②more 選項(很少用) 參數(文件名)
            分屏顯示文件內容(特性:查看至文件尾部自動退出)
            注:k鍵和ctrl+u 不可用(這裏指相對於上面less的快捷鍵)

        ③tail [選項] 參數(文件名)
            查看文件的尾部多少行,注:不跟任何選項,指顯示默認的行數(10行)
            -n #或(-#)查看倒數的行數
            -f 監視文件有沒有新增內容(作用於 日誌查看)

wKiom1Uko6mCBBYZAARpei_ZiYQ701.jpg

如上圖:查看默認行數及設置顯示5行

wKiom1Uko6nzBeUFAAFDpYohHm4393.jpg

如上圖爲在僞終端/dev/pts/0 上開啓監控

wKioL1UkpPGDgiS3AACr_lE0nic084.jpg

 如上圖爲在僞終端/dev/pts/1 對文件file.log用echo來追加字符串“44”

wKiom1Uko6nAH6iLAAELjtgBIeY527.jpg

如上圖爲在僞終端/dev/pts/1 上對文件用vim進行編輯,添加55,66兩行


wKioL1UkpPHA_8mBAABypjALOBM606.jpg

如上圖:在僞終端/dev/pts/0上對文件的操作監視變化情況

結論:vim打開是一個文本副本的形式打開,而echo "ccc" >> file.log 直接把字符串追加到文件file.log(原始文件)中。所以-f是指監視文件本身。

        ④head [選項] 參數(文件名)
            -n #或(-#) 查看首部的行數
            注:不跟任何選項,指顯示默認的行數(10行)

wKiom1Ukpf7AwD0LAAPPHq3Jey4435.jpg

如上圖,查看首部默認行數及設置顯示6行

二、文件的類型
    - :普通文件
    d :目錄文件
    c : 字符設備文件
    b : 塊設備文件
    l :鏈接文件
    p : 管道文件
    s : socket(套接字)文件

三、文件的組成
        元數據(除了文件的內容以外,對文件的描述信息稱爲文件屬性信息--元數據,時間戳也是元數據)
        數據(文件內容)
        時間戳 (3類時間)
        最近一次被access的時間 access time <---->atime
        最近一次被modify的時間 modify time <---->mtime
        最近一次被change的時間 (metadate)元數據被改變 change time<---->ctime
        stat 文件名 (查看文件的元數據)

    touch [選項] 參數(文件名)  文件的時間戳管理工具
        -a 僅修改文件的atime
        -m 僅修改文件的mtime
        -c 不創建空文件
        -t [[CC]YY]MMDDhhmm[.ss] 時間書寫的格式 給文件創建一個新的時間,即atime和mtime同時被修改
        注:-at,-mt,-ct,都可以設置 -ta 不可以,因爲後面-t 時間有具體值
   

[root@localhost tmp]# ls
backups  file.log  man.config  yum.log
[root@localhost tmp]# stat file.log        
  File: `file.log'
  Size: 26            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 3014664     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-04-03 20:14:11.326956761 +0800
Modify: 2015-04-03 20:14:11.326956761 +0800
Change: 2015-04-03 20:14:11.329956762 +0800
[root@localhost tmp]# touch -a -t 201504031010.10 file.log  #修改文件的訪問時間 -a
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 10:10:10.000000000 +0800                #此處省略其他信息(下同)
Modify: 2015-04-03 20:14:11.326956761 +0800
Change: 2015-04-03 20:37:42.448971037 +0800
[root@localhost backups]# touch -mt 201504031111.11 file.log  #修改文件的修改時間 -m
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 10:10:10.000000000 +0800               
Modify: 2015-04-03 11:11:11.000000000 +0800
Change: 2015-04-03 20:39:55.134955727 +0800
[root@localhost tmp]# touch -c -t 201504031212.12 file.log  #修改文件的改變時間 -c
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 12:12:12.000000000 +0800                 (此時刻標註爲時間1)
Modify: 2015-04-03 12:12:12.000000000 +0800
Change: 2015-04-03 20:40:43.301964980 +0800

結論:atime和mtime都已經生效,而ctime並未生效,原因是文件的保護機制,所以ctime不會立即生效

緊接着上面的進行以下操作,看效果

[root@localhost tmp]# echo "aa" >> file.log 
[root@localhost tmp]# stat file.log             #查看文件的元數據
Access: 2015-04-03 12:12:12.000000000 +0800
Modify: 2015-04-03 20:52:13.553956518 +0800                (此時刻標註爲時間2)
Change: 2015-04-03 20:52:13.553956518 +0800
[root@localhost tmp]# vim file.log 
[root@localhost tmp]# stat file.log 
Access: 2015-04-03 20:53:09.984956196 +0800
Modify: 2015-04-03 20:53:25.258950158 +0800                (此時刻標註爲時間3)
Change: 2015-04-03 20:53:25.260950347 +0800

結論:(vim 能改變所有的時間,echo就不能改變訪問時間)

注:經常容易犯的錯誤,相對路徑和絕對路徑一定要分的清楚哦    

四、文件複製命令
    cp [選項] 參數1(源文件) 參數2 目錄文件(文件、目錄)
        1、源文件爲文件,目標文件是文件                

                (1)文件不存在,創建目標文件,且內容爲源文件內容,如下圖

wKiom1Uko6nTSCk0AAIgTPgKarg889.jpg

                (2)文件存在,內容被覆蓋,如下圖

wKioL1UkzmCS8yYUAALbRsRT870626.jpg

        2、源文件是文件,目標文件是目錄(直接把文件拷貝到目標目錄下(必須存在))如下圖

wKiom1Ukze2BP8D6AAFboyOEMbk073.jpg

        3、源文件是目錄,必須跟一個選項-r 才能把目錄複製到目標目錄下如下圖    

wKioL1Ukz4fzSnrqAAEqDnqKtZQ498.jpg

        -r 複製目錄,會實現遞歸複製

        -d 不跟隨符號指向的源文件(即複製的是符號鏈接文件,而非指向的文件)重點記憶
        -a 相當於-r + -d
        -i 提示是否進行覆蓋 默認別名已經設置了cp -i
        -f 強制複製(不建議使用)

五、文件移動命令
    mv [選項]  參數1(源文件) 參數2 目標文件(文件、目錄)
        1、源文件爲文件,目標文件是文件 

                (1)文件不存在,創建目標文件,且內容爲源文件內容,如下圖

wKiom1Uk2VCwAlIUAAKL5NbhD5Q568.jpg

                (2)文件存在,內容被覆蓋,如下圖

wKioL1Uk2pnhhOfGAAGg7FEO1aY555.jpg

        2、源文件是文件,目標文件是目錄(直接把文件拷貝到目標目錄下(必須存在))如下圖

wKiom1Uk2VGDiDaKAAFfPf_V_vc607.jpg

        3、源文件是目錄,把源目錄複製到目標目錄下如下圖

wKioL1Uk2pnigCk3AAJFQtj5jBg100.jpg

        -i 提示是否進行移動

        -f 強制移動(不建議使用)
六、文件刪除
    rm [選項] 參數(文件名)
        -r 遞歸刪除文件,而且可以刪除目錄
        -f 強制刪除
        -i 提示是否進行刪除
       

wKiom1Uk2kqDm257AAE6x8fxa8o257.jpg

    注:創建一個回收站的安全機制,如下圖
    /tmp 創建一個目錄backups,所有要刪除的文件可以先放到這裏。

wKiom1Uk3IPjdRsiAAENZI4GGNA529.jpg


bash的基本特性 輸入輸出重定向及管道

一、重定向

    重定向:改變輸入和輸出的形式

         輸出:

                  標準輸出 狀態碼爲1

                  錯誤輸出 狀態碼爲2

         輸入:

                  標準輸入 狀態碼0   echo $? 顯示上條命令的輸出狀態

            (1) >>輸出 代表追加到尾部 ,書寫格式  1>>   2>>

[root@localhost tmp]# cat abc 
this is abc
[root@localhost tmp]# echo "def comehere" >> abc  
[root@localhost tmp]# cat abc 
this is abc
def comehere

         

[root@localhost tmp]# cat backups/ 2>> abc
[root@localhost tmp]# cat abc 
this is abc
def comehere
cat: backups/: Is a directory

       

            (2)>  輸出 以覆蓋的形式輸出 ,格式  1>   2>

[root@localhost tmp]# echo "abc come back" > abc 
[root@localhost tmp]# cat abc 
abc come back
[root@localhost tmp]# ech "def is angry" 2> abc
[root@localhost tmp]# cat abc 
-bash: ech: command not found

&>> 和&> 代表不管是標準輸出還是錯誤輸出全部輸出追加或覆蓋

            (3)輸入  <<

[root@localhost tmp]# cat << EOF #(EOF只是代表一個起始符號,後面在寫一個EOF表示結束)
> 1111
> 2222
> 3333
> 4444
> EOF
1111
2222
3333
4444

二、管道 

        | 標識符 ,把一個命令的輸出作爲另一個命令的輸入

        命令1 | 命令2 | 命令3 。。。 哲學思想3(linux是由衆多功能單一的程序組成)

[root@localhost tmp]# cat /etc/passwd | head -6 | tail -3 
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

練習1 /etc/passwd 文件的內容的前十行轉換爲大寫輸出

練習2 將當前系統的所登錄的所有用戶的前一個的信息轉換爲大寫輸出

三、命令別名

         alias別名=“真實命令”提高工作效率 臨時設置

         unalias別名

[root@localhost share]# alias cdvim="cd /usr/share/vim"
[root@localhost share]# alias cdvim
alias cdvim='cd /usr/share/vim'
[root@localhost share]# cdvim 
[root@localhost vim]# pwd
/usr/share/vim

         永久修改 修改兩個配置文件

        注: ~/.bashrc僅對當前用戶有效,/etc/bashrc對所有用戶有效 (面試題)

          臨時取消別名unalias rm

[root@localhost vim]# unalias cdvim
[root@localhost vim]# alias cdvim
-bash: alias: cdvim: not found

bash特性 快捷鍵

         ctrl+a光標跳到命令首部

         Ctrl+E快捷鍵

         這裏的E可以理解爲End。當在命令行按下此組合鍵時,我們的可愛的光標就

         乖乖地跑到了當前命令行的最後。

         ctrl+u刪除命令行首部至光標所在處的所有字符

         ctrl+l清屏

         ctrl+k這裏的K可以理解爲Kill。按下此組合鍵,會刪除從當前光標到本命令行的結束的位置的所有字符。別隻顧着看,動手試試!       


練習1答案

[root@localhost tmp]# echo | head -10 /etc/passwd | tr 'a-z' 'A-Z'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
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

練習2答案

[root@localhost tmp]# who
root     pts/0        2015-04-04 09:47 (stone-pc.lan)
root     pts/1        2015-04-04 15:12 (stone-pc.lan)
root     pts/2        2015-04-04 15:12 (stone-pc.lan)
[root@localhost tmp]#  who | head -1| tr 'a-z' 'A-Z'
ROOT     PTS/0        2015-04-04 09:47 (STONE-PC.LAN)

注:個別命令的演示效果本文可能稍有忽略,希望大家自己動手練習,你會發現linux的奧妙所在!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章