學習python了,看完這篇文章,你的Linux基礎就差不多了(附導圖
前言
這篇文章基於傳智播客的2016年的gitbook資料和視頻資料,同時也融合了2018年的視頻和課件資料中的一些內容,即以2016年的資料為藍本,2018年的資料為輔助編寫的。
提醒:本文稍微過長,請細讀,如有想獲得python學習資料的童鞋可以關注小編,轉發此文,然後私信小編“資料”即可。
一、Linux介紹
1、操作系統的發展
2、Linux的不同版本
<1>Linux內核版本:內核(kernel)是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序,它提供了一個在裸設備與應用程序間的抽象層。
<2>Linux發行版本:也被叫做 GNU, 通常包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件。
二、文件和目錄
1、Windows和Linux文件系統區別
在 windows 平臺下,打開“計算機”,我們看到的是一個個的驅動器盤符:
每個驅動器都有自己的根目錄結構,這樣形成了多個樹並列的情形,如圖所示:
在 Linux 下,我們是看不到這些驅動器盤符,我們看到的是文件夾(目錄):
就比如我們用的Ubuntu沒有盤符這個概念,只有一個根目錄/,所有文件都在它下面:
/:根目錄,一般根目錄下只存放目錄,在Linux下有且只有一個根目錄。所有的東西都是從這裡開始。當你在終端裡輸入“/home”,你其實是在告訴電腦,先從/(根目錄)開始,再進入到home目錄。
/bin: /usr/bin: 可執行二進制文件的目錄,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系統啟動時用到的一些文件,如Linux的內核文件:/boot/vmlinuz,系統引導管理器:/boot/grub。
/dev:存放linux系統下的設備文件,訪問該目錄下某個文件,相當於訪問某個設備,常用的是掛載光驅 mount /dev/cdrom /mnt。
/etc:系統配置文件存放的目錄,不建議在此目錄下存放可執行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系統默認的用戶家目錄,新增用戶賬號時,用戶的家目錄都存放在此目錄下,表示當前用戶的家目錄,edu 表示用戶 edu 的家目錄。
/lib: /usr/lib: /usr/local/lib:系統使用的函數庫的目錄,程序在執行過程中,需要調用一些額外的參數時需要函數庫的協助。
/lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下。
/mnt: /media:光盤默認掛載點,通常光盤掛載於 /mnt/cdrom 下,也不一定,可以選擇任意位置進行掛載。
/opt:給主機額外安裝軟件所擺放的目錄。
/proc:此目錄的數據都在內存中,如系統核心,外部設備,網絡狀態,由於數據都存放於內存中,所以不佔用磁盤空間,比較重要的目錄有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系統管理員root的家目錄。
/sbin: /usr/sbin: /usr/local/sbin:放置系統管理員使用的可執行命令,如fdisk、shutdown、mount 等。與 /bin 不同的是,這幾個目錄是給系統管理員 root使用的命令,一般用戶只能"查看"而不能設置和使用。
/tmp:一般用戶或正在執行的程序臨時存放文件的目錄,任何人都可以訪問,重要數據不可放置在此目錄下。
/srv:服務啟動之後需要訪問的數據目錄,如 www 服務需要訪問的網頁數據存放在 /srv/www 內。
/usr:應用程序存放目錄,/usr/bin 存放應用程序,/usr/share 存放共享數據,/usr/lib 存放不能直接運行的,卻是許多程序運行所必需的一些函數庫文件。/usr/local: 存放軟件升級包。/usr/share/doc: 系統說明文件存放目錄。/usr/share/man: 程序說明文件存放目錄。
/var:放置系統執行過程中經常變化的文件,如隨時更改的日誌文件 /var/log,/var/log/message:所有的登錄文件存放目錄,/var/spool/mail:郵件存放的目錄,/var/run:程序或服務啟動後,其PID存放在該目錄下。
2、用戶目錄
位於/home/user,稱之為用戶工作目錄或家目錄,表示方式:
/home/user
~
3、相對路徑和絕對路徑
絕對路徑:從/目錄開始描述的路徑為絕對路徑,如:/home
相對路徑:從當前位置開始描述的路徑為相對路徑,如:../../
.和.. :每個目錄下都有.和..(可用ls -a查看);. 表示當前目錄;.. 表示上一級目錄,即父目錄;根目錄下的.和..都表示當前目錄
4、文件權限
文件權限就是文件的訪問控制權限,即哪些用戶和組群可以訪問文件以及可以執行什麼樣的操作。
在 Unix/Linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。
<1>訪問用戶
通過設定權限可以從以下三種訪問方式限制訪問權限:
只允許用戶自己訪問(所有者) 所有者就是創建文件的用戶,用戶是所有用戶所創建文件的所有者,用戶可以允許所在的用戶組能訪問用戶的文件。
允許一個預先指定的用戶組中的用戶訪問(用戶組) 用戶都組合成用戶組,例如,某一類或某一項目中的所有用戶都能夠被系統管理員歸為一個用戶組,一個用戶能夠授予所在用戶組的其他成員的文件訪問權限。
允許系統中的任何用戶訪問(其他用戶) 用戶也將自己的文件向系統內的所有用戶開放,在這種情況下,系統內的所有用戶都能夠訪問用戶的目錄或文件。在這種意義上,系統內的其他所有用戶就是 other 用戶類。
<2>訪問權限
用戶能夠控制一個給定的文件或目錄的訪問程度,一個文件或目錄可能有讀、寫及執行權限:
讀權限(r) 對文件而言,具有讀取文件內容的權限;對目錄來說,具有瀏覽目錄的權限。
寫權限(w) 對文件而言,具有新增、修改文件內容的權限;對目錄來說,具有刪除、移動目錄內文件的權限。
可執行權限(x) 對文件而言,具有執行文件的權限;對目錄了來說該用戶具有進入目錄的權限。
注意:通常,Unix/Linux系統只允許文件的屬主(所有者)或超級用戶改變文件的讀寫權限。
<3>示例說明:利用ls -lh查看
第1個字母代表文件的類型:“d” 代表文件夾、“-” 代表普通文件、“c” 代表硬件字符設備、“b” 代表硬件塊設備、“s”表示管道文件、“l” 代表軟鏈接文件。 後 9 個字母分別代表三組權限:文件所有者、用戶者、其他用戶擁有的權限。
handy@ubuntu:~$ ls -l
total 44
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Desktop
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Documents
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Downloads
-rw-r--r-- 1 handy handy 8980 Aug 29 06:39 examples.desktop
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Music
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Pictures
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Public
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Templates
drwxr-xr-x 2 handy handy 4096 Aug 29 06:45 Videos
handy@ubuntu:~$ ls -lh
total 44K
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Desktop
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Documents
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Downloads
-rw-r--r-- 1 handy handy 8.8K Aug 29 06:39 examples.desktop
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Music
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Pictures
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Public
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Templates
drwxr-xr-x 2 handy handy 4.0K Aug 29 06:45 Videos
handy@ubuntu:~$
每一個用戶都有它自身的讀、寫和執行權限。
第一組權限控制訪問自己的文件權限,即所有者權限。
第二組權限控制用戶組訪問其中一個用戶的文件的權限。
第三組權限控制其他所有用戶訪問一個用戶的文件的權限。
這三組權限賦予用戶不同類型(即所有者、用戶組和其他用戶)的讀、寫及執行權限就構成了一個有9種類型的權限組。
三、常用基本命令
Linux 提供了大量的命令,利用它可以有效地完成大量的工作,如磁盤操作、文件存取、目錄操作、進程管理、文件權限設定等。Linux 發行版本最少的命令也有 200 多個,這裡只介紹比較重要和使用頻率最多的命令。
1、命令使用方法
Linux命令格式:
command [-options] [parameter1] …
命令 選項 參數
說明:
command: 命令名,相應功能的英文單詞或單詞的縮寫 [-options]:選項,可用來對命令進行控制,也可以省略,[]代表可選 parameter1 …:傳給命令的參數:可以是零個一個或多個.
2、查看幫助文檔
<1>--help
一般是linux命令自帶的幫助信息,如:ls --help
<2>man
man是linux提供的一個手冊,包含了絕大部分的命令、函數使用說明
該手冊分成很多章節(section),使用man時可以指定不同的章節來瀏覽。
例:man ls ; man 2 printf
man中各個section意義如下:
1: Standard commands(標準命令)
2: System calls(系統調用,如open,write)
3: Library functions(庫函數,如printf,fopen)
4:Special devices(設備文件的說明,/dev下各種設備)
5: File formats(文件格式,如passwd)
6:Games and toys(遊戲和娛樂)
7:Miscellaneous(雜項、慣例與協定等,例如Linux檔案系統、網絡協定、ASCII 碼;environ全局變量)
8: Administrative Commands(管理員命令,如ifconfig)
man是按照手冊的章節號的順序進行搜索的。
man設置瞭如下的功能鍵:
例如:
3、自動補全
在敲出命令的前幾個字母的同時,按下tab鍵,系統會自動幫我們補全命令
4、歷史命令
當系統執行過一些命令後,可按上下鍵翻看以前的命令,history將執行過的命令列舉出來。
四、文件、磁盤管理的常用命令
<1>查看文件信息:ls
ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。
Linux文件或者目錄名稱最長可以有265個字符,“.”代表當前目錄,“..”代表上一級目錄,以“.”開頭的文件為隱藏文件,需要用-a參數才能顯示。
ls常用參數
ls -l
與DOS下的文件操作類似,在Unix/Linux系統中,也同樣允許使用特殊字符來同時引用多個文件名,這些特殊字符被稱為通配符。
<2>輸出重定向命令:>
Linux允許將命令執行結果重定向到一個文件,本應顯示在終端上的內容保存到指定文件中。
如:ls > test.txt ( test.txt 如果不存在,則創建,存在則覆蓋其內容 )
注意: >輸出重定向會覆蓋原來的內容,>>輸出重定向則會追加到文件的尾部。
<3>分屏顯示:more
查看內容時,在信息過長無法在一屏上顯示時,會出現快速滾屏,使得用戶無法看清文件的內容,此時可以使用more命令,每次只顯示一頁,按下空格鍵可以顯示下一頁,按下q鍵退出顯示,按下h鍵可以獲取幫助。
more 示例
<4>管道:|
管道:一個命令的輸出可以通過管道做為另一個命令的輸入。
管道我們可以理解現實生活中的管子,管子的一頭塞東西進去,另一頭取出來,這裡“ | ”的左右分為兩端,左端塞東西(寫),右端取東西(讀)。
管道示例
<5>清屏:clear
clear作用為清除終端上的顯示(類似於DOS的cls清屏功能),也可使用快捷鍵:Ctrl + l ( “l” 為字母 )。
<6>切換工作目錄: cd
在使用Unix/Linux的時候,經常需要更換工作目錄。cd命令可以幫助用戶切換工作目錄。Linux所有的目錄和文件名大小寫敏感。
cd後面可跟絕對路徑,也可以跟相對路徑。如果省略目錄,則默認切換到當前用戶的主目錄。
cd 示例
注意:如果路徑是從根路徑開始的,則路徑的前面需要加上 “ / ”,如 “ /mnt ”,通常進入某個目錄裡的文件夾,前面不用加 “ / ”。<7>顯示當前路徑:pwd
使用pwd命令可以顯示當前的工作目錄,該命令很簡單,直接輸入pwd即可,後面不帶參數。
<8>創建目錄:mkdir
通過mkdir命令可以創建一個新的目錄。參數-p可遞歸創建目錄。
示例
需要注意的是新建目錄的名稱不能與當前目錄中已有的目錄或文件同名,並且目錄創建者必須對當前目錄具有寫權限。<補>創建文件:touch
命令格式:touch 文件名
如果文件不存在,可以創建一個空白文件。
如果文件存在,可以修改文件的末次修改日期。
<9>刪除目錄:rmdir
可使用rmdir命令刪除一個目錄。必須離開目錄,並且目錄必須為空目錄,不然提示刪除失敗。
<10>刪除文件:rm
可通過rm刪除文件或目錄。使用rm命令要小心,因為文件刪除後不能恢復。為了防止文件誤刪,可以在rm後使用-i參數以逐個確認要刪除的文件。
常用參數
注意遞歸刪除文件夾要加-r,而刪除文件可以不加。
示例
<11>建立鏈接文件:ln
Linux鏈接文件類似於Windows下的快捷方式。
鏈接文件分為軟鏈接(有-s)和硬鏈接。
軟鏈接:軟鏈接不佔用磁盤空間,源文件刪除則軟鏈接失效,源文件要用絕對路徑。ln -s 源文件 鏈接文件
硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄,相當於文件“小名”,日常是不用的,只有文件的硬鏈接數(用ls -l查看)為0時,文件才被真正刪除。 ln 源文件 鏈接文件
硬鏈接示例及軟鏈接的tree示意
文件軟硬鏈接示意圖
在Linux中,文件數據和文件名是分開存儲的。
<12>查看或者合併文件內容:cat
對應英文是concatenate,用於查看文件內容(適合內容較少的,較多的用more)、創建文件、文件合併、追加文件內容等。
常用參數
Linux中還有一個nl命令,和cat -b效果等價。
示例
<13>文本搜索:grep
Linux系統中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式, grep打印包含模式的所有行。
grep一般格式為:grep [-選項] ‘搜索內容串’文件名
在grep命令中輸入字符串參數時,最好引號或雙引號括起來。例如:grep‘a ’1.txt。
常用選項
grep搜索內容串可以是正則表達式,也就是模式查找。
正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。
grep常用正則表達式
grep示例
<14>查找文件:find
find支持文件名的正則表達式查找,按文件修改時間查找,按文件大小查找,按文件權限查找,按文件類型查找等,查找到以後還支持直接對查找到的文件使用命令,功能非常強大。
典型的find命令的寫法是:find 查找路徑 查找的標準 查找到之後的動作。
比如: find /home -type d -ls,意思是: 找出/home/下所有的目錄,並顯示目錄的詳細信息。
後繼命令(查找到之後的動作):
-print: 顯示
-ls:類似ls -l的形式顯示每一個文件的詳細
-quit:查找到一個就退出
-delete:刪除匹配到的行
-ok COMMAND {} \:每一次操作都需要用戶確認,{}表示引用找到的文件,是佔位符,對於(find等輸出的一個列表的內容)依次循環每一個;\是表示 -exec 命令終結的的符號。
-exec COMMAND {} \:每次操作無需確認
常用用法
<15>拷貝文件:cp
cp命令的功能是將給出的文件或目錄複製到另一個文件或目錄中,相當於DOS下的copy命令。
常用選項
<16>移動文件:mv
用戶可以使用mv命令來移動文件或目錄,也可以給文件或目錄重命名。
常用選項
<17>歸檔管理:tar
計算機中的數據經常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
tar使用格式tar [選項] 打包文件名 文件
tar命令很特殊,其選項前面可以使用“-”,也可以不使用。
常用選項
注意:除了f需要放在參數的最後,其它參數的順序任意。
- 一般來說,我們的選項主要要用cvf和xvf。文件打包:tar -cvf ***.tar 1.py 2.py 3.txt *.c
- 文件解包:tar -xvf ***.tar -C ~/Desktop
<18>文件壓縮解壓:gzip
tar與gzip命令結合使用實現文件打包、壓縮。 tar只負責打包文件,但不壓縮,用gzip壓縮tar打包後的文件,其擴展名一般用xxxx.tar.gz。
gzip使用格式:gzip [選項] 被壓縮文件
常用選項:-d解壓、-r壓縮所有子目錄
tar這個命令並沒有壓縮的功能,它只是一個打包的命令,但是在tar命令中增加一個選項(-z)可以調用gzip實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
- 壓縮用法:tar -zcvf 壓縮包包名 文件1 文件2 ...
- -z :指定壓縮包的格式為:file.tar.gz
- 解壓用法: tar -zxvf 壓縮包包名
- 解壓到指定目錄:-C (大寫字母“C”)
<19>文件壓縮解壓:bzip2
tar與bzip2命令結合使用實現文件打包、壓縮(用法和gzip一樣)。
tar只負責打包文件,但不壓縮,用bzip2壓縮tar打包後的文件,其擴展名一般用xxxx.tar.gz2。
在tar命令中增加一個選項(-j)可以調用bzip2實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
- 壓縮用法:tar jcvf 壓縮包包名 文件...(tar jcvf bk.tar.bz2 *.c)
- 解壓用法:tar jxvf 壓縮包包名 (tar jxvf bk.tar.bz2)
- 示例
<20>文件壓縮解壓:zip、unzip
通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名為zip。
- 壓縮文件:zip [-r] 目標文件(沒有擴展名) 源文件
- 解壓文件:unzip -d 解壓後目錄文件 壓縮文件
<21>查看命令位置:which
bin 和 sbin
示例
五、用戶、權限管理的常用命令
用戶是Unix/Linux系統工作中重要的一環,用戶管理包括用戶與組賬號的管理。
在Unix/Linux系統中,不論是由本機或是遠程登錄系統,每個系統都必須擁有一個賬號,並且對於不同的系統資源擁有不同的使用權限。
Unix/Linux系統中的root賬號通常用於系統的維護和管理,它對Unix/Linux操作系統的所有部分具有不受限制的訪問權限。
在Unix/Linux安裝的過程中,系統會自動創建許多用戶賬號,而這些默認的用戶就稱為“標準用戶”。
在大多數版本的Unix/Linux中,都不推薦直接使用root賬號登錄系統。
<1>查看當前用戶:whoami
whoami命令用戶查看當前系統當前賬號的用戶名。可通過cat /etc/passwd查看系統用戶信息。
由於系統管理員通常需要使用多種身份登錄系統,例如通常使用普通用戶登錄系統,然後再以su命令切換到root身份對傳統進行管理。這時候就可以使用whoami來查看當前用戶的身份。
<2>查看登錄用戶:who
who命令用於查看當前所有登錄系統的用戶信息。
常用選項
示例
<3>退出登錄賬戶: exit
- 如果是圖形界面,退出當前終端(Terminal);
- 如果是使用ssh遠程登錄,退出登陸賬戶;
- 如果是切換後的登陸用戶,退出則返回上一個登陸賬號。
- exit示意圖
<4>切換用戶:su
可以通過su命令切換用戶,su後面可以加“-”。su和su –命令不同之處在於,su -切換到對應的用戶時會將當前的工作目錄自動轉換到切換後的用戶主目錄:
示例
注意:如果是ubuntu平臺,需要在命令前加sudo,如果在某些操作需要管理員才能操作,ubuntu無需切換到root用戶即可操作,只需加sudo即可。sudo是ubuntu平臺下允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,減少了root 用戶的登陸和管理時間,提高了安全性。
su用法
Ubuntu下示例
<5>添加、刪除組賬號:groupadd、groupdel
groupadd 組名 新建組賬號 groupdel 組名 刪除組賬號 cat /etc/group 查看用戶組信息
示例
<6>修改用戶所在組:usermod
- 主組:通常在新建用戶時指定,在 /etc/passwd 的第四列GID對應的組。
- 附加組:在 /etc/group 的最後一列表示該組的用戶列表,用於指定用戶的附加權限。
- usermod可以用來設置用戶的 主組/附加組 和 登陸 Shell ,命令格式如下:
<7>添加用戶賬號:useradd
在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因為adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令的使用格式完全一樣。
useradd命令的使用格式如下: useradd [選項及參數] 新建用戶名
創建用戶、設置密碼、刪除用戶、確認用戶信息
useradd示例
注意:
- 創建用戶時忘記加上-m的解決方法是:刪除用戶,重新創建(不必考慮設置權限問題)。
- 創建用戶時會默認創建一個和 用戶名 同名的組。
- 用戶信息保存在/etc/passwd文件中。
- 默認使用useradd添加的用戶沒有sudo權限,需要用命令sudo usermod -G sudo 用戶名,將用戶添加到sudo附加組中。
- usermod修改附加組示例
<8>設置用戶密碼:passwd
在Unix/Linux中,超級用戶可以使用passwd命令為普通用戶設置或修改用戶口令。用戶也可以直接使用該命令來修改自己的口令,而無需在命令後面使用用戶名。
passwd示例
<9>刪除用戶:userdel
userdel命令用法
<補>查看用戶UID和GID:id
命令格式:id 用戶名
passwd文件說明
id示例
<10>修改文件權限:chmod
chmod 修改文件權限有兩種使用格式:字母法與數字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
ugoa
+-=
rwx
chmod o+w file 給文件file的其它用戶增加寫權限:
chmod u-r file 給文件file的擁有者減去讀的權限:
chmod g=x file設置文件file的同組用戶的權限為可執行,同時去除讀、寫權限:
數字法:“rwx” 這些權限也可以用數字來代替
chmod數字表示法
例如,chmod 777 file:所有用戶擁有讀、寫、執行權限
注意要遞歸修改權限的話,需要加上-R。
chmod示例
以下是對修改文件的屬主、屬組、權限的總結:<11>修改文件所有者:chown
命令格式:chown 用戶名 文件名|目錄名
<12>修改文件所屬組:chgrp
命令格時:chgrp 組名 文件名|目錄名
注意要遞歸修改的話,需要加上-R。
chown、chgrp示例
修改文件的命令總結
六、系統、遠程管理的常用命令
<1>查看當前日曆:cal
cal(calendar)命令用於查看當前日曆,-y顯示整年日曆:
cal示例
<2>顯示或設置時間:date
設置時間格式(需要管理員權限):date [MMDDhhmm[[CC]YY][.ss]] +format
CC為年前兩位yy為年的後兩位,前兩位的MM為月,後兩位的mm為分鐘,dd為天,hh為小時,ss為秒。如: date 010203042016.55。
顯示時間格式(date '+%y,%m,%d,%H,%M,%S'):
date示例
<3>查看進程信息:ps
進程是一個具有一定獨立功能的程序,它是操作系統動態執行的基本單元。
ps(process status)命令可以查看進程的詳細狀況,常用選項(選項可以不加“-”)如下:
注意:ps默認只會顯示當前用戶通過終端啟動的應用程序。
ps示例
<4>動態顯示進程:top
top命令用來動態顯示運行中的進程。top命令能夠在運行後,在指定的時間間隔更新顯示信息。可以在使用top命令時加上-d來指定顯示信息更新的時間間隔。
在top命令執行後,可以按下按鍵得到對顯示的結果進行排序:
top示例
<5>終止進程:kill
kill命令指定進程號的進程,需要配合 ps 使用。
使用格式:kill [-signal] pid
信號值從0到15,其中9為絕對終止,可以處理一般信號無法終止的進程。
kill示例
有些進程不能直接殺死,這時候我們需要加一個參數-9,“ -9 ” 代表強制結束。<6>關機重啟:reboot、shutdown、init
shutdown命令格式:shutdown -選項 時間
shutdown可以 安全關閉 或 重新啟動系統
注意:
- 當選項是-r時,表示重新啟動。
- 當選項是-c時,表示取消操作。
- 不指定選項和參數時,默認一分鐘後關閉電腦。
- 遠程維護服務器時,最好不要關閉系統,而應該重新啟動系統。
- 常用命令示例:
<7>檢測磁盤空間:df
df(disk free)命令用於檢測文件系統的磁盤空間佔用和空餘情況,可以顯示所有文件系統對節點和磁盤塊的使用情況。
df常用選項
df示例
<8>檢測目錄所佔磁盤空間:du
du(disk usage)命令用於統計目錄或文件所佔磁盤空間的大小,該命令的執行結果與df類似,du更側重於磁盤的使用狀況。
du命令的使用格式如下: du [選項] 目錄或文件名
du常用選項
du示例
<9>查看或配置網卡信息:ifconfig
如果,我們只是敲:ifconfig,它會顯示所有網卡的信息:
可以通過管道快速查看IP地址:ifconfig | grep 'inet'。
提示:一臺計算機中可能有一個物理網卡和多個虛擬網卡,在Linux中物理網卡的名字通常以ensXX表示。127.0.0.1被稱為本地迴環/環回地址,一般用來測試本機網卡是否正常。<10>測試遠程主機連通性:ping
ping一般用於檢測當前計算機到目標計算機之間的網絡是否通暢,數值越大,速度越慢。
ping的工作原理與潛水艇的聲納相似,它就是取自聲納的聲音。
網絡管理員之間也通常將ping作為動詞——ping一下計算機x,看它是否還開著。
提示:在Linux中,要想終止一個終端程序的執行,絕大多數都可以使用ctrl c。
<補>SSH基礎
通過ssh客戶端可以連接到安裝了ssh服務器的遠程機器上。
ssh客戶端是一種使用secure shell(SSH)協議連接到遠程計算機的程序。
利用SSH協議,可以防止信息洩露,防止DNS欺騙和IP欺騙(加密),並提高傳輸速度(壓縮)。
1)域名 和 端口號
域名:由一串用點分隔的名字組成,是IP地址的別名,方便用戶記憶,例如www.baidu.com。
IP地址:通過IP地址找到網絡上的計算機。
端口號:通過端口號找到計算機上運行的應用程序。
SSH服務器的默認端口號是22,如果是默認端口號,在連接時可以省略。
常見服務器端口號
2)SSH服務器的安裝配置
安裝ssh相關服務的客戶端:openssh-client,服務端(Ubuntu自帶):openssh-server,可以用命令:sudo apt-get install openssh-client openssh-server。
- Ubuntu中其實只需安裝SSH服務器:sudo apt-get install openssh-server,啟動服務service sshd start,查看服務狀態:service sshd status,設置有root權限的用戶的登陸應該修改配置文件:vi /etc/ssh/sshd_config,如下:
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
然後要記得重啟服務:service sshd restart,也可以sudo /etc/init.d/ssh stop , sudo /etc/init.d/ssh start。
可能需要:關閉Ubuntu的防火牆:
sudo ufw disable #關閉防火牆
sudo ufw enable #開啟防火牆
sudo ufw status #查看防火牆狀態
還有可能的錯誤:/etc/passwd文件中用戶的shell設置的不對。(我之前的錯誤在這裡,下圖是在Ubuntu中用service sshd status查看日誌得到的)
- Ubuntu中配置openssh-server開機自動啟動:打開/etc/rc.local文件,在exit 0語句前加入:/etc/init.d/ssh start
3)SSH客戶端的簡單使用
- ssh [-p port] user@remote命令中有三個要素:user是遠程機器上的用戶名,如果不指定的話默認為當前用戶。
- remote是遠程機器的地址,可以是 IP 或 域名 ,或者是後面會提到的 別名。
- port是SSH Server監聽的端口,如果不指定,就為默認值22。
提示:
- 使用exit退出當前用戶的登陸。
- ssh這個終端命令只能在Unix或Linux中使用,在Windows中要安裝客戶端軟件。
4)Windows下SSH客戶端軟件的安裝和使用
提示:建議從官網下載。
PuTTy:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
XShell:http://www.netsarang.com/download/main.html
PuTTy
XShell
5)SSH高級使用
有關ssh配置的信息都放在用戶家目錄下.ssh目錄下。
免密碼登陸:
配置別名:
每次都輸入ssh -p port user@remote,時間久了會覺得很麻煩,特別是當user, remote和port都得輸入,而且還不好記憶,而** 配置別名 **可以讓我們進一步偷懶,譬如用:ssh mac來替代上面這麼一長串,那麼就在~/.ssh/config裡面追加以下內容:
Host mac
HostName ip地址
User itheima
Port 22
保存之後,即可用ssh mac實現遠程登錄了,scp同樣可以使用
提示:touch config 之後 gedit config或者vi config,然後就可以追加了。
<補>遠程拷貝文件:scp
scp 就是 secure copy,是一個在Linux下來進行遠程拷貝文件的命令。
它的地址格式與ssh基本相同,需要注意的是,在指定端口時用的是大寫的-P。
# 把本地當前目錄下的 01.py 文件 複製到 遠程 家目錄下的 Desktop/01.py
# 注意:`:` 後面的路徑如果不是絕對路徑,則以用戶的家目錄作為參照路徑
scp -P port 01.py user@remote:Desktop/01.py
# 把遠程 家目錄下的 Desktop/01.py 文件 複製到 本地當前目錄下的 01.py
scp -P port user@remote:Desktop/01.py 01.py
# 加上 -r 選項可以傳送文件夾
# 把當前目錄下的 demo 文件夾 複製到 遠程 家目錄下的 Desktop
scp -r demo user@remote:Desktop
# 把遠程 家目錄下的 Desktop 複製到 當前目錄下的 demo 文件夾
scp -r user@remote:Desktop demo
scp常用選項
注意:
- scp這個終端命令只能在Unix或Linux系統中使用。
- 如果在Windows系統中,可以安裝PuTTy使用pscp命令行工具,或者安裝FileZilla(https://filezilla-project.org/)使用FTP進行文件傳輸。
- FileZilla
- 除了用scp命令拷貝,還可以用ftp服務上傳,安裝ftp服務:sudo apt-get install vsftpd。
- ftp服務的配置:sudo vi /etc/vsftpd.conf,在配置文件中查找並修改以下信息
anonymous_enable=NO #不允許匿名用戶登陸
local_enable=YES #允許本機登陸
local_root=/home/handy/ftp #指定ftp上傳下載目錄
####一般使用FileZilla時只需要更改###
write_enable=YES #允許上傳文件到ftp服務器!!!
###################################
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list #允許vsftpd.chroot_list文件中的用戶登陸ftp服務器
更改配置文件完成後,要重啟服務:service vsftpd restart
測試上傳功能,登陸ftp服務器:ftp IP
上傳命令,可以把文件上傳到ftp服務器:put somefile
下載命令,可以把ftp服務器上的文件下載到本地:get somefile
也可用圖形界面的FileZilla或Xftp。解決上傳的中文亂碼文件的刪除、改名等操作
ls -i:顯示文件索引節點號(inode)。一個索引節點代表一個文件;
find -inum 節點號 -delete:查找符合指定的inode編號的文件並刪除,不能刪除非空目錄;
更名:find . -inum 節點號 -exec mv {} 新名字 \
刪除:find ./ -inum 節點號 -exec rm -rf {} \
{}是佔位符,find出來的,每一個文件,的意思。對於每一個文件,佔座,等find出來後,放到對應的{}的位置。\是表示 -exec 命令終結的的符號。
七、Ubuntu軟件安裝的常用命令
<1>安裝/卸載軟件:apt
apt是advanced packaging tool的縮寫,是Linux下的一款安裝包管理工具,可以在終端中安裝/卸載/更新軟件包。
apt常用命令
提示:apt的安裝命令其實不用記憶,在終端中如果沒有這個命令,系統會提示安裝。<2>配置軟件源
如果希望在Ubuntu中安裝軟件更加快速,可以通過設置鏡像源,選擇一個訪問網速更快的服務器,來提供軟件下載/安裝服務。
提示:更換服務器之後,需要一個相對比較長時間的更新過程,需要耐心等待。更新完成後,再安裝軟件就會從新設置的服務器下載安裝了。
所謂鏡像源,就是所有服務器的內容是相同的(鏡像),但是其所在位置不同,國內的服務器一般會快些。
軟件和更新
八、vi編輯器的常用命令
<1> vi簡介
在工作中,要對 服務器 上的文件進行 簡單 的修改,可以使用 ssh 遠程登錄到服務器上,並且使用 vi 進行快速的編輯即可
常見需要修改的文件包括:源程序、配置文件,例如 ssh 的配置文件 ~/.ssh/config
在沒有圖形界面的環境下,要編輯文件,vi 是最佳選擇!
每一個要使用 Linux 的程序員,都應該或多或少的學習一些 vi 的常用命令
在很多 Linux 發行版中,直接把 vi 做成 vim 的軟連接
vi
vi 是 Visual interface 的簡稱,是 Linux 中 最經典 的文本編輯器
vi 的核心設計思想 —— 讓程序員的手指始終保持在鍵盤的核心區域,就能完成所有的編輯操作
vi 的特點:沒有圖形界面 的 功能強大 的編輯器、只能是編輯 文本內容,不能對字體、段落進行排版、不支持鼠標操作、沒有菜單、只有命令、vi 編輯器在 系統管理、服務器管理 編輯文件時,其功能永遠不是圖形界面的編輯器能比擬的。
vim
vim = vi improved
vim 是從 vi 發展出來的一個文本編輯器,支持 代碼補全、編譯 及 錯誤跳轉 等方便編程的功能特別豐富,在程序員中被廣泛使用,被稱為 編輯器之神
<2> 打開和新建文件
$ vi 文件名
- 如果文件已經存在,會直接打開該文件
- 如果文件不存在,會新建一個文件
<3>打開文件並且定位行
在日常工作中,有可能會遇到 打開一個文件,並定位到指定行 的情況
例如:在開發時,知道某一行代碼有錯誤,可以 快速定位 到出錯代碼的位置
,這個時候,可以使用以下命令打開文件
$ vi 文件名 +行數
提示:如果只帶上 + 而不指定行號,會直接定位到文件末尾,如果不帶+號,那麼會直接定位到文件開頭。
<4>異常處理
如果 vi 異常退出,在磁盤上可能會保存有 交換文件
下次再使用 vi 編輯該文件時,會看到以下屏幕信息,按下字母 d 可以 刪除交換文件 即可,之前的異常退出涉及的修改消失。
提示:按下鍵盤時,注意輸入法為英文狀態。
<5> vi 的三種工作模式
vi 有三種基本工作模式:
- 命令模式
- 打開文件首先進入命令模式,是使用 vi 的 入口
- 通過 命令 對文件進行常規的編輯操作,例如:定位、翻頁、複製、粘貼、刪除……
- 在其他圖形編輯器下,通過 快捷鍵 或者 鼠標 實現的操作,都在 命令模式 下實現
- 末行模式 —— 執行 保存、退出 等操作
- 要退出 vi 返回到控制檯,需要在末行模式下輸入命令
- 末行模式 是 vi 的 出口
- 編輯模式 —— 正常的編輯文字
- vi的模式
提示:在 Touch Bar 的 Mac 電腦上 ,按 ESC 不方便,可以使用 CTRL + [ 替代
末行模式命令:
命令 英文 功能 w write 保存 q quit 退出,如果沒有保存,不允許退出 q! quit 強行退出,不保存退出 wq write & quit 保存並退出 x 保存並退出 <6> 常用命令
命令學習線路圖
- 重複命令多次
- 在命令模式下,先輸入一個數字,再跟上一個命令,可以讓該命令 重複執行指定次數
- 移動和選擇(多練)
- vi 之所以快,關鍵在於 能夠快速定位到要編輯的代碼行
- 移動命令 能夠 和 編輯操作 命令 組合使用
- 編輯操作
- 刪除、複製、粘貼、替換、縮排
- 撤銷和重複
- 查找替換
1. 移動(基本)
- 要熟練使用 vi,首先應該學會怎麼在 命令模式 下樣快速移動光標
- 編輯操作命令,能夠和 移動命令 結合在一起使用
1) 上、下、左、右
命令 功能 手指 h 向左 食指 j 向下 食指 k 向上 中指 l 向右 無名指
移動光標
2) 行內移動
命令 英文 功能 w word 向後移動一個單詞 b back 向前移動一個單詞 0 行首 ^ 行首,第一個不是空白字符的位置 $ 行尾 3) 行數移動
命令 英文 功能 gg go 文件頂部 G go 文件末尾 數字gg go 移動到 數字 對應行數 數字G go 移動到 數字 對應行數 :數字 移動到 數字 對應行數 4) 屏幕移動
命令 英文 功能 Ctrl + b back 向上翻頁 Ctrl + f forward 向下翻頁 H Head 屏幕頂部 M Middle 屏幕中間 L Low 屏幕底部 2. 移動(程序)
1) 段落移動
- vi 中使用 空行 來區分段落
- 在程序開發時,通常 一段功能相關的代碼會寫在一起 —— 之間沒有空行
命令 功能 { 上一段 } 下一段 2) 括號切換
- 在程序世界中,()、[]、{} 使用頻率很高,而且 都是成對出現的
命令 功能 % 括號匹配及切換 3) 標記
- 在開發時,某一塊代碼可能需要稍後處理,例如:編輯、查看
- 此時先使用 m 增加一個標記,這樣可以 在需要時快速地跳轉回來 或者 執行其他編輯操作
- 標記名稱 可以是 a~z 或者 A~Z 之間的任意 一個 字母
- 添加了標記的 行如果被刪除,標記同時被刪除
- 如果 在其他行添加了相同名稱的標記,之前添加的標記也會被替換掉
命令 英文 功能 mx mark 添加標記 x,x 是 a~z 或者 A~Z 之間的任意一個字母 'x 直接定位到標記 x 所在位置 3. 選中文本(可視模式)
- 在 vi 中要選擇文本,需要先使用 Visual 命令切換到 可視模式
- vi 中提供了 三種 可視模式,可以方便程序員選擇 選中文本的方式
- 按 ESC 可以放棄選中,返回到 命令模式
命令 模式 功能 v 可視模式 從光標位置開始按照正常模式選擇文本 V 可視行模式 選中光標經過的完整行 Ctrl + v 可視塊模式 垂直方向選中文本 注意:可視模式下,可以和 移動命令 連用,例如:ggVG 能夠選中所有內容
4. 撤銷和恢復撤銷
- 在學習編輯命令之前,先要知道怎樣撤銷之前一次 錯誤的 編輯動作!
命令 英文 功能 u undo 撤銷上次命令 CTRL + r redo 恢復撤銷的命令 5. 刪除文本
命令 英文 功能 x cut 刪除光標所在字符,或者選中文字 d(移動命令) delete 刪除移動命令對應的內容 dd delete 刪除光標所在行,可以 ndd 複製多行 D delete 刪除至行尾 提示:如果使用 可視模式 已經選中了一段文本,那麼無論使用 d 還是 x,都可以刪除選中文本
- 刪除命令可以和 移動命令 連用,以下是常見的組合命令:
- dw # 從光標位置刪除到單詞末尾
- d0 # 從光標位置刪除到一行的起始位置
- d} # 從光標位置刪除到段落結尾
- ndd # 從光標位置向下連續刪除 n 行
- d代碼行G # 從光標所在行 刪除到 指定代碼行 之間的所有代碼
- d'a # 從光標所在行 刪除到 標記a 之間的所有代碼
提示:可使用:set nu和:set nonu設置行號的顯示與否。
6. 複製、粘貼
- vi 中提供有一個 被複制文本的緩衝區複製 命令會將選中的文字保存在緩衝區
- 刪除 命令刪除的文字會被保存在緩衝區
- 在需要的位置,使用 粘貼 命令可以將緩衝區的文字插入到光標所在位置
命令 英文 功能 y(移動命令) copy 複製 yy copy 複製一行,可以 nyy 複製多行 p paste 粘貼 提示
- 命令 d、x 類似於圖形界面的 剪切操作 —— CTRL + X
- 命令 y 類似於圖形界面的 複製操作 —— CTRL + C
- 命令 p 類似於圖形界面的 粘貼操作 —— CTRL + V
- vi 中的 文本緩衝區同樣只有一個,如果後續做過 複製、剪切 操作,之前緩衝區中的內容會被替換
注意
- vi 中的 文本緩衝區 和系統的 剪貼板 不是同一個
- 所以在其他軟件中使用 CTRL + C 複製的內容,不能在 vi 中通過 P 命令粘貼
- 可以在 編輯模式 下使用 鼠標右鍵粘貼
7. 替換
- 命令 英文 功能 工作模式 r replace 替換當前字符 命令模式 R replace 替換當前行光標後的字符 替換模式 R 命令可以進入 替換模式,替換完成後,按下 ESC 可以回到 命令模式
- 替換命令 的作用就是不用進入 編輯模式,對文件進行 輕量級的修改
8. 縮排和重複執行
- 命令 功能 >> 向右增加縮進 << 向左減少縮進 . 重複上次命令 縮排命令 在開發程序時,統一增加代碼的縮進 比較有用!
- 一次性 在選中代碼前增加 4 個空格,就叫做 增加縮進
- 一次性 在選中代碼前刪除 4 個空格,就叫做 減少縮進
- 在 可視模式 下,縮排命令只需要使用 一個 > 或者 <
在程序中,縮進 通常用來表示代碼的歸屬關係
- 前面空格越少,代碼的級別越高
- 前面空格越多,代碼的級別越低
9. 查找
常規查找
- 命令 功能 /str 查找 str 查找到指定內容之後,使用 Next 查找下一個出現的位置:
- n: 查找下一個
- N: 查找上一個
- 如果不想看到高亮顯示,可以隨便查找一個文件中不存在的內容即可
單詞快速匹配
- 命令 功能 * 向後查找當前光標所在單詞 # 向前查找當前光標所在單詞 在開發中,通過單詞快速匹配,可以快速看到這個單詞在其他什麼位置使用過
10. 查找並替換
- 在 vi 中查找和替換命令需要在 末行模式 下執行
- 記憶命令格式:
:%s///g
1) 全局替換
- 一次性替換文件中的 所有出現的舊文本
- 命令格式如下:
:%s/舊文本/新文本/g
2) 可視區域替換
- 先選中 要替換文字的 範圍
- 命令格式如下:
:s/舊文本/新文本/g
3) 確認替換
- 如果把末尾的 g 改成 gc 在替換的時候,會有提示!推薦使用!
c表示conform。
:%s/舊文本/新文本/gc
- y - yes 替換
- n - no 不替換
- a - all 替換所有
- q - quit 退出替換
- l - last 最後一個,並把光標移動到行首
- ^E 向下滾屏
- ^Y 向上滾屏
11. 插入命令
- 在 vi 中除了常用的 i 進入 編輯模式 外,還提供了以下命令同樣可以進入編輯模式:
命令 英文 功能 常用 i insert 在當前字符前插入文本 常用 I insert 在行首插入文本 較常用 a append 在當前字符後添加文本 A append 在行末添加文本 較常用 o 在當前行後面插入一空行 常用 O 在當前行前面插入一空行 常用
插入命令
要快速打出大寫字母,使用:shift 字母。
演練 1 —— 編輯命令和數字連用
- 在開發中,可能會遇到連續輸入 N 個同樣的字符
在 Python 中有簡單的方法,但是其他語言中通常需要自己輸入
- 例如:********** 連續 10 個星號
要實現這個效果可以在 命令模式 下
- 輸入 10,表示要重複 10 次
- 輸入 i 進入 編輯模式
- 輸入 * 也就是重複的文字
- 按下 ESC 返回到 命令模式,返回之後 vi 就會把第 2、3 兩步的操作重複 10 次
提示:正常開發時,在 進入編輯模式之前,不要按數字
演練 2 —— 利用 可視塊 給多行代碼增加註釋
- 在開發中,可能會遇到一次性給多行代碼 增加註釋 的情況
在 Python 中,要給代碼增加註釋,可以在代碼前增加一個 #
要實現這個效果可以在 命令模式 下
- 移動到要添加註釋的 第 1 行代碼,按 ^ 來到行首
- 按 CTRL + v 進入 可視塊 模式
- 使用 j 向下連續選中要添加的代碼行
- 輸入 I 進入 編輯模式,並在 行首插入,注意:一定要使用 I
- 輸入 # 也就是註釋符號
- 按下 ESC 返回到 命令模式,返回之後 vi 會在之前選中的每一行代碼 前 插入 #
12. 分屏命令
- 屬於 vi 的高級命令 —— 可以 同時編輯和查看多個文件
末行命令擴展
末行命令 主要是針對文件進行操作的:保存、退出、保存&退出、搜索&替換、另存、新建、瀏覽文件
命令 英文 功能 :e . edit 會打開內置的文件瀏覽器,瀏覽要當前目錄下的文件 :n 文件名 new 新建文件 :w 文件名 write 另存為,但是仍然編輯當前文件,並不會切換文件 提示:切換文件之前,必須保證當前這個文件已經被保存!
- 已經學習過的 末行命令:
命令 英文 功能 :w write 保存 :q quit 退出,如果沒有保存,不允許退出 :q! quit 強行退出,不保存退出 :wq write & quit 保存並退出 :x 保存並退出 :%s///gc 確認搜索並替換 在實際開發中,可以使用 w 命令 階段性的備份代碼
分屏命令
- 使用 分屏命令,可以 同時編輯和查看多個文件
命令 英文 功能 :sp [文件名] split 橫向增加分屏 :vsp [文件名] vertical split 縱向增加分屏 1) 切換分屏窗口
分屏窗口都是基於 CTRL + W 這個快捷鍵的,w 對應的英文單詞是 window
命令 英文 功能 w window 切換到下一個窗口 r reverse 互換窗口 c close 關閉當前窗口,但是不能關閉最後一個窗口 q quit 退出當前窗口,如果是最後一個窗口,則關閉 vi o other 關閉其他窗口 2) 調整窗口大小
分屏窗口都是基於 CTRL + W 這個快捷鍵的,w 對應的英文單詞是 window
命令 英文 功能 + 增加窗口高度 - 減少窗口高度 > 增加窗口寬度 < 減少窗口寬度 = 等分窗口大小 調整窗口寬高的命令可以和數字連用,例如:5 CTRL + W + 連續 5 次增加高度
13. 常用命令速查圖
vimrc
- vimrc 是 vim 的配置文件,可以設置 vim 的配置,包括:熱鍵、配色、語法高亮、插件 等
- Linux 中 vimrc 有兩個位置,家目錄下的配置文件優先級更高
/etc/vim/vimrc
~/.vimrc
- 常用的插件有:
- 代碼補全
- 代碼摺疊
- 搜索
- Git 集成
- ……
- 網上有很多高手已經配置好的針對 python 開發的 vimrc 文件,可以下載過來直接使用,或者等大家多 Linux 比較熟悉後,再行學習!
Tips:
終端中的字體大小更改:放大是ctrl shift +,縮小是ctrl -。
終端中退出某個程序:往往是q,可能是ctrl c或是ctrl d。
以新標籤頁的形式打開一個終端:ctrl alt T。
全文思維導圖