- Shell 詳解
- Shell 簡介
- 常用指令
- BASH 常用快捷方式
- Linux 目錄結構
- Linux 常用指令
- 目錄操作命名
- 檔案操作指令
- 檔案内容操作指令
- 歸檔及壓縮指令
Shell 詳解
Shell 簡介
- Linux精髓在于指令行操作
- Shell是一種特殊的程式
- 是核心與使用者的一種接口
- Shell指令解釋器
- Shell一種解釋性的語言(内部指令/外部指令)
- 内部指令:系統自帶的,随系統核心一起啟動(56)
- 外部指令:一些額外的軟體或者程式
- sh (Borurne Shell)
- csh
- ksh
- BASH: 是rhel中預設的一種
- shell指令規範
- 指令字 [選項] [參數]
- 選項
- 作用:用于調節指令的具體功能
- “-” 引導短格式選項(單個字元)ex: “-l”
- “–” 引導長格式選項(多個字元) ex: “–color”
- 多個短格式選項可以寫在一起
- -a -l -z -x --> -alzx
- 參數
- 指令操作的對象
- 有檔案、目錄等
- ex: ls -l /home
在Liunx當中嚴格區分大小寫
在Linux當中一切皆文本
常用指令
- su [-] username 切換目前登陸
- 有 - : 代表切換bash
- 無 - : 代表不切換bash
- exit:退出
- 檢視系統目前主機名
- hostname
- 修改主機名并生效
- hostnamectl set-hostname yourhostname
- 關機操作
- poweroff
- init 0
- shutdown -h now
- halt
- 重新開機指令
- reboot
- shutdown -r now # 現在重新開機
- shutdown -r now # 15分鐘後重新開機
- 檢視目前系統時間
- date
- 檢視月曆
- cal
- cal 年份 # 檢視全年月曆
- cal 月份 年份 # 檢視某年某月的月曆
- 檢視系統目前IP位址
- ifconfig
- ip addr show (rhel7)
- 測試網絡連通性
- ping 127.0.0.1
- ping 127.0.0.1 -c 4 # 限制ping包次數
BASH 常用快捷方式
- 中斷目前操作
- CTRL + c
- 清屏
- CTRL + l = clear
- 換行
- \
- 光标跳到行首
- CTRL + a
- 光标跳到行尾
- CTRL + e
- 清空到光标所在位置的前面所有内容
- CTRL + u
- 清空到光标所在位置的後面所有内容
- CTRL + k
- 檢視曆史指令 (預設保留1000行)
- history
- 調用曆史指令
- !n (ex: !22)
- 清空曆史指令
- history -c
- 字型放大
- CTRL + SHIFT + +
- 字型縮小
- CTRL + -
Linux 目錄結構
- boot:存放系統引導檔案和核心檔案
- bin:存放可執行檔案(二進制檔案)(ls,cat,mkdir)
- sbin:root使用者執行指令
- home:普通使用者的家目錄
- root:root使用者的家目錄
- dev:放置所有裝置檔案(外設 u盤、磁盤、光驅)/dev/md* /dev/sd* /dev/hd*
- etc: 放置所有配置檔案(服務)
- lib/lib64:動态連結庫檔案(共享庫) 類似于 .dll
- media:媒體庫檔案
- opt:檔案安裝目錄,安裝軟體就在opt目錄下
- mnt:挂載點目錄 mount * *
- var: 存放一些需要改變資料的檔案 日志,某些大檔案的溢出區
- proc:虛拟檔案系統目錄,放的是記憶體的一個映射
- cat /proc/cpuinfo # 檢視CPU運作狀态
- cat /proc/meminfo # 參看記憶體運作狀态
- cat /proc/version # 檢視系統版本
- uname -m # 檢視CPU架構
- uname -r # 檢視核心版本
- usr: 最大的目錄 隻要用到的目錄或者檔案都在這兒 /usr/sbin /usr/doclinux
- tmp: 共享檔案夾,臨時目錄
- lost+found:平時為空,隻有系統在非正常關機時才會有,儲存意外掉電記憶體資料
Linux中,如何獲得指令幫助
help (内部指令) cd,kill 56條
- ex:help cd
–help (适用于大多數外部指令查找) ls
- ls --help
- 使用man手冊進行指令檢視(man:指令閱讀手冊)
- “男人沒有什麼搞不定的”
- man 指令字
- 上下鍵滾動文本
- Page down & Page Up 上下翻頁
- 空格也支援翻頁,Enter鍵走一行
- 輸入 / ,可以查找
- info 也可進行指令幫助查找(使用與man接近)
- pinfo 指令字 以浏覽器的形式檢視詳細的GUN資訊
- /usr/share/doc # 所有已安裝軟體的說明檔案
- firefox file:///usr/share/doc
Linux 常用指令
目錄操作命名
- cd指令: 切換工作目錄
- cd [目錄位置]
- 絕對路徑: cd /home/ruochen
- 相對路徑:
- cd . 切換到目前目錄
- cd … 傳回到上一級目錄
- cd - 傳回上一次所在的工作路徑
- cd …/…/ 傳回到上一級目錄的上一級目錄
- cd ~ 傳回到使用者的家目錄
- pwd: 檢視目前所在的工作目錄
- ls: 列出目前目錄下的檔案或者目錄
在Liunx中,以.開頭的檔案是隐藏檔案
- 格式: ls [選項] [目錄或檔案名]
- 選項:
- -l 以長格式顯示
- -a 顯示所有檔案目錄資訊,包括隐藏檔案
- -d 顯示目錄本身的屬性
- -h 顯示詳情資訊,變換了統計機關
- --color 以顔色區分不同類型的檔案
- ll == ls -l
- mkdir: 建立一個新目錄
- 格式: mkdir [選項-p] [路徑] 目錄名
- -p: 遞歸建立多級目錄
- mkdir -p b/c/e/f/g
- rmdir: 删除一個空目錄
- -p: 遞歸删除
檔案操作指令
- touch,cp,mv,rm,find
- touch: 建立一個空檔案,更新檔案時間标記
- 格式: touch filename
在Linux中,不以字尾區分檔案
- echo: 列印某個東西
- 重定向寫
- echo “hello world” > a.txt
- cp: 複制檔案或者目錄
- 格式: cp [選項] 源檔案/目錄 目标檔案/目錄
- -r: 遞歸複制整個目錄樹
- cp /root/aa/a.txt /root/bb
- cp …/aa/a.txt .
- rm: 删除檔案或目錄
rm -rf * 從删庫到跑路
- 格式: rm [選項] 檔案或者目錄
- -r: 遞歸删除整個目錄樹
- -f: 強制删除不給任何提示
- mv:移動檔案或者目錄
- 格式: mv [選項] 源檔案/目錄 目标檔案/目錄
- mv text/b.txt text-2/
- 注: 若移動目标位置與原位置相同(目前下操作),則此操作相當于重命名
- mv text text-1
- find: 用于查找檔案或者目錄
- 格式: find [查找範圍] [查找條件]
- 查找條件
- -name: 按檔案名查找
[root@localhost ~]# find / -name initial-setup-ks.cfg
/root/initial-setup-ks.cfg
[root@localhost ~]# find / -name initial-*
/root/initial-setup-ks.cfg
[root@localhost ~]# find / -name initial-*-*
/root/initial-setup-ks.cfg
[root@localhost ~]#
- -type: 按檔案類型查找
- f: 普通檔案
- d: 目錄
- b: 塊裝置檔案
- c: 字元裝置檔案
[root@localhost ~]# find / -name text -type d
- -user: 按檔案屬主查找(這個檔案是誰的)
[root@localhost ~]# find / -user ruochen -name initial-setup-ks.cfg -type f
[root@localhost ~]# find / -user ruochen -type f -name ruochen.initial-setup-ks.cfg
- -size: 按檔案大小進行查找
[root@localhost ~]# find /var/ -size +10k -type f
[root@localhost ~]# find /var/ -size -1k -type f
[root@localhost ~]# find /var/ -size +10k -size -11k -type f
- -a: 邏輯與
- -o: 邏輯或
[root@localhost ~]# find / -name anaconda-ks.cfg -o -name initial-setup-ks.cfg
/root/anaconda-ks.cfg
/root/initial-setup-ks.cfg
- !: 邏輯非
[root@localhost ~]# find / ! -name temp -type f
- alias 别名; 為使用頻率較高的指令設定簡短的調用名稱
-
檢視目前使用者所有别名
alias [别名]
-
設定别名
alias 别名=“實際執行的指令”
grep -c 'boot' initial-setup-ks.cfg
7
[root@localhost ~]# alias aa="grep -c 'boot' initial-setup-ks.cfg "
[root@localhost ~]# alias aa
alias aa='grep -c '\''boot'\'' initial-setup-ks.cfg '
[root@localhost ~]# aa
7
- 取消别名: unalias [别名/-a]
- -a: 取消所有别名
[root@localhost ~]# unalias aa
- 讓别名永久生效
- 将别名設定在~/.bashrc檔案中
- vim .bashrc
cd cd. cd…
針對目錄來說 . 目前位置/目錄 pwd
針對檔案來講 . 在Linux中代表隐藏檔案
cd | cd. | cd … |
什麼都不跟,代表切換到目前使用者家目錄 | 目前目錄 | 代表切換到上級目錄 |
檔案内容操作指令
- cat,less,head,tail,grep,wc
- cat: 檔案内容檢視,顯示出檔案的全部内容
- 格式: cat filename
- less(more): 全屏方式分頁顯示檔案内容
- 格式: less/more filename
- 按回車Enter逐行滾動
- 按空格鍵向下翻頁
- 按b鍵向上翻頁
- 按q鍵退出
- more用法與less一緻,隻是多了一個百分比顯示
- head(頭部): 顯示檔案頭部若幹行,預設10行
- 格式: head [選項] filename
[root@localhost ~]# head -n 5 initial-setup-ks.cfg
- tail(尾部): 顯示檔案尾部若幹行,預設10行
- 格式: tail [選項] filename
[root@localhost ~]# tail -n 5 initial-setup-ks.cfg
- wc: 統計檔案内容的,預設情況下統計結果為: 行數 詞數 位元組數
- 格式: wc [選項] filename
[root@localhost ~]# wc initial-setup-ks.cfg
- 選項:
- -w: 統計字數 一個字被定義為由空白,跳格(制表符),換行以這些為分割字元串
- -l: 行數
- -c: 位元組數
- -m: 字元數 -m -c不能一起使用
- -L: 列印最長行的長度
[root@localhost ~]# wc -l -c -w -L initial-setup-ks.cfg
- grep: 在檔案中查找并顯示包含指定字元串的行
- 格式: grep [選項] 查找條件 目标檔案
- 選項:
- -c: 顯示比對行的數量
- -i: 查找時不區分大小寫
- -v: 反轉查找
[root@localhost ~]# grep -c 'boot' initial-setup-ks.cfg
7
[root@localhost ~]# grep -c -v 'boot' initial-setup-ks.cfg
42
[root@localhost ~]# grep -i 'agent' initial-setup-ks.cfg
- 查找條件設定:
- 查找條件用引号引起來
- “^…”: 表示以… 開頭
- “…$”: 表示以… 結尾
- “^$”: 比對空行
[root@localhost ~]# grep -c '^$' anaconda-ks.cfg
[root@localhost ~]# grep -cv '^$' anaconda-ks.cfg
[root@localhost ~]# grep -c '^#' anaconda-ks.cfg
12
[root@localhost ~]# grep -c 'ation$' anaconda-ks.cfg
5
歸檔及壓縮指令
- tar: 壓縮與解壓縮 制作歸檔檔案和釋放歸檔檔案
- 格式:
-
制作歸檔檔案
tar [選項] [目錄]/歸檔檔案名 原檔案/目錄
-
釋放歸檔檔案
tar [選項] 歸檔檔案 [-C 目标檔案]
- 指令:
- 壓縮:
- tar -czvf [存放路徑]歸檔檔案名.tar.gz 原檔案/目錄
- tar -cjvf [存放路徑]歸檔檔案名.tar.bz2 原檔案/目錄
- -c 壓縮
- -z 壓縮為.gz 格式
- vf 顯示詳情資訊
- -j 壓縮為.bz2格式
- 解壓縮:
- tar -xzvf [存放路徑]歸檔檔案名.tar.gz [-C 解壓目錄]
- tar -xjvf [存放路徑]歸檔檔案名.tar.bz2 [-C 解壓目錄]
- -x 解壓
tar -czvf text.tar.gz text
tar -cjvf text.tar.bz2 text
tar -czvf /root/var.tar.gz /var/
tar -cjvf /root/var.tar.bz2 /var/
tar -czvf a.tar.gz text-1 text-2
[root@localhost ~]# tar -xzvf text.tar.gz
[root@localhost ~]# tar -xjvf text.tar.bz2
[root@localhost ~]# tar -xjvf text.tar.bz2 -C test