從Windows到Linux

ACool發表於2018-06-19

原文地址:blogof33.com/post/4/

前言

最近有些同學問我一些linux上的問題,因為很多同學對於linux瞭解很少,所以從Windows到Linux很不適應。我看網上對於從Windows轉到linux方面的的具體介紹很少。從Windows到linux,相當於小說中從舊世界到了一個新世界,怎麼能沒有新手引導呢,既然都沒有什麼老司機來帶新手,那就由我這個也許算是剛剛及格的司機來帶吧。

Linux前世今生

由於從Unix到linux是一段很長的歷史,所以在這裡長話短說,有興趣的同學可以自己去查閱資料,還是嫌長的可以跳過,雖然我覺得了解一下linux的歷史還是很有意思的^_^。

Unix的原型是由Ken Thompson用匯編語言寫出來的Unics,後來經過C語言的創造者Dennis Ritchie用C語言重寫與編譯Unics的核心,正名與發行出Unix的正式版本。1991年,芬蘭的赫爾辛基大學的 Linus Torvalds用GNU計劃提供的bash規則環境和gcc編譯程式等自由軟體參考x86架構的Unix Like(類Unix)作業系統Minix,將核心程式程式碼與 386 緊緊的結合在一起,成功讓其在386個人計算機上執行。因為Torvalds放置**kernel(核心)**的那個FTP網站的目錄叫:Linux,從此大家便叫這個Kernel為Linux。有同學已經看出來了,Linux=Linus+Minix,這樣是不是容易記住了?^_^

這就是Linux的由來。所以Linux 其實就是一個作業系統最底層的核心及其提供的核心工具,而常說的Linux系統指的是Linux distribution(Linux 釋出商套件),即Linux Kernel + Softwares + Tools + 可完全安裝程式組成的相當完整的作業系統。下面是一些作業系統之間的粗略關係:

圖1

Linux和Windows在基礎操作中的區別

以下介紹均以Ubuntu16.04為模板,其他distribution雖然命令可能不一樣,但是道是相通的。

Linux中的root和普通使用者

root(超級使用者)幾乎擁有最高許可權,可以做出許多普通使用者不能實現的操作。而普通使用者要想取得root許可權,需要口令(密碼);或者像類Debian(例如Ubuntu)系統中使用的sudo命令,允許使用者通過安全的方式使用特殊的許可權執行程式。所以為了安全起見,一般來說我們儘量通過普通使用者進行操作,在需要使用root許可權的情況下才在前面加sudo。流行的linux發行版,在安裝作業系統的時候都可以選擇建立普通使用者。如果在安裝作業系統時沒有建立普通使用者,安裝好以後可以在命令列中建立。

下載與安裝軟體

從Windows轉到Linux作業系統的同學,可能第一不適應的就是不知道去哪裡下載和安裝軟體。Windows裡面下載軟體,要通過搜尋官網找到合適的版本下載,雖然看起來全是圖形介面很方便,實際上,特別是在國內,很多軟體正版就算是免費的,也難免因為某度的混亂,通過某些軟體大全之類的網站下載軟體,要找到不帶病毒的軟體比較困難。甚至為了安全著想,有時候要手動對比MD5值,檢查證書。

然而在linux下,幾乎不用擔心這些,而且幾乎所有軟體都是開源免費的,選擇可靠性好的軟體源,通過強大的軟體包管理系統,許多時候,只需要知道軟體名稱,一個命令便可以下載安裝。

更換國內源

因為某些原因,國外的官方軟體源訪問速度很慢,所以可以更換國內的官方映象源,個人推薦USTC或者Tsinghua這兩所學校的映象源,不僅速度快,而且可靠。選擇合適的映象源,**注意,不同的linux系統版本不一樣,一定要選擇對應的版本。**然後輸入以下命令:

sudo vim /etc/apt/sources.list
複製程式碼

開啟軟體源列表,註釋掉原來的軟體源,換成映象源。如果對於vim操作不懂,可以參考後面的介紹。

下載與安裝

在linux系統中,下載軟體,往往是通過包管理系統,比如,下載神器vim,通過以下命令即可下載並安裝:

sudo apt install vim
複製程式碼

在Ubuntu16.04中都是通過 sudo apt install 下載安裝軟體。怎麼樣,是不是很方便^_^?

deb包

deb是Debian軟體包格式,副檔名為**.deb**,處理這種包的經典程式(命令)是dpkg.

deb包的下載和Windows軟體包下載一樣,需要去軟體官網下載版本對應的deb包,然後通過在deb包的路徑下,輸入以下命令:

sudo dpkg -i filename.deb
複製程式碼

