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

20165211 預備作業3 Linux安裝與學習

who am i 鏡像文件 hello 發現 har 9.png cto 努力 文件基本操作

20165211 預備作業3 Linux安裝與學習

1. Linux安裝

涉及軟件:VirtualBox,Ubuntu
參考教程:基於VirtualBox安裝Ubuntu圖文教程
安裝過程的問題
  1. 在安裝VirtualBox之後,創建虛擬機的過程中,類型為Linux,但在版本裏找不到64-bit的Ubuntu。技術分享圖片

在網上查找了一些資料之後,我發現是自己的電腦沒有開啟虛擬化,應該要進入BIOS打開虛擬化。這裏真的要吐槽一下win10,我找了很多的方法教程,才終於找到了進入BIOS的方法。這應該也和各個電腦的設置有關系吧。

打開虛擬化之後,就可以順利的設置為64位的Ubuntu了。
技術分享圖片

  1. 在安裝Ubuntu時,按照教程中的鏈接,結果,這個下載鏈接是錯誤的,只要在百度裏找到正確的官網鏈接就可以了。
    技術分享圖片

Linux學習

第一章 Linux簡介

主要介紹了操作系統的基本概念, Linux 的歷史,Linux 與 Windows 的區別等入門知識。
技術分享圖片
在這一章,我看到Linux的整個發展過程是無數電腦天才們的不斷努力來推動的,具有很多的優勢。

對比Windows,它的優勢也是明顯的

免費使用

安全性高

效率高

可定制性

應用範疇廣

春節期間,我正好也去看了一部電影——唐人街探案2,其中一個片段更是將Linux系統吹得神乎其神,能夠學習Linux也是很開心。


第二章 基本概念及操作

以下整理的一些知識:

通常我們在使用 Linux 時,並不是直接與系統打交道,而是通過一個叫做 Shell 的中間程序來完成的。

Linux 操作系統下的 Shell 既是用戶交互的界面,也是控制系統的腳本語言。

Ubuntu 終端默認使用的是 bash。

創建文件touch file

進入目錄cd /etc/

查看當前目錄pwd

常用快捷鍵

按鍵 作用
Tab 命令補全
Ctrl+c 強行終止當前程序
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 中的任意單一字符 如:[0-9] [a-z]

{string1,string2,...} 匹配 string1 或 string2 (或更多)其一字符串
{c1..c2}| 匹配 c1-c2 中全部字符 如{1..10}

banner主要程序

安裝

$ sudo apt-get update
$ sudo apt-get install sysvbanner

打印

$ banner shiyanlou

字體改變

$ printerbanner -w 50 A

本章作業:
技術分享圖片


第三章 用戶及文件權限管理

  • 查看用戶
    $ who am i
    $ who mom likes
  • who命令
參數 說明
-a 打印能打印的全部
-d 打印死掉的進程
-m 同am i,mom likes
-q 打印當前登錄用戶數及用戶名
-u 打印當前登錄用戶登錄信息
-r 打印運行等級
  • 新建用戶$ sudo adduser lilei
  • 切換登錄用戶$ su -l lilei
  • 退出 exitCtrl+d
  • 查看自己屬於哪些用戶組

    1.groups命令$ groups shiyanlou

    2.查看/etc/group/文件$ cat /etc/group | sort
    過濾信息$ cat /etc/group | grep -E "shiyanlou"

  • 將其他用戶加入sudo用戶組

$ su shiyanlou 
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei
  • 刪除用戶 $ sudo deluser lilei --remove-home
  • 變更文件所有者

    $ cd /home/lilei
    $ ls iphone6
    $ sudo chown shiyanlou iphone6
  • 修改文件權限
    $ chmod 700 iphone6
    $ chmod go-rw iphone6

本章作業
技術分享圖片

技術分享圖片


第四章 Linux目錄結構及文件基本操作

  • Linux目錄與Windows目錄的區別
  1. Linux以目錄為主,Windows以存儲介質為主
  • FHS標準
    技術分享圖片
  • 目錄路徑
  1. 進入上一級目錄 $ cd ..
  2. 進入你的home目錄 $ cd ~
  3. 使用pwd獲取當前目錄 $ pwd
  • 絕對路徑:以根" / "目錄為起點的完整路徑,以你所要到的目錄為終點
  • 相對路徑:以當前目錄 . 為起點,以你所要到的目錄為終點
  • Linux文件的基本操作
  1. 新建空白文檔 touch命令
  2. 新建目錄 mkdir命令,使用-p同時創建父目錄,例$ mkdir -p father/son/grandson
  3. 復制文件 cp命令,例$ cp test father/son/grandson
  4. 復制目錄,cp加上-r-R,例$ cp -r father family
  5. 刪除文件:rm,強制刪除-f
  6. 刪除目錄:rm命令加上-r-R
  7. 移動文件:mv,例

    $ mkdir Documents
    $ mv file1 Documents
  8. 重命名文件:$ mv file1 myfile
  9. 批量重命名:

