20155228 基於VirtualBox安裝Ubuntu和學習linux命令的學習經歷和心得


一.虛擬機VirtualBox的下載安裝

基於VirtualBox虛擬機安裝Ubuntu圖文教程

雖然婁老師的教程對於VirtualBox的下載安裝講的很簡單,可以說是一筆帶過,但是我在下載安裝的過程中的確遇到意想不到的問題。

  • 問題:在官網上下載的VB在安裝完成后打不開。點擊桌面的快捷方式彈出對話框說“創建COM對象失敗”。
  • 辦法:右鍵快捷方式-屬性-兼容性。百度說選擇一個只要不是win7的兼容模式並用管理員身份打開即可。
  • 建議:安裝VB時不要改動默認安裝路徑,百度說改動安裝路徑有可能使得VB打不開。

現在VB已經安裝並順利打開了,然后是配置VB。

二.新建虛擬機和安裝操作系統Ubuntu。

新建虛擬機的過程已經在教程里寫的非常詳細,這里不再贅述,但是有一點值得提一下。

  • 問題:這個問題是我在安裝Ubuntu之后才發現的,即使已經完成了虛擬機增強,虛擬機還是反應慢卡的很。第一次新建虛擬機的時候考慮到宿主機只有8個G的內存就給虛擬機設置了2個G的內存。
  • 辦法:新建虛擬機的時候設置虛擬機的內存至少是4個G。
  • 建議:其實發現設置有問題時不需要刪除原來的虛擬機再新建虛擬機,可以在虛擬機設置里面修改配置。

虛擬機建好后就要給虛擬機裝系統了,按照教程繼續走。從官網上下載Ubuntu,下載得到一個壓縮包,不需要解壓。Ubuntu作為一個Linux的發行版,有圖形操作界面對我這樣的新手來說還是比較方便的。然后是啟動虛擬機,安裝Ubuntu。

  • 問題:啟動虛擬機失敗。提示:不能為虛擬機打開一個新任務。
  • 辦法:安裝4.3.12或者更早版本的VB。
  • 建議:百度上解決這個問題的辦法多的不勝枚舉,除了常見的重裝時關閉殺毒軟件,兼容模式打開,還有刪除注冊表等等,都試過了沒什么用,最后還是找個老版本的VB安好解決問題。

VirtualBox 4.3.12下載

安裝Ubuntu的過程沒什么好說的,教程寫的已經非常詳細了,安裝時耐心等待就好。至於后面的虛擬機增強,也是照着教程做就好。

三.對Ubuntu進行系統升級和安裝配置git。

在閱讀婁老師的2016-2017-2 《Java程序設計》教學進程時我看到課程基礎要求使用開源中國托管代碼就簡單學習了一下怎么安裝使用git。

Git 是用於 Linux內核開發的版本控制工具。它采用了分布式版本庫的方式,不必服務器端軟件支持,使源代碼的發布和交流極其方便。——《百度百科》

我對git的直觀的理解就是一種可以把電腦里的代碼發布(push)到網上的軟件。說實話我沒怎么看懂婁老師的關於代碼托管的博客教程,也許是知識儲備不夠的原因吧。后來向學姐請教,學姐推薦我去看看盧肖明學長關於在Ubuntu上的安裝使用git的博客:Ubuntu下git的安裝與使用這篇博客寫的非常詳細。對比一下在windows系統上使用git,在linux上發布代碼要簡單一些。

安裝、配置、生成SSH公鑰都很順利,但是我打算要把公鑰復制到開源中國時遇到了問題。我到問題小組提問沒有人回答,那就查百度解決。

  • 問題:虛擬機沒有聯網。
  • 辦法:關閉虛擬機后右鍵配置,網絡連接設置設置為橋接模式。

檢查連接暢通,就可以發布代碼到項目了。

四.在實驗樓學習Linux 基礎入門(新版)

