看完這篇文章,你的Linux基礎就差很少了

傳送門:看完這篇文章,你的Python基礎就差很少了

Linux基礎

這篇文章基於傳智播客的2016年的gitbook資料和視頻資料,同時也融合了2018年的視頻和課件資料中的一些內容,即以2016年的資料爲藍本,2018年的資料爲輔助編寫的。html

1、Linux介紹

一、操做系統的發展

二、Linux的不一樣版本

<1>Linux內核版本:內核(kernel)是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序,它提供了一個在裸設備與應用程序間的抽象層。 <2>Linux發行版本:也被叫作 GNU, 一般包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件。node

2、文件和目錄

一、Windows和Linux文件系統區別

在 windows 平臺下,打開「計算機」,咱們看到的是一個個的驅動器盤符: python

每一個驅動器都有本身的根目錄結構,這樣造成了多個樹並列的情形,如圖所示:
在 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/X十一、/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存放在該目錄下。linux

二、用戶目錄

位於/home/user,稱之爲用戶工做目錄或家目錄,表示方式:git

/home/user ~程序員

三、相對路徑和絕對路徑

絕對路徑:從/目錄開始描述的路徑爲絕對路徑,如:/home 相對路徑:從當前位置開始描述的路徑爲相對路徑,如:../../ .和.. :每一個目錄下都有.和..(可用ls -a查看);. 表示當前目錄;.. 表示上一級目錄,即父目錄;根目錄下的.和..都表示當前目錄正則表達式

四、文件權限

文件權限就是文件的訪問控制權限,即哪些用戶和組羣能夠訪問文件以及能夠執行什麼樣的操做。 在 Unix/Linux中的每個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。shell

<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種類型的權限組。

3、經常使用基本命令

Linux 提供了大量的命令,利用它能夠有效地完成大量的工做,如磁盤操做、文件存取、目錄操做、進程管理、文件權限設定等。Linux 發行版本最少的命令也有 200 多個,這裏只介紹比較重要和使用頻率最多的命令。

一、命令使用方法

Linux命令格式: command [-options] [parameter1] … 命令 選項 參數 說明: command: 命令名,相應功能的英文單詞或單詞的縮寫 [-options]:選項,可用來對命令進行控制,也能夠省略,[]表明可選 parameter1 …:傳給命令的參數:能夠是零個一個或多個.

二、查看幫助文檔

###<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設置了以下的功能鍵:

例如:

三、自動補全

在敲出命令的前幾個字母的同時,按下tab鍵,系統會自動幫咱們補全命令

四、歷史命令

當系統執行過一些命令後,可按上下鍵翻看之前的命令,history將執行過的命令列舉出來。

4、文件、磁盤管理的經常使用命令

<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
示例

5、用戶、權限管理的經常使用命令

用戶是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後面能夠加「-」。susu –命令不一樣之處在於,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中添加用戶帳號可使用adduseruseradd命令,由於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示例

修改文件的命令總結

6、系統、遠程管理的經常使用命令

<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 stopsudo /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域名 ,或者是後面會提到的 別名
  • portSSH Server監聽的端口,若是不指定,就爲默認值22

提示:

  • 使用exit退出當前用戶的登錄。
  • ssh這個終端命令只能在Unix或Linux中使用,在Windows中要安裝客戶端軟件。

4)Windows下SSH客戶端軟件的安裝和使用

提示:建議從官網下載。 PuTTywww.chiark.greenend.org.uk/~sgtatham/p… XShellwww.netsarang.com/download/ma…

PuTTy
XShell

5)SSH高級使用

有關ssh配置的信息都放在用戶家目錄下.ssh目錄下。

免密碼登錄:

配置別名:

每次都輸入ssh -p port user@remote,時間久了會以爲很麻煩,特別是當user, remoteport都得輸入,並且還很差記憶,而** 配置別名 **可讓咱們進一步偷懶,譬如用: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命令拷貝,還能夠用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 命令終結的的符號。

7、Ubuntu軟件安裝的經常使用命令

<1>安裝/卸載軟件:apt

apt是advanced packaging tool的縮寫,是Linux下的一款安裝包管理工具,能夠在終端中安裝/卸載/更新軟件包。

apt經常使用命令
提示:apt的安裝命令其實不用記憶,在終端中若是沒有這個命令,系統會提示安裝。

<2>配置軟件源

若是但願在Ubuntu中安裝軟件更加快速,能夠經過設置鏡像源,選擇一個訪問網速更快的服務器,來提供軟件下載/安裝服務。 提示:更換服務器以後,須要一個相對比較長時間的更新過程,須要耐心等待。更新完成後,再安裝軟件就會重新設置的服務器下載安裝了。

所謂鏡像源,就是全部服務器的內容是相同的(鏡像),可是其所在位置不一樣,國內的服務器通常會快些。

