20165322 預備作業3 Linux安裝及學習
Linux安裝及學習
安裝部分
由於是第一次接觸虛擬機知識,之前也沒什麽了解,我選擇完全按照老師教程裏的安裝vbox虛擬機。
虛擬機安裝的過程很順利,不做詳細講解。
出現的問題
- 在啟動我新建的虛擬電腦時出現了問題。問題顯示如下
我在百度以後得到了學姐的幫助。進入BIOS,選擇Configuration中的Intel Uirtual Technology,將Disabled改為Enabled 後保存。
- 我在安裝增強功能時顯示安裝失敗。問題顯示如下
在查找資料掙紮了很久之後...好吧,發現是我一開始新建虛擬電腦時粗心,將版本選成了32bit,我的主機系統是64bit,這造成了沖突。重新建立虛擬電腦就順利解決了。
收獲
第一次獨立安裝虛擬機和系統,在一開始知識照著老師的教程一步一步做,在遇到問題後,我努力自己嘗試解決,並沒有急於立刻求助別人,在思考過程中,我逐漸理解了虛擬機和系統之間的關系(在此之前真的是一只電腦小白)除此之外,和win不同的系統操作方法也讓我感到新穎,Linux不像win好上手易於理解,相對更直觀地把每一步操作都顯示出代碼,清楚地展現在我眼前。假期間我還根據百度自己調出了win裏的終端,修改了不知道為啥自己跳脫的無線網設置。
學習部分
一、學習別出心裁的Linux命令學習法
Linux的構架:硬件、內核、系統調用、殼(shell)、庫函數、應用。
Ubuntu快捷鍵:
Ctrl+Alt+T
Ctrl+Shift+T
:新建標簽頁;
Alt+數字+N
:跳轉標簽頁;
Tab
:補全終端命令,在C語言編程中也常用;
上鍵
:切換歷史命令;
Ctrl+C
:中斷程序;Linux命令:
命令格式:command [options] [arguments]man命令:
manual(手冊、指南),可以使用man man
命令查看幫助,其中man -k
用於搜索關鍵字,根據相匹配數字來查找所需內容。接著可以用man -f
查看命令基本功能。cheat命令:
看起來就很有趣,但是...好吧,看了老師的講解一頭霧水,還是老實安裝動手實操。
安裝的時候提示我無法獲得鎖/var/lib/dpkg/lock-open(11:資源暫時不可用)
sudo rm/var/lib/dpkg/lock
強行終止就可以了,希望不要留下什麽後遺癥。其他核心命令:
find
查找文件路徑
locate
神速版本find
grep
對文件全文檢索
whereis
,which
查找命令工具裝在什麽地方.
二、Linux系統簡介
構成部分(見上部分)、歷史簡介、主要人物
- Linux為開源自由軟件,部分軟件質量和體驗欠缺。安全性比Windows更高。操作入門難,但效率極高。
關於學習Linux:現階段還處在一個新鮮的嘗試和接觸階段,尚不清楚自己要用它來做什麽。不過我非常認同老師說的打好基礎的重要性,把概念結合實際操作理解透徹了再想應用,我認為更穩妥。
三、基本概念和操作
終端的概念:本質上是對應著 Linux 上的 /dev/tty 設備,默認提供了 6 個純命令行界面的終端,在物理機系統上你可以通過使用
[Ctrl]+[Alt]+[F1]~[F6]
進行切換,通過按下[Ctrl]+[Alt]+[F7]
來切換回圖形界面。- shell殼:他是我們與系統交流的中間程序,也是控制系統的腳本語言。
- 命令行操作:
touch
創建文件、cd
進入一個目錄、pwd
查看當前所在目錄,其他命令可參看Linux命令大全 - 重要快捷鍵:
Ctrl+d
:鍵盤輸入結束或輸出終端
Ctrl+s
:暫停當前程序,按任意鍵恢復運行
Ctrl+z
:將當前程序放在後臺運行
fg
:後臺運行程序恢復前臺
Ctrl+a
:光標移至輸入行頭,相當於Home
Ctrl+e
:光標移至輸入行末,相當於End
Ctrl+k
:刪除從光標所在位置到行末
Alt+Backspace
:向前刪除一個單詞
Shift+PgUp
:將終端顯示向上滾動
Shift+PgDn
:將終端顯示向下滾動
- 通配符:通配符是一種特殊語句,主要有星號(*)和問號(?),用來對字符串進行模糊匹配(比如文件名、參數名)。
shell通配符:
*
:匹配0或多個字符
?
:匹配任意一個字符
[list]
:匹配list中的任意單一字符
[!list]
:匹配除 list中的任意單一字符 以外的字符
[c1-c2]
:匹配c1-c2中的任意單一字符
{string1,string2...}
:匹配string1或string2(...)其一字符串
{c1,c2,...}
:匹配c1-c2中的全部字符
四、用戶及文件權限管理
查看用戶:輸入
whoami
回車,輸出第一列為當前偽終端用戶名,第二列的pts/數字
表示打開的偽終端序號,第三列則表示當前偽終端的啟動時間。who命令:
-a
:打印能打印的全部
-d
:打印死掉的進程
-m
:和am i
,mom likes
相同
-q
:打印當前登錄用戶數和用戶名
-u
:打印當前登錄用戶登錄信息
-r
:打印運行等級創建用戶:
在 Linux 系統裏,
root
賬戶擁有整個系統至高無上的權利,比如 新建/添加 用戶。這時就需要sudo這個命令。
新建一個用戶:
$ sudo adduser 用戶名
添加用戶到系統並默認為新用戶創建 home 目錄:
$ ls /home
切換新建用戶:$ su -l 用戶名
之後輸入密碼...退出用戶和退出終端方法一致。用戶組:
使用groups
命令,顯示為用戶名:用戶組
或者使用cat
命令,直接查看/etc/group文件。用戶需要加入sudo組才能獲得root權限,操作如下:$ su shiyanlou # 此處需要輸入shiyanlou用戶密碼 $ groups lilei $ sudo usermod -G sudo lilei $ groups lilei
刪除用戶:
$ sudo deluser 用戶--remove-home
- 查看文件權限:
文件類型:Linux 裏面一切皆文件。
文件權限:一個目錄同時具有讀權限和執行權限才可以打開並查看內部文件,而一個目錄要有寫權限才允許在其中創建其它文件。
ls
命令的常用用法:
ls
:列出並顯示當前目錄下的文件
-A
:顯示除了.
(當前目錄)和..
(上一級目錄)之外的所有文件,包括隱藏文件(Linux 下以.
開頭的文件為隱藏文件)。
-Al
:查看某一個目錄的完整屬性
-dl<目錄名>
:顯示所有文件大小
-AsSh
:其中小s
為顯示文件大小,大S
為按文件大小排序,可用man知道如何按其它方式排序- 變更文件所有者:
$sudo chown <新所有者> <文件名>
- 修改文件權限:
方式一:二進制數字表示
rwx
對應擁有者,所屬用戶組,其他用戶
$ chmod 數字 文件名
方式二:加減賦值操作
g
、o
還有u
分別表示 group、others 和 user,+
和-
分別表示增加和去掉相應的權限
$ chmod go-rw 文件名
adduser
與useradd
區別:useradd、userdel 這類操作更像是一種命令,執行完了就返回。而 adduser 更像是一種程序,需要你輸入、確定等一系列操作。
五、Linux 目錄結構及文件基本操作
FHS標準
目錄的四種交互作用的形態
- 目標路徑
windows裏磁盤、文件夾也有路徑。在Linux中,使用cd
命令可以切換目錄。-
表示上一次所在目錄,~
通常表示當前用戶的home
目錄。 - 絕對路徑:
以根" / "目錄為起點的完整路徑,以你所要到的目錄為終點。這與windows我們下載軟件時選擇路徑類似。 - 相對路徑:
以當前目錄.
為起點,以你所要到的目錄為終點.使用pwd
命令可以獲取當前所在路徑(絕對路徑)。 - 新建文件:
新建空白文件,因為在其它目錄沒有權限,所以需要先cd ~
切換回用戶的/home/用戶名
目錄 - 新建目錄:
使用mkdir
(make directories)命令可以創建一個空目錄,也可同時指定創建目錄的權限屬性。使用-p
參數,同時創建父目錄(如果不存在該父目錄),如下我們同時創建一個多級目錄(這在安裝軟件、配置安裝路徑時非常有用)。效果為$ mkdir -p father/son/grandson
- 復制文件:
使用cp
(copy)命令復制一個文件到指定目錄。$ cp test(文件名) father/son/grandson(路徑)
- 復制目錄:
要成功復制目錄需要加上-r
或者-R
參數,表示遞歸復制。$ cp -r father family
- 刪除文件:
使用rm
命令刪除一個文件,用-f
可以強制刪除參數。 - 刪除目錄:
要成功刪除目錄需要加上-r
或者-R
參數。 - 移動文件:
使用mv
命令移動文件(剪切)。mv 源目錄文件 目的目錄
- 重命名文件:
mv 舊的文件名 新的文件名
,rename
批量重命名 - 查看文件:
cat
:正序顯示打印文件內容到標準輸出(終端),加上-n
參數顯示行號
tac
:倒序打印文件內容到標準輸出(終端)
nl
:添加行號並打印,比cat -n
更專業的行號打印命令 - 使用
more
和less
命令分頁查看文件
用於閱讀文件。打開後默認只顯示一屏內容,終端底部顯示當前閱讀的進度。可以使用Enter
鍵向下滾動一行,使用Space
鍵向下滾動一屏,按下h
顯示幫助,q
退出。 - 使用
head
和tail
命令查看文件
只查看文件的頭幾行(默認為 10 行,不足 10 行則顯示全部)和尾幾行。 查看文件類型:使用
file
命令查看文件的類型
六、環境變量與文件查找
變量
declare
:創建一個變量
=
:賦值運算符
echo
&$
:讀取變量的值,$ 符號用於表示引用一個變量的值
變量名:並不是任何形式的變量名都是可用的,變量名只能是英文字母、數字或者下劃線,且不能以數字作為開頭。- 環境變量
- 判定環境變量:在當前進程的子進程有效則為環境變量,否則不是。
- 三種環境變量相關的命令:
set
:顯示當前 Shell 所有變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量。
env
:顯示與當前用戶相關的環境變量,還可以讓命令在指定環境中運行。
export
:顯示從 Shell 中導出成環境變量的變量,也能通過它將自定義變量導出為環境變量。
環境變量永久生效:
/etc/bashrc
和/etc/profile
,它們分別存放的是 shell 變量和環境變量。如果想要添加一個永久生效的環境變量,只需要打開 /etc/profile,在最後加上你想添加的環境變量就好啦。- 添加自定義路徑到“ PATH ”環境變量
一定要使用絕對路徑添加自定義路徑到PATH
環境變量:$PATH=$PATH:/home/shiyanlou/mybin
>>
: 表示將標準輸出以追加的方式重定向到一個文件中
>
: 是以覆蓋的方式重定向到一個文件中 變量修改
變量刪除:使用
unset
命令刪除一個環境變量- 讓環境變量立即生效:
$ source .zshrc(配置文件)
$ . ./.zshrc
(後面的文件必須指定完整的絕對或相對路徑名)
搜索文件:
whereis
簡單快速: 直接從數據庫中查詢,只能搜索二進制文件(-b),man 幫助文件(-m)和源代碼文件(-s)。
locate
快而全: 手動執行一次 updatedb 命令,用於更新它的查找對象——“ /var/lib/mlocate/mlocate.db ”數據庫,它可以用來查找指定目錄下的不同文件類型。
which
小而精: 通常使用 which 來確定是否安裝了某個指定的軟件,因為它只從 PATH 環境變量指定的路徑中去搜索命令
find
精而細: 它不但可以通過文件類型、文件名進行查找而且可以根據文件的屬性(如文件的時間戳,文件的權限等)進行搜索。find 的第一個參數是要搜索的地方:$ sudo find /etc/ -name 文件或目錄
註意 find 命令的路徑是作為第一個參數的, 基本命令格式為 find [path] [option] [action] 。
與時間相關的命令參數:
-atime
:最後訪問時間
-ctime
:最後修改文件內容的時間
-mtime
:最後修改文件屬性的時間- 與這些參數相關的天數命令(以 -mtime 參數舉例)
-mtime n
:n 為數字,表示為在 n 天之前的“一天之內”修改過的文件
-mtime +n
:列出在 n 天之前(不包含 n 天本身)被修改過的文件
-mtime -n
:列出在 n 天之內(包含 n 天本身)被修改過的文件
-newer file
:file 為一個已存在的文件,列出比 file 還要新的文件名 - 列出 home 目錄中,當天(24 小時之內)有改動的文件:
$ find ~ -mtime 0
列出用戶家目錄下比 Code 文件夾新的文件:
$ find ~ -newer /home/shiyanlou/Code
七、文件打包與壓縮
- 常見常用的壓縮包文件格式
*.zip
: zip 程序打包壓縮的文件
*.rar
: rar 程序壓縮的文件
*.7z
: 7zip 程序壓縮的文件
*.tar
: tar 程序打包,未壓縮的文件
*.gz
: gzip 程序(GNU zip)壓縮的文件
*.xz
: xz 程序壓縮的文件
*.bz2
: bzip2 程序壓縮的文件
*.tar.gz
: tar 打包,gzip 程序壓縮的文件
*.tar.xz
: tar 打包,xz 程序壓縮的文件
*tar.bz2
: tar 打包,bzip2 程序壓縮的文件
*.tar.7z
: tar 打包,7z 程序壓縮的文件 - 一些參數:
-r
: 表示遞歸打包包含子目錄的全部內容
-q
: 表示為安靜模式
-o
: 表示輸出文件,需在其後緊跟打包輸出文件名
-O
: 解壓時可以指定編碼類型unzip -O GBK 中文壓縮文件.zip
du
: 分別查看默認壓縮級別、最低、最高壓縮級別及未壓縮的文件的大小$ du -h -d 0 *.zip ~ | sort
(其中-h
意為表達為人們可讀的方式-d
意為所查看文件的深度)
-x
:排除我們上一次創建的 zip 文件,否則又會被打包進這一次的壓縮文件中。$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
設置壓縮級別為 9 和 1(9 最大,1 最小)只能使用絕對路徑
-e
: 創建加密壓縮包
-l
: 將 LF 轉換為 CR+LF,排除在 Windows 系統上打開看起來是沒有換行的問題
zip壓縮打包程序:
打包 :zip 打包輸出文件名.zip 被打包目錄 (目錄請加 -r 參數)- zip解壓縮
解包:unzip something.zip(解壓sth.到當前目錄) - rar 打包壓縮命令
- 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 -zcvf something.tar something
- 解包:tar -zxvf something.tar
- 指定路徑:-C 參數
壓縮文件格式: 參數
*.tar.gz
:-z
*.tar.xz
:-J
*tar.bz2
:-j
一些參數:
-c
:創建一個 tar 包文件
-f
:用於指定創建的文件名,註意文件名必須緊跟在-f
參數之後
-p
:保留絕對路徑符
解包一個文件(-x
參數)到指定路徑的已存在目錄(-C
參數):$ tar -xf shiyanlou.tar -C tardir
只查看不解包文件 -t 參數:$ tar -tf shiyanlou.tar
八、文件系統操作與磁盤管理
- 查看磁盤的容量
df
: 查看磁盤的容量增強可讀性用參數
-h
:$ df -h
- 查看目錄的容量
du
: 查看目錄的容量- 增強可讀性用參數
-h
指定查看目錄的深度
-d
:
- 常用參數:
-a
: 同--all 顯示目錄中所有文件的大小
-s
: 同--summarize 僅顯示總計,只列出最後加總的值 - 創建虛擬磁盤
dd
命令:用於轉換和復制文件,也可以讀取文件或寫入到這些文件。它的命令行選項格式為選項=值
.可以用選項if
(input file,輸入文件)和of
(output file,輸出文件)改變標準輸入和輸出。- 使用 dd 命令創建虛擬鏡像文件:
從/dev/zero設備創建一個容量為 256M 的空文件:
$ dd if=/dev/zero of=virtual.img bs=1M count=256 使用 mkfs 命令格式化磁盤
將我們的磁盤鏡像格式化為ext4文件系統:
$ sudo mkfs.ext4 virtual.img(磁盤)
Linux支持的文件系統:
- 使用 mount 命令掛載磁盤到目錄樹
mount
: mount 指令是告訴操作系統,對應的文件系統已經準備好,可以使用了,而該文件系統會對應到一個特定的點(稱為掛載點)。掛載好的文件、目錄、設備以及特殊文件即可提供用戶使用。
mount命令的一般格式如下:
mount [options] [source] [directory]
一些常用操作:
mount [-o [操作選項]] [-t 文件系統類型] [-w|--rw|--ro] [文件系統源] [掛載點]
- 使用 umount 命令卸載已掛載磁盤
$ sudo umount /mnt 使用 fdisk 為磁盤分區
進入磁盤分區模式:
$ sudo fdisk virtual.img
九、Linux下的幫助命令
- 內建命令與外部命令
- 得到這樣的結果說明是內建命令,正如上文所說內建命令都是在 bash 源碼中的 builtins 的.def中
xxx is a shell builtin
- 得到這樣的結果說明是外部命令,正如上文所說,外部命令在/usr/bin or /usr/sbin等等中
xxx is /usr/sbin/xxx
若是得到alias的結果,說明該指令為命令別名所設定的名稱
xxx is an alias for xx --xxx
- help命令
- ubuntu 的環境base內置有help命令,可以直接使用
- help 命令是用於顯示 shell 內建命令的簡要幫助信息,但是只能用於顯示內建命令的幫助信息
ls --help
:外部命令的話基本上都有一個參數--help- man命令
- 通過查看系統文檔中的 man 也可以得到程序的更多相關信息和 Linux 的更多特性
- 打開手冊之後我們可以通過 pgup 與 pgdn 或者上下鍵來上下翻看,可以按 q 退出當前頁面
man手冊章節
info命令
man 和 info 就像兩個集合,它們有一個交集部分,但與 man 相比,info 工具可顯示更完整的 GNU 工具信息。
20165322 預備作業3 Linux安裝及學習