第一節、第二節

  • 關於Shell:通常在我們使用 Linux 時,我們並不是直接與系統打交道,而是通過一個叫做 Shell 的中間程序來完成的。Shell 是指“提供給使用者使用界面”的軟件(命令解析器),類似於 DOS 下的 command(命令行)和后來的 cmd.exe。普通意義上的 Shell 就是可以接受用戶輸入命令的程序。

  • 關於Terminal:在圖形界面下為了實現讓我們在一個窗口中完成接受用戶輸入和顯示輸出,Linux 系統提供了一個叫做終端模擬器的程序(Terminal)。

  • 關於tab鍵:使用Tab鍵來進行命令補全,最大的好處就是當你忘記某個命令的全稱時你可以只輸入它的開頭的一部分然后按下Tab鍵就可以得到提示或者幫助完成。當然不止補全命令,補全目錄,補全命令參數都是沒問題的。

  • 關於ctrl+c:想要立即停止並恢復到可控的狀態,可以使用Ctrl+c鍵來強行終止當前程序(並不會使終端退出)。雖然這個按着很方便,但不要隨便按,因為有時候當終端沒有任何反應或提示,也不能接受你的輸入,可能只是運行的程序需要耐心的等一下,不要急着Ctrl+c。

其他常見快捷鍵:

  • Ctrl+d 鍵盤輸入結束或退出終端

  • Ctrl+s 暫停當前程序,暫停后按下任意鍵恢復運行

  • Ctrl+z 將當前程序放到后台運行,恢復到前台為命令fg

  • Ctrl+a 將光標移至輸入行頭,相當於Home鍵

  • Ctrl+e 將光標移至輸入行末,相當於End鍵

  • Ctrl+k 刪除從光標所在位置到行末

  • Alt+Backspace 向前刪除一個單詞

  • Shift+PgUp 將終端顯示向上滾動

  • Shift+PgDn 將終端顯示向下滾動

  • 關於歷史輸入命令:鍵盤上的方向上鍵,恢復之前輸入過的命令。

  • 關於通配符:主要有星號(*):匹配 0 或多個字符和問號(?):匹配任意一個字符。通配符用來對字符串進行模糊匹配(比如文件名,參數名)。當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字符。當 Shell 在“參數值”中遇到了通配符時,Shell 會將其當作路徑或文件名去在磁盤上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴展);否則就將該通配符作為一個普通字符傳遞給“命令”,然后由命令進行處理。

  • 關於一次性創建多個文件:在創建文件的時候,如果需要一次性創建多個文件,可以直接輸入:

$ touch 文件名{1..10}
  • 關於獲得某個命令的說明和使用方式的詳細介紹:
$ man 命令的名字

一般包括以下部分內容:NAME(名稱)、SYNOPSIS(概要)、DESCRIPTION(說明)、EXAMPLES(示例)、SEE ALSO(參見)

第三節

  • who am i 查看當前偽終端的用戶的用戶名
    pts/0 中 pts 表示偽終端。偽終端就是當你在圖形用戶界面使用 /dev/tty7 時每打開一個終端就會產生一個偽終端, pts/0 后面那個數字就表示打開的偽終端序號,后面則表示當前偽終端的啟動時間。

  • whoami 查看當前登錄用戶的用戶名
  • who -a 打印能打印的全部
  • who -d 打印死掉的進程
  • who -m 同am i,mom likes
  • who -q 打印當前登錄用戶數及用戶名
  • who -u 打印當前登錄用戶登錄信息
  • who -r 打印運行等級

關於創建用戶

  • 創建用戶需要 root 權限,要用到 sudo 這個命令。
    使用這個命令有兩個大前提,一是你要知道當前登錄用戶的密碼,二是當前用戶必須在 sudo 用戶組。
  • 添加賬戶
$ sudo adduser 用戶名
  • 切換登錄用戶
    注意:Linux 下密碼輸入是不顯示任何內容的。
    退出當前用戶跟退出終端一樣可以使用 exit 命令或者使用快捷鍵 Ctrl+d。
$ su -l 用戶名

關於用戶組

  • 在 Linux 里面如何知道自己屬於哪些用戶組?
    使用groups命令:
$ groups 用戶名

其中冒號之前表示用戶,后面表示該用戶所屬的用戶組。這里可以看到 shiyanlou 用戶屬於 shiyanlou 用戶組,每次新建用戶如果不指定用戶組的話,默認會自動創建一個與用戶名相同的用戶組。

  • 將其它用戶加入 sudo 用戶組
    用在sudo用戶組的用戶執行 sudo 命令將用戶添加到 sudo 用戶組,讓它也可以使用 sudo 命令獲得 root 權限