# 使用通配符批量創建 5 個文件:
$ touch file{1..5}.txt

# 批量將這 5 個後綴為 .txt 的文本文件重命名為以 .c 為後綴的文件:
$ rename ‘s/\.txt/\.c/‘ *.txt

# 批量將這 5 個文件,文件名改為大寫:
$ rename ‘y/a-z/A-Z/‘ *.c
  1. 查看文件cat,tac,nl
  2. 分頁查看文件more,less
  3. 查看文件類型,例$ file /bin/ls
  4. 編輯文件,例$ vimtutor

第五章 環境變量與文件查找

  • 創建變量$ declare tmp
  • 給變量賦值 $ tmp=shiyanlou
  • 讀取變量的值 $ echo $tmp
  • 環境變量

技術分享圖片

與環境變量相關的命令:setenvexport

命 令 說 明
set 顯示當前 Shell 所有變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量。
env 顯示與當前用戶相關的環境變量,還可以讓命令在指定環境中運行。
export 顯示從 Shell 中導出成環境變量的變量,也能通過它將自定義變量導出為環境變量。

技術分享圖片

  • 永久生效

Linux變量分為,永久的和臨時的。
/etc/bashrc 存放shell變量

/etc/profile 環境變量,永久生效

  • 命令的查找路徑和順序
  1. 查看path環境變量 $ echo $PATH
  2. 創建一個shell腳本文件$ gedit hello_shell.sh
  3. 為文件添加可執行權限$ chmod 755 hello_shell.sh
  4. 執行腳本$ ./hello_shell.sh
  5. 創建一個C語言“hello world”程序$ gedit hello_world.c
  6. 保存後使用 gcc 生成可執行文件$ gcc -o hello_world hello_world.c
  7. 創建目錄並移動文件至其中,例:

    $ mkdir mybin
    $ mv hello_shell.sh hello_world mybin/
  • 添加自定義路徑到‘PATH‘環境變量

