整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Linux中的鏈接運算符詳解 - 提高編程效率與性能

          inux 命令的鏈接意味著,組合多個命令并根據它們之間使用的操作符的行為使它們執行。

          Linux 中的命令鏈就像您在 shell 本身編寫簡短的 shell 腳本,然后直接從終端執行它們。鏈接使得流程自動化成為可能。

          此外,無人值守的機器可以在鏈接操作員的幫助下系統地運行。

          本文[1]旨在闡明常用的命令鏈運算符。它提供了簡短的描述和相應的示例,可以提高您的工作效率,使您能夠編寫簡潔、有意義的代碼,同時有時會減少系統負載。

          1. 與號運算符 (&) – 在后臺運行 Linux 命令

          ‘&’的作用是讓命令在后臺運行。只需鍵入命令,后跟空格和“&”。您可以在后臺一次性執行多個命令。

          在后臺運行一個名為“ping”的 Linux 命令:

          ping -c5 www.tecmint.com &
          

          同時在后臺運行兩個或多個 apt 命令:

          apt update & apt upgrade &
          

          2. 分號運算符 (;) – 運行多個命令

          分號 (;) 運算符使得可以一次運行多個命令,并且命令的執行按順序發生。

          apt update ; apt upgrade ; mkdir test
          

          上述命令組合將首先執行更新指令,然后執行升級指令,最后在當前工作目錄下創建一個“test”目錄。

          3. AND 運算符 (&&) – 成功后運行第二個命令

          如果第一個命令執行成功,即第一個命令的退出狀態為 0,則 AND 運算符 (&&) 僅執行第二個命令。該命令在檢查最后一個命令的執行狀態時非常有用。 例如,我想在終端中使用 links 命令訪問網站 howtoing.com,但在此之前,我需要檢查主機是否在線。

          ping -c3 www.tecmint.com && links www.tecmint.com
          

          4. OR 運算符 (||) – 條件命令執行

          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”,因此命令的最后部分未執行。

          5. NOT 運算符 (!) – 選擇性執行命令

          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
          

          6. AND – OR 運算符 (&& – ||) – 命令的條件執行

          上述運算符是“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
          

          7. PIPE 運算符 (|) – 簡化的輸出處理

          當第一個命令的輸出充當第二個命令的輸入時,此 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
          

          8.命令組合運算符{}

          組合兩個或多個命令,第二個命令取決于第一個命令的執行。

          例如,檢查目錄“bin”是否可用,并輸出相應的輸出。

          [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.
          

          9. 優先運算符()——管理命令執行順序

          () 運算符可以按優先順序執行命令。

          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 的退出狀態執行。

          10. 連接運算符 () – 多行命令連接

          顧名思義,串聯運算符 () 用于在 shell 中串聯多行大型命令。例如,以下命令將打開文本文件 test(1).txt。

          nano test\(1\).txt
          

          Reference

          [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 種錯誤類型。

          1. RangeError 范圍錯誤

          當數字超出允許的值范圍時,將拋出此錯誤;或者JS執行進入死循環。

          我們有一個數組,帶有兩個元素的arr。 接下來,我們嘗試將數組擴展為包含90 ** 99 = 2.9512665430652753e + 193元素。

          這個數字超出了數組最大的長度范圍。 運行它會拋出RangeError:

          因為我們要增加arr數組的數量超出了JS指定的范圍。

          2. ReferenceError 引用錯誤

          當對變量/項目的引用被破壞時,將引發此錯誤。 那是變量/項目不存在。

          我們有一個變量cat初始化為"cat"。 接下來,我們參考cat變量和dog變量。 cat變量存在,而dog變量不存在。

          cat將返回”cat”,而dog將引發參考錯誤,因為在環境記錄中找不到名稱dog。

          每當我們創建或定義變量時,變量名稱都會寫入環境記錄中。 此環境記錄就像鍵值存儲一樣,

          每當我們引用變量時,它都會存儲程序中定義的變量。 當在記錄中找到環境值并提取并返回值時,將以該變量的名稱作為關鍵字搜索環境記錄。 調用尚未定義的函數。

          現在,當我們創建或定義一個沒有賦值的變量時。 該變量以鍵作為變量名稱寫入環境記錄,但該值將保持未定義狀態。

          稍后為變量分配值時,將在env記錄中搜索該變量,當找到初始未定義值時,該賦值將被覆蓋。

          因此,當在環境記錄中找不到變量名時,JS引擎會引發ReferenceError。

          注意:未定義的變量不會拋出ReferenceError,因為它存在于環境記錄中只是它的值尚未設置。

          3. SyntaxError 語法錯誤

          這是我們遇到的最常見的錯誤。 當我們鍵入JS引擎可以理解的代碼時,會發生此錯誤。

          解析期間,JS引擎捕獲了此錯誤。 在JS引擎中,我們的代碼經過不同的階段,然后才能在終端上看到這些結果。

          • tokenization 標記化
          • parsing 解析
          • interpreting 編譯

          標記化將代碼的源分解為各個單元。 在此階段,將對數字,關鍵字,文字,運算符進行整理并分別進行標記。

          接下來,生成的令牌流將傳遞到解析階段,由解析器處理。 這是從令牌流生成AST的地方。 AST是我們代碼結構的抽象表示。

          在這兩個階段,即標記化和解析,如果我們代碼的語法/源不符合JS的語法規則,則會使階段失敗并引發SyntaxError。 例如,

          單獨的h代表什么? 那里的h破壞了代碼。

          因此,我們可以說語法錯誤發生在解析/編譯期間。

          4. TypeError 類型錯誤

          當其他NativeError對象中沒有一個是失敗原因的適當指示時,TypeError用于指示操作失敗。

          對錯誤的數據類型執行操作時會發生TypeError。 可能是布爾值,但是找到了ing。

          例如, 如果我們嘗試將數字轉換為大寫,如下所示:

          將拋出一個 TypeError

          因為toUpperCase函數需要字符串數據類型。 toUpperCase函數是有意通用的; 它不需要其this值為String對象。 因此,可以將其轉移到其他類型的對象中用作方法。

          如果我們對Objects,Boolean,Symbol,null,undefined數據類型調用toUpperCase函數,則只有字符串會轉換為大寫或小寫形式,我們將得到TypeError,因為它操作的數據類型錯誤。

          5. URIError

          這表明使用一種全局URI處理功能與其定義不兼容。

          JS中的URI(統一資源指示符)具有以下功能:decodeURI,decodeURIComponent等。

          如果我們使用錯誤的參數調用它們中的任何一個,我們將得到URIError

          encodeURI,獲取URI的未編碼版本。 "%"不是正確的URI,因此引發了URIError。

          如果對URI進行編碼或解碼有問題,則會引發URIError。

          6. EvalError

          在使用全局eval()函數時,此函數用于識別錯誤。

          根據EcmaSpec 2018版: 此規范當前未使用此異常。 保留該對象是為了與本規范的先前版本兼容。

          7. InternalError 內部錯誤

          該錯誤在JS引擎內部發生,特別是當它有太多數據要處理并且堆棧增長超過其關鍵限制時。

          當JS引擎被太多的遞歸,太多的切換情況等淹沒時,就會發生這種情況

          太多的遞歸,一個簡單的例子是這樣的:

          總結

          正如我們所說,沒有人能避免犯錯誤。 就我們鍵入代碼而言,這是一個穩定的事件。 為了克服它,我們需要知道可以拋出的本機錯誤的類型。 我們在這篇文章中列出了它們,并提供了一些示例來說明它們是如何遇到的。

          因此,無論何時在終端或瀏覽器中引發錯誤,您現在都可以輕松發現錯誤發生的位置和方式,并編寫更好,更不易出錯的代碼。

          文/H5技術專家:云和數據阿寬老師

          想學習前端,請關注并私信:h5學習,贈送您學習大禮包!


          主站蜘蛛池模板: 精品一区二区91| 无码中文人妻在线一区 | 国产精品无码不卡一区二区三区| 久久无码精品一区二区三区| 久久久久成人精品一区二区| 国模极品一区二区三区| 亚州AV综合色区无码一区| 大香伊蕉日本一区二区| 中文字幕精品一区二区三区视频| 福利一区福利二区| 亚洲福利电影一区二区?| 精品国产一区二区三区AV性色| 福利片福利一区二区三区| 久久国产香蕉一区精品| 深夜福利一区二区| 国产一区二区三区美女| 麻豆亚洲av熟女国产一区二| 日本在线一区二区| 3d动漫精品成人一区二区三| 一区二区乱子伦在线播放| 福利视频一区二区牛牛| 色一乱一伦一区一直爽| 午夜视频一区二区三区| 日韩伦理一区二区| 精品免费国产一区二区三区| 91精品一区二区| 91午夜精品亚洲一区二区三区| 一区二区不卡在线| 国产福利91精品一区二区| 国产对白精品刺激一区二区 | 久久久久成人精品一区二区| 久久无码人妻精品一区二区三区 | 久久亚洲综合色一区二区三区| 亚洲成AV人片一区二区密柚 | 香蕉视频一区二区三区| 无码人妻精品一区二区蜜桃百度 | 一级毛片完整版免费播放一区| 亚洲国产高清在线一区二区三区| 中文字幕人妻丝袜乱一区三区| 亚欧免费视频一区二区三区| AA区一区二区三无码精片|