類似於windows的shell/cmd,linux的terminal可以做很多很多事。
Terminal的font,size, color甚至cursor都是可以根據個人喜好做修改 ,只需要右擊點profile-profile preferences就可以修改了,在最左邊可以看到terminal的圖標,如果需要固定,右鍵選擇”unlockfrom launcher”即可
打開terminal後首先看到的是我們之前設定的username@hostName想要查看當前目錄位置,可以輸入 pwd回車 [print working directory]
快捷鍵ls 可以list該目錄下的文件夾和文件
快捷鍵 ls -l 會列出該目錄下的文件文件夾的詳細信息
快捷鍵 ls -a 會列出該目錄下所有文件(包括隱藏文件),隱藏文件在linux中也叫dot file/’.’ File [對應windows cmd下的h屬性]//.file 沒有意外不要去修改嗯
上面的-l和-a可以聯合起來使用,在terminal裡輸入ls-la回車,列出的就是所有的文件文件夾的詳細內容
嘗試了基本的命令後,屏幕還是有點messy的,清理屏幕的話可以直接輸入clear回車,就會回到最初狀態了
通過terminal閱讀文本文件,可以通過輸入cat + 路徑來實現。
比如在桌面新建文本命名為text, 打開後輸入文本內容並保存。
在terminal中輸入catDesktop/text 回車,可以看到文本內容顯示在了terminal上
在terminal裡,cd是change directory, cd 加文件夾名可以進入文件夾[和windows的shell一樣]
回到上層目錄只需輸入cd .. 即可[同windows]
如果在terminal裡想回到home,直接輸入cd回車即可
新建目錄:mkdir 加文件名
移除目錄:rmdir 加文件名 【只在目錄裡面沒有文件時可用】
新建文件:touch 加文件名 【如果已經有了同名的文件則不會新建】
移除文件:rm 加文件名
當前目錄復制文件:cp 復制的文件名 復制後的文件名
移動文件:mv 文件名 目標目錄【移動到其他目錄】,mv 文件名 新文件名【當前目錄下重命名】
我們有一個文本文檔,需要搜索文檔裡匹配的字段,這時候可以用grep 關鍵詞
來到需要搜索的文檔的目錄下,輸入 grep 搜索字段名 搜索文件名 再回車即可
在文檔所在目錄下 輸入diff文檔1名 文檔2名 回車即可
-修改密碼 輸入關鍵字passwd回車 會提示先輸入原密碼,再進行修改
-變量賦值 變量名=變量值[等號左右沒有空格]
-關鍵詞 echo 加文字內容,表示顯示echo後面的內容;echo$變量名 表示顯示變量
-關鍵詞 info 加命令詞 會給出該關鍵詞的信息
-點擊鍵盤上下鍵可以迅速回顧之前已經輸入的命令
有時候我們想保存在terminal顯示的信息,可以在正常輸入的命令後面加 ‘>’ 再加希望命名的文件名即可,’>’ 不僅可以創建一個新文檔(如果路徑下沒有輸入的文件名),也可以重寫一個文檔 (如果路徑下已經存在同名的文檔)
如果想在原文檔後面加上新的內容,將’>’改為’>>’即可
以下面路徑的文件為例,每一行前面的內容即文件的權限
第一個字符如果是’-’, 代表這是一個文件;第一個字符如果是’d’,代表這是一個目錄
r.w.x read, write, execute
可以看到每個文件文檔前面是有三組3個字符的權限的,第一組是針對文件所有者的權限,第二組是針對整個小組的權限,第三個是針對其他用戶給的權限
U – user, g – group, o – other people
修改權限可以使用chmod 加希望修改權限的組+ 修改的權限符號 加希望修改的文件名
對應這些權限,有一個偷懶的方法:
4 – read
2 – write
1 – execute
0 – no permission
7 – combining all the numbers
如
Chmod 777 test 表示給user,group和other讀寫加執行的權限
每當我們下載一個文件,會對應一串SHA-1來確保這個文件是我們所下載的沒有問題的。
如我們下載raspberry pi下面的NOOBSLITE文件,可以看到網頁提供給我們一個SHA-1, 這時候我們可以在terminal進入下載目錄,輸入shalsum加文件名 回車,會看到出來一串的字母和數字 ,如果這串信息和網頁提供給我們的SHA-1一致,那麼這個文件就是我們下載的正確的文件。
比較這兩串數字可以直接在terminal比較,在上一個命令下加入| grep 加網頁中的字符串 回車,如果說結果是紅色,表示這兩個字符串內容一致
如果說擔心網頁上提供的SHA-1是篡改過的,希望可以更加保險的話,可以換一個網絡或者問問其他人得到的是否也是同樣的字符串
壓縮文件: 關鍵詞gzip 文件名 [注: 文件名如果有空格的,需要在空格前面加一個’\’,在terminal裡,默認空格後面出現的是一個命令]
解壓縮文件:關鍵詞gunzip 文件名.gz
壓縮不止一個文件:tar cvf 文件名.tar加上所有需要壓縮的文件名
[c 創建, v 終端顯示結果,f file選項]
解壓縮tar文件:tarxvf 文件名.tar [x: extract解壓縮]
Super user可以用root來管理,但root權限運用可能操作不當引起不必要麻煩,所以慎用。除了root我們可以用sudo(super user do)
管理用戶
我們可以新建一個文檔在桌面,-la查看發現naomi出現兩次,這是因為主用戶是naomi,當有主用戶時,系統會自動給主用戶劃分到組裡,這個組的組名同主用戶名
關鍵詞:sudo useradd 新用戶名 回車,系統提示輸入super user的密碼,輸入後給新用戶創建密碼:sudopasswd 新用戶名 即可
輸入passwd回車 按照提示修改即可
在terminal裡可以通過關鍵詞來安裝更新軟件
如:輸入sudo apt-get update ,會自動幫我們下載更新軟件[sudo: super user do ]
如果想在terminal看是否安裝某個軟件,可以這樣查看
比如查看java: 輸入java-version回車得到如下結果
可以看到已經安裝好了java
如果沒有安裝php5:
輸入php5 -version 可以看到下面提示沒有安裝, 可以通過sudo apt-get install php5-cli進行安裝
如果下載了軟件但是由於比如文件太多不知道該如何安裝,可以先cd進入home目錄,cd安裝包名/bin 回車,輸入ls回車。 我們可以看到.sh結尾的文件,.sh指shell script, 是可以從terminal直接運行安裝的,可以通過關鍵詞bash加文件名回車直接運行
輸入sudo apt-get install ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4 安裝,然後im-config -s ibus來啟動ibus
在ibus裡可以選擇中文的拼音或五筆等輸入法
Group可以很方便的給一個組/多人設置權限
新建group:sudo groupdadd 組名
給組加入組員: sudo usermod -a -G 組名 組員//-g和-G區別在於 每個組員都屬於組員組,如果是-G,這個組員會被加入到一個新的組,如果是-g,組員則會先從原本的組剔除,再加入新的組
刪除組員:sudo userdel 組員
在terminal輸入cd../.. 可以退回兩層或者回到最外層目錄,回去後輸入ls可以看到,下圖中的etc即我們的配置文件configuration files ,進入到etc目錄,列出所有文件可以看到所有的密碼都在這個目錄下 ,但是cat所有的password只會看見密碼都是x,因為linux會給所有的密碼做加密,我們不會真的看到密碼,X表示密碼保存在shadow文件裡。如果想查看shadow,就會出現拒絕訪問:
如果行駛sudo權限查看密碼,會看到:
這裡面的’*’表示這個密碼並非登陸訪問密碼
其他的密碼可以看到也是加了密的
通常我們不需要去了解這些幕後的信息,也不要去擾亂這些信息,linux已經給我們創造了一個相對安全的環境
這可以讓我們和其他地方的服務器取得聯系,也可以讓我們更好管理自己的網站
直接使用純文本密碼來連接服務器是很容易被破解的,但是如果用SSH,基本就很難破解了。
在此我們是用的Digital Ocean的VPS,如果有更好的其他的選擇歡分享。關於如何選擇和使用,可參考DigitalOcean的tutorial。Digital Ocean的服務器叫droplet,注冊登陸後兩小時內會有賬號確認郵件,確認後就可以創建自己的droplet了,可以根據自己需要選擇服務器,DO是收費的,可以選擇其他的VPS也歡迎交流。
我這邊是根據自己的簡單需要選擇了最基本的,確認信息後就開始創建了,創建OK會收到確認郵件,包括IP地址和密碼等信息。
現在,我們打開terminal,輸入[email protected] root是我們現在用的username,@後面是郵件裡收到的IP地址,這一步驟就是我們以root的身份去登陸提供的IP。回車後收到下面信息,選擇繼續。
根據提示重設密碼,設置成功登陸到服務器,進行操作看到的東西就是服務器上的了。
一直以來密碼驗證總是很容易被破解的,而SSH key就安全多了
我們需要有兩個key,一個是privatekey,用於我們的個人電腦,另一個是public key,在服務器上,每當這兩個key通過一個formula轉換後相匹配,就work了。
首先,我們要生成這兩個key,這時候不需要登陸服務器,打開terminal,
輸入ssh-keygen -t rsa 回車,出來自動生成key的提示並給出默認的保存key的路徑,不需要修改路徑,直接回車即可。如果想給文件加密可以設置密碼,回車確認。
看到下面圈出來的部分,黃色部分是生成的private key,藍色是publickey
保存key的信息可以輸入ssh-copy-idroot@ip地址 回車,根據提示輸入密碼後,提示已經將key信息添加
現在我們重新打開terminal後再次登陸server,可以看到,已經不需要再輸入密碼信息了,電腦上的private key可以讓我們直接登陸到server了,既方便又很安全。
在terminal裡登錄服務器,然後輸入nano/etc/ssh/sshd_config 回車,看到一串的配置文件,向下找到PermitRootLogin看到顯示是Yes,在此我們將yes改為without-password,按住ctrl+x,選擇Y, 然後回車保存,接著一行輸入reload ssh回車,這樣我們做的更改就生效了。
現在我們登陸就方便了,即使其他人知道我們的密碼也沒有辦法,因為key是在我們電腦上的,所以非常安全。
首先在桌面創建了一個網頁文件和包含網頁的目錄文件,做文件上傳用。
SFTP類似FTP,不過是用ssh來傳輸的。
打開terminal,輸入sftproot@服務器地址 回車,連接上服務器
為了確保我們在服務器的root目錄,輸入cd../.. 回車,然後輸入ls -la回車,我們可以看到裡面有很多的文件,這裡我們上傳的是一個html文件,為了進入html保存路徑,輸入cdvar/www/html回車,上傳html文件直接在html目錄下輸入putDesktop/html文件名 回車,可以看到文件已上傳,刷新服務器頁面可以看到我們上傳的頁面,如果要上傳一個文件夾,同樣在html目錄下輸入put-r Desktop/文件夾名 回車,然後我們在服務器頁面地址後面加上/文件夾名就可以看到文件了。
接下來我們嘗試從服務器下載文件到桌面,以剛上傳的頁面和文件夾為例,(先刪掉桌面上的html文件和目錄),在服務器html目錄下輸入get頁面文件名 Desktop 回車,即可將服務器上的網頁下載到電腦桌面上,如果想下載目錄,可以先cd ..回到上一層目錄,接著輸入get-r html Desktop, 即將html整個目錄下的所有文件和文件夾都下載到桌面上來,至此我們就通過sftp完成了從服務器的上傳和下載。
關於分區,有一個是用工具GParted, 獲取工具的方法,在terminal輸入sudoapt-get install gparted 回車,gparted就開始下載了,下載完成後運行只需要輸入sudo gparted回車即可。運行後會跳出Gparted, 我這裡插入了自己的移動硬盤,點擊右上角可以看到Linux對空間的命名方式不同於Windows(C:/D:/E:/), ta是以sda, sdb 來命名的,而下面的partition裡,sda下面的區域又分為了sda1,sda2 …
我們可以用一個U盤來更好的理解,我這裡用的是空白U盤。每當我們要分出一個區來的時候,首先要設一定的空間,當設定好這部分空間了(比如8GB),接著我們要設置這部分的系統文件,即確定好這部分區域的構架。
在GParted最上面View的下拉菜單File System Support可以看到一串的system support信息,ext3是linux常用的,如果想給自己的U盤設立好filesystem且和不同操作系統都兼容,fat32, ntfs是比較好的選擇,市面上大部分的盤也都是fat32,ntfs就是了。
選擇想要查看的磁盤,點擊view-device information可以看到磁盤基本信息,比如我的U盤filesystem就是FAT32,選中U盤,點擊partition-information也可以看到U盤的基本信息。在刪除U盤或者分區前,我們需要先unmount [partition-unmount],相當於先解除這塊區域的鎖定,接著我們就可以delete了。Delete完後U盤就變成了unallocated,點擊上面的勾選項,確認,現在我們的U盤就是一塊未分配的區域了。
這裡我們將U盤分為兩個區域,分之前先創建分區表[device-create partition table], 選擇默認的msdos即可,確認。接下來我們就可以來新建分區了,新建分區可以點partition-new也可以直接點擊左上角的加號鍵,輸入你希望的區域大小,選擇希望的system file類型並命名區域,確認,這樣一個新的區就分好了。
可以看到我們的硬盤是sda, U盤是sdb,U盤分區是sdb1, sdb2 當然有更多區也會出現sdb3等。雖然sdb1,2是一個U盤的,但在電腦看來他們是不同的區,可見這是一個很好的讓我們分開文件擺放管理的工具。
在文檔前面輸入#!/bin/sh,這一行會告訴計算機,文件打開運行需要在shell裡。[#後面的內容是注釋部分]
我們在文檔裡寫上簡單的命令,保存好在桌面。
接下來運行文件,打開terminal,進入桌面目錄,可以看到剛剛寫的文檔在桌面目錄下,現在運行剛剛寫的小代碼,輸入bash文件名回車,即可看到,小代碼裡的命令已經執行,列出了文件下的文件和目錄。
shell很方便也很強大,挖個坑以後再填好了。
在terminal裡輸入ps回車,會看到所有的進程列表
輸入ps ax回車,會看到不僅現在運行中的進程,還包括所有在後台的進程
運行中的進程可以看到有屬性PID即進程ID,TTY告訴我們某個程序運行的終端,TIME是指一個程序占用的CPU時間,CMD即command。
我們運行的ls, ps等其實都是小的程序,當執行完命令,程序也就結束了。而輸入xlogo這個命令,我們看到屏幕上跳出來一個框,當框在的時候我們就沒法輸入新的命令,當我們關閉xlogo框的時候,我們就又可以輸入新的命令來控制terminal了。
所以說,每當我們通過terminal來控制的時候,只會有一個process,只有當當前的process結束了,我們才可以進行下一個。 然而很多時候當我們在進行一個process的時候特別是在這個process很耗時的時候我們不會願意就一直等著process一點一點完成,會希望ta在後台默默進行,這樣至少我們自己可以去做其他事情,而不是花那麼多時間等當前進程結束。以xlogo為例,我們在運行xlogo後,可以點紅叉關閉框框,或者我們可以在terminal按住ctrl和c,這個步驟即通過command line來打擾並停止當前進程;如果我們希望ta可以在後台默默進行的時候,我們可以輸入 程序 & 回車,下圖可以看到我們的xlogo是在運行的,同時我們可以在terminal輸入新的命令。輸入ps後可以看到xlogo是在運行的,PID即我們在讓xlogo在後台時出現的id代碼,前面的[1]是這個進程的job number。
如果我們不記得運行的程序的job number,可以在terminal直接輸入jobs回車,如下圖,可以看到xlogo正在運行。如果我們需要關閉這個進程,這時候ctrl加c就不管用了,因為ctrl加c只適用於正在前台運行的程序,而對於後台程序,我們需要先將其移到前面來,再關閉。輸入fg%1回車即可以將job number為1的程序從後台調到前台,接著我們再ctrl加c就可以關閉程序了。
如果我們想要暫停或者停止一個程序,按住ctrl加z,terminal就會顯示程序stopped的狀態,在這種狀態下,我們沒法直接關閉程序,即使鼠標點擊xlogo上面的紅色叉也不行,這是因為在stopped狀態下所有對該程序的操作都被暫停了,如果需要進行操作,我們只能先將其從後台調到前台,調回來後發現程序自動關閉了,原因是我們在stopped狀態下點擊了關閉按鈕,當frozen狀態結束後程序對我們的關閉操作有了反應即自動關閉程序。
還有一個關閉後台程序的方法是使用kill命令,當程序在後台的時候,輸入kill加PID回車即可。
如果我們想停止/凍結一個正在後台的程序,可以輸入kill-STOP PID回車即可。
如果我們想恢復一個已經停止/凍結的程序,輸入kill-CONT PID回車即可。
以上為Linux簡單小入門(如果算的話),Linux的terminal有太多功能,還得繼續加油學習才行。
若有疑問或意見,歡迎提出和討論。