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 上下翻頁
- 空格也支持翻頁,回車鍵走一行
- 輸入 / ,可以查找
- 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
- 格式: mv [選項] 源文件/目錄 目標文件/目錄
-
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
-
- 壓縮:
- 格式:
.gz格式
.bz2格式
.bz2格式壓縮率比.gz格式壓縮率高