這裡的filename.deb中filename是指檔名,注意,不要真的輸入"filename",請根據具體檔名輸入。此外需要說明,這裡的 dpkg -i就是安裝deb包的意思。更多有關dpkg的命令請自行查閱。

解除安裝軟體

比如要解除安裝vim,需要兩步即可:

sudo apt remove vim
sudo apt autoremove
複製程式碼

其他軟體解除安裝幾乎都可以通過這兩步實現。

apt

與ubuntu16.04之前的版本使用apt-get不同,這一版本採用更友好的apt包管理。以下是apt --help的具體說明:

命令列軟體包管理器 apt 提供軟體包搜尋,管理和資訊查詢等功能。 它提供的功能與其他 APT 工具相同(像 apt-get 和 apt-cache), 但是預設情況下被設定得更適合互動。

常用命令: list - 根據名稱列出軟體包 search - 搜尋軟體包描述 show - 顯示軟體包細節 install - 安裝軟體包 remove - 移除軟體包 autoremove - 解除安裝所有自動安裝且不再使用的軟體包 update - 更新可用軟體包列表 upgrade - 通過 安裝/升級 軟體來更新系統 full-upgrade - 通過 解除安裝/安裝/升級 來更新系統 edit-sources - 編輯軟體源資訊檔案

路徑

在linux中,路徑這一概念很重要。比如,要安裝一個deb包,需要進入下載的deb包的目錄才能使用dpkg -i安裝,或者使用相對路徑,比如我現在提示字元為threebody@ubuntuwork:~$ ,而deb包在~/Downloads目錄下,在這樣就可以通過命令 sudo dpkg -i Downloads/filename.deb安裝。所以,在操作檔案的時候需要注意當前路徑!

切換路徑

使用 cd 命令,比如,現在提示符為threebody@ubuntuwork:~$,我要進入Documents目錄,使用命令:

cd Documents/
複製程式碼

如果進入了Documents目錄,要上級目錄,輸入:

cd ..
複製程式碼

返回上級目錄,注意,兩點和cd之間有一個空格。

檢視檔案內容

使用 cat 命令檢視檔案內容,也可以使用vim檢視。比如:

cat test.conf
複製程式碼

命令列中會列印出檔案內容。

查詢檔案

在Windows下,不知道檔案或資料夾所在目錄的情況下,查詢檔案有everything這樣的軟體,那麼在linux下,如何在不知道檔案目錄的情況下找到檔案呢?這裡介紹三個命令。

whereis

whereis命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)。如果省略引數,則返回所有資訊。比如:

whereis vim
複製程式碼

更多用法請使用 whereis --help命令。

find

find命令最為強大,可以找到任何你想找的檔案。

find的使用例項:

find . -name 'my*'
複製程式碼

搜尋當前目錄(含子目錄,以下同)中,所有檔名以my開頭的檔案。雖然find很強大,但是由於搜尋很慢,所以一般情況下在其他搜尋命令找不到檔案的時候才使用它。更多用法請使用 find --help命令。

locate

locate其實是"find -name"的另一種寫法,但是要比後者快得多,原因在於它不搜尋具體目錄,而是搜尋一個資料庫。這個資料庫中含有本地所有檔案資訊。Linux系統自動建立這個資料庫,並且每天自動更新一次,所以使用locate命令查不到最新變動過的檔案。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新資料庫。locate的使用例項:

locate vim
複製程式碼

搜尋所有相對路徑或者名稱中含'vim'的檔案。更多用法請使用 locate --help命令。

移動與複製檔案

在linux桌面版中移動和複製檔案與Windows相同。但是既然有同學提出了,我還是說一下命令列下的操作。

mv

mv命令是move的縮寫,可以用來移動檔案或者將檔案改名。視mv命令中第二個引數型別的不同(是目標檔案還是目標目錄),mv命令將檔案重新命名或將其移至一個新的目錄中。當第二個引數型別是檔案時,mv命令完成檔案重新命名,當第二個引數是已存在的目錄名稱時,mv命令將原始檔移至目標目錄中。

  • 檔案改名:
mv file1.txt file2.log
複製程式碼

將file1.txt改名為file2.txt。

  • 移動檔案;
mv file3.txt /etc/bin
複製程式碼

將檔案file3.txt移動到/etc/bin目錄下。更多用法請使用 mv --help命令。

cp

cp,顧名思義是用來複制檔案或者目錄的命令。

  • 複製單個檔案到目標目錄:
cp filename4.txt /etc/test
複製程式碼

複製檔案filename4.txt到目錄/etc/test下面。

  • 複製整個目錄到另一個目錄下:
