歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

【Linux學習筆記三】文件目錄管理

【注】文章中的所有截圖均為centos下實驗結果,親測命令正確= ̄ω ̄=

【參考資料】《Linux從入門到精通(第2版)》劉憶智 等編著

 

*************************************************和團隊共享文件***************************************************

 

1、和團隊共享文件:創建工作目錄,並創建一個用戶組管理該目錄。 $ sudo groupadd workgroup ##新建用戶組命名為workgroup   $ sudo useradd -G workgroup lucy ##新建用戶lucy並歸入workgroup組 $ sudo passwd lucy ##為lucy設置密碼 $ cd /home ##切換目錄 $ sudo mkdir work ##新建目錄work $ sudo chgrp workgroup work/ ##將work所有權交給workgroup組 $ sudo chmod g+rwx work/ ##賦予讀、寫、執行權限 $ sudo chmod o-rwx work/ ##撤銷其他用戶的讀、寫、執行權限 $ sudo chown lewis work/ ##目錄的組長(所有者) $ su lewis ##切換用戶 $ cd /home/work/ ##切換目錄 $ touch test ##新建空文件 $ su peter ##切換用戶 $cd /home/work/ ##切換目錄 $rm test ##刪除文件 \ \   *************************************************建立文件和目錄***************************************************   2、建立文件和目錄 $ mkdir document picture ##新建兩個目錄 $ mkdir ~/picture/temp ##指定路徑創建目錄 $ mkdir -p ~/tempx/job ##-p選項用於創建完整的目錄結構,tempx不存在時也可執行 \ $ touch hello ##建立空文件,另一個用途是更新文件的建立時間,在自動備份時很有用   *******************************************移動、復制和刪除***********************************************   3、移動、復制和刪除 $ mv hello bin/ ##將hello移動到bin目錄下(出現同名文件有覆蓋危險) $ echo "Hello" > hello ##重定向新建一個文件,將字符串Hello輸入文件 $ cat hello ##顯示hello文件內容 $ mv -i hello test/ ##同名時詢問是否覆蓋 $ mv -b hello test/ ##在目標文件的同名文件後加~避免覆蓋 $ mv hello~ hello_bak ##重命名   $ cp hello bin/ ##將hello復制到bin目錄下(出現同名文件有覆蓋危險) $ cp -i hello test/ ##同名時詢問是否覆蓋 $ cp -b hello test/ ##在目標文件的同名文件後加~避免覆蓋 $ cp test/ bin/ ##cp會忽略文件夾 $ cp -r test/ bin/ ##使用-r命令可以連同子目錄及其中的文件一起復制 \ \ $ rmdir remove ##刪除文件夾,但只有文件夾空時可用,一般用得較少 $ rm test/*.php ##刪除文件 $ rm -i test/hello ##刪除文件時給出提示,只讀文件不寫-i也會提示 $ rm -f hello ##對出現的提示默認回答y,慎用。 $ rm -r test/ ##遞歸地刪除目錄下的內容,最後刪除目錄,慎用。 \
******************************************文件和目錄的權限************************************************   4、文件和目錄的權限 Linux為三種用戶准備了權限,分別為文件所有者(屬主)、文件屬組用戶和其他人,另外還有擁有完整最高權限的root用戶。文件的創建者自動成為文件的所有者,所有權的轉讓需要root權限。可以把文件交給一個組管理(屬組)。屬組也可以是不包含文件所有者的組,執行文件時,系統只關心屬主權限,組權限對屬主沒有影響。 需要設置讀取、寫入、執行三種權限,即r、w、x,可執行文件分為兩類,一是直接可以由CPU執行的二進制代碼,另一類是Shell腳本程序。對目錄而言,三種權限分別對應能否進入目錄(執行),能否列出目錄內容(讀取),能否在目錄中創建、刪除和重命名文件(寫入)。 $ ls -l /bin/login ##文件屬性 \ 第一個字段一個字符:- 代表文件類型,這是一個普通文件; 九個字符 rwx、r-x、r-x,分別代表屬主、屬組、其他人的讀取、寫入、執行權限,被禁用的權限用 - 表示; 接著的3組權限位數字表示鏈接數目,此處1表示只有一個硬鏈接; 三、四個字段分別表示文件的屬主和屬組,分別是root用戶和root組; 33064表示文件大小(字節); 文件最後修改的日期、時間、完整路徑。 $ ls -ld /etc/ ##目錄的屬性 $ ls -l ##當前目錄下所有文件(不包括隱藏文件)的屬性 \ $ sudo chown lewis:root days ##分別改變days文件的屬主和屬組,屬組前必須有冒號,且前邊和屬主之間沒空格 $ sudo chown lewis days ##改變屬主 $ sudo chown :root days ##改變屬組 $ sudo chown -R lewis iso/ ##改變目錄所有權 $ sudo chgrp nogroup days ##專門用來改變屬組的語句,也有-R選項 可以設置權限的用戶組有:u 文件屬主、g 文件屬組、o 其他人、a 所有人。注意在用相等符號設置權限時,用戶原本的權限不會被保留,只會更新語句中提到的權限,因此不能用相等語句修改部分權限,必須涉及對rwx的全部考量後再選擇語句內容。 $ sudo chmod u+x days ##為屬主增加執行權限 $ sudo chmod a-x days ##撤銷所有人的執行權限 $ sudo chmod ug=rw,o=r days ##賦予屬主和屬組讀寫權限,其他人寫權限 $ sudo chmod o=u days ##其他人的權限與屬主相同 \ 用chmod助記符形式比較直觀,但繁瑣,9個位置上每個位置只有兩種選擇,可以用二進制表示,則3位2進制可以用1位8進制,3個8進制數就可以完成對三組權限的表示。其中1代表x,2代表w,4代表r(與實際順序相反),只要將數字相加就可以代表多種權限。 $ sudo chmod 774 days ##賦予屬主、屬組讀寫執行權限,賦予其他人讀權限 \

