# Linux ##### 中和高中 吳振榮 ## linux基礎用法 第一個輸入大多為命令(command),後面家的通常為跟著這個命令的參數,參數都是用空格分開,不管加多少空格,terminal都會認為只加了一個空格。在最一開此使,@前面是用戶名,在@後面是計算機名 ### @ at在 ### computer:後第一個字元(Home Directory):為所在文件夾的名字 ### computer:後第二個字元(Prompt):提示符 ### uname 1. <span style = "color:green">uname</span> :會印出內核名字。 2. <span style = "color:red">uname -a == uname --all</span>:會印出系統的所有的資訊,會忽略未知的處理器與未知的硬件平台。 3. <span style = "color:red">uname -s == uname --kernel-name</span>:會印出顯示於網路上的主機名稱。 4. <span style = "color:red">uname -r == uname --kernel-release</span>:會印出內核的版本。 5. <span style = "color:red">uname -v == uname --kernel-version</span>:會印出內核運行於哪個linux上,和實際發行的日期。 6. <span style = "color:red">uname -m == uname --machine</span>:會印出電腦類型:x86_64(為64位元架構,如為32位元會如:x86_32) 7. <span style = "color:red">uname -p == uname --processor</span>:會印出處理器類型:x86_64(為64位元架構,如為32位元會如:x86_32) 8. <span style = "color:red">uname -i == uname --hardware-platform</span>:會印出硬件平台類型:x86_64(硬件平台包括如CPU、儲存裝置、主機板等等硬體) 9. <span style = "color:red">uname -o == uname --operating-system</span>:會印出操作系統名稱:GNU/Linux(作業系統,如windows) 10. <span style = "color:red">uname -h == uname --help</span>:會印出這個指令的幫助,與各個參數的功能 11. <span style = "color:red">uname --version</span> :會印出這個指令(uname)的版本與其他訊息(包括聲明、授權等等) ### ctrl+c :強制中斷某一支程式。 ### exit :離開系統。 ### cal :看月曆 。 ### cal :年份 :看某年的年曆。 ### cal :年份 月份 :看某年某月的月曆。 ### bc :計算機(此情況不能用小數)。 #### scale = 小數位數。 #### quit :退出bc。 ### file :查看文件訊息。 ### pwd(Print Working Directory) 取得目前的路徑 ### ls(list) 取得當前資料夾與檔案名稱 #### ls -l: 顯示出的資料的第一個區塊為顯示使用者權限,排除第一個字元<span style = "color:red">(第一個字元如果是dash(-),此檔案即為文件,如果是d,則為目錄)</span>,剩下字元為三個三個一組,共三組,第一組是user,第二組是group,第三組是other。順序必為rwx,r(read),w(write),x(execute),若有權限則會顯示出該字元,若沒有權限則會顯示'-'(dash),而這三組的權限分別為第一個是文件所有者的權限、第二個為用戶組的權限,第三組為其他人的權限。 ### chmod(change mode) 如果你想要更換權限,可以使用這個命令,command:chmod u+r t.py,用法是第一個加入chmod指令,第二個是輸入你想更改權限的對象,user是u,group是g,other是o,接著+後面是加上你要給予的權力,注意如果是要刪除某項權力,就加上-減號,接著加上以下就是給予的權力,r(read),w(write),x(execute),最後加上檔案名稱。 ### 直接執行檔案 ./file.py 如果要直接執行某個檔案時可以直接使用這個指令,假設有一個檔案叫做test.py,然後我們想要執行他,所以輸入:./test.py,此時會發現出錯了,原因是你要在test.py的第一行加入一段指令,代表說這份文件要通過什麼來運行,而這邊我輸入#!/usr/bin/python3,之後再輸入:./test.py,即完成。 ### linux有一個特性,就是所有東西都是一個文件。 ### linux大小寫必須區分,在linux中大小寫是不一樣的東西。 ### 在terminal中可使用TAB鍵來補齊一些物件或檔名(善用TAB鍵)。 ### lscpu :查詢 CPU 規格。 ### / :根目錄。 #### bin :放置執行文件。 #### boot :放置開機會運用到的文件。 #### dev :接口設備都會存取在dev中。 #### etc :系統主要配置文件,例如用戶的帳號密碼、服務的起始文件。 #### home :主文件夾的位置。 #### lib :開機時會用到的主函式庫。 #### media :放置可以刪除的設備。 #### opt :第三方程式的放置目錄。 #### root :系統管理員的主文件夾。 #### sbin :放置一些只有系統管理員才可以執行的執行命令。 #### srv :服務取用數據的目錄。 #### tmp :放置一些臨時的文件,需定時清理。 #### usr :unix操作系統的支援(不是user!!!!!),可放置一些系統默認程式。 #### var :放置快取 ### cd(Change Directory) :切換目錄。 #### 絕對路徑 :是由根目錄也就是最前面的那一個目錄開始向下輸入的(要加/),不管在哪裡,只要有絕對路徑都可以去。 #### 相對路徑 :相對於當前工作目錄(pwd),不是從根目錄開始。 #### cd . :當前目錄。 #### cd .\. :該目錄的上一層目錄。 ### man(manual page) :指令查詢 ### mkdir :創造路徑 #### 創造多層目錄: ##### -p :可以幫你把上一層目錄也創建好(如果上一層目錄不存在的話)。 ##### -pv :v的功能可以幫你顯示他正在執行甚麼。 ### rmdir :刪除目錄。 #### -p :可一次刪除多個目錄 ### touch :創建空文件,主要功能為修改文件,如果該文件不存在,則會創造一個空文件。 #### -a :修改訪問時間。 #### -c :修改文件時間,若不存在則不創建新文件。 #### -d :使用指定日期,而不是當前日期。 #### -m :僅修改mtime。 #### -t :使用指定的時間而不是當前的時間。 ### cp :複製,用法 cp a b ,將a複製給b。 ### echo發送文字: 用法 echo "word"。而且會換行。 #### 將文字輸入進一個檔案裡: 用法 echo "word" > data.txt。 如果是用 > 寫入的話會將原本的覆蓋,所以要使用 >> 才能延續檔案原本的資料 echo "word" >> data.txt。 ### cat(concatenate)顯示出檔案裡的文字 用法 cat data.txt #### cat 合併資料輸出 用法 cat first.txt second.txt #### 將兩個檔案合併出一個新的檔案 方法 cat first.txt second.txt >> third.txt,要加 >> 。 若要合併更多檔案,就以此類推 ### 用printf輸出 用echo和printf的最大差別是echo會換行而printf不會換行。 也可以使用printf輸入一個檔案,和echo一樣 ### vim文字編輯器 vi和vim.tiny和vim這三個功能極為相似,不同的地方是有些功能比較多,通常在linux中vim要另外裝。 此處使用vim.tiny,要進行文字編輯的方法:vim.tiny data.txt,按enter鍵後再按 i 即可進行編輯,當編輯完之後想要結束編輯,先按Esc,再按 : ,接著如果想要將剛剛編輯的資料寫進去,則按w,如果想直接退出,按q,如果進行編輯後不想儲存,就輸入q!即可強制退出。若想退出又要寫入,就按wq。 ### 下載vim 首先到ubuntu商店下載vim,接著去terminal輸出apt-get,apt-get會去網站上找有關你要下載的套件,但是如果apt-get沒有更新,他上去找的網站還是舊的,此時要把你的apt-get更新,因此輸入apt-get update,但此時又會出現錯誤,因為update此動作為較高階的動作,所以以目前的狀態是沒有權限執行的,所以要在apt-get前加sudo,此時作業系統會嘗試以超級使用者的方式幫你去做執行,所以輸入完sudo apt-get update即可完成網站的更新,更新完之後輸入sudo apt-get install vim,即可進行安裝,如果要移除,就輸入sudo apt-get remove vim ### whereis 查看東西在哪裡,會顯示所有相關的路徑。 whereis name ### which 會明確跟你說東西的實際路徑。 ### 查看物品的實際位置 以vim為例 方法 : ls -al /usr/bin/vim 接著會顯示一個箭頭 ->會指向一個地方,這就是軟連結,會指向更精確的地方,可以再繼續使用那個位置尋找更精確的位置。 ### vim 基本用法和vim.tiny一致,接著為vim的一些基礎指令。 :set nu 在每一行前面加數字編號。 輸入 dd 即可快速刪去該行。 輸入d2d可以快速刪除兩行 在前面加 / 後面加你想搜尋的文字。 按u可以undo 按ctrl+r是redo ## linux ssh 首先要再其中一台linux上獲取ip位置(稍後要給其他電腦做連接),首先先下載net-tools(稍後要使用的ifconfig是其中一部分),接著輸入ifconfig,然後往下滑可以找到你的ip位置,或者輸入ip addr show,也可以看到你的ip位置。接著在另一台電腦輸入:ssh username@ip,username是你linux的名稱,ip是你的ip位置。 <span style = "color:red">mac 用戶:</span> 如果是mac用戶且同時想要利用ssh在自己的mac上看到matplotlib的結果,要先安裝XQuartz,安裝完後在terminal裡輸入的不再是ssh user@ip 了,是要改輸入<span style = "color:red">ssh -X user@ip</span>,這樣才能看到matplotlib的效果。 ### linux查詢gpu型號 輸入 lspci | grep -i nvidia ,會顯示出幾行文字,例如: 01:00.0 VGA compatible controller: NVIDIA Corporation Device 1e84 (rev a1) 01:00.1 Audio device: NVIDIA Corporation Device 10f8 (rev a1) 01:00.2 USB controller: NVIDIA Corporation Device 1ad8 (rev a1) 01:00.3 Serial bus controller [0c80]: NVIDIA Corporation Device 1ad9 (rev a1) 然後看第一行的最後面 1e84 ,這個就是型號,但我們還是看不出來實際的型號,所以去這個網站上輸入你的型號:http://pci-ids.ucw.cz/mods/PC/10de?action=help?help=pci 可以查到這張gpu是GeForce RTX 2070 Super。 ### 查看ubuntu版本 cat /etc/issue ### 更改檔案名稱 mv 原檔案名稱 更改的名稱 ### 查看目錄裡資料的數量 1. ls -l|grep "^-"| wc -l , find ./ -type f | wc -l: 查看當前目錄的所有資料數量(<span style = "color:red">不包括</span>子目錄資料數量)。 2. ls -lR|grep "^-"| wc -l : 查看當前目錄的所有資料數量(<span style = "color:red">包括</span>子目錄資料數量)。 3. ls -l|grep "^d"| wc -l : 查看當前目錄的所有資料夾目錄個數(<span style = "color:red">包括</span>子資料夾目錄個數)。 ## tmux 1. tmux:進入tmux。 2. tmux attach:進入預設第一個Session。 3. tmux new -s "tmp":新增、進入一個名為tmp的Session。 4. tmux ls:列出所有的Session。 5. tmux detach:暫時離開目前的Session。 6. `Ctrl`+`D`:關閉/結束目前的Session。 7. tmux kill-session -t "tmp":關閉、結束名稱維tmp的Session。 ### Panes分割視窗 1. `Ctrl`+`b`+`%`:垂直分割視窗。 2. `Ctrl`+`b`+`"`:水平分割視窗。 3. `Ctrl`+`b`+`o`:輪流切換pane。 4. `Ctrl`+`b`+`方向鍵`:切換指定方向的pane。 5. `Ctrl`+`b`+`空白鍵`:切換佈局。 6. `Ctrl`+`b`+`!`:將目前的pane抽出來,並獨立建立一個window視窗。 7. `Ctrl`+`b`+`x`:關閉目前的pane。 ### Windows視窗 1. `Ctrl`+`b`+`c`:建立新的window視窗。 2. `Ctrl`+`b`+`w`:以視覺化選單切換window視窗。 3. `Ctrl`+`b`+`n`:切換至下一個window視窗。 4. `Ctrl`+`b`+`p`:切換至上喔個window視窗。 5. `Ctrl`+`b`+`數字鍵`:切換至指定的window視窗。 6. `Ctrl`+`b`+`&`:關閉目前的window視窗。 ### Session 1. `Ctrl`+`b`+`$`:重新命名目前的Session。 2. `Ctrl`+`b`+`d`:離開tmux環境。 3. `Ctrl`+`b`+`s`:視覺化選單切換Session。 4. `Ctrl`+`b`+`L`:切換上一個使用過的Session。 5. `Ctrl`+`b`+`(`:切換上一個Session。 6. `Ctrl`+`b`+`)`:切換下一個Session。 7. 想回去特定的Session: ```tmux attach -t "session name"```<span style="color:red">(請忽略雙引號)</span> 8. 修改Session名稱:```tmux rename-session -t "origin seesion name" "new name"``` <span style="color:red">(請忽略雙引號)</span> 9. 刪除某一個Session: ```tmux kill-session -t 0``` 或是 ```tmux kill-session -t <session_name>``` 10. 刪除所有Session: ```tmux kill-session -a``` 11. 快捷鍵: ```= 快捷鍵/視窗管理 C-b ? Help C-b c 新增視窗 C-b, 視窗命名 C-b w 視窗列表 C-b f 尋找視窗 C-b & 刪除視窗 C-b % 垂直分割區塊 C-b “ 水平分割區塊 C-b <方向鍵> C-b p 上一個視窗 C-b n 下一個視窗 C-b <number> 依照編號直接切換(編號顯示於狀態列) C-b d 離開 session C-b x 關閉 Pane C-d 關閉 Pane C-b z 讓一個 Pane 變成全螢幕,在輸入一次則回到剛剛的尺寸 ```