$ su 在sudo用戶組的用戶名
$ groups 需要添加到sudo用戶組的用戶名
$ sudo usermod -G sudo 需要添加到sudo用戶組的用戶名
$ groups 需要添加到sudo用戶組的用戶名
  • 刪除用戶
$ sudo deluser 需要刪除的用戶名 --remove-home

關於查看文件權限

  • 用 ls 命令來列出並顯示當前目錄下的文件,當然這是在不帶任何參數的情況下
$ ls -l

關於變更文件所有者

關於修改文件權限

每個文件的三組權限(擁有者,所屬用戶組,其他用戶,記住這個順序是一定的)就對應這一個 "rwx",也就是一個 '7' ,所以如果我要將文件“iphone6”的權限改為只有我自己可以用那么就這樣:

$ chmod 700 iphone6

第四節

關於Linux 目錄結構

  • FHS 標准
    FHS(文件系統層次結構標准),多數 Linux 版本采用這種文件組織形式,FHS 定義了系統中每個區域的用途、所需要的最小構成的文件和目錄同時還給出了例外處理與矛盾處理。
    FHS 定義了兩層規范:
    第一層是, / 下面的各個目錄應該要放什么文件數據,例如 /etc 應該要放置設置文件,/bin 與 /sbin 則應該要放置可執行文件等等。
    第二層則是針對 /usr 及 /var 這兩個目錄的子目錄來定義。例如 /var/log 放置系統登錄文件、/usr/share 放置共享數據等等。

  • 目錄路徑

  • 路徑
    使用 cd 命令可以切換目錄。在 Linux 里面使用 . 表示當前目錄,.. 表示上一級目錄,- 表示上一次所在目錄,~ 通常表示當前用戶的"home"目錄。使用 pwd 命令可以獲取當前所在路徑。

