# Linux command 和概念 # 登入與登出(開機與關機) - telnet - telnet 主機位址(或主機名稱) - login - 登入 - exit - 離開 - shutdown - 關機 ``` [root@tsai root]# shutdown <== 系統在兩分鐘後關機,並傳送訊息給在線上的人 [root@tsai root]# shutdown -h now <==系統立刻關機 [root@tsai root]# shutdown -r now <==系統立刻重新開機 [root@tsai root]# shutdown -h 20:30 <==系統在今天的 20:30 分關機 [root@tsai root]# shutdown -h +10 <==系統在 10 分鐘後關機 ``` - reboot - 重新開機 ``` [root@tsai root]# sync; sync; sync; reboot // 寫入緩衝資料的之後重新開機 ``` # 多人多工與背景執行功能 - ps -aux - 則系統將會列出連同系統服務的程式 - kill - 殺掉執行中程式的指令搭配 ps 查詢PID ``` kill 110 ``` # 檔案與目錄管理 - cd - 變換工作路徑 ``` cd .. <== 回到上一層 cd <== 回到使用者目錄 cd /usr/bin <== 到 /usr/bin 這一個目錄 cd / // 移動到根目錄 ``` - pwd - 印出目前工作目錄 ``` pwd /usr/bin <== 顯示路徑囉! ``` - ls - 列出資料夾資料 ``` ls -la // -l 列出詳細資料 -a 列出隱藏資料 ls *.js // 列出為 .js 的檔案 ``` - cat - 將文件印出在終端機上 ``` cat .bashrc ``` - more - 一頁一頁看 ``` more .bashrc more cpuinfo:顯示有關cpu的訊息 more devices:區塊設備、字元設備 more filesystems:目前核心技援的檔案系統 more dma:直接記憶體存取 more interrupts:中斷向量值、中斷次數 more ioports:系統中每個設備的輸出/輸入埠的位址範圍 more meminfo:記憶體分配狀態 more pci:顯示PCI介面訊息 ``` - mkdir - 創建新資料夾 ``` mkdir test ``` - rm - 刪除檔案 ``` rm README.md rm *.js // 刪除目前資料夾下副檔名為 .js 檔案 rm -f examples // 刪除資料夾和所有檔案 rm -irf test // -i 刪除檔案前確認,要連同目錄下的東西一起殺要 rf rm -r // 刪除底下有檔案的資料夾 ``` - rmdir - 刪除目錄 - mv - 移動檔案或目錄的指令或是重新命名檔案 ``` mv .bashrc / // 當下的.bashrc 移動到根目錄, mv 來源檔(或目錄) 目的檔(或目錄) mv README.md README_MV.md // 重新命名 ``` - cp - 複製檔案 ``` cp .bashrc /home // cp 來源檔 目的檔 ``` - ln - 這是連結檔案或目錄的指令,通常我們都會加 -s 這個參數 不過請注意喔,在你的 /root 底下的 bin 這個目錄中的所有檔案其實都是 /usr/bin 裡面的東西,所以你如果進入 /root/bin 內亂殺東西的話,等於是將 /usr/bin 內的檔案殺掉喔! ``` ln -s /usr/bin bin // ln -s 來源檔(或目錄) 目的檔(或目錄) ln test.txt test_hardlink.txt // 這樣就會建立一個 test_hardlink.txt 硬連結檔,指向 test.txt 這個檔案(inode 會相同) ln -s test.txt test_softlink.txt // 軟連結的 inode 就會跟原始的檔案不相同。 ``` - find - 尋找檔案的指令,會將欲尋找的檔案找出來 ``` find / -name bin // find 路徑 -name 檔名 #根據檔名 find folder -name newTxt.txt #在folder底下搜尋newTxt.txt檔案 find folder -name new*.txt #在folder底下搜尋new開頭的txt檔案 #根據類型 find / -type d -name myFolder #在根目錄找尋目錄myFolder find . -type f -perm 0777 #在該目錄找尋權限 777的檔案 #根據時間 find myfolder -mtime 0 #24小時內folder內有更動過內容的檔案 find myfolder -mtime -4 #4天內folder內被有更動過內容的檔案 ``` - whereis - 對於 find ,你也可以使用 whereis 這個指令來下達找尋的檔案,whereis 利用曾經找過的系統資訊內的資料去找檔案,所以速度會很快,不過,如果 whereis 找不到的話,並不代表該檔案真的不存在!這個要小心! ``` whereis bin ``` - chmod - 這是變更檔案屬性的指令,通常鳥哥都是以數字作為改變屬性的依據;在檔案的屬性中, r 為4分、w 為2分, x 為1分,如果你想要讓你剛建立的一個檔案 ``` chmod 644 .bashrc ls -al .bashrc ``` - chown - 記得檔案有『擁有人』及『擁有群組』吧,這個 chown 就是在改變擁有者的指令 ``` cp .bashrc /home/vbird /home/vbird chown vbird .bashrc ``` 那如果想要將整個目錄下的檔案都改變擁有者與擁有群組呢?可以下達 ``` chown -R username:groupname directory (ex> chown -R root:root /root) ``` - chgrp - 改變檔案或目錄的『擁有群組』 - df - 察看硬碟空間 ``` df df -m // 顯示 MB ``` Filesystem 是硬碟所在的劃分表, Used 是指使用掉的硬碟空間(KB),Available是剩下空間,Mounted on則是這顆硬碟代表哪一個目錄 - du - 察看目錄內所有檔案使用掉的空間的情況 ``` du -m ``` - touch - 用來更新已存在文件的 timestamp 時間戳記或是新增空白檔案 - tail - 顯示檔案最後幾行內容 - head - 顯示文檔前10行內容 # 系統管理員 - su - 這是一個用來轉換你身份成為 super user (系統管理員)的指令 - clear - 清除螢幕畫面用的 - dmesg - 顯示系統的資訊 ``` dmesg|more ``` - groupadd - 增加群組的指令 - useradd - 增加使用者的指令也可用 `/bin/userconf` - userconf - 增加使用者、群組等,且以視窗為介面的一個指令 - passwd - 更改密碼 - who - 視察目前在系統上的使用者指令 - whoami - 確認你目前的身份的指令 - top - 指示目前系統的服務項目的動態資料 - free - 察看記憶體 # 壓縮指令 - compress - 壓縮及解壓縮檔名為 .Z 的壓縮檔 ``` compress xxxxx <==將 xxxxx 檔案壓縮成為 xxxxx.Z 檔名 compress -d xxxxx.Z <==將 xxxxx.Z 解壓縮成 xxxxx ``` - gzip - 壓縮的檔名為 .gz ``` gzip xxxxx gzip -d xxxxx.gz ``` - tar - 壓縮指令 注意了,用 compress 及 gzip 壓縮及解壓縮的時候,會將原檔案取代掉!而使用 tar 來壓縮及解壓縮的時候,原檔案將會與產生檔案同時存在!通常我們都是使用 tar 來進行壓縮或解壓縮的!(當然,你還是可以使用 compress 及 gzip 來壓縮一個大的檔案!) ``` tar -xvf *.tar *(其中 * 為你所要整合的目錄名稱)。 tar -cvf bird.tar bird <==只有將目錄轉成一個檔案,沒有壓縮 tar -zcvf bird.tar.gz bird <==壓縮一整個目錄成為 .tar.gz 檔案 // 解壓縮 tar -xvf bird.tar tar -zxvf bird.tar.gz ``` # 網路功能 - ifconfig - 查詢目前我們這個系統的網路卡的狀況的指令,可以查詢 IP、子遮罩網路及網路卡的硬體資訊等等 - route - 網路通訊包傳送的路由情況的指令 - netstat - 觀察網路狀況的指令 - hostname - 觀看你的主機名稱 - ping - 察看對方網路是否有動作的指令 ``` ping google.com ``` 離開是 `ctrl + c` - nslookup - 查詢或反查詢 DNS 的指令 - mail - 收發信件的指令 # 服務 - service --status-all - 列出運作中的系統服務 - service nginx status - 狀態 - service mysql start - 服務開始 - service mysql stop - 停止 - service mysql restart - 重新啟動 # 其它 - date - 顯示日期 - cal - 日曆 - grep - 搜尋某些特定字元的指令 ``` // 例如使用 ps -aux 查詢系統服務時,我們只需要知道 sendmail 是否有動作,則可以使用管線指令『|』來加入 grep 這個指令同時運作。 ps -aux|grep sendmail ``` - file - 顯示文檔類型 - echo $LANG - 目前語系 - bc - 計算機 - man - 查詢指令用法 ex: man date - cat /etc/os-release - 查詢OS相關資訊 - last - 列出目前與過去登入系統的使用者相關資訊 - crontab - 設定每天或每月定期執行的指令 # 快捷鍵 - Tab - 命令補齊 - ctrl + c - 中斷程式 - ctrl + l - 清畫面 (像clear) - ctrl + d - 離開 (exit+enter) # 檔案權限設定 ![image alt](https://static.coderbridge.com/img/techbridge/images/kdchang/cs101/linux-ls-al.png) 1. 第一欄:使用者權限 2. 第二欄:檔案數量 3. 第三欄:擁有者 4. 第四欄:群組 5. 第五欄:檔案大小 6. 第六欄:檔案建立時間 7. 第七欄:檔案名稱 - chmod:修改檔案權限 ex: chmod 664 README.md - chown:修改檔案擁有者與群組 # 根目錄底下的目錄 | 目錄名稱 | 說明 | | -------- | -------- | |/bin| 放一些一般使用者可以操作的指令。連結到 /usr/bin kill、cp| |/sbin| 放置系統管理員可以操作的指令。連結到 /usr/sbin | |/boot| 系統開機相關的一些載入檔 | |/etc| 系統設定檔案 | |/home| 主要是一般帳戶的家目錄 | |/root| 系統管理者的家目錄 | |/lib, /lib64| 主要為系統函式庫和核心函式庫,若是 64 位元則放在 /lib64。連結到 /usr/lib, /usr/lib64 | |/proc| 整個系統的運作資訊 | |/sys| 與 /proc 類似,但主要針對硬體相關參數 | |/usr| 全名為 unix software resource 縮寫,放置系統相關軟體、服務(注意不是 user 的縮寫) X-Window| |/var| 記載著各種系統上的變數的地方 | |/tmp| 全名為 temporary,放置暫存檔案(雜七雜八的東西) | |/media| 放置隨插即用的裝置慣用目錄 | |/mnt| 為管理員、使用者手動掛上(mount)的目錄 | |/opt| 全名為 optional,通常為第三方廠商放置軟體處 | |/srv| 通常是放置開發的服務(service),如:網站服務 www 等 | |/vmlinuz| 系統核心檔案 | |lost+found| 系統檢查結果 | |/run| 系統進行服務軟體運作管理處 | |/cdrom| 光碟機裡的資料被掛上來的地方 | |/dosc| 開機時把 dos 檔案系統掛上來的地方 | |/dev| 放置 device 裝置檔案,鍵盤滑鼠等| # 參考資料 - [Linux 基本指令介紹 - for Red Hat Linux 6.1](https://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php#ls) - [Linux常用指令](https://hackmd.io/@Eotones/Hy7LCIteE?type=view#Linux%E5%B8%B8%E7%94%A8%E6%8C%87%E4%BB%A4) - [Linux常用指令](http://nmc.nchu.edu.tw/tanet/linuxcommand.htm) - [你不可不知的Linux常用指令](https://bingchengqiu.medium.com/%E4%BD%A0%E4%B8%8D%E5%8F%AF%E4%B8%8D%E7%9F%A5%E7%9A%84linux%E5%B8%B8%E7%94%A8%E6%8C%87%E4%BB%A4-a22cca75411a) - [DAY3 Linux常用指令介紹](https://ithelp.ithome.com.tw/articles/10238754) - [【L】Linux 常用指令集](https://blog.xuite.net/chingwei/blog/16285667-%E3%80%90%EF%BC%AC%E3%80%91Linux+%E5%B8%B8%E7%94%A8%E6%8C%87%E4%BB%A4%E9%9B%86) - [Linux 建立連結檔 ln 指令教學與範例](https://blog.gtwang.org/linux/linux-ln-command-tutorial-examples/) - [Linux 基本認識與常用指令整理](https://dylan237.github.io/linux-basic.html) ###### tags: `2021` `linux` `command` `快捷鍵` `檔案權限`