Linux学习总结(十七)-shell 基础知识
該篇內容很雜,但還是不難理解,就不逐個貼圖舉例。
一 先介紹幾種常用字符:
1 * 匹配任意個任意字符
2 ?匹配一個任意字符
3 # 注釋符號,符號后的語句不被執行
4 \脫意字符,后面跟帶含義字符時,照原字符輸出
5 []匹配包含在[]之中的任意一個字符:
例如[bc]ook 匹配book 或cook
[0-9] 匹配任意一個數字
6 {1,2} 匹配任意一個字符,同[]效果相同,格式不同
7 > 輸出重定向 
例如 cat 1.txt > 2.txt,把1.txt 的內容讀出來替換2.txt的內容
8 >>追加重定向
cat 1.txt >> 2.txt 把1.txt的內容讀出來追加到2.txt的尾部
2>和2>> 錯誤信息輸出, 如果某條命令執行不成功,則輸出報錯信息到指定文件。 例如 假設沒沒有a.txt 這個文件 cat a.txt 2> error.log 
備注:這個2算一個真值判斷,當命令執行失敗時,判斷為假,用2表示
那么執行成功,結果為真,就是1,通常我們省略了這個1
&>和&>>正確錯誤都輸出,當然是輸出到同一個文件了,如果要分開,則可以
cat 1.txt a.txt > 2.txt 2> error.log
< 輸入重定向 ,用的不多, 例如 wc -l < 1.txt 統計出1.txt的行數
9 | 管道符,我們一直在用,管道左邊命令的輸出作為其右邊命令的輸入
例如, cat /etc/passwd |head -3
把 cat 查出來的內容交給head 重新顯示
cat /etc/passwd |grep 'root'
把cat 查看的內容交給grep過濾,得到目標結果
二 作業控制
1 ctrl z 暫停一個進程
2 bg 把它丟到后臺運行
3 fg 恢復到前臺并運行
4 jobs 查看暫停或者在后臺運行的任務
命令后跟& 可以直接把任務丟到后臺執行
如果暫停了多個任務,jobs查看到每個任務對應的編號
bg ,fg 后面跟任務編號單個控制某一個任務
5 ctrl c 結束一個任務
三 變量
如果我們對編程稍微有點了解,變量這個概念并不陌生,我們通常都把變量理解為容器,用來存放數據。那么shell中的變量當然也是這個意思。之前我們了解了PATH。我們可以用env查看系統預設的全部系統變量,還可以用set命令查看我們自定義的變量。 
linux 下的變量格式為:$變量名
變量的命名規則:字母,數字,下劃線,不以數字開頭。
下面重點看下變量的賦值,看下單引號和雙引號的區別:
我們簡單舉六個例子: 
1 a='a$bc' echo $a 結果 a$bc
2.a=1;b=2 echo $a$b 結果 12
3.a='a$bc';b=2 echo $a$b 結果 a$bc2
4.c="a$bc" echo $c 結果 a
5.c="a$b"c echo $c 結果 a2c
6.c='a$b'c echo $c 結果 a$bc
其實要不了這么多例子就能說明問題,那么我們總結下,單引號會把里面的內容按照原來的字符原樣輸出,不識別有意義的符號。雙引號會解讀出里面的帶含義字符以及命令。例子4中,解讀為bc變量,因為該變量不存在,所以只輸出了a
我們直接 a=111這樣定義一個變量,只會在當前shell中生效,如果我們進入一個子shell,就找不到,那么他是一個局部變量。local variable
export a=111 這樣就定義一個全局變量 global variable,子shell會繼承父shell 的該變量
四 環境變量的幾個配置文件:
1 系統層: 
/etc/profile 
該文件預設了幾個重要的變量,例如PATH USER LOGNAME MAIL INPUTRC HOSTNAME HISTSIZE umask 等
/etc/bashrc
該文件主要預設umask 和ps1,ps1就是我們輸入命令時前面的那串字符
例如[root@lvlinux~] [用戶@主機名 當前目錄] ~指家目錄
2 用戶層:
.bash_profile 
該文件定義了用戶的個人化路徑與環境變量的名稱。每個用戶都可以使用該文件輸入專屬自己的shell信息,當用戶登錄時,該文件僅執行一次
.bashrc
該文件包含專屬自己的shell的bash信息,當每次打開心的shell時,該文件會被讀取,可以將用戶自定義的別名及變量寫到這里
.bash_history
用于記錄命令歷史
.bash_logout
退出shell時,會執行該文件。可以將清理的工作放著這里
五 幾個特殊符號
1.$ 我們應該對他有印象,當我們在終端下輸入命令時會看到,root用戶前面是一個#號,普通用戶前面是一個$.再者我們前面提到,用作變量的標識符。
在正則表達式中,作為行尾標記。!$ 表示剛執行過的命令中最后一個變量。
例如 執行以下head /etc/passwd 再執行下tail !$ 就等價于 tail /etc/passwd
2~ 表示用戶的家目錄,root用戶的家目錄是/root,普通用戶的家目錄是/home/用戶名
3.& 命令后面跟該符號,表示把該任務丟到后臺執行
4 分號;和&&和||
兩條命令的連接有三種方式:
1分號連接 :表示依次執行,前后沒有關聯
2 &&連接 : 符號前的命令執行成功后,才執行符號后的命令。否則不執行
3 ||鏈接:符號前的命令執行成功后,不執行符號后的命令,否則執行。
轉載于:https://blog.51cto.com/12606610/2082726
總結
以上是生活随笔為你收集整理的Linux学习总结(十七)-shell 基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 政治类
- 下一篇: nginx大量TIME_WAIT的解决办
