日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shelll热身

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shelll热身 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 熱身
    • 為什么使用`shell`
    • 帶著一個`Sha-Bang`出發(fā)(`Sha-Bang`是指`#!`)

熱身

為什么使用shell

作為一個從事嵌入式行業(yè)的開發(fā)人員,每天要打交道的就是和Linux的shell串口,更準(zhǔn)卻的來說是bash shell,很多人剛從windows的界面操作轉(zhuǎn)到Linux上來時,對看到Linux這個彈出來的控制窗口,多少有點不知所措,甚至有點茫然。

書讀了一本又一本,博客寫了一篇又一篇,可能是因為從事行業(yè)的性質(zhì)決定的,也可能是因為自己總是愛學(xué)習(xí)點新鮮的工具導(dǎo)致。雖學(xué)了各種語言各種庫,但是回過頭來看這些學(xué)過的知識,僅存在自己的腦海中,平時工作生活中能用到的可能百分之20都不到,這也許就是進店的二八理論吧-你學(xué)的知識只有百分之二十是能夠用到的,反過來當(dāng)你學(xué)會使用一個工具的百分之二十的功能時,你就能夠熟練的使用它,讓我們帶著這種二八理論來一起學(xué)會使用bash shell的百分之二十的使用方式吧。

shell是什么,你可以說shell是一個程序、一個命令解析器、一個介于用戶和操作系統(tǒng)之間的絕緣層,一種計算機語言、一種腳本語言… ,這些答案都是對的,至于那些權(quán)威的官方解析,大家可以自行進行百度,會這查看wiki解釋,在linux中shell能夠?qū)⑾到y(tǒng)調(diào)用、公共程序、工具、編譯的二進制文件粘合在一起來建立應(yīng)用,如果你是在linux上從事開發(fā)工作,建議你學(xué)好shell,熟練掌握shell之后,你根本不需要那些華而不實成熟緊湊的程序。

帶著一個Sha-Bang出發(fā)(Sha-Bang是指#!)

shell腳本就是一堆系統(tǒng)命令列在一個文件中,因此它可以幫助你少敲一些命令。

寫一個腳本

ls pwd ifconfig

腳本寫好之后,將其保存為example.sh1,執(zhí)行可以直接調(diào)用bash來執(zhí)行這個腳本,或者加上可執(zhí)行權(quán)限之后在直接執(zhí)行對應(yīng)的文件,

  • 使用bash執(zhí)行
  • bash example1.sh
  • 加上可執(zhí)行權(quán)限執(zhí)行
  • chmod 666 example1.sh ./example1.sh

    當(dāng)然你可以更加細(xì)化的添加權(quán)限的管理

    比如:

    chmod 555 scriptname (允許任何人都具有可讀和執(zhí)行權(quán)限) chmod +rx scriptname (允許任何人都具有可讀和執(zhí)行權(quán)限)

    或者

    chmod u+rx scriptname

    1??

    實現(xiàn)一個清除文件內(nèi)筒的腳本:

    echo "cat example" cat /dev/null > messages echo "file is cleanup" exit

    該腳本實現(xiàn)了,將當(dāng)前文件夾下的messages文件中的內(nèi)筒清空,

    echo是打印命令

    /dev/null/ 在類UNIX系統(tǒng)中,/dev/null,或稱空設(shè)備,是一個特殊的設(shè)備文件,它丟棄一切寫入其中的數(shù)據(jù)(但報告寫入操作成功),讀取它則會立即得到一個EOF。
    在程序員行話,尤其是UNIX行話中,/dev/null被稱為位桶(bit bucket)或者黑洞(black hole)??赵O(shè)備通常被用于丟棄不需要的輸出流,或作為用于輸入流的空文件。當(dāng)你讀它的時候,它會提供無限的空字符(NULL, ASCII NUL, 0x00)。

    改進一下

    執(zhí)行腳本:

    bash cat_example2.sh filename #! /bin/bash echo "cat cleanup example2"# 確保輸入文件名,否則退出 if test $# != 1 ; thenecho "請輸入要清除文件內(nèi)容的文件名"# 腳本退出返回的值,可通過 echo $? 查看exit 1 fiFILE_NAME=$1 cat /dev/null > ${FILE_NAME}echo "file is cleanup" exit #這是一個退出命令

    對你沒有看錯,你在shell中能向其他語言腳本一樣使用判斷條件,改進之后的腳本用戶可以指定要清除內(nèi)容的文件名,并且當(dāng)檢測不到文件名輸入的時候腳本會報錯退出并返回1

    $# 是傳給腳本的參數(shù)個數(shù) $0 是腳本本身的名字 $1 是傳遞給該shell腳本的第一個參數(shù) $2 是傳遞給該shell腳本的第二個參數(shù) $@ 是傳給腳本的所有參數(shù)的列表 $* 是以一個單字符串顯示所有向腳本傳遞的參數(shù),與位置變量不同,參數(shù)可超過9個 $$ 是腳本運行的當(dāng)前進程ID號 $? 是顯示最后命令的退出狀態(tài),0表示沒有錯誤,其他表示有錯誤

    要注意,在每個腳本的開頭都使用 sha-bang(#!), 這意味著告訴你的系統(tǒng)這個文件的執(zhí)行需要指定一個解釋器. #! 實際上是一個2字節(jié)的魔法數(shù)字, 這是指定一個文件類型的特殊標(biāo)記, 換句話說,在這種情況下, 指的就是一個可執(zhí)行的腳本(鍵入 man magic 來獲得關(guān)于這個迷人話題的更多詳細(xì)信息)。
    在sha-bang之后接著是一個路徑名. 這個路徑名就是解釋腳本中命令的解釋程序所在的路徑, 可能是一個shell, 也可能是一個程序語言, 也可能是一個工具包中的命令程序. 這個解釋程序從頭開始解釋并且執(zhí)行腳本中的命令(從 sha-bang行下邊的一行開始)。

    當(dāng)然#!也可以被忽略, 不過這樣你的腳本文件就只能是一些命令的集合, 不能夠使用shell內(nèi)建的指令了。再次提醒你 #!/bin/sh將會調(diào)用默認(rèn)的shell解釋器, 在Linux機器上默認(rèn)是 /bin/bash .

    1 #!/bin/sh 2 #!/bin/bash 3 #!/usr/bin/perl 4 #!/usr/bin/tcl 5 #!/bin/sed -f 6 #!/usr/awk -f

    總結(jié)

    以上是生活随笔為你收集整理的shelll热身的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。