shell基礎
概念
shell是系統跟計算機硬體互動時使用的中間介質
支持特定語法
每個用戶都可以有自己特定的shell
CentOS7默認shell為bash
記錄命令歷史
最多保存1000條歷史命令,保存在用戶家目錄的.bash_history檔案中
# !! 表示執行上一條指令

# !n 表示執行命令歷史中的第n條指令
# !字串 表示執行命令歷史中最近一次以字串開頭的命令

命令和檔案名補全
tab鍵可以補全一個指令、一個路徑或者一個檔案名
連續按兩次tab鍵,系統會把所有的命令或者檔案名都列出來
別名
# alias 命令別名=具體名字 把一個常用的而且很長的指令另取名為一個簡單易記的指令
# unalias 解除別名功能
通配符
可以使用*來匹配零個或多個字符,用?匹配一個字符
輸入/輸出重定向
輸入重定向用于改變命令的輸入,命令是<
輸出重定向用于改變命令的輸出,命令是>
輸出更常用,經常用于將命令的結果輸入到檔案中
錯誤重定向命令2>以及追加重定向命令>>

管道符
管道符 | 用于將前一個指令的輸出作為后一個指令的輸入

作業控制
當運行行程時,Ctrl+Z 使行程暫停,fg 恢復行程,bg 使行程后臺運行,Ctrl+C 使行程終止
# jobs 查看被暫停或者在后臺運行的任務
變數
變數就是使用一個較簡單的字串來替代某些具有特殊意義的設定以及資料
通常,shell預設的變數都是大寫的
PATH就代替了所有常用命令的絕對路徑的設定

命令env
# env 列出系統預設的全部系統變數

常見的環境變數
HOSTNAME 表示主機的名稱
SHELL 表示當前用戶的shell型別
HISTSIZE 表示歷史記錄數
MAIL 表示當前用戶的郵件存放目錄
PATH 該變數決定了shell將到哪些目錄中尋找命令或程式
PWD 表示當前目錄
LANG 與語言相關的環境變數,多語言環境可以修改此環境變數
HOME 表示當前用戶的家目錄
LOGNAME 表示當前用戶的登錄名
命令set
# set 不僅可以顯示系統預設的變數,也可以顯示用戶自定義的變數
(自定義變數只能在當前shell中生效)
允許系統內所有用戶登陸后都能使用該變數

僅允許當前用戶使用該變數
在用戶主目錄下的 .bashrc 檔案的最后一行加入export myname-Aming ,然后運行source .bashrc重繪配置
設定自定義變數
設定變數的格式為a=b,其中a為變數名,b為變數的內容,等號兩邊不能有空格
變數名只能由字母、數字以及下劃線組成,而且不能以數字開頭
當變數內容帶有特殊字符(如空格)時,需要加上單引號

變數內容中本身帶有單引號,就需要加雙引號

變數內容中需要用到其他命令,需要加反引號

變數內容可以累加其他變數的內容,需要加雙引號

使用雙引號時,不會取消雙引號中特殊字符本身的作用,而使用單引號時,里面的特殊字符將全部失去其本身的作用
如果在當前shell中運行bash指令,則會進入一個新的shell,這個shell就是原來shell的子shell

想讓變數在子shell中生效

取消某個變數

系統環境變數與個人環境變數的組態檔
/etc/profile 這個檔案預設了幾個重要的變數
/etc/bashre 這個檔案主要預設umask以及PS1,PS1就是在輸入命令時前面的那串字符
.bash_profile 該檔案定義了用戶的個人化路徑與環境變數的檔案名稱,每個用戶都可使用該檔案輸入專屬于自己的shell資訊,當用戶登錄時,該檔案僅僅執行一次
.bashre 該檔案包含專屬于自己的shell的bash資訊,當登錄或每次打開新的shell時,該檔案會被讀取
.bash_history 該檔案用于記錄命令歷史
.bash_logout 當退出shell時,會執行該檔案
Linux shell中的特殊符號
*代表零個或多個任意字符
?代表一個任意的字符
注釋符號#
脫義字符 \ 這個字符會將后面的特殊符號還原為普通字符
管道符 | 作用是將前面命令的輸出命令作為后面命令的輸入
命令cut
# cut -d ‘分割字符’ [-cf] n 用來截取某一個欄位
-d 后面跟分隔字符,分隔字符要用單引號括起來
-c 后面接的是第幾個字符
-f 后面接的是第幾個區塊

命令sort
# sort [-t 分隔符] [-kn1,n2] [-nru] 用做排序
-t 后面跟分隔字符
-n 表示使用純數字排序
-r 表示反向排序
-u 表示去重復
-kn1,n2 表示由n1區間排序到n2區間
命令wc
wc命令用于統計檔案的行數(-l)、字符數(-m)或詞數(-w)
命令uniq
uniq命令用來洗掉重復的行
-c 表示統計重復的行數,并把行數寫在前面
命令tee
tee命令后面跟檔案名,作用類似與重定向>,把檔案寫入后面所跟的檔案時,還顯示在螢屏上
命令tr
tr命令用于替換字符,常用來處理檔案中出現的特殊符號
-d 表示洗掉某個字符,后面跟要洗掉的字符
-s 表示洗掉重復的字符
替換、洗掉以及去重復等操作都是針對一個字符來講的,有一定的局限性
命令split
split命令用于切割檔案
-b 表示依據大小來分隔檔案,單位為byte
-l 表示依據行數來分隔檔案
特殊符號
符號 $ 可以用作變數前面的識別符號,還可以和!結合起來使用
$!表示上條命令中的最后一個變數
符號 ;想在一行中運行兩個或兩個以上的命令,需要在命令之前加符號
符號 ~ 表示用戶的家目錄,root用戶的家目錄是/root,普通用戶則是/home/username
符號 & 想把一條命令放到后臺執行,需要加上該符號,通常用于命令運行時間較長的情況
重定向符號>、>>、2>、2>>,分別代表取代、追加、錯誤重定向、錯誤追加重定向
中括號【】內為字符組合,代表字符組合中的任意一個,可以是一個范圍
符號&&和||
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/141625.html
標籤:Linux
上一篇:谷歌BBR擁塞演算法內核更新
下一篇:可視化工具Grafana部署