添加自定義路徑$ PATH=$PATH:/home/shiyanlou/mybin
添加內容 $ echo "PATH=$PATH:/home/shiyanlou/mybin" >> .zshrc

  • 修改和刪除已有變量
    1. 變量修改
    變量設置方式 說明
    ${變量名#匹配字串} 從頭向後開始匹配,刪除符合匹配字串的最短數據
    ${變量名##匹配字串} 從頭向後開始匹配,刪除符合匹配字串的最長數據
    ${變量名%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最短數據
    ${變量名%%匹配字串} 從尾向前開始匹配,刪除符合匹配字串的最長數據
    ${變量名/舊的字串/新的字串} 將符合舊字串的第一個字串替換為新的字串
    ${變量名//舊的字串/新的字串} 將符合舊字串的全部字串替換為新的字串
    1. 變量刪除 $ unset temp
  • 如何讓環境變量立即生效
    1. source命令,例 $ source .zshrc
    2. source命令的別名.,例 $ source .zshrc
  • 搜索文件
    1. whereis簡單快捷,例 $ whereis who
    2. locate快而全,例 $ locate /etc/sh$ locate /usr/share/\*.jpg
    3. which小而精,例 $ which man
    4. find精而細,例 $ sudo find /etc/ -name interfaces
    5. 與時間相關的命令參數
    參數 說明
    -atime 最後訪問時間
    -ctime 最後修改文件內容的時間
    -mtime 最後修改文件屬性的時間

第六章 文件打包和壓縮

  • 常用壓縮包文件格式
文件後綴名 說明
*.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 程序壓縮的文件
  • zip
  1. 使用zip打包文件夾,例:

    $ zip -r -q -o shiyanlou.zip /home/shiyanlou
    $ du -h shiyanlou.zip
    $ file shiyanlou.zip
  2. 設置壓縮級別打包,例:

$ 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 -h -d 0 *.zip ~ | sort

  1. 創建加密zip包
$ zip -r -l -e -o shiyanlou_encryption.zip /home/shiyanlou
  1. 解壓縮文件$ unzip shiyanlou.zip
  2. 安靜模式解壓縮$ unzip -q shiyanlou.zip -d ziptest
  3. 不解壓查看壓縮包內容$ unzip -l shiyanlou.zi

指定編碼類型unzip -O GBK 中文壓縮文件.zip

  • rar
  1. 安裝工具
$ sudo apt-get update
$ sudo apt-get install rar unrar
  1. 從指定文件或目錄創建壓縮包或添加文件到壓縮包
$ rm *.rar
$ rar a shiyanlou.rar .
  1. 刪除文件
$ rar d shiyanlou.rar .zshrc
  1. 查看不解壓文件
$ rar l shiyanlou.rar
  1. 全路徑解壓
$ unrar x shiyanlou.rar
  1. 去路徑解壓
$ mkdir tmp
$ unrar e shiyanlou.rar tmp/
  • tar(最常用)
  1. 創建tar包
$ tar -cf shiyanlou.tar ~
  1. 解包一個文件到指定目錄
$ mkdir tardir
$ tar -xf shiyanlou.tar -C tardir
  1. 只查看不解包文件
$ tar -tf shiyanlou.tar
  1. 保留文件屬性和跟隨鏈接
$ tar -cphf etc.tar /etc
  1. gzip壓縮文件
$ tar -czf shiyanlou.tar.gz ~
  1. 解壓*.tar.gz文件
$ tar -xzf shiyanlou.tar.gz
  1. 其他格式
壓縮文件格式 參數
*.tar.gz -z
*.tar.xz -J
*tar.bz2 -j

第七章 文件系統操作和磁盤管理

  • 查看磁盤和目錄的容量df命令,加上-h更易讀
  • du命令查看目錄容量
參數 作用
du -h 同--human-readable 以K,M,G為單位,提高信息的可讀性。
$ du -h -d 指定查看目錄的深度
du -a 同--all 顯示目錄中所有文件的大小。
du -s 同--summarize 僅顯示總計,只列出最後加總的值。
  • 創建虛擬磁盤

  • 創建虛擬鏡像文件

$ dd if=/dev/zero of=virtual.img bs=1M count=256
$ du -h virtual.img
  • 格式化磁盤
$ sudo mkfs.ext4 virtual.img
  • 掛在磁盤到目錄樹
  1. 查看已經掛載的文件系統$ sudo mount
  2. 掛載真正的磁盤到目錄樹mount [options] [source] [directory]
  3. 常用操作mount [-o [操作選項]] [-t 文件系統類型] [-w|--rw|--ro] [文件系統源] [掛載點]
  4. 例:
$ mount -o loop -t ext4 virtual.img /mnt 
# 也可以省略掛載類型,很多時候 mount 會自動識別

# 以只讀方式掛載
$ mount -o loop --ro virtual.img /mnt
# 或者mount -o loop,ro virtual.img /mnt
  • 卸載已掛載磁盤$ sudo umount /mnt
  • 為磁盤分區
    1. 查看硬盤分區表信息$ sudo fdisk -l
    2. 進入磁盤分區模式$ sudo fdisk virtual.img
      技術分享圖片
    3. p查看結果
  • 建立鏡像與回環設備的關聯losetop命令
    步驟如下:
  1. 參看所有回環設備$ sudo losetup /dev/loop0 virtual.img
  2. 解除設備關聯$ sudo losetup -d /dev/loop0
  3. 安裝kpartx工具

    $ sudo apt-get install kpartx
    $ sudo kpartx -av /dev/loop0
    # 取消映射
    $ sudo kpartx -dv /dev/loop0
  4. 格式化
  5. 新建四個空目錄用於掛載虛擬磁盤:

$ mkdir -p /media/virtualdisk_{1..3}
# 掛載磁盤分區
$ sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1
$ sudo mount /dev/mapper/loop0p5 /media/virtualdisk_2
$ sudo mount /dev/mapper/loop0p6 /media/virtualdisk_3
# 卸載磁盤分區
$ sudo umount /dev/mapper/loop0p1
$ sudo umount /dev/mapper/loop0p5
$ sudo umount /dev/mapper/loop0p6
  1. $ df -h命令檢查結果

第八章 Linux下的幫助命令

  • 內建命令與外部命令
    1. 內建命令:shell程序的一部分,包含一些簡單的Linux系統命令,不需要創建子進程,執行速度比外部命令快
    2. 外部命令:Linux系統中的實用程序部分,包含的程序量很大,命令執行過程由shell程序控制
    3. type命令區分內建命令和外部命令

      type exit
      type service
      技術分享圖片
  • help命令
    1. bash中內置有該命令
      準備:技術分享圖片
    2. 內建命令help ls
    3. 外部命令ls --help
  • man命令(沒有內建與外部命令的區分)——man ls

    章節數 說明
    1 Standard commands (標準命令)
    2 System calls (系統調用)
    3 Library functions (庫函數)
    4 Special devices (設備說明)
    5 File formats (文件格式)
    6 Games and toys (遊戲和娛樂)
    7 Miscellaneous (雜項)
    8 Administrative Commands (管理員命令)
    9 其他(Linux特定的), 用來存放內核例行程序的文檔。
  • info命令(更為全面)——info ls

20165211 預備作業3 Linux安裝與學習