1. 程式人生 > 其它 >Linux基礎 -02

Linux基礎 -02

3.4 虛擬機器快照技術

  • 什麼是快照

3.5 虛擬機器克隆技術

  • 什麼是克隆

4.Bash Shell快速入門

4.1 什麼是Bash Shell

bash shell是一個命令直譯器,主要負責使用者程式與核心進行互動操作的一種介面,將使用者輸入的命令翻譯給核心,由核心驅動硬體,最終將處理後的結果輸出至bash shell螢幕終端

我們如何開啟 Bash Shell 呢?
當我們使用遠端連線工具連線 linux 服務,系統則會給開啟一個預設的 shell ,我們可在這個介面執行命令、比如:獲取系統當前時間,建立一個使用者等等

4.2 Bash shell 能幹什麼

  • 使用shell實現對linux系統的大部分管理 eg:
    • 1.檔案管理
    • 2.許可權管理
    • 3.使用者管理
    • 4.磁碟管理
    • 5.網路管理
    • 6.服務管理
    • 7.服務管理
    • 8.等等

4.3 如何使用bash shell

  • 單條命令-->效率低-->適合少量的工作
  • shell指令碼-->效率高-->適合重複性工作
  • 例如:建立100個使用者,單純輸入命令需要執行100次,而用shell指令碼則輕鬆解決
[root@web ~]# cat useradd.sh
#!/usr/bin/bash
# 批量建立指令碼
for i in {1..100}
do
useradd alice-$i
echo "alice-$i" is create ok..
done

4.4 bash shell 提示符

當我們開啟或者登陸到一個終端的時候都會顯示一長串提示符[root@web ~]#
提示符一般包含當前登陸的使用者名稱,主機名,以及當前工作的路徑等

4.5 bash shell 基礎語法

bash shell命令列,為使用者提供命令輸入,然後將執行結果返回給使用者;

命令示例如下:

[root@web ~]# ls # 命令
[root@web ~]# ls -a # 命令+選項
[root@web ~]# ls -a /home/ # 命令+選項+引數
  • 命令:整條shell命令的主體功能
  • 選項:用於調節命令的具體功能
    • 以 - 引導短格式選項(單個字元),例如 -a
    • 以 -- 引導長格式選項(多個字元), 例如 --all
    • 多個短格式選項可以寫在一起,eg: -al
  • 引數:命令操作的物件,如檔案,目錄名等
  • 注意:命令必須開頭,選項和引數位置可以發生變換

4.6 bash shell 的基本特性

4.6.1 補全功能tabs

  • 1.命令補全:當忘記命令時,可以使用tabs進行補全;

  • 2.目錄補全:當需要查詢檔案目錄層級比較多時,可以使用tabs快速補全,減少出錯;

  • #檢視ip時忘記具體了命令
    [root@web ~]# ifcon
    #按下tab鍵會自動補全
    [root@web ~]# ifconfig
    #按一下tab鍵沒有反應, 按兩下tab鍵列出所有if開頭的命令
    [root@web ~]# if
    if ifconfig ifenslave ifrename
    ifcfg ifdown ifnames ifup
    #linux目錄較深,經常使用tab鍵進行補全, 如果路徑出錯是沒有辦法
    補全
    [root@web ~]# ls /etc/sysconfig/network-scripts/
    

4.6.2 常用快捷鍵ctrl

  • 命令快捷鍵,可以幫助我們大大提升效率
    • ctrl + a :游標跳轉至正在輸入的命令列的首部
    • ctrl + e :游標跳轉至正在輸入的命令列的尾部
    • ctrl + c :終止前臺執行的程式
    • ctrl + d :在shell中,表示退出當前shell
    • ctrl + z :將任務暫停,掛至後臺
    • ctrl + l :清屏,和clear命令等效
    • ctrl + k :刪除游標到行末的所有字元
    • ctrl + u :刪除游標到行首的所有字元
    • ctrl + r :搜尋歷史命令,利用關鍵字

4.6.3 歷史記錄 history

歷史記錄可用於追述系統之前執行過什麼命令,造成的故障;之前發生過什麼情況

1.使用雙 !! 可執行上一條執行過的命令

[root@web ~]# ls
file.txt
[root@web ~]# !!
ls
file.txt
  1. 輸入 !6 ,執行history命令歷史中第6行命令

  2. 使用 !cat ,呼叫history 命令歷史最近一次執行過的cat命令

    [root@web ~]# cat /etc/sysconfig/network-
    scripts/ifcfg-eth0
    [root@web ~]# !cat
    cat /etc/sysconfig/network-scripts/ifcfg-eth0
    

4.6.4 命令別名 alias

命令別名將使用者經常使用的複雜命令簡單化,可以用alias 別名 名稱='命令'建立屬於自己的命令別名,若要取消一個命令別名,則是用unalias別名名稱;

