# Linux 2020 讀書會 — 第二次 [toc] ## Subject 1 - 檔案與目錄管理 ### 目錄跟路徑 - 絕對路徑:自根目錄(/)寫起 - Example: /etc, /etc/mysql, /home/user - 相對路徑 :不是由根目錄(/)寫起 - 從現在目前路徑的上/下層尋找 - 路徑代號: - `.`:代表此層目錄 - `..`:代表上一層目錄 - `-`:代表前一個工作目錄 - `~`:代表『目前使用者身份』所在的家目錄 - `~account`:代表 account 這個使用者的家目錄(account是個帳號名稱) - 目錄操作 - `cd` : 變換目錄 - `pwd` : 目前所在目錄 - `mkdir` :建一個新的目錄 - 補充:`mkdir -p /tmp/foo/bar/test` 可以建立多層目錄 - `rmdir` :刪除==空==目錄 - 若要刪除非空目錄且刪除此目錄(包含底下的東西)要`rm -r +目錄名稱` - 執行檔路徑的變數 - `echo $PATH` - 查找指令 or 程式的順序 ### 檔案與目錄管理 - `ls` :預設顯示非隱藏檔的檔名 - 藍色:目錄 - 白色:檔案 - 紅色:壓縮檔 - `ls -l` : 長資料串列出,包含檔案的屬性與權限等等資料 (等同於 `ll`) - `vim ~/.bashrc` : 查看、設定alias(ll, la ...) - `cp` :複製檔案 - `cp -r` :複製資料夾 - `rm -i`:在刪除之前會詢問是否要刪除 - `mv` : 移動檔案、目錄或更名 - 更名:`mv 舊檔名 新檔名` - `cat` : 列出檔案資料 - `-n` : 顯示行號 - `-b` : 顯示行號並跳過空白行 - `tac` : 反向顯示(從底下顯示) - `nl` : 列出行號 - `less` : 翻頁檢視 - `head` : 取出前面幾行(預設10行) - `head -n` : 指定輸出行數 - `tail` : 取出後面幾行(預設10行) - 推薦安裝 : [bat](https://github.com/sharkdp/bat) - 可以高亮程式碼、顯示行號 - `-f` : 如果檔案持續有輸出,會持續顯示 - `touch -m` : 這個檔案什麼時候被變動過 - 檔案與目錄的預設權限 - `umask` : 777 - 出現的後三位數字 = 目前使用者建立檔案時的預設權限值 - 和 chmod 的不同 : chmod 是由 000 往上加,而 umask 是從最高權限往下減 :::info 舉例來說 umask 後三碼顯示為 022 r、w、x 分別是 4、2、1 022 代表: (無 -w -w) 建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r-- 建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x ::: - 檔案的隱藏屬性 - `chattr` (change attribute):設定檔案隱藏屬性 - `lsattr` (list attribute): 顯示檔案隱藏屬性 - 檔案的特殊權限 - SUID(Set UID) : 4 - 只對執行檔有效 (Binary Program) - 執行者必須要有執行權限 `x` - 執行的時候 (僅限 run-time) 會變成擁有者的權限 ![http://linux.vbird.org/linux_basic/0220filemanager.php#suid](https://i.imgur.com/y6GevHf.png) - SGID(Set GID) : 2 - 類似 SUID,但把使用者權限換成群組權限 - SBIT : 1 - 只有擁有者和 root 有權限刪除或移動目錄 ?! - `chmod [stickey bit]777` - 4 為 SUID - 2 為 SGID - 1 為 SBIT - 指令跟檔案的搜尋 - `which` : - 檔案檔名的搜尋 - `whereis` : 只找系統中某些特定目錄下的檔案 - 可利用 `whereis -l` 來看會找哪些目錄 - `locate` : 利用資料庫來搜尋檔名 (快) - EX:`locate -l 5 passwd` - `sudo updatedb` : 手動更新資料庫 (原先一天只會更新一次) - `find` : 直接搜尋硬碟內的檔案系統 (慢) - EX:`find / -mtime 0`找跟目錄底下往前推24小時的檔案 - EX:`find /home -user pinping`找 home 目錄下屬於 pinping 的檔案 - `find / -nogroup `找跟目錄底下 group 被刪除的檔案 - `find / -nouser `找跟目錄底下 user 被刪除的檔案 ### 補充 - `curl localhost:<port>` 查看網頁 - `tail -f`: 可看到 apache 等 server 的 log (持續追蹤 Log 輸出) - EX:`tail -f /var/log/nginx/access.log` - EXT/XFS : 系統格式可以安裝各個採用的作業系統來玩玩看 > [name=JackKuo] EXT : Linux 常見的檔案系統。就像是 NTFS, FAT 都是檔案系統,不同的檔案系統有不同特色,像是讀寫效率、可靠性、壓縮程度 - 可參考 [JackKuo 大學生涯誌](https://jackkuo.org/post/-%E6%88%91%E7%9A%84%E5%A4%A7%E5%AD%B8%E7%94%9F%E6%B4%BB-%E6%9A%A8%E5%A4%A7%E8%B3%87%E5%B7%A5/)