linux學習筆記

Linux自己的文件數據: /usr/share/doc (在你的Linux系統中)

tab  補全命令,提示
ctrl+c  結束指令
ctrl+d   exit
shift+PageUP   down翻頁
--help  指令語法
man page     DATE(   1  )裏面的數字即

1 使用者在shell環境中可以操作的指令或可可執行文件
2 系統核心可調用的函數與工具等
3 一些常用的函數(function)與函數庫(library),大部分爲C的函數庫(libc)
4 設備文件的說明,通常在/dev下的文件
5 配置文件或者是某些文件的格式
6 遊戲(games)
7 慣例與協定等,例如Linux文件系統、網絡協定、ASCII code等等的說明
8 系統管理員可用的管理指令
9 跟kernel有關的文件

/string  向“下”搜尋string
?string  向“上”搜尋 string 這個字串
可以 n 繼續往下查詢,用 N 往上查詢


將數據同步寫入硬盤中的指令: sync
慣用的關機指令: shutdown
重新開機,關機: reboot, halt, poweroff

切換各個不同的終端機接口6個,默認第一個Xwin
切換的方式爲 Crtl + Alt + [F1]~[F6]


Linux是 多用戶 多任務 的系統
文件可存取的身份分別是 owner/group/others三種身份各有 read/write/execute 


/etc/passwd    帳號與一般身份使用者相關信息
/etc/shadow    個人的密碼
/etc/group     羣 組名稱

ls -al         列出所有的文件詳細的權限與屬性(包含隱藏文件)