1.定義臨時別名,wk 為檢視 eth0 網絡卡別名

[root@web ~]# alias wk='ifconfig'
[root@web ~]# wk

2.如果定義命令本身,會執行什麼?

[root@web ~]# alias ifconfig='ifconfig eth0'

#絕對路徑執行, 呼叫命令本身
[root@web ~]# /sbin/ifconfig
#通過\轉義字元, 呼叫命令本身
[root@Web ~]# \ifconfig

3.取消別名

[root@web ~]# unalias ifconfig

4.永久生效,/etc/bashrc

[root@web ~]# echo "alias ifconfig='ifconfig eth0'"
>> /etc/bashrc

4.6.5 幫助手冊help

1.命令 --help 幫助

[root@web ~]# ls --help
用法: ls [選項]...[檔案]...	

2.命令 man 手冊

# man ls #檢視ls命令的手冊

3.linux 命令大全 url 傳送門

http://linux.51yip.com/

https://www.linuxcool.com/

https://www.runoob.com/linux/linux-command-manual.html

02.Linux檔案管理

1. 檔案管理概述

談到Linux檔案管理,首先我們需要了解的就是,我們要對檔案做些什麼事情?
其實無非就是對一個檔案進行,建立,輔助,移動,檢視,編輯,壓縮,查詢,刪除,等等
如:當我們想修改系統的主機名稱,是否應該知道檔案在哪,才能去做對應的修改?

1.1 系統目錄結構

幾乎所有的計算機作業系統都是使用目錄結構組織檔案.具體來說就是在一個目錄中存放子目錄和檔案,而在子目錄中又會進一步存放子目錄和檔案,以此類推形成一個樹狀的檔案結構,由於其結構很像一棵樹的分支,所以該結構又稱為"目錄樹"

windows:以多根的方式組織檔案 C:\ D:
Linux : 以單根的方式組織檔案 /

1.1.1 命令相關的目錄 /bin

  • 存放命令相關的目錄
    • /bin 普通使用者使用的命令 /bin/ls /bin/date
    • /sbin 管理員使用的命令 /sbin/service

1.1.2 使用者家相關目錄/home

  • 存放使用者相關資料的家目錄,比如 windows 不同的使用者登入系統顯示的桌面背景不一樣

    • /home 普通使用者家目錄,預設/home/username
    • /root 超級管理員root的家目錄,普通使用者無權操作

1.1.3 系統檔案目錄/usr

  • 存放系統相關檔案的目錄

    • /usr 相當於 C:\windows
    • /usr/local 軟體安裝的目錄,相當於C:\Program
    • /usr/bin/ 普通使用者使用的應用程式(重要)
    • /usr/sbin/ 管理員使用的應用程式(重要)
    • /usr/lib 庫檔案 Glibc 32bit
    • /usr/lib64 庫檔案Glibc 64bit

1.1.4 系統啟動目錄/boot

  • 存放系統啟動時核心與grub引導選單

    • /boot 存放的系統啟動相關的檔案.如:kernel , grub(引導裝載程式)

1.1.5 配置檔案目錄/etc

  • /etc 存放系統配置檔案目錄,後續所有服務的配置都在這個目錄中
    • /etc/sysconfig/network-script/ifcfg- ,網路配置檔案
    • /etc/hostname 系統主機名配置檔案

1.1.6 裝置相關目錄 /dev

  • /dev存放裝置檔案的目錄,比如硬碟,硬碟分割槽,光碟機,等等

    • /dev/null 黑洞裝置,只進不出.類似於垃圾回收站
    • /dev/random 生成隨機數的裝置
    • /dev/zero 能源源不斷的產生資料,類似於提款機,

1.1.7 可變的目錄 /var

  • /var 存放一些變化的檔案.比如/var/log/ 下的日誌檔案
  • /var/tmp 程序產生的臨時檔案
  • /tmp 系統臨時目錄(類似於公共廁所)

1.1.8 虛擬系統目錄/proc

  • 虛擬的檔案系統(如對應的程序停止則/proc下對應目錄則會被刪除)
  • /proc 反映當前系統正在執行程序的實時狀態,類似於汽車在執行中的儀表盤,能夠看到汽車的油耗,時速,轉向燈,故障等等

1.2 檔案路徑定位

在我們開始操作檔案之前,首先需要對檔案的路徑進行定位

1.2.1 為什麼要進行定位

  • 你要在哪個目錄下建立檔案?
  • 你要將檔案複製到什麼地方?
  • 你要刪除的檔案在什麼地方?

1.2.2 如何對檔案進行定位

比如: /etc/hostname 整個檔案中包含檔名稱以及檔案所
在的位置,我們將這個叫做路徑,也就是說我們是通過路徑
對檔案進行定位。例:下圖所示的 message 所在的路徑是?