*************************************************文件類型****************************************************   5、文件類型 Linux共有七種文件類型,ls -l 命令輸出的第一項代表了文件類型: - 普通文件 d 目錄 c 字符設備文件 b 塊設備文件 s 本地域套接口 p 有名管道 l 符號鏈接 Linux有兩類設備文件:字符設備文件和塊設備文件。字符設備指的是能夠從它那裡讀取成字符序列的設備,如磁帶和串行線路;塊設備指的是用來存儲數據並對其各部分提供同等訪問權的設備,如磁盤。字符設備有時被稱為順序訪問設備,塊設備有時被稱為隨機訪問設備。使用塊設備,可以從磁盤的任何隨機位置獲取數據;而使用字符設備,必須按照數據發送的順序從串行線路上獲取。 符號鏈接(也稱軟鏈接)有點像Windows裡的快捷方式,用戶可以用別名去訪問一個文件。 軟鏈接需要使用帶-s參數的ln命令來創建 $ ln -s hello_bak hello ##軟鏈接:帶 -s 的 ln 命令,取一個別名hello,刪除別名不會影響原文件,但刪除原文件後別名不再有意義 $ ln -s ../tempx tem ##也可用於目錄的別名 $ ln hello_bak2 hello_bak ##硬鏈接:生成一個新文件互相關聯,一個文件的改動同時會改動另一個,很少應用到 \
*******************************************輸入輸出重定向和管道******************************************   6、輸入輸出重定向和管道 重定向和管道是Shell的高級特性,允許用戶人為改變程序獲取輸入和產生輸出的位置。 程序默認輸出結果的地方為標准輸出,一般為顯示器,輸出重定向把程序的輸出轉移到另一個地方去。 $ ls > hello_bak ##將輸出存入文件hello_bak,若文件不存在會自動創建,若存在會刪除內容重新寫入 $ ls >> hello_bak ##想要保留原始內容,需要用 >> 重定向 \ \ 程序默認接收輸入的地方為標准輸入,通常指鍵盤。 $ cat ##輸入cat後回車,系統會等待輸入 $ HELLO ##每輸入一行系統會將輸入打印在屏幕上 ##直到點擊 Ctrl+D 結束 $ cat < days ##重定向符號支持從文件中讀入 $ cat days ##文件名作為參數就可以實現這個功能,因此上一條語句很少用到 $ cat << EOF ##立即文件(here document):從鍵盤讀入,遇到設置的終止符(此處為EOF)停止,然後一次性打印 > HELLO ##輸入HELLO > EOF ##輸入終止符,停止讀入,打印前邊讀取的內容 $ cat << END >> hello ##輸入輸出重定向結合使用,以 END 為終止符從鍵盤讀入,將內容追加到 hello 文件後 \ 管道將重定向更進一步,通過“ | ”,將一條命令輸出連接到另一條命令輸出,如下: $ ls | grep ay ##首先用 ls 給出文件名列表, 管道接收輸出並發送給 grep 命令,從這些輸出中找出包含“ay” 的文件名並打印,也可以用多個管道連接出復雜的命令 \
*******************************************************END**************************************************  
Copyright © Linux教程網 All Rights Reserved