這篇文章基於傳智播客的2016年的gitbook資料和視頻資料,同時也融合了2018年的視頻和課件資料中的一些內容,即以2016年的資料爲藍本,2018年的資料爲輔助編寫的。html
<1>Linux內核版本:內核(kernel)是系統的心臟,是運行程序和管理像磁盤和打印機等硬件設備的核心程序,它提供了一個在裸設備與應用程序間的抽象層。 <2>Linux發行版本:也被叫作 GNU, 一般包含了包括桌面環境、辦公套件、媒體播放器、數據庫等應用軟件。node
在 windows 平臺下,打開「計算機」,咱們看到的是一個個的驅動器盤符: python
/:根目錄,通常根目錄下只存放目錄,在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
經過設定權限能夠從如下三種訪問方式限制訪問權限: 只容許用戶本身訪問(全部者) 全部者就是建立文件的用戶,用戶是全部用戶所建立文件的全部者,用戶能夠容許所在的用戶組能訪問用戶的文件。 容許一個預先指定的用戶組中的用戶訪問(用戶組) 用戶都組合成用戶組,例如,某一類或某一項目中的全部用戶都可以被系統管理員歸爲一個用戶組,一個用戶可以授予所在用戶組的其餘成員的文件訪問權限。 容許系統中的任何用戶訪問(其餘用戶) 用戶也將本身的文件向系統內的全部用戶開放,在這種狀況下,系統內的全部用戶都可以訪問用戶的目錄或文件。在這種意義上,系統內的其餘全部用戶就是 other 用戶類。數據庫
用戶可以控制一個給定的文件或目錄的訪問程度,一個文件或目錄可能有讀、寫及執行權限: 讀權限(r) 對文件而言,具備讀取文件內容的權限;對目錄來講,具備瀏覽目錄的權限。 寫權限(w) 對文件而言,具備新增、修改文件內容的權限;對目錄來講,具備刪除、移動目錄內文件的權限。 可執行權限(x) 對文件而言,具備執行文件的權限;對目錄了來講該用戶具備進入目錄的權限。 注意:一般,Unix/Linux系統只容許文件的屬主(全部者)或超級用戶改變文件的讀寫權限。編程
ls -lh
查看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 多個,這裏只介紹比較重要和使用頻率最多的命令。
Linux命令格式: command [-options] [parameter1] …
命令 選項 參數 說明: command: 命令名,相應功能的英文單詞或單詞的縮寫 [-options]:選項,可用來對命令進行控制,也能夠省略,[]表明可選 parameter1 …:傳給命令的參數:能夠是零個一個或多個.
###<1>--help 通常是linux命令自帶的幫助信息,如:ls --help
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
將執行過的命令列舉出來。
ls是英文單詞list的簡寫,其功能爲列出目錄的內容,是用戶最經常使用的命令之一,它相似於DOS下的dir命令。 Linux文件或者目錄名稱最長能夠有265個字符,「.」表明當前目錄,「..」表明上一級目錄,以「.」開頭的文件爲隱藏文件,須要用-a
參數才能顯示。
Linux容許將命令執行結果重定向到一個文件,本應顯示在終端上的內容保存到指定文件中。 如:ls > test.txt
( test.txt 若是不存在,則建立,存在則覆蓋其內容 ) 注意: >
輸出重定向會覆蓋原來的內容,>>
輸出重定向則會追加到文件的尾部。
查看內容時,在信息過長沒法在一屏上顯示時,會出現快速滾屏,使得用戶沒法看清文件的內容,此時可使用more命令,每次只顯示一頁,按下空格鍵能夠顯示下一頁,按下q鍵退出顯示,按下h鍵能夠獲取幫助。
管道:一個命令的輸出能夠經過管道作爲另外一個命令的輸入。 管道咱們能夠理解現實生活中的管子,管子的一頭塞東西進去,另外一頭取出來,這裏「 | 」的左右分爲兩端,左端塞東西(寫),右端取東西(讀)。
clear
做用爲清除終端上的顯示(相似於DOS的cls清屏功能),也可以使用快捷鍵:Ctrl + l ( 「l」 爲字母 )。
在使用Unix/Linux的時候,常常須要更換工做目錄。cd
命令能夠幫助用戶切換工做目錄。Linux全部的目錄和文件名大小寫敏感。 cd後面可跟絕對路徑,也能夠跟相對路徑。若是省略目錄,則默認切換到當前用戶的主目錄。
使用pwd命令能夠顯示當前的工做目錄,該命令很簡單,直接輸入pwd便可,後面不帶參數。
經過mkdir
命令能夠建立一個新的目錄。參數-p
可遞歸建立目錄。
命令格式:touch 文件名
若是文件不存在,能夠建立一個空白文件。 若是文件存在,能夠修改文件的末次修改日期。
可以使用rmdir
命令刪除一個目錄。必須離開目錄,而且目錄必須爲空目錄,否則提示刪除失敗。
可經過rm刪除文件或目錄。使用rm命令要當心,由於文件刪除後不能恢復。爲了防止文件誤刪,能夠在rm後使用-i參數以逐個確認要刪除的文件。
-r
,而刪除文件能夠不加。
Linux連接文件相似於Windows下的快捷方式。 連接文件分爲軟連接(有-s
)和硬連接。 軟連接:軟連接不佔用磁盤空間,源文件刪除則軟連接失效,源文件要用絕對路徑。ln -s 源文件 連接文件
硬連接:硬連接只能連接普通文件,不能連接目錄,至關於文件「小名」,平常是不用的,只有文件的硬連接數(用ls -l
查看)爲0時,文件才被真正刪除。 ln 源文件 連接文件
在Linux中,文件數據和文件名是分開存儲的。
對應英文是concatenate,用於查看文件內容(適合內容較少的,較多的用more
)、建立文件、文件合併、追加文件內容等。
Linux中還有一個
nl
命令,和cat -b
效果等價。
Linux系統中grep命令是一種強大的文本搜索工具,grep容許對文本文件進行模式查找。若是找到匹配模式, grep打印包含模式的全部行。 grep通常格式爲:grep [-選項] ‘搜索內容串’文件名
在grep命令中輸入字符串參數時,最好引號或雙引號括起來。例如:grep‘a ’1.txt。
find支持文件名的正則表達式查找,按文件修改時間查找,按文件大小查找,按文件權限查找,按文件類型查找等,查找到之後還支持直接對查找到的文件使用命令,功能很是強大。
典型的find命令的寫法是:find 查找路徑 查找的標準 查找到以後的動做
。 好比: find /home -type d -ls
,意思是: 找出/home/下全部的目錄,並顯示目錄的詳細信息。
後繼命令(查找到以後的動做):
-print: 顯示
-ls:相似ls -l的形式顯示每個文件的詳細
-quit:查找到一個就退出
-delete:刪除匹配到的行
-ok COMMAND {} \:每一次操做都須要用戶確認,{}表示引用找到的文件,是佔位符,對於(find等輸出的一個列表的內容)依次循環每個;\是表示 -exec 命令終結的的符號。
-exec COMMAND {} \:每次操做無需確認
複製代碼
cp命令的功能是將給出的文件或目錄複製到另外一個文件或目錄中,至關於DOS下的copy命令。
用戶可使用mv命令來移動文件或目錄,也能夠給文件或目錄重命名。
計算機中的數據常常須要備份,tar是Unix/Linux中最經常使用的備份工具,此命令能夠把一系列文件歸檔到一個大文件中,也能夠把檔案文件解開以恢復數據。 tar使用格式tar [選項] 打包文件名 文件
tar命令很特殊,其選項前面可使用「-」,也能夠不使用。
tar -cvf ***.tar 1.py 2.py 3.txt *.c
tar -xvf ***.tar -C ~/Desktop
tar與gzip命令結合使用實現文件打包、壓縮。 tar只負責打包文件,但不壓縮,用gzip壓縮tar打包後的文件,其擴展名通常用xxxx.tar.gz。 gzip使用格式:gzip [選項] 被壓縮文件
經常使用選項:-d
解壓、-r
壓縮全部子目錄 tar這個命令並無壓縮的功能,它只是一個打包的命令,可是在tar命令中增長一個選項(-z)能夠調用gzip實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
tar -zcvf 壓縮包包名 文件1 文件2 ...
-z :指定壓縮包的格式爲:file.tar.gztar -zxvf 壓縮包包名
解壓到指定目錄:-C (大寫字母「C」)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)
經過zip壓縮文件的目標文件不須要指定擴展名,默認擴展名爲zip。
zip [-r] 目標文件(沒有擴展名) 源文件
unzip -d 解壓後目錄文件 壓縮文件
用戶是Unix/Linux系統工做中重要的一環,用戶管理包括用戶與組帳號的管理。 在Unix/Linux系統中,不管是由本機或是遠程登陸系統,每一個系統都必須擁有一個帳號,而且對於不一樣的系統資源擁有不一樣的使用權限。 Unix/Linux系統中的root帳號一般用於系統的維護和管理,它對Unix/Linux操做系統的全部部分具備不受限制的訪問權限。 在Unix/Linux安裝的過程當中,系統會自動建立許多用戶帳號,而這些默認的用戶就稱爲「標準用戶」。 在大多數版本的Unix/Linux中,都不推薦直接使用root帳號登陸系統。
whoami
命令用戶查看當前系統當前帳號的用戶名。可經過cat /etc/passwd
查看系統用戶信息。 因爲系統管理員一般須要使用多種身份登陸系統,例如一般使用普通用戶登陸系統,而後再以su命令切換到root身份對傳統進行管理。這時候就可使用whoami來查看當前用戶的身份。
who命令用於查看當前全部登陸系統的用戶信息。
能夠經過su
命令切換用戶,su
後面能夠加「-」。su
和su –
命令不一樣之處在於,su -
切換到對應的用戶時會將當前的工做目錄自動轉換到切換後的用戶主目錄:
sudo
,若是在某些操做須要管理員才能操做,ubuntu無需切換到root用戶便可操做,只需加
sudo
便可。sudo是ubuntu平臺下容許系統管理員讓普通用戶執行一些或者所有的root命令的一個工具,減小了root 用戶的登錄和管理時間,提升了安全性。
groupadd 組名
新建組帳號 groupdel 組名
刪除組帳號 cat /etc/group
查看用戶組信息
/etc/passwd
的第四列GID對應的組。/etc/group
的最後一列表示該組的用戶列表,用於指定用戶的附加權限。 usermod
能夠用來設置用戶的 主組/附加組 和 登錄 Shell ,命令格式以下:
在Unix/Linux中添加用戶帳號可使用adduser
或useradd
命令,由於adduser
命令是指向useradd
命令的一個連接,所以,這兩個命令的使用格式徹底同樣。 useradd
命令的使用格式以下: useradd [選項及參數] 新建用戶名
注意:
-m
的解決方法是:刪除用戶,從新建立(沒必要考慮設置權限問題)。/etc/passwd
文件中。useradd
添加的用戶沒有sudo
權限,須要用命令sudo usermod -G sudo 用戶名
,將用戶添加到sudo
附加組中。
在Unix/Linux中,超級用戶可使用passwd命令爲普通用戶設置或修改用戶口令。用戶也能夠直接使用該命令來修改本身的口令,而無需在命令後面使用用戶名。
命令格式:id 用戶名
chmod 修改文件權限有兩種使用格式:字母法與數字法。 字母法:chmod u/g/o/a +/-/= rwx 文件
-R
。
命令格式:chown 用戶名 文件名|目錄名
命令格時:chgrp 組名 文件名|目錄名
注意要遞歸修改的話,須要加上-R
。
cal
(calendar)命令用於查看當前日曆,-y
顯示全年日曆:
設置時間格式(須要管理員權限):date [MMDDhhmm[[CC]YY][.ss]] +format
CC爲年前兩位yy爲年的後兩位,前兩位的MM爲月,後兩位的mm爲分鐘,dd爲天,hh爲小時,ss爲秒。如: date 010203042016.55
。 顯示時間格式(date '+%y,%m,%d,%H,%M,%S'
):
進程是一個具備必定獨立功能的程序,它是操做系統動態執行的基本單元。 ps
(process status)命令能夠查看進程的詳細情況,經常使用選項(選項能夠不加「-」)以下:
ps
默認只會顯示當前用戶經過終端啓動的應用程序。
top
命令用來動態顯示運行中的進程。top
命令可以在運行後,在指定的時間間隔更新顯示信息。能夠在使用top
命令時加上-d
來指定顯示信息更新的時間間隔。 在top
命令執行後,能夠按下按鍵獲得對顯示的結果進行排序:
kill命令指定進程號的進程,須要配合 ps
使用。 使用格式:kill [-signal] pid
信號值從0到15,其中9爲絕對終止,能夠處理通常信號沒法終止的進程。
-9
,「 -9 」 表明強制結束。
shutdown
命令格式:shutdown -選項 時間
shutdown
能夠 安全關閉 或 從新啓動系統 注意:
-r
時,表示從新啓動。-c
時,表示取消操做。df
(disk free)命令用於檢測文件系統的磁盤空間佔用和空餘狀況,能夠顯示全部文件系統對節點和磁盤塊的使用狀況。
du
(disk usage)命令用於統計目錄或文件所佔磁盤空間的大小,該命令的執行結果與df
相似,du
更側重於磁盤的使用情況。 du
命令的使用格式以下: du [選項] 目錄或文件名
若是,咱們只是敲:ifconfig
,它會顯示全部網卡的信息:
ifconfig | grep 'inet'
。 提示:一臺計算機中可能有一個物理網卡和多個虛擬網卡,在Linux中物理網卡的名字一般以
ensXX
表示。
127.0.0.1
被稱爲本地迴環/環回地址,通常用來測試本機網卡是否正常。
ping
通常用於檢測當前計算機到目標計算機之間的網絡是否通暢,數值越大,速度越慢。ping
的工做原理與潛水艇的聲納類似,它就是取自聲納的聲音。 網絡管理員之間也一般將ping
做爲動詞——ping一下計算機x,看它是否還開着。
提示:在Linux中,要想終止一個終端程序的執行,絕大多數均可以使用ctrl c
。
經過ssh客戶端能夠鏈接到安裝了ssh服務器的遠程機器上。
ssh客戶端是一種使用
secure shell(SSH)
協議鏈接到遠程計算機的程序。 利用SSH協議,能夠防止信息泄露,防止DNS欺騙和IP欺騙(加密),並提升傳輸速度(壓縮)。
域名:由一串用點分隔的名字組成,是IP地址的別名,方便用戶記憶,例如www.baidu.com。 IP地址:經過IP地址找到網絡上的計算機。 端口號:經過端口號找到計算機上運行的應用程序。
SSH服務器的默認端口號是
22
,若是是默認端口號,在鏈接時能夠省略。
安裝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
ssh [-p port] user@remote
命令中有三個要素:
user
是遠程機器上的用戶名,若是不指定的話默認爲當前用戶。remote
是遠程機器的地址,能夠是 IP 或 域名 ,或者是後面會提到的 別名。port
是SSH Server監聽的端口,若是不指定,就爲默認值22
。提示:
- 使用
exit
退出當前用戶的登錄。ssh
這個終端命令只能在Unix或Linux中使用,在Windows中要安裝客戶端軟件。
提示:建議從官網下載。 PuTTy
:www.chiark.greenend.org.uk/~sgtatham/p… XShell
:www.netsarang.com/download/ma…
有關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
就是 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
這個終端命令只能在Unix或Linux系統中使用。pscp
命令行工具,或者安裝FileZilla(filezilla-project.org/)使用FTP進行文件傳…
- 除了用
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 命令終結的的符號。
apt
是advanced packaging tool的縮寫,是Linux下的一款安裝包管理工具,能夠在終端中安裝/卸載/更新軟件包。
若是但願在Ubuntu中安裝軟件更加快速,能夠經過設置鏡像源,選擇一個訪問網速更快的服務器,來提供軟件下載/安裝服務。 提示:更換服務器以後,須要一個相對比較長時間的更新過程,須要耐心等待。更新完成後,再安裝軟件就會重新設置的服務器下載安裝了。
所謂鏡像源,就是全部服務器的內容是相同的(鏡像),可是其所在位置不一樣,國內的服務器通常會快些。
![]()
在工做中,要對 服務器 上的文件進行 簡單 的修改,可使用 ssh
遠程登陸到服務器上,而且使用 vi
進行快速的編輯便可 常見須要修改的文件包括:源程序、配置文件,例如 ssh
的配置文件 ~/.ssh/config
在沒有圖形界面的環境下,要編輯文件,
vi
是最佳選擇! 每個要使用 Linux 的程序員,都應該或多或少的學習一些vi
的經常使用命令
在不少 Linux
發行版中,直接把 vi
作成 vim
的軟鏈接
vi
是 Visual interface
的簡稱,是 Linux
中 最經典 的文本編輯器 vi
的核心設計思想 —— 讓程序員的手指始終保持在鍵盤的核心區域,就能完成全部的編輯操做
vi
的特色:沒有圖形界面 的 功能強大 的編輯器、只能是編輯 文本內容,不能對字體、段落進行排版、不支持鼠標操做、沒有菜單、只有命令、vi
編輯器在 系統管理、服務器管理 編輯文件時,其功能永遠不是圖形界面的編輯器能比擬的。
vim = vi improved vim
是從 vi
發展出來的一個文本編輯器,支持 代碼補全、編譯 及 錯誤跳轉 等方便編程的功能特別豐富,在程序員中被普遍使用,被稱爲 編輯器之神
$ vi 文件名
複製代碼
在平常工做中,有可能會遇到 打開一個文件,並定位到指定行 的狀況 例如:在開發時,知道某一行代碼有錯誤,能夠 快速定位 到出錯代碼的位置 ,這個時候,可使用如下命令打開文件
$ vi 文件名 +行數
複製代碼
提示:若是隻帶上 +
而不指定行號,會直接定位到文件末尾,若是不帶+
號,那麼會直接定位到文件開頭。
若是 vi
異常退出,在磁盤上可能會保存有 交換文件
下次再使用 vi
編輯該文件時,會看到如下屏幕信息,按下字母 d
能夠 刪除交換文件 便可,以前的異常退出涉及的修改消失。
提示:按下鍵盤時,注意輸入法爲英文狀態。
vi
有三種基本工做模式:
命令模式 打開文件首先進入命令模式,是使用 vi
的 入口 經過 命令 對文件進行常規的編輯操做,例如:定位、翻頁、複製、粘貼、刪除…… 在其餘圖形編輯器下,經過 快捷鍵 或者 鼠標 實現的操做,都在 命令模式 下實現
末行模式 —— 執行 保存、退出 等操做 要退出 vi
返回到控制檯,須要在末行模式下輸入命令 末行模式 是 vi
的 出口
編輯模式 —— 正常的編輯文字
[圖片上傳失敗...(image-44394c-1551450393896)]
提示:在
Touch Bar
的 Mac 電腦上 ,按ESC
不方便,可使用CTRL + [
替代
末行模式命令:
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,若是沒有保存,不容許退出 |
q! | quit | 強行退出,不保存退出 |
wq | write & quit | 保存並退出 |
x | 保存並退出 |
- 重複命令屢次
- 在命令模式下,先輸入一個數字,再跟上一個命令,可讓該命令 重複執行指定次數
- 移動和選擇(多練)
vi
之因此快,關鍵在於 可以快速定位到要編輯的代碼行- 移動命令 可以 和 編輯操做 命令 組合使用
- 編輯操做
- 刪除、複製、粘貼、替換、縮排
- 撤銷和重複
- 查找替換
vi
,首先應該學會怎麼在 命令模式 下樣快速移動光標命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 無名指 |
命令 | 英文 | 功能 |
---|---|---|
w | word | 向後移動一個單詞 |
b | back | 向前移動一個單詞 |
0 | 行首 | |
^ | 行首,第一個不是空白字符的位置 | |
$ | 行尾 |
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件頂部 |
G | go | 文件末尾 |
數字gg | go | 移動到 數字 對應行數 |
數字G | go | 移動到 數字 對應行數 |
:數字 | 移動到 數字 對應行數 |
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻頁 |
Ctrl + f | forward | 向下翻頁 |
H | Head | 屏幕頂部 |
M | Middle | 屏幕中間 |
L | Low | 屏幕底部 |
vi
中使用 空行 來區分段落命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
()
、[]
、{}
使用頻率很高,並且 都是成對出現的命令 | 功能 |
---|---|
% | 括號匹配及切換 |
m
增長一個標記,這樣能夠 在須要時快速地跳轉回來 或者 執行其餘編輯操做a~z
或者 A~Z
之間的任意 一個 字母命令 | 英文 | 功能 |
---|---|---|
mx | mark | 添加標記 x,x 是 a~z 或者 A~Z 之間的任意一個字母 |
'x | 直接定位到標記 x 所在位置 |
vi
中要選擇文本,須要先使用 Visual
命令切換到 可視模式vi
中提供了 三種 可視模式,能夠方便程序員選擇 選中文本的方式ESC
能夠放棄選中,返回到 命令模式命令 | 模式 | 功能 |
---|---|---|
v | 可視模式 | 從光標位置開始按照正常模式選擇文本 |
V | 可視行模式 | 選中光標通過的完整行 |
Ctrl + v | 可視塊模式 | 垂直方向選中文本 |
注意:可視模式下,能夠和 移動命令 連用,例如:ggVG
可以選中全部內容
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤銷上次命令 |
CTRL + r | redo | 恢復撤銷的命令 |
命令 | 英文 | 功能 |
---|---|---|
x | cut | 刪除光標所在字符,或者選中文字 |
d(移動命令) | delete | 刪除移動命令對應的內容 |
dd | delete | 刪除光標所在行,能夠 ndd 複製多行 |
D | delete | 刪除至行尾 |
提示:若是使用 可視模式 已經選中了一段文本,那麼不管使用
d
仍是x
,均可以刪除選中文本
提示:可以使用
:set nu
和:set nonu
設置行號的顯示與否。
vi
中提供有一個 被複制文本的緩衝區
命令 | 英文 | 功能 |
---|---|---|
y(移動命令) | copy | 複製 |
yy | copy | 複製一行,能夠 nyy 複製多行 |
p | paste | 粘貼 |
提示
d
、x
相似於圖形界面的 剪切操做 —— CTRL + X
y
相似於圖形界面的 複製操做 —— CTRL + C
p
相似於圖形界面的 粘貼操做 —— CTRL + V
vi
中的 文本緩衝區一樣只有一個,若是後續作過 複製、剪切 操做,以前緩衝區中的內容會被替換注意
vi
中的 文本緩衝區 和系統的 剪貼板 不是同一個CTRL + C
複製的內容,不能在 vi
中經過 P
命令粘貼命令 | 英文 | 功能 | 工做模式 |
---|---|---|---|
r | replace | 替換當前字符 | 命令模式 |
R | replace | 替換當前行光標後的字符 | 替換模式 |
R
命令能夠進入 替換模式,替換完成後,按下 ESC
能夠回到 命令模式命令 | 功能 |
---|---|
>> | 向右增長縮進 |
<< | 向左減小縮進 |
. | 重複上次命令 |
>
或者 <
在程序中,縮進 一般用來表示代碼的歸屬關係
- 前面空格越少,代碼的級別越高
- 前面空格越多,代碼的級別越低
命令 | 功能 |
---|---|
/str | 查找 str |
Next
查找下一個出現的位置:
n
: 查找下一個N
: 查找上一個命令 | 功能 |
---|---|
* | 向後查找當前光標所在單詞 |
# | 向前查找當前光標所在單詞 |
vi
中查找和替換命令須要在 末行模式 下執行:%s///g
複製代碼
:%s/舊文本/新文本/g
複製代碼
:s/舊文本/新文本/g
複製代碼
g
改爲 gc
在替換的時候,會有提示!推薦使用!c表示conform。
:%s/舊文本/新文本/gc
複製代碼
y
- yes
替換n
- no
不替換a
- all
替換全部q
- quit
退出替換l
- last
最後一個,並把光標移動到行首^E
向下滾屏^Y
向上滾屏vi
中除了經常使用的 i
進入 編輯模式 外,還提供瞭如下命令一樣能夠進入編輯模式:命令 | 英文 | 功能 | 經常使用 |
---|---|---|---|
i | insert | 在當前字符前插入文本 | 經常使用 |
I | insert | 在行首插入文本 | 較經常使用 |
a | append | 在當前字符後添加文本 | |
A | append | 在行末添加文本 | 較經常使用 |
o | 在當前行後面插入一空行 | 經常使用 | |
O | 在當前行前面插入一空行 | 經常使用 |
[圖片上傳失敗...(image-d3e85b-1551450393896)]
要快速打出大寫字母,使用:
shift 字母
。
N
個一樣的字符在
Python
中有簡單的方法,可是其餘語言中一般須要本身輸入
**********
連續 10 個星號要實現這個效果能夠在 命令模式 下
10
,表示要重複 10 次i
進入 編輯模式*
也就是重複的文字ESC
返回到 命令模式,返回以後 vi
就會把第 二、3
兩步的操做重複 10
次提示:正常開發時,在 進入編輯模式以前,不要按數字
在
Python
中,要給代碼增長註釋,能夠在代碼前增長一個#
要實現這個效果能夠在 命令模式 下
^
來到行首CTRL + v
進入 可視塊 模式j
向下連續選中要添加的代碼行I
進入 編輯模式,並在 行首插入,注意:必定要使用 I#
也就是註釋符號ESC
返回到 命令模式,返回以後 vi
會在以前選中的每一行代碼 前 插入 #
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 | 縱向增長分屏 |
分屏窗口都是基於
CTRL + W
這個快捷鍵的,w
對應的英文單詞是window
命令 | 英文 | 功能 |
---|---|---|
w | window | 切換到下一個窗口 |
r | reverse | 互換窗口 |
c | close | 關閉當前窗口,可是不能關閉最後一個窗口 |
q | quit | 退出當前窗口,若是是最後一個窗口,則關閉 vi |
o | other | 關閉其餘窗口 |
分屏窗口都是基於
CTRL + W
這個快捷鍵的,w
對應的英文單詞是window
命令 | 英文 | 功能 |
---|---|---|
+ | 增長窗口高度 | |
- | 減小窗口高度 | |
> | 增長窗口寬度 | |
< | 減小窗口寬度 | |
= | 等分窗口大小 |
調整窗口寬高的命令能夠和數字連用,例如:
5 CTRL + W +
連續 5 次增長高度
vimrc
是 vim
的配置文件,能夠設置 vim 的配置,包括:熱鍵、配色、語法高亮、插件 等Linux
中 vimrc
有兩個位置,家目錄下的配置文件優先級更高/etc/vim/vimrc
~/.vimrc
複製代碼
python
開發的 vimrc
文件,能夠下載過來直接使用,或者等你們多 Linux
比較熟悉後,再行學習!終端中的字體大小更改:放大是ctrl shift +
,縮小是ctrl -
。 終端中退出某個程序:每每是q
,多是ctrl c
或是ctrl d
。 以新標籤頁的形式打開一個終端:ctrl alt T
。