第一個字符代表這個文件是“目錄、文件或鏈接文件等等”:
    當爲[ - ]則是文件,例如上表文件名爲“initial-setup-ks.cfg”那一行;正規文件(regular file )
        純文本文件(ASCII)  cat  name
        二進制檔(binary)cat本身就是
        數據格式文件(data)程序運行產生的特定格式的文件

    當爲[ d ]則是目錄,例如上表文件名爲“.config”的那一行;
    若是[ l ]則表示爲鏈接文件(link file);  類似Windows系統下面的捷徑
  /dev
    若是[ b ]則表示爲設備文件裏面的可供儲存的周邊設備(可隨機存取設備);/dev/sda看看
    若是[ c ]則表示爲設備文件裏面的序列埠設備,例如鍵盤、鼠標(一次性讀取設備
    
    第一個屬性爲 [ s ] 數據接口文件(sockets) 最常在/run或/tmp目錄中看到

    數據輸送檔(FIFO, pipe) [ p ] 主要的目的在解決多個程序同時存取一個文件所造成的錯誤問題

    *.sh : 腳本或批處理文件 (scripts)
    Z, .tar, .tar.gz, .zip, *.tgz: 經過打包的壓縮文件
    .html, .php:網頁相關文件    

1    +     3+        3+         3
        “rwx”    “rwx”       “rwx”
        個人      羣組        其他人   爲  ---  表示沒有權限
[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執行(execute)
                           不含刪除該文件          可以被系統執行的權限
drwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 groups/
權限 節點  文件擁有者 擁有者所在羣組  文件大小 。。。。。
      ||
表示有多少文件名鏈接到此節點


文件擁有者test1[rwx]可以在本目錄中進行任何工作

而testgroup這個羣組r-x的帳號,例如test2,test3亦可以進入本目錄進行工作,但是不能
在本目錄下進行寫入的動作;

至於other的權限中[r--]雖然有r ,但是由於沒有x的權限,因此others的使用者,並不能進
入此目錄


chgrp :改變文件所屬羣組       chgrp [-R] dirname/filename ...
chown :改變文件擁有者        chown [-R] 帳號名稱 文件或目錄
                             chown [-R] 帳號名稱:羣組名稱 文件或目錄
chmod :改變文件的權限, SUID, SGID, SBIT等等的特性
                                      [4+2+1][4+0+1]
> r:4 > w:2 > x:1    改變權限爲 -rwxr-xr-- chmod 754 test.sh 
也可以:  chmod u=rwx,g=rx,o=r filename
-rwxr-xr-x     chmod u=rwx,go=rx .bashrc
            chmod a+w .bashrc 所有人加上寫權限


Linux文件長度限制:單一文件或目錄的最大容許文件名爲 255Bytes  英文255個 中文 128 


              /home/dmtsai       回到當前用戶的主文件夾
cd:變換目錄  cd ~dmtsai          cd ~                   cd -   前一個工作目錄   
change dictionary
pwd  顯示目前的目錄      pwd -P 顯示鏈接文件的真實路徑
print working directory 

mkdir  創建一個新的目錄
    mkdir -p 1/2/3   創建多層目錄  沒有-p會創建失敗,提示前一級目錄不存在
    mkdir -m 711 test  指定文件的權限
rmdir 刪除一個空的目錄   rm -rf dirname

echo $PATH    //環境變量 PATH   用冒號(:)來隔開
PATH="${PATH}:/root"     //添加環境變量

ls -a  全部的文件,連同隱藏文件( 開頭爲 . 的文件)一起列出來
   -l  長數據串行出,包含文件的屬性與權限等等數據;
   -d :僅列出目錄本身,而不是列出目錄內的文件數據

cp [options] source1 source2 source3 .... directory
源文件有兩個以上,則最後一個目的文件一定要是“目錄”才行
    -a :相當於 -dr --preserve=all 的意思,除了權限相關參數外,還加入 SELinux 的屬性, 
         links,xattr 等也複製了;(常用)
    -i :若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
    -r :遞迴持續複製,用於目錄的複製行爲;(常用)    
    -p :連同文件的屬性(權限、用戶、時間)一起復制過去,而非使用默認屬性(備份常用); 
    
    -d :若來源文件爲鏈接文件的屬性(link file),則複製鏈接文件屬性而非文件本身;
        cp 鏈接文件 目標   會複製鏈接文件指向的文件,若需要複製鏈接文件則用-d

    -f :爲強制(force)的意思,若目標文件已經存在且無法打開,則移除後再嘗試一次;
    -l :進行硬式鏈接(hard link)的鏈接文件創建,而非複製文件本身;       !!!!實體鏈接
    -s :複製成爲符號鏈接文件 (symbolic link),亦即“捷徑”文件;
    -u :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才複製。
   ( update )

 rm [-fir] 文件或目錄
     -f :就是 force 的意思,忽略不存在的文件,不會出現警告訊息;
    -i :互動模式,在刪除前會詢問使用者是否動作
    -r :遞迴刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!

rm ./-aaa-   或 rm -- -aaa-        刪除 -  開頭的文件 如:  -**

指令前加上反斜線,可以忽略掉 alias 的指定選項


mv [options] source1 source2 source3 .... directory
    -f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
    -i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
    -u :若目標文件已經存在,且 source 比較新,纔會更新 (update)


basename /etc/sysconfig/network    network

dirname /etc/sysconfig/network     /etc/sysconfig

文件內容查閱
    cat (concatenate)由第一行開始顯示文件內容                       斷行字符以 $
        -A :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;[tab]會以 ^I 
        -b :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
        -E :將結尾的斷行字符 $ 顯示出來;
        -n :打印出行號,連同空白行也會有行號,與 -b 的選項不同;
        -T :將 [tab] 按鍵以 ^I 顯示出來;
        -v :列出一些看不出來的特殊字符


    tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒着寫!
    nl 顯示的時候,順道輸出行號!

    more 一頁一頁的顯示文件內容  
        空白鍵 (space):代表向下翻一頁;
        Enter :代表向下翻“一行”;
        :f :立刻顯示出文件名以及目前顯示的行數;
        /字串 :代表在這個顯示的內容當中,向下搜尋“字串”這個關鍵字;
        b 或 [ctrl]-b :代表往回翻頁,不過這動作只對文件有用,對管線無用

    less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
        空白鍵 :向下翻動一頁;
        [pagedown]:向下翻動一頁;
        [pageup] :向上翻動一頁;
        /字串 :向下搜尋“字串”的功能;
        ?字串 :向上搜尋“字串”的功能;
        n :重複前一個搜尋 (與 / 或 ? 有關!)
        N :反向的重複前一個搜尋 (與 / 或 ? 有關!)
        g :前進到這個數據的第一行去;
        G :前進到這個數據的最後一行去 (注意大小寫);
        q :離開 less 這個程序;
    head 只看頭幾行
         head -n 20 /etc/man_db.conf
            後面100行的數據都不打印
            head -n -100 /etc/man_db.conf
    tail 只看尾巴幾行
        100行以後
         tail -n +100 /etc/man_db.conf
    前 20 行,再取後十行
    head -n 20 /etc/man_db.conf | tail -n 10

    od 以二進制的方式讀取文件內容!
         od [-t TYPE] 文件
            a :利用默認的字符來輸出;
            c :使用 ASCII 字符來輸出
            d[size] :利用十進制(decimal)來輸出數據,每個整數佔用 size Bytes ;
            f[size] :利用浮點數值(floating)來輸出數據,每個數佔用 size Bytes ;
            o[size] :利用八進位(octal)來輸出數據,每個整數佔用 size Bytes ;
            x[size] :利用十六進制(hexadecimal)來輸出數據,每個整數佔用 size Bytes ;

        將/etc/issue這個文件的內容以8進位列出儲存值與ASCII的對照表
        od -t oCc /etc/issue

touch
    -a :僅修訂 access time;
    -c :僅修改文件的時間,若該文件不存在則不創建新文件;
    -d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
    -m :僅修改 mtime ;
    -t :後面可以接欲修訂的時間而不用目前的時間,格式爲[YYYYMMDDhhmm]

                                                        文件被創建的    
    創建一個空的文件;      status time (ctime)狀態status)改變時權限與屬性
    將某個文件日期修訂爲目前 (mtime 與 atime) modification time   access time
                                                 內容改變
    touch 文件名    三個時間 (atime/ctime/mtime) 都會更新爲目前的時間
    touch -d "2 days ago" bashrc  將日期調整爲兩天前      

文件默認權限:umask  0022 被去掉的權限 r4w2x1
                    (-----w--w-)
                    (d----w--w-)
“文件”則默認“沒有可執行( x )權限” 默認權限如下: -rw-rw-rw- 666
創建爲“目錄”   drwxrwxrwx 777

創建文件時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
創建目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

設置 umask  :    umask 002


文件隱藏屬性
    chattr(設置文件隱藏屬性)  chattr [+-=][ASacdistu] 文件或目錄名稱
        + :增加某一個特殊參數,其他原本存在參數則不動。
        - :移除某一個特殊參數,其他原本存在參數則不動。
        = :設置一定,且僅有後面接的參數

        i :這個 i 可就很厲害了!他可以讓一個文件“不能被刪除、改名、設置鏈接也無法寫入或新增數據!”
                對於系統安全性有相當大的助益!只有 root 能設置此屬性
        a :當設置 a 之後,這個文件將只能增加數據,而不能刪除也不能修改數據,只有root 才能設置這屬性

        A :當設置了 A 這個屬性時,若你有存取此文件(或目錄)時,他的存取時間 atime 將不會被修改,
        可避免 I/O 較慢的機器過度的存取磁盤。(目前建議使用文件系統掛載參數處理這個項目)
        S :一般文件是非同步寫入磁盤的(原理請參考[前一章sync](../Text/index.html#sync)的說明),如果加上 S 這個屬性時,
        當你進行任何文件的修改,該更動會“同步”寫入磁盤中。
        
        c :這個屬性設置之後,將會自動的將此文件“壓縮”,在讀取的時候將會自動解壓縮,
        但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大文件似乎蠻有用的!)
        d :當 dump 程序被執行的時候,設置 d 屬性將可使該文件(或目錄)不會被 dump 備份
        
        s :當文件設置了 s 屬性時,如果這個文件被刪除,他將會被完全的移除出這個硬盤空間,
        所以如果誤刪了,完全無法救回來了喔!
        u :與 s 相反的,當使用 u 來設置文件時,如果該文件被刪除了,則數據內容其實還存在磁盤中,
        可以使用來救援該文件喔!
        注意1:屬性設置常見的是 a 與 i 的設置值,而且很多設置值必須要身爲 root 才能設置
    

    lsattr (顯示文件隱藏屬性)  lsattr [-adR] 文件或目錄
        -a :將隱藏文件的屬性也秀出來;
        -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;
        -R :連同子目錄的數據也一併列出來!

文件特殊權限: (SUID, SGID, )SBIT
(rws   此處的s即爲特殊權限  ) rwt
SUID    這個SUID只能運行在二進制的程序上(系統中的一些命令),不能用在腳本上(script),因爲腳本還           是把很多的程序集合到一起來執行,而不是腳本自身在執行。同樣,這個SUID也不能放到目錄上,放上          也是無效的。
SGID     用戶在此目錄下具有w權限的話,若使用者在此目錄下建立新文件,則新文件的羣組與此目錄的羣組相同

SBIT    任何人都可以在/tmp內增加、修改文件(因爲權限全是rwx),但僅有該文件/目錄建立者與       
        root能夠刪除自己的目錄或文件。

4 爲 SUID   u+s    
2 爲 SGID  g+s 
1 爲 SBIT   o+t 
chmod 4755 filename
chmod g+s,o+t test

觀察文件類型 file ~/.bashrc


指令文件名的搜尋
which [-a] command  
    -a :將所有由 PATH 目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
    
    which ifconfig  搜尋 ifconfig 這個指令的完整文件名

文件文件名的搜尋   主要是針對 /bin /sbin 下面的可執行文件
 whereis [-bmsu] 文件或目錄名
    -l :可以列出 whereis 會去查詢的幾個主要目錄而已
    -b :只找 binary 格式的文件
    -m :只找在說明文檔 manual 路徑下的文件
    -s :只找 source 來源文件
    -u :搜尋不在上述三個項目當中的其他特殊文件

    whereis ifconfig   請找出 ifconfig 這個文件名  


 locate [-ir] keyword   數據庫來搜尋,每天執行一次,當天修改的當天搜索不到
    -i :忽略大小寫的差異;
    -c :不輸出文件名,僅計算找到的文件數量
    -l :僅輸出幾行的意思,例如輸出五行則是 -l 5
    -S :輸出 locate 所使用的數據庫文件的相關信息,包括該數據庫紀錄的文件/目錄數量等
    -r :後面可接正則表達式的顯示方式

locate -l 5 passwd    找出系統中所有與 passwd 相關的文件名,且只列出 5 個


updatedb   更新數據庫    /etc/updatedb.conf 設置去搜尋系統硬盤內的文件名並
                        更新/var/lib/mlocate 內的數據庫文件
locate  依據 /var/lib/mlocate 內的數據庫記載,找出使用者輸入的關鍵字文件名


find [PATH] [option] [action]
     /
    -mtime n :n 爲數字,意義爲在 n 天之前的“一天之內”被更動過內容的文件;
    -mtime +n :列出在 n 天之前(不含 n 天本身)被更動過內容的文件文件名;
    -mtime -n :列出在 n 天之內(含 n 天本身)被更動過內容的文件文件名。
    -newer file :file 爲一個存在的文件,列出比 file 還要新的文件文件名

find / -mtime 0     24 小時內有更動過內容 (mtime) 的文件列出
find /etc -newer /etc/passwd       /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出

    -uid n :n 爲數字,這個數字是使用者的帳號 ID,亦即 UID ,這個 UID 是記錄在
        /etc/passwd 裏面與帳號名稱對應的數字。這方面我們會在第四篇介紹。
    -gid n :n 爲數字,這個數字是羣組名稱的 ID,亦即 GID,這個 GID 記錄在
            /etc/group,相關的介紹我們會第四篇說明~
    -user name :name 爲使用者帳號名稱喔!例如 dmtsai
    -group name:name 爲羣組名稱喔,例如 users ;
    -nouser :尋找文件的擁有者不存在 /etc/passwd 的人!
    -nogroup :尋找文件的擁有羣組不存在於 /etc/group 的文件!
    當你自行安裝軟件時,很可能該軟件的屬性當中並沒有文件擁有者,
    這是可能的!在這個時候,就可以使用 -nouser 與 -nogroup 搜尋。

find /home -user dmtsai     搜尋 /home 下面屬於 dmtsai 的文件
find / -nouser              搜尋系統中不屬於任何人的文件
 
    -name filename:搜尋文件名稱爲 filename 的文件;
    -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的文件。這個 SIZE 的規格有:
                    c: 代表 Byte, k: 代表 1024Bytes。所以,要找比 50KB
                    還要大的文件,就是“ -size +50k ”
    -type TYPE :搜尋文件的類型爲 TYPE 的,類型主要有:一般正規文件 (f), 設備文件 (b, c),
                目錄 (d), 鏈接文件 (l), socket (s), 及 FIFO (p) 等屬性。
    -perm mode  :權限正好一樣
    -perm -mode :權限爲當前權限的文件或者比當前輸入的要高的文件
    -perm /mode :搜尋文件權限“包含任一 mode 的權限”的文件,舉例來說,我們搜尋
                  -rwxr-xr-x ,亦即 -perm /755 時,但一個文件屬性爲 -rw-------
                  也會被列出來,因爲他有 -rw.... 的屬性存在!

find / -name passwd         找出文件名爲 passwd 這個文件
find / -name "*passwd*"     文件名包含了 passwd 這個關鍵字的文件
find /run -type s           找出 /run 目錄下,文件類型爲 Socket 的文件名有哪些
find / -perm /7000          搜尋文件當中含有 SGID 或 SUID 或 SBIT 的屬性
find /etc -size +50k -a -size -60k -exec ls -l {} \;  大小介於 50K 到 60K 之間的文件
                    -a 是 and             
                                        可去掉
find /etc -size +50k -a ! -user root  (-type f ) -exec ls -ld {} \; 
                        文件大小大於 50K 且文件所屬人不是 root 的文件名
                         !代表不是後面的項目
find /etc -size +1500k -o -size 0     /etc下容量大於 1500K 以及容量等於 0 的文件
                        -o是或的意思

    -exec command :command 爲其他指令,-exec 後面可再接額外的指令來處理搜尋到的結果。
find /usr/bin /usr/sbin -perm /7000 -exec ls -l  {} \  將上個範例找到的文件使用 ls -l 列出來~

{} 代表的是“由 find 找到的內容”,如上圖所示,find 的結果會被放置到 {} 位置中;

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