cd (想要切換到的目錄)
  • 絕對路徑
    關於絕對路徑,簡單地說就是以根"/"目錄為起點的完整路徑,以你所要到的目錄為終點,表現形式如: /usr/local/bin,表示根目錄下的 usr 目錄中的 local 目錄中的 bin 目錄。

  • 相對路徑
    相對路徑,也就是相對於你當前的目錄的路徑,相對路徑是以當前目錄 . 為起點,以你所要到的目錄為終點。比如假設我當前在 /usr/local/bin 目錄,我想進入上一級的 local 目錄:

    cd ..
    cd /usr/local
    

    如果要進入的是 usr 目錄:

    cd /usr
    cd ../..
        ```
    
    

關於Linux 文件的基本操作

  • 新建空白文件:創建名為 test 的空白文件,因為在其他目錄沒有權限,所以需要先 cd ~ 切換回用戶的 /home/shiyanlou 目錄。
$ cd ~
$ touch test
  • 新建目錄:使用 mkdir(make directories)命令可以創建一個名為"mydir"的空目錄:
$ mkdir mydir
  • 創建一個多級目錄:使用 -p 參數,同時創建父目錄(如果不存在該父目錄),如下我們 同時創建一個多級目錄(這在有時候安裝軟件,配置安裝路徑時非常有用):
$ mkdir -p father/son/grandson
  • 復制文件:使用cp(copy)命令復制一個文件或目錄到指定目錄。將之前創建的"test"文件復制到"/home/shiyanlou/father/son/grandson"目錄中:
$ cp test father/son/grandson
  • 復制目錄:要成功復制目錄需要加上-r或者-R參數,表示遞歸復制,就是說有點“株連九族”的意思:
$ cp -r father family
  • 刪除文件:使用rm(remove files or directories)命令,刪除一個文件或目錄:(可以使用-f參數強制刪除)
$ rm test
$ rm -f test
  • 刪除目錄:跟復制目錄一樣,要刪除一個目錄,也需要加上-r或-R參數:
$ rm -r family
  • 移動文件:使用mv(move or rename files)命令,移動文件(剪切)。將文件"file1"移動到"Documents"目錄mv 源目錄文件 目的目錄:
$ mkdir Documents
$ mv file1 Documents
  • 重命名文件:將文件"file1"重命名為"myfile" mv 舊的文件名 新的文件名:
$ mv file1 myfile
  • 使用cat命令查看文件:如我們要查看之前從"/etc"目錄下拷貝來的passwd文件:(可以加上-n參數顯示行號)
$ cat -n passwd
  • 使用more工具打開passwd文件:打開后默認只顯示一屏內容,終端底部顯示當前閱讀的進度(百分比)。可以使用Enter鍵向下滾動一行,使用Space鍵向下滾動一屏,按下h顯示幫助,q退出。
$ more passwd
  • 查看文件類型:使用file命令可以查看文件的類型:
$ file 文件名
  • vim 編輯器的使用

  • 值得注意的問題

如果處於一個目錄下或者其子目錄下是不能刪除當前子目錄的

想要查找某個文件時需要處於文件所處目錄下才能查找到

第五節

關於環境變量

  • 使用declare命令創建一個變量名為 tmp 的變量:
$ declare tmp
  • 使用=號賦值運算符為變量 tmp 賦值為 shiyanlou:
$ tmp=shiyanlou
  • 讀取變量的值,使用echo命令和$符號($符號用於表示引用一個變量的值):
$ echo $tmp
  • 環境變量:可以簡單的理解成在當前進程的子進程是否有效,有效則為環境變量,否則不是(有些人也將所有變量統稱為環境變量,只是以全局環境變量和局部環境變量進行區分,我們只要理解它們的實質區別即可)。

  • 變量修改:
${變量名#匹配字串}	

從頭向后開始匹配,刪除符合匹配字串的最短數據

${變量名##匹配字串}	

從頭向后開始匹配,刪除符合匹配字串的最長數據

${變量名%匹配字串}	

從尾向前開始匹配,刪除符合匹配字串的最短數據

${變量名%%匹配字串}	

從尾向前開始匹配,刪除符合匹配字串的最長數據

${變量名/舊的字串/新的字串}

將符合舊字串的第一個字串替換為新的字串

${變量名//舊的字串/新的字串}	將符合舊字串的全部字串替換為新的字串
  • 變量刪除:可以使用unset命令刪除一個環境變量:
$ unset temp

關於搜索文件

  • whereis簡單快速
$whereis who
  • locate快而全
$ locate /etc/sh
  • which小而精
$ which man
  • find精而細:在指定目錄下搜索指定文件名的文件
$ find /etc/ -name interfaces

第六節

關於文件打包和解壓縮

  • 常見常用的壓縮包文件格式

  • zip壓縮打包程序:命令將 shiyanlou 的 home 目錄打包成一個文件,並查看了打包后文件的大小和類型。第一行命令中,-r參數表示遞歸打包包含子目錄的全部內容,-q參數表示為安靜模式,即不向屏幕輸出信息,-o,表示輸出文件,需在其后緊跟打包輸出文件名。后面使用du命令查看打包后文件的大小
$ zip -r -q -o shiyanlou.zip /home/shiyanlou
$ du -h shiyanlou.zip
$ file shiyanlou.zip

  • 設置壓縮級別為9和1(9最大,1最小),重新打包:這里添加了一個參數用於設置壓縮級別-[1-9],1表示最快壓縮但體積大,9表示體積最小但耗時最久。最后那個-x是為了排除我們上一次創建的 zip 文件,否則又會被打包進這一次的壓縮文件中,注意:這里只能使用絕對路徑,否則不起作用。
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/*.zip
  • 創建加密zip包:使用-e參數可以創建加密壓縮包:
$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou
  • 使用unzip命令解壓縮zip文件,將shiyanlou.zip解壓到當前目錄:(安靜模式)
$ unzip shiyanlou.zip
$ unzip -q shiyanlou.zip -d ziptest
  • rar打包壓縮命令
  • 安裝rar和unrar工具:

$ sudo apt-get update
$ sudo apt-get install rar unrar

 
- 從指定文件或目錄創建壓縮包或添加文件到壓縮包:

$ rm *.zip
$ rar a shiyanlou.rar .

- 從指定壓縮包文件中刪除某個文件:

$ rar d shiyanlou.rar .zshrc

- 查看不解壓文件:

$ rar l shiyanlou.rar

- 使用unrar解壓rar文件:

$ unrar x shiyanlou.rar //全路徑解壓
$ mkdir tmp //去掉路徑解壓
$ unrar e shiyanlou.rar tmp/

- tar打包工具
- 創建一個 tar 包:-c表示創建一個 tar 包文件,-f用於指定創建的文件名,注意文件名必須緊跟在-f參數之后,比如不能寫成tar -fc shiyanlou.tar,可以寫成tar -f shiyanlou.tar -c ~。你還可以加上-v參數以可視的的方式輸出打包的文件。上面會自動去掉表示絕對路徑的/,你也可以使用-P保留絕對路徑符。
  
  ```
