inux 命令的鏈接意味著,組合多個命令并根據它們之間使用的操作符的行為使它們執行。
Linux 中的命令鏈就像您在 shell 本身編寫簡短的 shell 腳本,然后直接從終端執行它們。鏈接使得流程自動化成為可能。
此外,無人值守的機器可以在鏈接操作員的幫助下系統地運行。
本文[1]旨在闡明常用的命令鏈運算符。它提供了簡短的描述和相應的示例,可以提高您的工作效率,使您能夠編寫簡潔、有意義的代碼,同時有時會減少系統負載。
‘&’的作用是讓命令在后臺運行。只需鍵入命令,后跟空格和“&”。您可以在后臺一次性執行多個命令。
在后臺運行一個名為“ping”的 Linux 命令:
ping -c5 www.tecmint.com &
同時在后臺運行兩個或多個 apt 命令:
apt update & apt upgrade &
分號 (;) 運算符使得可以一次運行多個命令,并且命令的執行按順序發生。
apt update ; apt upgrade ; mkdir test
上述命令組合將首先執行更新指令,然后執行升級指令,最后在當前工作目錄下創建一個“test”目錄。
如果第一個命令執行成功,即第一個命令的退出狀態為 0,則 AND 運算符 (&&) 僅執行第二個命令。該命令在檢查最后一個命令的執行狀態時非常有用。 例如,我想在終端中使用 links 命令訪問網站 howtoing.com,但在此之前,我需要檢查主機是否在線。
ping -c3 www.tecmint.com && links www.tecmint.com
OR 運算符 (||) 很像編程中的“else”語句。 ||運算符允許您僅在第一個命令執行失敗時才執行第二個命令,即第一個命令的退出狀態為“1”。
例如,我想從非 root 帳戶執行“apt update”,如果第一個命令失敗,則將執行第二個“links www.howtoing.com”命令。
apt update || links tecmint.com
在上面的命令中,由于不允許用戶更新系統,這意味著第一個命令的退出狀態為“1”,因此最后一個命令“links howtoing.com”被執行。
如果第一個命令成功執行,退出狀態為“0”怎么辦?明顯地!第二個命令不會執行。
mkdir test || links tecmint.com
在這里,用戶在其主目錄中創建一個允許用戶使用的文件夾“test”。命令執行成功,退出狀態為“0”,因此命令的最后部分未執行。
NOT 運算符 (!) 很像“ except ”語句。該命令將執行除提供的條件之外的所有命令。要理解這一點,請在主目錄中創建一個目錄“howtoing”并“cd”到該目錄。
mkdir tecmint
cd tecmint
接下來,在文件夾“howtoing”中創建幾種類型的文件。
touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html
看到我們已經在文件夾“howtoing”中創建了所有新文件。
ls
a.doc a.html a.pdf a.xml b.doc b.html b.pdf b.xml
現在使用 rm 命令以巧妙的方式一次性刪除除“html”文件之外的所有文件。
rm -r !(*.html)
只是為了驗證,最后執行。使用 ls 命令列出所有可用文件。
ls
a.html b.html
上述運算符是“AND”和“OR”運算符的組合。它很像“if-else”語句。
例如,讓我們對 howtoing.com 執行 ping 操作,如果成功則回顯“Verified”,否則回顯“Host Down”。
ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
示例輸出:
PING www.tecmint.com (212.71.234.61) 56(84) bytes of data.
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms
--- www.tecmint.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms
Verified
現在,斷開互聯網連接,然后再次嘗試相同的命令。
ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
示例輸出:
ping: unknown host www.tecmint.com
Host Down
當第一個命令的輸出充當第二個命令的輸入時,此 PIPE 運算符非常有用。例如,將“ls -l”的輸出通過管道傳輸到“less”并查看命令的輸出。
ls -l | less
drwx------ tecmint tecmint 4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x tecmint tecmint 4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x root root 4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
組合兩個或多個命令,第二個命令取決于第一個命令的執行。
例如,檢查目錄“bin”是否可用,并輸出相應的輸出。
[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
() 運算符可以按優先順序執行命令。
Command_x1 &&Command_x2 || Command_x3 && Command_x4.
在上面的偽命令中,如果Command_x1失敗怎么辦? Command_x2、Command_x3、Command_x4 都不會執行,為此我們使用優先運算符,如下所示:
(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)
在上面的偽命令中,如果 Command_x1 失敗,Command_x2 也會失敗,但 Command_x3 和 Command_x4 仍然根據 Command_x3 的退出狀態執行。
顧名思義,串聯運算符 () 用于在 shell 中串聯多行大型命令。例如,以下命令將打開文本文件 test(1).txt。
nano test\(1\).txt
[1]Source: https://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/
、使用 div 后,什么時候使用 table
Web標準并不排除表格的使用,但使用表格排版是不明智的,因為表格歸根結底只是一種顯示“數據”的方式。大家應該知道,在 Excel 中,表格就是用來放置數據信息的。使用表格顯示信息能讓瀏覽者閱讀起來更輕松,表達也更清楚。
XHTML 中的元素可分為三大類,下面分別介紹。
輔助布局設計元素:主要指div、span等,這類元素的主要功能是布局整個頁面。靈活使用這些元素,能讓網頁豐富多彩。
結構化元素或信息元素:主要指table、ul、pre、code等元素,是一種信息顯示與整理方式,如 table 是用來顯示表格信息的,ul是用來顯示列表信息的,當需要用表格或列表的時候,用這兩種方式來顯示是合理的。
為實現某些功能而添加的元素:如添加關鍵字的meta keyword,設置鏈接的a等。由上面的分析可知,符合Web標準的設計思路是,使用div等布局元素來制作頁面的布局、定位、色塊、圖像等,使用table、ul等元素來顯示頁面中需要展示的數據。這實際上是一個信息合理化整合的過程,什么地方該用什么元素還是照用不誤。
二、初學 Web 標準的幾個誤區
初次接觸 Web標準的用戶可能會受表格布局或其他一些問題的影響,常見問題及解決建議如下:
1.不要用傳統的表格思維來套div
用慣了表格的用戶可能會覺得,CSS 布局就是將原來用table的地方用div來代替,原來是 table 嵌套,現在是 div嵌套。這種觀點是錯誤的。
應該跳出表格布局的禁錮,拋棄一個td接一個td放置內容的思維方式。按前文所述,Web標準的目的是將內容和表現完全分離。即在加入表現之前,頁面里有的僅僅是內容,在沒有修飾的情況下,它就是一張有一些文字和圖像(圖像是指內容中的圖像,是有真正意義的圖像,而非修飾性的圖像)的簡單頁面,這些文字和圖像僅僅是依次羅列下來,只有結構,沒有任何樣式。當加人表現,將所有修飾的圖像作為背景,用CSS 來定義每一塊內容的位置、字體、顏色等時,才構成了一個完整的頁面。
這樣制作的頁面才是內容與表現完全分離的,即抽掉 CSS 文件,剩下的就只是干凈的內容。
2.不必為每塊內容都創建一個id
內容都是有結構的,相同結構的內容可以用同一個樣式來定義,如相同級別的標題、正文、圖像等。對干多次引用的樣式可以用cass 來定義,不需要全部用id:另外也不是說只能用 div 布局,在需要的時候,完全可以用p來代替。
至于僅僅為了行高、間距,或者一個修飾性圖像而增加的div,隨著大家對 CSS應用的熟練和理解,很快就會知道這是沒有必要的。希望大家多研究 CSS,做出最簡練、最有效的樣式表。
夠快速地錯誤定位,解決問題,是我們開發中非常重要的一種能力。
從瀏覽器控制臺到運行Node.js的計算機終端,我們到處都會看到錯誤。
這篇文章重點介紹了在JS開發過程中可能遇到的 7 種錯誤類型。
當數字超出允許的值范圍時,將拋出此錯誤;或者JS執行進入死循環。
我們有一個數組,帶有兩個元素的arr。 接下來,我們嘗試將數組擴展為包含90 ** 99 = 2.9512665430652753e + 193元素。
這個數字超出了數組最大的長度范圍。 運行它會拋出RangeError:
因為我們要增加arr數組的數量超出了JS指定的范圍。
當對變量/項目的引用被破壞時,將引發此錯誤。 那是變量/項目不存在。
我們有一個變量cat初始化為"cat"。 接下來,我們參考cat變量和dog變量。 cat變量存在,而dog變量不存在。
cat將返回”cat”,而dog將引發參考錯誤,因為在環境記錄中找不到名稱dog。
每當我們創建或定義變量時,變量名稱都會寫入環境記錄中。 此環境記錄就像鍵值存儲一樣,
每當我們引用變量時,它都會存儲程序中定義的變量。 當在記錄中找到環境值并提取并返回值時,將以該變量的名稱作為關鍵字搜索環境記錄。 調用尚未定義的函數。
現在,當我們創建或定義一個沒有賦值的變量時。 該變量以鍵作為變量名稱寫入環境記錄,但該值將保持未定義狀態。
稍后為變量分配值時,將在env記錄中搜索該變量,當找到初始未定義值時,該賦值將被覆蓋。
因此,當在環境記錄中找不到變量名時,JS引擎會引發ReferenceError。
注意:未定義的變量不會拋出ReferenceError,因為它存在于環境記錄中只是它的值尚未設置。
這是我們遇到的最常見的錯誤。 當我們鍵入JS引擎可以理解的代碼時,會發生此錯誤。
解析期間,JS引擎捕獲了此錯誤。 在JS引擎中,我們的代碼經過不同的階段,然后才能在終端上看到這些結果。
標記化將代碼的源分解為各個單元。 在此階段,將對數字,關鍵字,文字,運算符進行整理并分別進行標記。
接下來,生成的令牌流將傳遞到解析階段,由解析器處理。 這是從令牌流生成AST的地方。 AST是我們代碼結構的抽象表示。
在這兩個階段,即標記化和解析,如果我們代碼的語法/源不符合JS的語法規則,則會使階段失敗并引發SyntaxError。 例如,
單獨的h代表什么? 那里的h破壞了代碼。
因此,我們可以說語法錯誤發生在解析/編譯期間。
當其他NativeError對象中沒有一個是失敗原因的適當指示時,TypeError用于指示操作失敗。
對錯誤的數據類型執行操作時會發生TypeError。 可能是布爾值,但是找到了ing。
例如, 如果我們嘗試將數字轉換為大寫,如下所示:
將拋出一個 TypeError
因為toUpperCase函數需要字符串數據類型。 toUpperCase函數是有意通用的; 它不需要其this值為String對象。 因此,可以將其轉移到其他類型的對象中用作方法。
如果我們對Objects,Boolean,Symbol,null,undefined數據類型調用toUpperCase函數,則只有字符串會轉換為大寫或小寫形式,我們將得到TypeError,因為它操作的數據類型錯誤。
這表明使用一種全局URI處理功能與其定義不兼容。
JS中的URI(統一資源指示符)具有以下功能:decodeURI,decodeURIComponent等。
如果我們使用錯誤的參數調用它們中的任何一個,我們將得到URIError
encodeURI,獲取URI的未編碼版本。 "%"不是正確的URI,因此引發了URIError。
如果對URI進行編碼或解碼有問題,則會引發URIError。
在使用全局eval()函數時,此函數用于識別錯誤。
根據EcmaSpec 2018版: 此規范當前未使用此異常。 保留該對象是為了與本規范的先前版本兼容。
該錯誤在JS引擎內部發生,特別是當它有太多數據要處理并且堆棧增長超過其關鍵限制時。
當JS引擎被太多的遞歸,太多的切換情況等淹沒時,就會發生這種情況
太多的遞歸,一個簡單的例子是這樣的:
正如我們所說,沒有人能避免犯錯誤。 就我們鍵入代碼而言,這是一個穩定的事件。 為了克服它,我們需要知道可以拋出的本機錯誤的類型。 我們在這篇文章中列出了它們,并提供了一些示例來說明它們是如何遇到的。
因此,無論何時在終端或瀏覽器中引發錯誤,您現在都可以輕松發現錯誤發生的位置和方式,并編寫更好,更不易出錯的代碼。
文/H5技術專家:云和數據阿寬老師
想學習前端,請關注并私信:h5學習,贈送您學習大禮包!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。