【Linux系列】【基礎版】第三章 Shell基礎知識
3. Shell基礎知識
3.1 Shell的由來
3.1.1 Bourne Agin Shell
3.1.2 其他的shell, 有 zsh, ksh等
3.2 查看有沒有shell
3.2.1 yum list | grep zsh
3.2.2 ls /root/.bash_history
3.2.3 echo $HISTSIZE -> vi /etc/profile 修改HISTSIZE的值 -> source /etc/profile
3.2.4 history -c //清空命令歷史(內存中的)
3.2.5 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"
3.2.6 vi /etc/profile
3.2.7 chattr +a ~/.bash_history //只能被追加,不會被刪除
3.2.8 !! //最後一條命令; !n // !words //
3.3 安裝參數補全源
3.3.1 yum install -y bash-completion //安裝參數補全源後需要重啓電腦(reboot)才生效
3.3.2 systemctl restart network.service //重啓網絡服務
3.3.3 rpm -qa bash-completion
3.4 alias 配置文件
3.4.1 vi .bashre //alias的配置文件(一部分)
3.4.2 cd /etc/profile.d/ //alias其他的一部分配置文件
3.4.3 Tab鍵:
3.4.3.1 按一下匹配命令和參數
3.4.3.2 按兩下顯示匹配信息供選擇
3.5 通配符
3.5.1 * 匹配所有字符 ls *.txt
3.5.2 ? 匹配一個字符 ls ?.txt
3.5.3 ls [0-9].txt
3.5.4 ls {1,2}.txt
3.5.5 重定向 cat 1.txt > 2.txt
3.5.6 追加重定向 cat 1.txt >> 2.txt
3.5.7 錯誤重定向 lsaaa 2> a.txt
3.5.8 追加錯誤重定向 lsaaa 2>> a.txt
3.5.9 wc -l < 1.txt //輸入重定向,wc -l查看文本行數;左邊需要是命令
3.5.10 ls [12].txt aaa.txt &> a.txt //&> 爲正確錯誤重定向
3.5.11 ls [12].txt aaa.txt >1.txt 2>a.txt //將正確的和錯誤的區分開
3.6 管道符和作業控制
3.6.1 cat 1.txt | wc -l
3.6.2 cat 1.txt | grep 'aaa'
3.6.3 ctrl + z //暫停一個任務
3.6.4 df -h //查看磁盤使用量
3.6.5 fg //前臺frontGround
3.6.5.1 fg IDNumber
3.6.6 jobs //查看後臺或已停止的任務
3.6.7 bg //後臺background
3.6.7.1 bg IDNumber
3.6.8 vmstate 1 //動態的顯示系統狀態
3.6.9 sleep 100 //暫停100秒
3.6.9.1 sleep 100 & //把命令放到後臺運行
3.6.9.2 ps aux| grep sleep //查看進程
3.7 shell變量
3.7.1 env //查看系統的環境變量
3.7.2 set 命令
3.7.2.1 set |grep 111 //查找111
3.7.2.2 set 命令包含了很多變量,並且包含用戶自定義的變量
3.7.2.3 a=111 //自定義變量
3.7.2.4 set 用來顯示本地變量,env 用來顯示環境變量, export 用來顯示和設置環境變量
3.7.3 export 全局變量
3.7.3.1 export aming=linux
3.7.3.2 echo $aming
3.7.3.3 bash //進入子bash
3.7.3.4 echo $aming
3.7.3.5 unset aming //取消環境變量
3.8 環境變量的配置文件
3.8.1 系統層次的
3.8.1.1 /etc/profile 用戶環境變量,交互,登錄時才執行
3.8.1.2 /etc/bashrc 用戶不用登錄,執行shell就失效
3.8.2 系統層次的
3.8.2.1 ~/.bashrc
3.8.2.2 ~/.bash_profile
3.8.2.3 ~/.bash_history
3.8.2.4 ~/.bash_logout
3.8.3 PS1變量
3.8.3.1 PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;36m\]\w\[\033[00m\]\$'
3.8.3.2 a='a$bc'
3.8.3.3 a=a"$b"c
3.8.3.4 . .bash_profile 和 source .bash_profile, 此處.和source都是加載使生效的作用
3.8.3.5 [登錄的用戶@主機名-所在的目錄(最後的層級)]
3.8.3.6 PS1='' //修改PS1
3.8.3.7 echo $PS1 //打印PS1的值
3.8.4 登錄的用戶@主機名-所在的目錄(最後的層級)
3.8.5 特殊字符
3.8.5.1 * //任意個任意字符
3.8.5.2 ? //任意一個字符
3.8.5.3 # //註釋
3.8.5.4 \ //脫義字符 e.g. c=\$a\$b ehco c
3.8.5.5 | //管道字符
3.9 cut 和 sort命令
3.9.1 cat /etc/passwd |head -2 |cut -d ":" -f 1-3 //-d表示分割;-f表示段
3.9.2 cut -d//分隔符; -f//指定段號; -c//指定第幾個字符
3.9.3 sort -n//以數字排序(字母認爲是0); -r//反序; -t//分隔符 -kn1/-kn1,n2
3.10 wc ,uniq, split 和 tee 命令
3.10.1 wc -l //統計行數; wc -m//統計字符數; wc -w//統計詞
3.10.2 cat -A 1.txt //輸出行中假設爲123$, 其中$代表換行符
3.10.3 uniq 去重(需要先排序) uniq -c//統計行數
3.10.3.1 sort 1.txt |uniq -c
3.10.4 split -b//按字節爲單位進行切割 split -l//按行數進行切割
3.10.5 LC_ALL=C //爲了去除所有本地化的設置,讓命令正確的執行
3.10.6 tee 重定向,並把之前的結果打印在屏幕上
3.10.6.1 sort 1.txt |uniq -c |tee a.txt
3.10.6.2 tee -a //表示追加
3.10.6.3 >a.txt //清空a.txt
3.10.7 tr替換字符
3.10.7.1 echo "aminglinux" |tr '[al]' '[AL]'
3.11 一些特殊字符
3.11.1 $ 變量前綴 !$ 表示取前一次執行的命令
3.11.2 ;多條命令寫到一行,用分號分割
3.11.3 ~ 用戶家目錄,正則中表示匹配符
3.11.4 &放到命令後面,會把命令丟到後臺
3.11.5 >重定向 >>追加重定向 2>錯誤重定向 2>>追加錯誤重定向 &>將錯誤的和正確的全部重定向到一個文件中
3.11.6 [] 指定一個字符中的一個
3.11.7 || 或者 && 並且
3.11.8 [-d aminglinux] || mkdir aminglinux //-d判斷是否是一個目錄且是否存在
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.