$ tar -cf shiyanlou.tar ~
  ```
![](http://images2015.cnblogs.com/blog/1073846/201702/1073846-20170216115310738-2090969905.png)

- 解包一個文件(-x參數)到指定路徑的已存在目錄(-C參數):

$ mkdir tardir
$ tar -xf shiyanlou.tar -C tardir

- 只查看不解包文件-t參數:

$ tar -tf shiyanlou.tar

- 保留文件屬性和跟隨鏈接(符號鏈接或軟鏈接),有時候我們使用tar備份文件當你在其他主機還原時希望保留文件的屬性(-p參數)和備份鏈接指向的源文件而不是鏈接本身(-h參數):

$ tar -cphf etc.tar /etc

- 對於創建不同的壓縮格式的文件,對於tar來說是相當簡單的,需要的只是換一個參數,這里我們就以使用gzip工具創建*.tar.gz文件為例來說明。  
我們只需要在創建 tar 文件的基礎上添加-z參數,使用gzip來壓縮文件。解壓*.tar.gz文件:
     ```
$ tar -czf shiyanlou.tar.gz ~
$ tar -xzf shiyanlou.tar.gz
     ```
###第七節
關於簡單文件系統操作

- 查看磁盤和目錄的容量:使用 df 命令查看磁盤的容量

$ df
$ df -h

- 使用 du 命令查看目錄的容量

$ du
$ du -h
$ du -h -d 0 ~ //只查看1級目錄的信息
$ du -h -d 1 ~ //查看2級


關於簡單的磁盤管理

- 創建虛擬磁盤:用dd命令從標准輸入讀入用戶輸入到標准輸出或者一個文件:

$ dd of=test bs=10 count=1 //輸出到文件
$ dd if=/dev/stdin of=/dev/stdout bs=10 count=1 //輸出到標准輸出

- 將輸出的英文字符轉換為大寫再寫入文件:

$ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase

- 使用 dd 命令創建虛擬鏡像文件:從/dev/zero設備創建一個容量為 256M 的空文件:

$ dd if=/dev/zero of=virtual.img bs=1M count=256
$ du -h virtual.img

- 使用 mkfs 命令格式化磁盤:使用下面的命令來將我們的虛擬磁盤鏡像格式化為ext4文件系統:

$ sudo mkfs.ext4 virtual.img

- 使用 mount 命令掛載磁盤到目錄樹
  - 先來使用mount來查看下主機已經掛載的文件系統:
    ```
    $ sudo mount
    ```
  - mount命令的一般格式如下:
         ```
      mount [options] [source] [directory]
         ``` 
          
   - 一些常用操作:
       
       ```
       mount [-o [操作選項]] [-t 文件系統類型] [-w|--rw|--ro] [文件系統源] [掛載點]
       ```
- 使用 fdisk 為磁盤分區

$ sudo fdisk -l

- 進入磁盤分區模式

$ sudo fdisk virtual.img

###第八節
關於內建命令與外部命令

- 內建命令與外部命令
![](http://images2015.cnblogs.com/blog/1073846/201702/1073846-20170216122131629-1245108231.png)


- 使用type 命令來區分命令是內建的還是外部的

type (命令的名字)
xxx is a shell builtin //如果結果是這樣那么這是內建命令
xxx is /usr/sbin/xxx //如果結果是這樣那么這是外建命令

關於幫助命令的使用

- help 命令:zsh 中內置並沒有 help 命令,我們可以進入 bash 中,在 bash 中內置有該命令

bash
help ls //用於內建命令
ls --help //用於外建命令

- man 命令:沒有內建與外部命令的區分

man ls

- info 命令:info 來自自由軟件基金會的 GNU 項目,是 GNU 的超文本幫助系統,能夠更完整的顯示出 GNU 信息

info ls


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM