test

<!DOCTYPE html> javascript

<html><head> css

<meta http-equiv="Content-Type" content="text/html; charset=unicode"> html

<!--defaultCSS--> java

<title>_1_bash基礎概念及功能.md</title> linux






<style type="text/css" id="wiz_todo_style_id" wiz_link_version="01.00.09">.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertical-align: -10%;-webkit-user-select: none;} .wiz-todo-label { display: inline-block; padding-top: 7px; padding-bottom: 6px; line-height: 1.5;} .wiz-todo-label-checked {  color: #666;} .wiz-todo-label-unchecked {text-decoration: initial;} .wiz-todo-completed-info {padding-left: 44px; display: inline-block; } .wiz-todo-avatar { width:20px; height: 20px; vertical-align: -20%; margin-right:10px; border-radius: 2px;} .wiz-todo-account, .wiz-todo-dt { color: #666; }</style> git

















<style id="wiz_custom_css">        html, body {            font-size: 15px;        }        body {            font-family: Helvetica, 'Hiragino Sans GB', '微軟雅黑', 'Microsoft YaHei UI', SimSun, SimHei, arial, sans-serif;            line-height: 1.6;            margin: 0;            padding: 20px 36px;            padding: 1.33rem 2.4rem;        }        h1, h2, h3, h4, h5, h6 {            margin: 20px 0 10px;            margin: 1.33rem 0 0.667rem;            padding: 0;            font-weight: bold;        }        h1 {            font-size: 21px;            font-size: 1.4rem;        }        h2 {            font-size: 20px;            font-size: 1.33rem;        }        h3 {            font-size: 18px;            font-size: 1.2rem;        }        h4 {            font-size: 17px;            font-size: 1.13rem;        }        h5 {            font-size: 15px;            font-size: 1rem;        }        h6 {            font-size: 15px;            font-size: 1rem;            color: #777777;            margin: 1rem 0;        }        div, p, ul, ol, dl, li {            margin: 0;        }        blockquote, table, pre, code {            margin: 8px 0;        }        ul, ol {            padding-left: 32px;            padding-left: 2.13rem;        }        blockquote {            padding: 0 12px;            padding: 0 0.8rem;        }        blockquote > :first-child {            margin-top: 0;        }        blockquote > :last-child {            margin-bottom: 0;        }        img {            border: 0;            max-width: 100%;            height: auto !important;            margin: 2px 0;        }        table {            border-collapse: collapse;            border: 1px solid #bbbbbb;        }        td {            padding: 4px 8px;            border-collapse: collapse;            border: 1px solid #bbbbbb;        }        @media screen and (max-width: 660px) {            body {                padding: 20px 18px;                padding: 1.33rem 1.2rem;            }        }        @media only screen and (-webkit-max-device-width: 1024px), only screen and (-o-max-device-width: 1024px), only screen and (max-device-width: 1024px), only screen and (-webkit-min-device-pixel-ratio: 3), only screen and (-o-min-device-pixel-ratio: 3), only screen and (min-device-pixel-ratio: 3) {            html, body {                font-size: 17px;            }            body {                line-height: 1.7;                padding: 0.75rem 0.9375rem;                color: #353c47;            }            h1 {                font-size: 2.125rem;            }            h2 {                font-size: 1.875rem;            }            h3 {                font-size: 1.625rem;            }            h4 {                font-size: 1.375rem;            }            h5 {                font-size: 1.125rem;            }            h6 {                color: inherit;            }            ul, ol {                padding-left: 2.5rem;            }            blockquote {                padding: 0 0.9375rem;            }        }</style><style name="wiz_tmp_editor_style">html, body {    font-size: 15px;}body {    font-family: Helvetica, 'Hiragino Sans GB', 微軟雅黑, 'Microsoft YaHei UI', SimSun, SimHei, arial, sans-serif;    line-height: 1.6;    color: ;    background-color: ;    margin: 0;    padding: 16px 20px;}h1, h2, h3, h4, h5, h6 {    margin: 20px 0 10px;    margin: 1.33rem 0 0.667rem;    padding: 0;    font-weight: bold;}h1 {    font-size: 21px;    font-size: 1.4rem;}h2 {    font-size: 20px;    font-size: 1.33rem;}h3 {    font-size: 18px;    font-size: 1.2rem;}h4 {    font-size: 17px;    font-size: 1.13rem;}h5 {    font-size: 15px;    font-size: 1rem;}h6 {    font-size: 15px;    font-size: 1rem;    color: #777777;    margin: 1rem 0;}div, p, ul, ol, dl, li {    margin: 0;}blockquote, table, pre, code{    margin: 8px 0;}ul, ol {    padding-left: 32px;    padding-left: 2.13rem;}blockquote {    border-left: 4px solid #dddddd;    padding: 0 12px;    padding: 0 0.8rem;}blockquote > :first-child {    margin-top: 0;}blockquote > :last-child {    margin-bottom: 0;}img {    border: 0;    max-width: 100%;    height: auto !important;    margin: 2px 0;}table {    border-collapse: collapse;    border: 1px solid #bbbbbb;}td {    padding:4px 8px;    border-collapse: collapse;    border: 1px solid #bbbbbb;}@media screen and (max-width: 660px) {    body {        padding: 20px 18px;        padding: 1.33rem 1.2rem;    }}@media only screen and (-webkit-max-device-width: 1024px), only screen and (-o-max-device-width: 1024px), only screen and (max-device-width: 1024px), only screen and (-webkit-min-device-pixel-ratio: 3), only screen and (-o-min-device-pixel-ratio: 3), only screen and (min-device-pixel-ratio: 3) {    html, body {        font-size: 17px;    }    body {        line-height: 1.7;        padding: 0.75rem 0.9375rem;        color: #353c47;    }    h1 {        font-size: 2.125rem;    }    h2 {        font-size: 1.875rem;    }    h3 {        font-size: 1.625rem;    }    h4 {        font-size: 1.375rem;    }    h5 {        font-size: 1.125rem;    }    h6 {        color: inherit;    }    ul, ol {        padding-left: 2.5rem;    }    blockquote {        padding: 0 0.9375rem;    }}</style><script type="text/javascript" src="file:///F:\Program Files (x86)\WizNote\WizTools\htmleditor\utils.js" wiz_style="unsave" charset="utf-8"></script><script type="text/javascript" src="file:///F:\Program Files (x86)\WizNote\WizTools\htmleditor\localize.js" wiz_style="unsave" charset="utf-8"></script><script type="text/javascript" src="file:///F:\Program Files (x86)\WizNote\WizTools\htmleditor\core\wizEditor.js" wiz_style="unsave" charset="utf-8"></script><script type="text/javascript" src="file:///F:\Program Files (x86)\WizNote\WizTools\htmleditor\core\checklist\todo.js" wiz_style="unsave" charset="utf-8"></script><script type="text/javascript" src="file:///F:\Program Files (x86)\WizNote\WizTools\htmleditor\core\p_w_picpathresize\dragresize.js" wiz_style="unsave" charset="utf-8"></script><script type="text/javascript" src="file:///F:\Program Files (x86)\WizNote\WizTools\htmleditor\editorHelper.js" wiz_style="unsave" charset="utf-8"></script></head> web


<body contenteditable="true" style=""><div><div>GUI : Gnome, KDE ,Xfce</div><div>CLI : sh &nbsp;csh ksh bash</div></div>CGI ( Common&nbsp;Gate&nbsp;Intergace)通用網關接口用來溝通HTML表單和服務器程序的接口。是一個可被其餘語言應用的規範集。<div>##shell種類_歷史<br><div><div>shell 1.就是一個命令行解釋器,翻譯爲機器語言發給內核(並非完整的語言,但提供對過程式邏輯的支持,實現編程機制,依賴外部)。</div><div>&nbsp; &nbsp; &nbsp; &nbsp; 2. 也是一個強大的編程語言,解釋執行的基本語言,直接調用linux命令。</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; 3.提供命令查找,解析路徑,提供自動化的運行環境。<br></div><div>Cshell在BSD版的unix,相似於c語言,分支有csh , tcsh。</div><div>bourne shell最先unix的shell,也叫sh。 Bourne族主要有是sh ,ksh, Bash, psh zsh Bash和sh兼容。 bash----zsh---fish(後兩種也有人用)</div><div>Bash是linux的默認shell,基於Bourneshell,吸取了Cshell和kSHELL的一些特性,因此Bash是sh的擴展,sh是 POSIX.</div><div>文件/etc/shells顯示支持的shell。支持/bin/sh &nbsp; .bin/bash &nbsp; /sbin/nologin &nbsp;/bin/tcsh &nbsp; /bin/csh</div><div><div><br></div><div>shell有子shell的概念。父子關係的shell,各自並不知道對方的存在。可打開不一樣的shell。主要介紹bash</div><div>`echo@SHELL` &nbsp; &nbsp;查看當前的shell</div><div>***</div><div>COMMAND OPTION &nbsp; &nbsp;</div><div>選項有長短,隨便用,但長選項合併的少。</div><div>##bash基礎特性</div><div><div>###1.命令歷史</div><div><br></div><div>```</div><div>定製history的功能,可經過如下環境變量實現:</div><div><span> </span>HISTSIZE:shell進程可保留的命令歷史的條數;</div><div><span> </span>HISTFILE:持久保存命令歷史的文件;</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<span> </span>~/.bash_history</div><div><span> </span>HISTFILESIZE:命令歷史文件的大小,默認1000;</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; 命令歷史保留在各自的命令緩衝區。<br></div><div>history&nbsp;[-c] [-d 偏移量] [n] &nbsp; 內建命令</div><div>&nbsp; &nbsp;&nbsp;-c &nbsp;清空全部命令歷史;</div><div>&nbsp; &nbsp; -d &nbsp;offset 刪除指定 &nbsp; -d 500 10 &nbsp; 第500開始刪10個;</div><div>&nbsp; &nbsp; -w 保存命令到歷史文件中;</div><div>&nbsp;&nbsp; &nbsp;-a &nbsp;將當前的命令緩衝到歷史文件中。</div><div>&nbsp; &nbsp; -n &nbsp;歷史文件中的命令加載到緩衝中。<br></div><div>&nbsp; &nbsp;&nbsp;#顯示最近的#條命令;<br></div><div>```</div><div>***</div><div>####調用歷史命令</div><div><div>shell程序在接收到用戶執行命令的請求,分析完成以後,最左側的字符串會被看成命令;</div><div>命令查找機制:</div><div>查找內部命令;</div><div>根據PATH環境變量中設定的目錄,自左而右逐個搜索目錄下的文件名;</div></div><div>```</div><div>!# 第#條命令 &nbsp;也能夠用複數倒着寫 &nbsp;&nbsp;</div><div>!! 執行上一條命令<br></div><div>!STRING再一次執行命令歷史列表中最近一個以STRING開頭的命令;不須要全寫!$引用一個命令的最後一個參數</div><div>注意:命令的重複執行有時候須要依賴於冪等性;</div><div>&nbsp; &nbsp; &nbsp;esc再按 . 同上 遠程支持<br></div><div>&nbsp; &nbsp;&nbsp;&nbsp;alt+. 同上 &nbsp;xshell遠程不支持</div><div><div>調用上一條命令的最後一個參數:</div><div><span> </span>快捷鍵:ESC, .</div><div><span> </span>字符串:!$</div></div><div>&nbsp; &nbsp; &nbsp; 命令歷史&nbsp;通常狀況下在內存緩衝區中,用戶正常退出後,追加到用戶家目錄.bash_histroy中&nbsp;,在/etc/profile 設置默認多少條</div><div>&nbsp; &nbsp;&nbsp;環境變量:PATH &nbsp; &nbsp; HISTSIZE緩衝區大小&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>控制如下變量命令歷史記錄的方式:</div><div>環境變量:HISTCONTROL,有如下3種取值:</div><div>&nbsp; &nbsp;&nbsp;ignoredups:忽略重複的命令;</div><div>&nbsp; &nbsp;&nbsp;ignorespace:以空白字符開頭的命令不計入歷史;</div><div>&nbsp; &nbsp;&nbsp;ignoreboth:以上二者同時生效;</div><div>eg: HISTCONTROL=ignoredups; &nbsp;相似於key=valuer</div><div>```</div><div>添加環境變量:見sehll變量。</div><div>***</div></div><div>####命令的執行狀態結果<br></div><div><div>命令執行的狀態結果:</div><div>bash經過狀態返回值來輸出此結果:</div><div>成功:0<span> </span>失敗:1-255</div><div>命令執行完成以後,其狀態返回值保存於bash的特殊變量$?中;<br></div><div>命令正常執行時,有的還回有命令返回值:<br></div><div>根據命令及其功能不一樣,結果各不相同;</div><div><br></div><div>引用命令的執行結果:<br></div><div>$(COMMAND)</div><div>或`COMMAND`</div><div>***</div><div>####2.bash的基礎特性:引用</div><div>‘’單引號,強引用,全部特殊符號沒有沒有特殊含義。單引號原不動</div><div><div>&nbsp;&nbsp;&nbsp; "" &nbsp;雙引號,弱引用引號內特殊含義沒有特殊含義,有例外$ 調用變量 &nbsp; ` 引用命令&nbsp; \轉意符&nbsp;</div><div>``` &nbsp;</div><div>&nbsp; `反引號,&nbsp;引發來的是系統命令。 用於設置別名。 &nbsp;</div><div>&nbsp;&nbsp;#註釋 &nbsp; &nbsp; $引用變量&nbsp;</div></div><div>```</div><div>***</div><div>####3.命令行快捷鍵</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ctrl+c: 強行結束<br></div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Ctrl+a:跳轉至命令行行首</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Ctrl+e:跳轉至命令行行尾</div><div><br></div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Ctrl+u:刪除行首至光標所在處之間的全部字符;</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Ctrl+k:刪除光標所在處至行尾的全部字符;</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ctrl+y :粘貼&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</div><div><br></div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Ctrl+l:清屏,至關於clear</div></div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ctrl+d : 退出當前終端<br></div><div>###4.命令行展開<br></div><div>####5.命令hash,加速命令執行</div><div>linux把執行過的命令,作hash,緩存的是命令的路徑,再後執行時找緩存</div><div><div>```</div><div>hash:列出</div><div>hash -d COMMAND:刪除</div><div>hash -r:清空</div></div><div>```</div><div>####globbing:文件名通配(總體文件名匹配,而非部分)<br></div><div><div>匹配模式:元字符<br></div><div><div>通配符和特殊符號 &nbsp;//用來匹配文件名</div><div>```</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ? &nbsp;任意匹配一個</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; * &nbsp; &nbsp; 任意一個或多個或0個</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [] &nbsp; &nbsp;任意括號內一個</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [x-y] &nbsp; &nbsp;任意x-y中一個字符</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [^] &nbsp; &nbsp; 排除匹配 &nbsp; &nbsp; &nbsp;</div></div><div>&nbsp; &nbsp;&nbsp;*:匹配任意長度的任意字符</div><div><br></div><div><span> </span>pa*, *pa*, *pa, *p*a*</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;pa, paa, passwd</div><div>&nbsp; &nbsp;&nbsp;?:匹配任意單個字符</div><div><span> </span>pa?, ??pa, p?a, p?a?</div><div><span> </span>pa, paa, passwd</div><div>&nbsp;&nbsp;&nbsp;[]:匹配指定範圍內的任意單個字符</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;有幾種特殊格式:</div><div><span> </span>[a-z], [A-Z], [0-9], [a-z0-9]</div><div><span> </span>[[:upper:]]:全部大寫字母</div><div><span> </span>[[:lower:]]:全部小寫字母</div><div><span> </span>[[:alpha:]]:全部字母</div><div><span> </span>[[:digit:]]:全部數字</div><div><span> </span>[[:alnum:]]:全部的字母和數字</div><div><span> </span>[[:space:]]:全部空白字符</div><div><span> </span>[[:punct:]]:全部標點符號</div><div>&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<span> </span>pa[0-9][0-9], 2[0-9][0-9]</div><div>[^]:匹配指定範圍外的任意單個字符</div><div><span> </span>[^[:upper:]]</div><div><span> </span>[^0-9]</div><div><span> </span>[^[:alnum:]]</div></div><div>```</div><div>***</div><div><br></div><div>### 6.管道,I/O重定向</div><div><div>echo命令的功能是在顯示器上顯示一段文字,通常起到一個提示的做用。</div><div>```</div><div>####重定向</div><div>&gt;</div><div>tail &nbsp;-n 100 /var/log/dmesg &gt; /tmp/last-100-boot &nbsp; //把最後100行日誌放到另外一個文件中 ,*覆蓋輸出*</div><div>cat file file1 file2 file3 &nbsp;&gt; /tmp/allthree &nbsp;//把三個文件合在一塊兒</div><div>&gt;&gt;</div><div><div>echo "new line &nbsp;of information " &gt;&gt; /tmp/all-file &nbsp; // 把引號中的附加到文件最後,*追加輸出*</div><div>diff &nbsp; file1 file2 &nbsp;&gt;&gt; /tmp/all-file &nbsp; &nbsp;//兩個文件中的不一樣的放在一個文件中<br></div><div>2&gt; &nbsp; &nbsp;  重定向錯誤輸出</div><div>2&gt;&gt; &nbsp; &nbsp; 追加方式 &nbsp; &amp;&gt;正確和錯誤輸出至同一個文件 &nbsp;</div><div>&lt; &nbsp; &nbsp;輸入重定向,默認輸入時鍵盤。</div><div>&nbsp; &nbsp;&nbsp;eg: &nbsp;#tr 'a-z' &nbsp;'A-Z' &nbsp;&lt; &nbsp;/etc/</div><div>&lt;&lt; &nbsp; 輸入不能追加,在此處生成文檔。Here Docment .</div><div>&nbsp; &nbsp;&nbsp;eg :</div><div>cat &nbsp;&lt;&lt; END &nbsp; &nbsp;在下一行生成&gt;輸入文字,直到輸入&lt;&lt; 後面的終止符相似END.文檔結束標記是相似的用的多的是EOF。</div><div>cat &nbsp;&gt;&gt; /tmp/myfile.txt &lt;&lt; EOF &nbsp; 輸出輸入的文檔到文件中,在腳本中生成文件或文檔。&nbsp;</div><div>set -C &nbsp;禁止對已存在文件使用覆蓋重定向;強制覆蓋輸出,則使用&gt;|</div><div>set +C &nbsp;關閉上述功能</div><div><div>####管道</div><div>COMMAND1 | COMMAND2 | COMMAND3 | ...&nbsp;管道:前一個的輸入當成後一個命令的輸入。</div><div><div>tee &nbsp;xxxx &nbsp; 從標準輸入中讀取輸入,存到文檔中一個而且放到屏幕上一份。<br></div><div>&nbsp; &nbsp;&nbsp;tee命令:</div><div><span> </span>COMMAND | tee /PATH/TO/SOMEFILE</div></div><div>```</div><div>***<br></div></div></div></div><div>###7.命令別名</div><div>alias &nbsp; 'A=ls'只在當前shell進程中有效</div><div>命令別名<br></div><div>unalias &nbsp;撤銷別名<br></div><div>alias &nbsp;顯示如今全部的別名。</div><div>alias 別名='命令' &nbsp; &nbsp;//臨時生效,放入/etc/bashrc永久生效</div><div>`#unalias 別名 &nbsp;//輸出`</div><div>命令優先級</div><div>第一順位執行路徑命令。</div><div>第二執行別名、</div><div>第三bash內部命令。//有些命令沒有</div><div>第四\$PATH環境中查詢到的命令。</div><div>/xxx/.bashrc目錄下.</div><div>命令替換用\$或``. &nbsp;把某個字符串替換爲命令執行結果。echo ‘$pwd’</div><div>touch ./file-$(%F-%H-%M-%S).txt &nbsp; 建立了一個帶時間的文件<br></div><div>``命令替換 &nbsp;''強引用 ""弱引用能夠完成變量替換</div><div>***</div><div>###7.變量</div><div>移步shell變量</div><div>###8編程&nbsp; &nbsp;&nbsp;</div><div>移步shell編程<br></div><div>運行時 路徑調用執行<br></div><div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 或bash &nbsp;xxxx &nbsp; &nbsp; //這種方法可不用該權限</div><div>&nbsp; &nbsp;&nbsp;linux中回車符識別爲$&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp; &nbsp;&nbsp;windows中回車符爲^M$</div><div>&nbsp; &nbsp;&nbsp;#dos2unix &nbsp;xxxx&nbsp;//從dos轉unix+</div><div>引用變量」$xxxx「<br></div></div></div></div></div></body></html> shell

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息