FQ1: /home/boy/file 和 /home/oldgirl/file 是否是同
一個檔案?
FQ2: /abc/test 和 abc/test 是一樣的嗎?

  • 不一定:取決於你當前所在的位置;

1.2.3 絕對路勁與相對路勁

  • 絕對路徑: 只要從/開始的路徑,比如 /home/alice/file
  • 相對路徑: 相對於當前目錄來說,比如 a.txt ./a.txt
    ../bob/a.mp3
  • . 和 .. 的是什麼意思
    • 一個點代表當的是當前目錄;
    • 兩個點代表的是當前目錄的上層目錄;
  • 小結:所謂的(.)和(..)目錄實際上屬於相對路徑的一種表示
    形式;

1.2.4 路徑切換命令 cd

例子:

# cd 絕對路徑 cd /etc/hostname
# cd 相對路徑 cd test/abc cd . cd ..
-------------------------------------
# cd #切換目錄,例: cd /etc
# cd - #切換回上一次所在的目錄
# cd ~ #切換回當前使用者的家目錄,注意:root和普通使用者
是否有所不同嗎?
# cd . #代表當前目錄,一般在拷貝、移動等情況下使用
cp /etc/hostname ./
# cd .. #切換回當前目錄的上級目錄

2.檔案管理命令

2.1 檔案操作命令

2.1.1 touch 檔案建立

# touch file #無則建立,有則修改
時間
# touch file2 file3
# touch /home/od/file4 file5
# touch file{a,b,c} #{}集合,等價
touch a b c
# touch file{1..10}
# touch file{a..z}

2.1.2 mkdir 目錄建立

# 選項:-v 顯示詳細資訊 -p 遞迴建立目錄
# mkdir dir1
# mkdir /home/ob/dir1 /home/ob/dir2
# mkdir -v /home/ob/{dir3,dir4}
# mkdir -pv /home/ob/dir5/dir6
# mkdir -pv /home/{ob/{diu,but},boy}

2.1.3 tree顯示目錄結構

# 選項: -L: 顯示目錄樹的層級
# tree /home/ob/ #顯示當前目錄下的結構
/home/ob/
├── but
├── dir1
├── dir2
├── dir3
├── dir4
├── dir5
│ └── dir6
└── diu

2.1.4 cp 檔案或目錄複製

#選項: -v:詳細顯示命令執行的操作 -r: 遞迴處理目錄與子
目錄 -p: 保留原始檔或目錄的屬性
# cp file /tmp/file_copy
# cp name /tmp/name #不修改名稱
# cp file /tmp/ #不修改名稱
# cp -p file /tmp/file_p #-p保持原檔案或目錄的屬
性
# cp -r /etc/ /tmp/ #複製目錄需要使用-r參
數, 遞迴複製
# cp -rv /etc/hosts /etc/hostname /tmp #拷貝多個
檔案至一個目錄
# cp -rv /etc/{hosts,hosts.bak}
# cp -rv /etc/hosts{,-org}

2.1.5 mv 檔案移動命令

# mv file file1 #原地移動算改名
# mv file1 /tmp/ #移動檔案至tmp目錄
# mv /tmp/file1 ./ #移動tmp目錄的檔案至當
前目錄
# mv dir/ /tmp/ #移動目錄至/tmp目錄下
# touch file{1..3}
# mv file1 file2 file3 /opt/ #移動多個檔案或至
同一個目錄
# mkdir dir{1..3}
# mv dir1/ dir2/ dir3/ /opt #移動多個目錄至同
一個目錄

2.1.6 rm 檔案或目錄刪除

#選項:-r: 遞迴 -f: 強制刪除 -v: 詳細過程
# rm file.txt #刪除檔案, 預設rm存在alias別
名,rm -i所以會提醒是否刪除檔案
# rm -f file.txt #刪除檔案, 不提醒
--------------------------------
# rm -r dir/ #遞迴刪除目錄,會提示
# rm -rf dir/ #強制刪除目錄,不提醒(慎用)
--------------------------------
#1.rm刪除示例
# mkdir /home/dir10
# touch /home/dir10/{file2,file3,.file4}
# rm -f /home/dir10/* //不包括隱藏檔案
# ls /home/dir10/ -a
. .. .file4
--------------------------------
#2.rm刪除示例2
# touch file{1..10}
# touch {1..10}.pdf
# rm -rf file*
# rm -rf *.pdf

2.2 檔案檢視類命令

2.2.1 cat命令

#------cat
# cp /etc/passwd ./pass
# cat pass #正常檢視檔案方式
# cat -n pass #-n顯示檔案有多少行
# cat -A pass #檢視檔案的特殊符號,比如檔案中存在tab
鍵
# tac pass #倒序檢視檔案

2.2.2 less / more 命令

#------less、more
# less /etc/services  #使用游標上下翻動,空格進行
翻頁,q退出
# more /etc/services  #使用回車上下翻動,空格進行
翻頁,q退出