1. 程式人生 > >Linux學習筆記之bash

Linux學習筆記之bash

識別 命令替換 管理 proc del man -m histsize 單詞

一、shell(外殼)→離用戶最近的計算機程序,提供人機交互的功能
廣義的shell:
GUI(Graphical User Interface)
CLI(Command Line Interface):sh,csh(類似於C語言),ksh(功能更強大,付費使用),tcsh(增強的csh),zsh

bash:shell在用戶登錄後啟動,大多數默認使用bash
二、bash(Bourne-Again Shell)
1、每個進程不知道別人的存在,在每個進程看來,當前主機上只存在內核和當前進程
2、系統靠進程號識別進程,進程是程序的副本,進程是程序執行的實例
例:兩個用戶登陸,只有一個shell程序執行,但是有2個進程,但是兩個進程之間互不相幹

shell是一個外部命令
技術分享圖片
用戶工作環境
#管理員模式
$用戶模式
支持用戶自定義工作環境
shell 有父shenll 和子shell的概念 每個shell並不知道其他shell去運行,對子shell的設定不影響父shell,對父shell的設定不影響子shell
三、bash的功能
1、命令歷史:上下翻使用
2、管道、重定向
3、命令別名
4、命令行編輯
5、命令行展開
6、文件名通配
7、變量
8、編程(將執行的命令通過各種邏輯組合起來,腳本)
四、bash特性
1、命令行編輯
光標跳轉:ctrl+a:跳轉到命令行行首
ctrl+e:跳轉到命令行行尾
ctrl+?:按單詞向左跳轉
ctrl+?:按單詞向右跳轉
命令刪除:ctrl+u:刪除光標至行首
ctrl+k:刪除光標至行尾
清屏(clear):ctrl+L windows(cls)
2、命令歷史
bash自動記錄過去執行的命令,保存在內存的緩沖區上,進程結束命令將保存至某一個文件,當用戶正常退出,文件保存於家目錄下隱藏文件bash_history
history:查看命令歷史(屬於內建命令)
技術分享圖片
history -c(clear):清空命令歷史
技術分享圖片
history -d(delete):清空指定命令歷史
技術分享圖片
history -w:保存歷史命令至歷史文件中(覆蓋之前保留的命令)
技術分享圖片
環境變量
PATH:命令搜索的路徑
HISTSIZE:命令歷史緩沖區大小,默認1000條命令
命令歷史使用技巧
!n 執行命令歷史中第n條命令
技術分享圖片
!-n 執行命令歷史中倒數第n條
技術分享圖片
!! 執行剛剛執行的命令
技術分享圖片
!string 執行命令歷史中最近一個以指定字符串開頭的命令
技術分享圖片
!$:引用上一個命令中最後一個參數 ESC和"." Alt和"."
技術分享圖片
3、補齊(tab)
命令補齊(在命令搜索路徑下補齊命令)
一次tab 命令自動補齊(寫出的字符能夠唯一標識命令)
兩次tab 顯示所有與字符有關的命令
路徑補齊:和命令補齊類似(在所給打頭目錄下查找補齊目錄或文件)
4、命令別名
alias CMDALIAS=‘CMMAND [option] [argument]‘
技術分享圖片
在shell中定義的別名僅在當前shell生命周期有效:別名的有效範圍僅為當前shell進程
alias 顯示所有命令別名(內建命令)
技術分享圖片
unalias CMDALIAS 撤銷別名
在定義命令別名的情況下可以使用 \COMMAND 使用原命令
技術分享圖片
5、命令替換
把命令中某個子命令替換為其執行結果的過程
echo "the current directory is $(pwd)"
$(pwd)=pwd
技術分享圖片
touch file-$(date +%F-%H-%M-%S).txt
技術分享圖片
``:命令替換
"":弱引用,可以實現變量替換
‘‘:強引用,不完成變量替換
6、文件名通配(globbing)

  • 任意長度的任意字符
    ? 任意長度單個字符
    [] 匹配指定範圍內任意單個字符
    [abc],[a-m],[a-z],][0-9],[A-Za-z]
    [^] 匹配指定範圍外的任意字符
    [[:space:]] 空白字符
    [[:punct:]] 標點符號
    [[:lower:]] 小寫字母
    [[:upper:]] 大寫字母
    [[:alpha:]] 大小寫字母
    [[:digiqt:]] 數字
    [[:alnum:]] 數字和大小寫字母
    man 7 glob(查看文件名統配)

Linux學習筆記之bash