軟件和更新

8、vi編輯器的經常使用命令

<1> vi簡介

在工做中,要對 服務器 上的文件進行 簡單 的修改,可使用 ssh 遠程登陸到服務器上,而且使用 vi 進行快速的編輯便可 常見須要修改的文件包括:源程序配置文件,例如 ssh 的配置文件 ~/.ssh/config

在沒有圖形界面的環境下,要編輯文件,vi 是最佳選擇! 每個要使用 Linux 的程序員,都應該或多或少的學習一些 vi 的經常使用命令

在不少 Linux 發行版中,直接把 vi 作成 vim 的軟鏈接

vi

viVisual 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出口

  • 編輯模式 —— 正常的編輯文字

    [圖片上傳失敗...(image-44394c-1551450393896)]

提示:在 Touch Bar 的 Mac 電腦上 ,按 ESC 不方便,可使用 CTRL + [ 替代

末行模式命令:

命令 英文 功能
w write 保存
q quit 退出,若是沒有保存,不容許退出
q! quit 強行退出,不保存退出
wq write & quit 保存並退出
x 保存並退出

<6> 經常使用命令

命令學習線路圖

  1. 重複命令屢次
    • 在命令模式下,先輸入一個數字再跟上一個命令,可讓該命令 重複執行指定次數
  2. 移動和選擇(多練
    • vi 之因此快,關鍵在於 可以快速定位到要編輯的代碼行
    • 移動命令 可以 和 編輯操做 命令 組合使用
  3. 編輯操做
    • 刪除複製粘貼替換縮排
  4. 撤銷和重複
  5. 查找替換

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 粘貼

提示

  • 命令 dx 相似於圖形界面的 剪切操做 —— 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
複製代碼
  1. y - yes 替換
  2. n - no 不替換
  3. a - all 替換全部
  4. q - quit 退出替換
  5. l - last 最後一個,並把光標移動到行首
  6. ^E 向下滾屏
  7. ^Y 向上滾屏

11. 插入命令

  • vi 中除了經常使用的 i 進入 編輯模式 外,還提供瞭如下命令一樣能夠進入編輯模式:
命令 英文 功能 經常使用
i insert 在當前字符前插入文本 經常使用
I insert 在行首插入文本 較經常使用
a append 在當前字符後添加文本
A append 在行末添加文本 較經常使用
o 在當前行後面插入一空行 經常使用
O 在當前行前面插入一空行 經常使用

[圖片上傳失敗...(image-d3e85b-1551450393896)]

要快速打出大寫字母,使用:shift 字母

演練 1 —— 編輯命令和數字連用
  • 在開發中,可能會遇到連續輸入 N 個一樣的字符

Python 中有簡單的方法,可是其餘語言中一般須要本身輸入

  • 例如:********** 連續 10 個星號

要實現這個效果能夠在 命令模式

  1. 輸入 10,表示要重複 10 次
  2. 輸入 i 進入 編輯模式
  3. 輸入 * 也就是重複的文字
  4. 按下 ESC 返回到 命令模式,返回以後 vi 就會把第 二、3 兩步的操做重複 10

提示:正常開發時,在 進入編輯模式以前,不要按數字

演練 2 —— 利用 可視塊 給多行代碼增長註釋
  • 在開發中,可能會遇到一次性給多行代碼 增長註釋 的狀況

Python 中,要給代碼增長註釋,能夠在代碼前增長一個 #

要實現這個效果能夠在 命令模式

  1. 移動到要添加註釋的 第 1 行代碼,按 ^ 來到行首
  2. CTRL + v 進入 可視塊 模式
  3. 使用 j 向下連續選中要添加的代碼行
  4. 輸入 I 進入 編輯模式,並在 行首插入,注意:必定要使用 I
  5. 輸入 # 也就是註釋符號
  6. 按下 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
  • vimrcvim 的配置文件,能夠設置 vim 的配置,包括:熱鍵配色語法高亮插件
  • Linuxvimrc 有兩個位置,家目錄下的配置文件優先級更高
/etc/vim/vimrc
~/.vimrc
複製代碼
  • 經常使用的插件有:
    • 代碼補全
    • 代碼摺疊
    • 搜索
    • Git 集成
    • ……
  • 網上有不少高手已經配置好的針對 python 開發的 vimrc 文件,能夠下載過來直接使用,或者等你們多 Linux 比較熟悉後,再行學習!

Tips:

終端中的字體大小更改:放大是ctrl shift +,縮小是ctrl -。 終端中退出某個程序:每每是q,多是ctrl c或是ctrl d。 以新標籤頁的形式打開一個終端:ctrl alt T

全文思惟導圖

Linux 基礎
相關文章
相關標籤/搜索