cp /etc/test /etc/bin
複製程式碼

複製/etc/test整個目錄到/etc/bin目錄下。

快捷鍵

在ubuntu16.04中:

  • 複製的快捷鍵:ctrl+shift+c
  • 貼上的快捷鍵為:ctrl+shift+v
  • 剪下的快捷鍵為: ctrl+shift+x
  • 自動補全:tab

注意:這裡的自動補全指目錄或者檔名補全,比如我用 cd 命令開啟Downloads目錄,一般來說只需要輸入"Dow"再按tab即可補全Downloads,這個命令特別方便,需要多多使用。

其他distribution請自行查閱。

檔案許可權

有時候我們執行一個檔案的時候會遇到許可權不夠或者無法執行的情況。這種情況下可以檢視檔案許可權。以我自己的電腦為例:

threebody@ubuntuwork:~$ ll test.conf diffFiles 
lrwxrwxrwx 1 threebody threebody  46 7月   8 13:33 diffFiles -> /home/threebody/Oxygen XML Editor 19/diffFiles*
-rw-rw-r-- 1 threebody threebody 110 7月  28 10:58 test.conf
複製程式碼

ll 命令列出檔案所有資訊。這裡可以看到第一個檔案有三組"rwx",第二個檔案也是分了三組,只是在第一個檔案某些位置上的w/x用''-''代替了。這三組"rwx",分別對應檔案所有者的許可權,檔案所在群組的許可權,其他人的許可權。現在暫時關心檔案所有者的許可權。

"r” 指可讀,“w”指可寫,"x"指可執行。前面兩個好理解,最後這個可執行指的是什麼呢?其實就是指一個程式,一個指令碼能不能執行。那麼第一個檔案最前面的"l”又是指什麼呢?最前面的指檔案型別。這裡的"l"指連結檔案,"-” 指檔案。

那麼,如何修改這些許可權呢?

這就要用到chmod這個命令。可以使用數字來代表各個許可權,"rwx" 中,r=4,w=2,x=1。如果對test.conf修改,使得其具有以下許可權:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

輸入命令:

chmod 770 test.conf
複製程式碼

其他的同理。要三組都加上某種許可權或者減去某種許可權,可以用+號或-號。

例如:

chmod a+x test.conf
複製程式碼

三組均加上可執行許可權。

更新

首先應該輸入以下命令:

sudo apt update
複製程式碼

然後再輸入以下命令:

sudo apt upgrade
複製程式碼

update:更新可用軟體包及其版本的列表,但不會安裝或升級任何軟體包。

upgrade:實際上安裝了更新版本的包。更新列表後,軟體包管理器知道了已安裝的軟體的可用更新。通過這個命令更新軟體。

檢視歷史命令

檢視歷史命令使用命令history。例項:

history 100
複製程式碼

檢視最近的100個命令。

基礎命令

VIM

vim號稱linux下最強大的編輯器。所以相關命令很多。在這裡我只介紹幾個常用命令。只限於正常開啟,修改並關閉檔案。

用vim開啟檔案輸入命令:

vim file
複製程式碼

開啟檔案以後按 "i" 便可以開始編輯:

圖2

編輯完成以後按esc鍵退出編輯模式,再按 : 鍵,輸入wq儲存並退出。

圖3

":" 鍵後面輸入的一些命令:

wq:儲存並退出

q!:強制退出,不儲存。

q:退出(不做修改的情況下使用)。

尾聲

這一篇文章幫我梳理了一下這個暑假學過的linux知識。就linux而言,確實有很多東西值得寫,值得去學。這個暑假一直用linux做的開發,確確實實的感受到了linux的方便,現在已經很少用windows了。

就這篇文章而言,只是涉及了一些基本操作,對於剛剛從Windows轉入Linux的同學來說可能剛剛夠用。至於更深入的學習,我還是建議同學們多去看書+實踐。《鳥哥的Linux私房菜》是一本很好的書,講的確實很細,雖然有時候有點囉嗦,但是如果耐心看下去,收穫會很大。至於以後我是否會更新Linux相關的內容,看情況吧。

學習一門新的知識,從懵懵懂懂到明白理解,這是一個循序漸進的過程,與君共勉。

------------------------- ** 10月24號更新 ** -----------------------------------------------------------

另:最近寫了一個ubuntu 系統一鍵環境配置指令碼,配置完畢的介面如所示:

9KeSE.png

已經在虛擬機器上面測試多次,如果覺得需要增加額外軟體配置,歡迎提issue,覺得好用歡迎star。

連結如下:github.com/starFalll/U…

相關文章