20165231 預習作業3 linux安裝及學習
linux安裝
由於以前稍微關註過虛擬機相關知識,所以大致知道虛擬機軟件的相關知識。目前我已知的普遍使用的虛擬機軟件是VMware Workstation(下文簡稱VM),VirtualBox(下文簡稱VB)。其余的可能很多人用但是我沒用過就不提了。
我也在VM和VB之間做過比較。VB開源,免費,且安裝後體積較小,操作簡單適合新手;VM功能強大,可以隨時調整虛擬機的配置,完全隔離並保護主機與虛擬機的文件等,但是占用空間較大,且不免費需要破解(雖然破解不難但是本著支持正版維護版權,且後期遇到一些問題還是改用適合新手的VB)。
我下載了兩個ubuntu系統——17.04,16.04.3 LTS。ubuntu每半年發布一個新系統,然後就放棄該系統的維護。LTS版本意思為Long Term Support,長期支持版本,有五年的支持期至2021年。我的虛擬機程序也下載了VMware Workstation 14pro和VirtualBox5.2.6版本。起初我使用的是VM和ubuntu17.04版本,但是安裝後遇到一系列問題——首先是VM虛擬機不知是對ubuntu還是所有系統,顯示窗口極小無法全屏需要下載安裝VMware Tools後才可以全屏顯示。然後我的17.04系統對所有需要安裝的東西都無法安裝提示找不到包,詢問過學長後建議我換源,但是在換源文檔替換代碼時十分的卡,有時可以把虛擬機卡到死機(我電腦配置為i7-6700HQ,16G RAM,128G SSD+1T HDD,CPU和內存分出一半給虛擬機,硬盤35G),之後我選擇重裝系統,成功後VMware Tools無論如何安裝後無法生效,換源換了阿裏源,各大學的源也無濟於事,且網上17.04版本的相關支持也是非常的少不如16.04的多,且LTS是長期支持版本,所以第二次就換成了VB和ubuntu16.04.3 LTS。上述問題自然解決。總結可能是自己不會用VM,且網上教程教程比較雜亂設置參數出現問題,安裝系統時電腦還在使用別的程序導致系統安裝不完整所致。
在使用虛擬機是也別強調一定要在虛擬機系統完全關機後才能關閉虛擬機軟件從而關閉主機,否則虛擬機強制關閉可能會會導致ubuntu系統下次開機進入修復模式(grub ),第一次接觸並不是很懂,安裝網上教程多次嘗試後界面出現很多*字符和亂碼,迫不得已將已經安裝好各種內容的系統重裝。目前各項功能正常。
linux安裝軟件大多是在終端輸入命令apt-get命令獲取,需註意命令的正確性。能用補全盡量補全。
在配置虛擬機資源分配時,內存不宜超過主機的一半,其余資源也別分配太高。linux對配置要求不很高,分出過多資源導致主機卡頓,運行在主機上的虛擬機軟件勢必會卡頓。
linux學習
別出心裁的Linux命令學習法總結
操作系統操作系統為你完成所有“硬件相關、應用無關”的工作,以給你方便、效率、安全。操作系統的功能我總結為兩點:管家婆和服務生:
管家婆:通過進程、虛擬內存和文件三個重要抽象管理計算機的CPU、內存、I/O設備。
服務生:為用戶提供shell,為程序員提供系統調用。
Linux學習應用的一個特點是通過命令行進行使用,命令行的好處主要是可以批處理並自動化,還有些功能GUI無法完成。
linux基本快捷鍵:
- CTRL+ALT+T:打開終端;
- CTRL+SHIFT+T:新建標簽頁
- ALT+數字N:終端中切換到第N個標簽頁
- Tab:終端中命令補全
- 上下鍵盤:切換命令歷史
- CTRL+C:中斷程序運行。
Linux系統中,我們經常會用man命令來幫助查看這個命令的具體用法,man是很強大的,但是英語不好的同學用man用起來可能不那麽順手,自然而然的就出現了cheat命令,cheat命令就是通過簡單的實例告訴你一個命令的具體使用方法。
和查找相關的核心命令還有find,locate,grep,whereis,which等,其中:
find查找一個文件在系統中的什麽位置,locate是神速版本的find(Windows下有個神器Everything和locate功能類似)。可以通過cheat find學習find命令。
grep 可以對文件全文檢索,比如你接手一個C語言項目,裏面有上百個C源文件,想找找main函數在那個文件中,你可以通過grep -n main *.c,快速找到main在哪個C文件中並指出在第幾行。grep支持正則表達式,正則表達式也是一個重要的元知識。可以通過cheat grep學習grep命令。上面還提到,
whereis,which告訴你使用的命令工具裝在什麽地方。Linxu初學者會不習慣Linux的文件系統,C盤呢?D盤呢?用apt-get install安裝程序好象也不用我們選擇安裝位置,程序裝在哪了?比如:我們在Linux下上網使用firefox瀏覽器,大家可以使用whereis firefox或更精確的使用which firefox來看看結果。
apt-cache可以在使用apt-get install安裝一個程序時先找找軟件源的庫裏有沒有這個程序,有才可以安裝。比如老師推薦了一個調試工具ddd,你可以用apt-cache search ddd查查有沒有這個程序。
linux入門
根據實驗總結一下linux常用命令:- 管理員權限:sudo su
- 恢復用戶:su XXX
- 創建一個文件file,touch file
- 進入一個目錄,cd是一個命令
cd /etc/ - 查看當前所在目錄
pwd - ls 列出文件
- 查看用戶輸入
who am i
或者
who mom likes - 創建用戶
sudo adduser XXX - 命令切換登錄用戶:
su -l XXX - 查看用戶組 使用 groups 命令
groups XXX 或者 查看 /etc/group 文件 - 刪除用戶:
sudo deluser lilei --remove-home - 變更文件所有者:sudo chown shiyanlou iphone6
- 修改權限:
法一: chmod 700 iphone6(二進制數表示)
法二: chmod go-rw iphone6(加減賦值操作) - 新建目錄:mkdir mydir
- 復制文件: cp test(文件名) father/son/grandson(文件夾名)
- 復制目錄:cp -r father family(要成功復制目錄需要加上 -r 或者 -R 參數,表示遞歸復制,就是說有點“株連九族”的意思:)
- 刪除文件:rm test
- 強制刪除:rm -f test
- 刪除目錄:rm -r family
- 移動文件:mv file1(文件夾1名) Documents(文件夾2名)
- 重命名文件:mv file1(文件夾1名) myfile(文件夾2名)
- 批量重命名:使用通配符批量創建 5 個文件:
$ touch file{1..5}.txt - 批量將這 5 個後綴為 .txt 的文本文件重命名為以 .c 為後綴的文件:
$ rename ‘s/.txt/.c/‘ *.txt - 批量將這 5 個文件,文件名改為大寫:
$ rename ‘y/a-z/A-Z/‘ *.c - 查看 PATH 環境變量的內容:$ echo $PATH
- 讓環境變量立即生效:$ unset temp
zip 壓縮打包程序
使用 zip 打包文件夾:
$ zip -r -q -o shiyanlou.zip /home/shiyanlou
$ du -h shiyanlou.zip
$ file shiyanlou.zip
設置壓縮級別為 9 和 1(9 最大,1 最小),重新打包:
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/.zip
$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/.zip
我們再用 du 命令分別查看默認壓縮級別、最低、最高壓縮級別及未壓縮的文件的大小:
$ du -h -d 0 *.zip ~ | sort
- 創建一個 tar 包:
$ tar -cf shiyanlou.tar 解壓 *.tar.gz 文件:$ tar -xzf shiyanlou.tar.gz
linux實驗
實驗三
who的其他命令參數
查看文件權限
我們之前已經很多次用到 ls 命令了,如你所見,我們用它來列出並顯示當前目錄下的文件,當然這是在不帶任何參數的情況下,它能做的當然不止這麽多,現在我們就要用它來查看文件權限。
使用較長格式列出文件:
你可能除了知道最後面那一項是文件名之外,其它項就不太清楚了,那麽到底是什麽意思呢:
可能你還是不太明白,比如第一項文件類型和權限那一堆東西具體指什麽,鏈接又是什麽,何為最後修改時間,下面一一道來:
作業:
實驗四
linux目錄結構:
目錄路徑:
進入上一級目錄:
$ cd ..
進入你的 home 目錄:
$ cd ~
或者 cd /home/<你的用戶名>
使用 pwd 獲取當前路徑:
$ pwd
相對路徑與絕對路徑:
絕對路徑
$ cd /usr/local/bin
相對路徑
$ cd ../../usr/local/bin
linux文件基本操作
新建目錄:
創建名為“ mydir ”的空目錄:
$ mkdir mydir
使用 -p 參數,同時創建父目錄(如果不存在該父目錄),如下我們同時創建一個多級目錄:
$ mkdir -p father/son/grandson
復制
要成功復制目錄需要加上 -r 或者 -R 參數,表示遞歸復制:
$ cp -r father family
刪除
使用 rm(remove files or directories)命令刪除一個文件:
$ rm test
強制刪除
$ rm -f test
刪除目錄:
跟復制目錄一樣,要刪除一個目錄,也需要加上 -r 或 -R 參數:
$ rm -r family
移動文件
使用 mv(move or rename files)命令移動文件(剪切)。將文件“ file1 ”移動到 Documents 目錄:
mv 源目錄文件 目的目錄:
$ mkdir Documents
$ mv file1 Documents
重命名文件
mv 舊的文件名 新的文件名:
$ mv file1 myfile
批量重命名
使用通配符批量創建 5 個文件:
$ touch file{1..5}.txt
批量將這 5 個後綴為 .txt 的文本文件重命名為以 .c 為後綴的文件:
$ rename ‘s/.txt/.c/‘ *.txt
批量將這 5 個文件,文件名改為大寫:
$ rename ‘y/a-z/A-Z/‘ *.c
查看文件
比如我們要查看之前從 /etc 目錄下拷貝來的 passwd 文件:
$ cat passwd
可以加上 -n 參數顯示行號:
$ cat -n passwd
作業:
實驗五
環境變量
使用 declare 命令創建一個變量名為 tmp 的變量:
$ declare tmp
使用 = 號賦值運算符,將變量 tmp 賦值為 shiyanlou:
$ tmp=shiyanlou
讀取變量的值,使用 echo 命令和 $ 符號:
$ echo $tmp
環境變量
變量修改
搜索文件
搜索相關的命令常用的有 whereis,which,find 和 locate 。
- whereis 簡單快速
$whereis who
- locate 快而全
,如查找 /etc 下所有以 sh 開頭的文件:
$ locate /etc/sh
查找 /usr/share/ 下所有 jpg 文件:
$ locate /usr/share/*.jpg
註意要添加 * 號前面的反斜杠轉義,否則會無法找到。
如果想只統計數目可以加上 -c 參數,-i 參數可以忽略大小寫進行查找,whereis 的 -b、-m、-s 同樣可以使用。
- which 小而精
which 本身是 Shell 內建的一個命令,我們通常使用 which 來確定是否安裝了某個指定的軟件,因為它只從 PATH 環境變量指定的路徑中去搜索命令:
$ which man
- find 精而細
這條命令表示去 /etc/ 目錄下面 ,搜索名字叫做 interfaces 的文件或者目錄。這是 find 命令最常見的格式,千萬記住 find 的第一個參數是要搜索的地方:
$ sudo find /etc/ -name interfaces
作業:
實驗六
文件打包後綴名說明:
使用zip打壓縮包
zip 壓縮打包程序
$ zip -r -q -o shiyanlou.zip /home/shiyanlou
$ du -h shiyanlou.zip
$ file shiyanlou.zip
使用 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 *.rar
$ 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 包:
$ tar -cf shiyanlou.tar ~
解包一個文件(-x 參數)到指定路徑的已存在目錄(-C 參數):
$ mkdir tardir
$ tar -xf shiyanlou.tar -C tardir
只查看不解包文件 -t 參數:
$ tar -tf shiyanlou.tar
保留文件屬性和跟隨鏈接(符號鏈接或軟鏈接),有時候我們使用 tar 備份文件當你在其他主機還原時希望保留文件的屬性(-p 參數)和備份鏈接指向的源文件而不是鏈接本身(-h 參數):
$ tar -cphf etc.tar /etc
我們只需要在創建 tar 文件的基礎上添加 -z 參數,使用 gzip 來壓縮文件:
$ tar -czf shiyanlou.tar.gz ~
解壓 *.tar.gz 文件:
$ tar -xzf shiyanlou.tar.gz
總結:
作業:
目前學的比較明白的大概就到這裏,後續的我會繼續學習理解。這算是最花功夫的一片博客了,不僅需要匯總學習知識還要著手實驗實踐。相信保持這個勁頭可以學好這門課。
20165231 預習作業3 linux安裝及學習