shell基礎(chǔ)概念shell是系統(tǒng)跟計算機硬件交互時使用的中間介質(zhì) 支持特定語法 每個用戶都可以有自己特定的shell CentOS7默認shell為bash 記錄命令歷史最多保存1000條歷史命令,,保存在用戶家目錄的.bash_history文件中 # !,! 表示執(zhí)行上一條指令 # ,!n 表示執(zhí)行命令歷史中的第n條指令 # !字符串 表示執(zhí)行命令歷史中最近一次以字符串開頭的命令 命令和文件名補全tab鍵可以補全一個指令,、一個路徑或者一個文件名 連續(xù)按兩次tab鍵,,系統(tǒng)會把所有的命令或者文件名都列出來 別名# alias 命令別名=具體名字 把一個常用的而且很長的指令另取名為一個簡單易記的指令 # unalias 解除別名功能
通配符可以使用*來匹配零個或多個字符,用,?匹配一個字符 輸入/輸出重定向輸入重定向用于改變命令的輸入,,命令是< 輸出重定向用于改變命令的輸出,命令是> 輸出更常用,,經(jīng)常用于將命令的結(jié)果輸入到文件中 錯誤重定向命令2>以及追加重定向命令>> 管道符管道符 | 用于將前一個指令的輸出作為后一個指令的輸入 作業(yè)控制當運行進程時,,Ctrl+Z 使進程暫停,fg 恢復(fù)進程,,bg 使進程后臺運行,,Ctrl+C 使進程終止 # jobs 查看被暫停或者在后臺運行的任務(wù) 變量變量就是使用一個較簡單的字符串來替代某些具有特殊意義的設(shè)定以及數(shù)據(jù) 通常,shell預(yù)設(shè)的變量都是大寫的 PATH就代替了所有常用命令的絕對路徑的設(shè)定 命令env# env 列出系統(tǒng)預(yù)設(shè)的全部系統(tǒng)變量 常見的環(huán)境變量 HOSTNAME 表示主機的名稱 SHELL 表示當前用戶的shell類型 HISTSIZE 表示歷史記錄數(shù) MAIL 表示當前用戶的郵件存放目錄 PATH 該變量決定了shell將到哪些目錄中尋找命令或程序 PWD 表示當前目錄 LANG 與語言相關(guān)的環(huán)境變量,,多語言環(huán)境可以修改此環(huán)境變量 HOME 表示當前用戶的家目錄 LOGNAME 表示當前用戶的登錄名 命令set# set 不僅可以顯示系統(tǒng)預(yù)設(shè)的變量,,也可以顯示用戶自定義的變量 (自定義變量只能在當前shell中生效) 允許系統(tǒng)內(nèi)所有用戶登陸后都能使用該變量 僅允許當前用戶使用該變量 在用戶主目錄下的 .bashrc 文件的最后一行加入export myname-Aming ,然后運行source .bashrc刷新配置 設(shè)置自定義變量 設(shè)定變量的格式為a=b,,其中a為變量名,,b為變量的內(nèi)容,等號兩邊不能有空格 變量名只能由字母,、數(shù)字以及下劃線組成,,而且不能以數(shù)字開頭 當變量內(nèi)容帶有特殊字符(如空格)時,需要加上單引號 變量內(nèi)容中本身帶有單引號,,就需要加雙引號 變量內(nèi)容中需要用到其他命令,,需要加反引號 變量內(nèi)容可以累加其他變量的內(nèi)容,需要加雙引號 使用雙引號時,,不會取消雙引號中特殊字符本身的作用,,而使用單引號時,里面的特殊字符將全部失去其本身的作用 如果在當前shell中運行bash指令,,則會進入一個新的shell,,這個shell就是原來shell的子shell 想讓變量在子shell中生效 取消某個變量 系統(tǒng)環(huán)境變量與個人環(huán)境變量的配置文件/etc/profile 這個文件預(yù)設(shè)了幾個重要的變量 /etc/bashre 這個文件主要預(yù)設(shè)umask以及PS1,PS1就是在輸入命令時前面的那串字符 .bash_profile 該文件定義了用戶的個人化路徑與環(huán)境變量的文件名稱,。每個用戶都可使用該文件輸入專屬于自己的shell信息,,當用戶登錄時,該文件僅僅執(zhí)行一次 .bashre 該文件包含專屬于自己的shell的bash信息,,當?shù)卿浕蛎看未蜷_新的shell時,,該文件會被讀取 .bash_history 該文件用于記錄命令歷史 .bash_logout 當退出shell時,會執(zhí)行該文件 Linux shell中的特殊符號*代表零個或多個任意字符 ,?代表一個任意的字符 注釋符號# 脫義字符 \ 這個字符會將后面的特殊符號還原為普通字符 管道符 | 作用是將前面命令的輸出命令作為后面命令的輸入 命令cut# cut -d '分割字符’ [-cf] n 用來截取某一個字段 -d 后面跟分隔字符,,分隔字符要用單引號括起來 -c 后面接的是第幾個字符 -f 后面接的是第幾個區(qū)塊 命令sort# sort [-t 分隔符] [-kn1,n2] [-nru] 用做排序 -t 后面跟分隔字符 -n 表示使用純數(shù)字排序 -r 表示反向排序 -u 表示去重復(fù) -kn1,n2 表示由n1區(qū)間排序到n2區(qū)間 命令wcwc命令用于統(tǒng)計文檔的行數(shù)(-l),、字符數(shù)(-m)或詞數(shù)(-w) 命令uniquniq命令用來刪除重復(fù)的行 -c 表示統(tǒng)計重復(fù)的行數(shù),,并把行數(shù)寫在前面 命令teetee命令后面跟文件名。作用類似與重定向>,,把文件寫入后面所跟的文件時,還顯示在屏幕上 命令trtr命令用于替換字符,,常用來處理文檔中出現(xiàn)的特殊符號 -d 表示刪除某個字符,,后面跟要刪除的字符 -s 表示刪除重復(fù)的字符 替換、刪除以及去重復(fù)等操作都是針對一個字符來講的,,有一定的局限性 命令splitsplit命令用于切割文檔 -b 表示依據(jù)大小來分隔文檔,,單位為byte -l 表示依據(jù)行數(shù)來分隔文檔 特殊符號符號 $ 可以用作變量前面的標識符,還可以和!結(jié)合起來使用 $,!表示上條命令中的最后一個變量 符號 ,;想在一行中運行兩個或兩個以上的命令,需要在命令之前加符號 符號 ~ 表示用戶的家目錄,,root用戶的家目錄是/root,,普通用戶則是/home/username 符號 & 想把一條命令放到后臺執(zhí)行,需要加上該符號,,通常用于命令運行時間較長的情況 重定向符號>,、>>、2>,、2>>,,分別代表取代、追加,、錯誤重定向,、錯誤追加重定向 中括號【】內(nèi)為字符組合,代表字符組合中的任意一個,,可以是一個范圍 符號&&和|| |
|