1. 程式人生 > >20165322 預備作業3 Linux安裝及學習

20165322 預備作業3 Linux安裝及學習

同文件 env -a 命令大全 復制 追加 rwx 找對象 用戶

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:資源暫時不可用)

    ,大概是我瞎玩耍的時候什麽命令執行了一半?orz..輸入指令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 數字 文件名
  • 方式二:加減賦值操作
    go 還有 u 分別表示 group、others 和 user,+-分別表示增加和去掉相應的權限
    $ chmod go-rw 文件名

  • adduseruseradd區別

    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 更專業的行號打印命令
  • 使用 moreless 命令分頁查看文件
    用於閱讀文件。打開後默認只顯示一屏內容,終端底部顯示當前閱讀的進度。可以使用 Enter 鍵向下滾動一行,使用 Space 鍵向下滾動一屏,按下 h 顯示幫助,q 退出。
  • 使用 headtail 命令查看文件
    只查看文件的頭幾行(默認為 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安裝及學習