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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux上的Shell之FAQ

發(fā)布時(shí)間:2023/12/20 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux上的Shell之FAQ 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
轉(zhuǎn)自:http://blog.chinaunix.net/u3/93926/showart_1874897.html

為什么使用Shell編程?
簡單快捷,適用性廣

?

什么是Shell Shell是用戶和Linux系統(tǒng)之間的接口程序,你可以通過它輸入命令以使操作系統(tǒng)執(zhí)行。

?

文件描述符012分別表示什么? Shell中, 0表示標(biāo)準(zhǔn)輸入,1表示標(biāo)準(zhǔn)輸出,2表示標(biāo)準(zhǔn)錯(cuò)誤輸出。

?

>>符號(hào)的作用? 在文件后添加時(shí),使用>>,如:ps >> output.txt,這樣ps的結(jié)果會(huì)添加在output.txt文件的最后,而不會(huì)沖掉文件中原有的內(nèi)容。

?

Shell命令中常見2>&1,這是什么意思? Shell中,>符號(hào)常用來表示重定向輸出,前面可用文件描述符表示重定向什么輸出,默認(rèn)為1(即標(biāo)準(zhǔn)輸出),如果是重定向標(biāo)準(zhǔn)錯(cuò)誤輸出,則使用2>,后面如果為&1,則表示將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到與標(biāo)準(zhǔn)輸出的同一位置。

?

/dev/null的作用? 如果在Shell命令中,你希望把輸出的結(jié)果丟棄,那么可以直接扔到Linux的垃圾桶里,/dev/null就是這樣一個(gè)垃圾桶。例如:kill -l 214 > /dev/null

?

怎樣重定向輸入? shell中重定向輸入使用的是<符號(hào),例如:more < ex.txt

?

為什么需要管道?管道怎么使用? Shell中管道(pipe)功能很強(qiáng)大,可用來鏈接命令,實(shí)現(xiàn)流水線操作。管道這個(gè)名字很形象,它就是命令之間的連接渠道。在使用管道時(shí),你把前一個(gè)命令的輸出和后一個(gè)命令的輸入對應(yīng)地接在一起就行了,使用的符號(hào)是“|”。例如:ps | sort | grep -v init | more

?

Shell中的通配符 Shell中的通配符功能也挺強(qiáng)大的,主要有如下幾類: 1*:匹配任意字符 2?:匹配單個(gè)字符 3[集合]:匹配集合中的字符 4[^集合]:匹配不在集合中的字符 5{}:匹配{}中的內(nèi)容

?

` `符號(hào)的作用 Shell中,一對` `符號(hào)表示把包含其中的內(nèi)容以Shell命令的方式執(zhí)行,注意與普通引號(hào)之間的差別。例如:more `grep -l POSIX *`

?

關(guān)于Shell腳本的寫法 Shell腳本的編寫需要注意如下基本要點(diǎn): 1)第一行以注釋開始,實(shí)際上這是一行特殊的注釋,#!表示其后列出的是執(zhí)行該腳本的程序,例如:#!/bin/bash,表示該腳本用/bin/bash程序來解釋執(zhí)行。 2)最后一行使用exit命令結(jié)束,以確保腳本能以正常方式退出。

?

Shell腳本賦予執(zhí)行權(quán)限 剛編輯好的Shell腳本是不能直接運(yùn)行的,如果你希望通過./shellfile的方式運(yùn)行它,就需要給腳本賦予執(zhí)行權(quán)限,通常的做法是:chmod +x shellfile,也可以根據(jù)不同的權(quán)限要求,對指定的用戶授予權(quán)限,如:chmod 766 shellfile(另一種格式:chmod o+x shellfile),則該shellfile文件只有其所有者用戶(owner)才能直接執(zhí)行。

Shell中變量的表示方法是什么? Shell中,一般在名字前加$表示變量,例如: $ first = Hello $ echo $first Hello

?

Shell中可否直接從標(biāo)準(zhǔn)輸入讀入變量? 答案是肯定的,而且實(shí)現(xiàn)的方法也很簡單,用read命令就好,例如: $ read yourname Wang Tian $ echo $yourname Wang Tian

?

Shell中引號(hào)使用時(shí)的注意事項(xiàng)是什么? Shell中使用單引號(hào)和雙引號(hào)要特別注意如下一個(gè)區(qū)別:單引號(hào)所包含的字符串里若含有變量($var),不作替換處理,而雙引號(hào)所包含的字符串則會(huì)自動(dòng)進(jìn)行變量的替換。例如: $ myname = “Li Xi” $ echo “My name is $myname.” My name is Li Xi. $ echo ‘My name is not $myname.” My name is not $myname.

?

Shell中的環(huán)境變量有哪些?它們各有什么作用? 環(huán)境變量在實(shí)際Shell編程中廣泛使用,是需要重點(diǎn)掌握的。現(xiàn)在只介紹幾個(gè)主要的常用的變量: 1$HOME? ? 當(dāng)前用戶的主目錄 2$PATH???????? 命令的搜索路徑 3$PS1??????????? 命令提示符,就是你在Linux命令行下那個(gè)總出現(xiàn)的提示符,通常是$,也可能定制成其他類型。 4$PS2??????????? 第二命令提示符,比如當(dāng)你輸入的命令需要接受輸入時(shí),也會(huì)給出一個(gè)提示符,通常為> 5$IFS???????????? 輸入字段分隔符,就是當(dāng)你讀入信息時(shí)用來將字符串分隔為單詞的符號(hào),通常為空格、制表符以及回車符號(hào)。 6$0??????????????? 所執(zhí)行的Shell腳本的名字 7$#??????????????? Shell腳本(命令)傳遞的參數(shù)個(gè)數(shù) 8$$??????????????? 所執(zhí)行的Shell腳本的進(jìn)程號(hào),通常用來生成唯一的臨時(shí)文件名

?

Shell中的參數(shù)變量有哪些?它們各有什么作用? 參數(shù)變量與環(huán)境變量同樣重要,當(dāng)你編寫的腳本需要調(diào)用參數(shù)時(shí),系統(tǒng)會(huì)自動(dòng)為你創(chuàng)建這些參數(shù)變量,如果不需要傳遞參數(shù),上面的環(huán)境變量$#的值會(huì)設(shè)為0。參數(shù)變量比較簡單,就有三個(gè)而已: 1$1, $2, …???????????? 傳遞給腳本的參數(shù)1,2,… 2$*????????????????????????? 所有參數(shù)的一個(gè)列表,參數(shù)之間用IFS中所定義的第一個(gè)分隔符分隔 3$@??????????????????????? $*的一個(gè)變種,它不使用IFS環(huán)境變量的分隔符,即使IFS為空,也不影響其表示。所以這是比$*更好的一種表示方式。

Shell中的布爾測試命令是什么?其用法怎樣? Shell中的布爾測試與一般編程語言有所不同,有兩個(gè)命令可以表示(它們其實(shí)是同一個(gè)命令,只是表示方法不同而已):test[(這不是左括號(hào)嗎?也算命令嗎?答案是肯定的,不信你可以去檢查ls -l /usr/bin/[。還要注意一點(diǎn)的是,通常使用[表示時(shí),會(huì)在測試完成后加上一個(gè)],其實(shí)這只是為了可讀性而增加的,沒有實(shí)際意義)。例如: if test –f my.txt if [ -f my.txt ] 都表示測試文件my.txt是否存在。(注意[-f之間必須有空格) 使用布爾測試符測試的條件類型包含三類:字符串測試/算術(shù)測試/文件測試,具體分為: 1)字符串測試 string1 = string2?????????? 測試兩字符串是否相等 string1 != string2?????????????????? 測試兩字符串是否不等 -n string????????????????????????? 測試字符串是否不為空 -z string?????????????????????????? 測試字符串是否為空 2)算術(shù)測試 expr1 -eq expr2???????????? 測試兩表達(dá)式是否相等 expr1 -ne expr2???????????? 測試兩表達(dá)式是否不等 expr1 -gt expr2???????????? 測試expr1是否大于expr2 expr1 -ge expr2???????????? 測試expr1是否大于等于expr2 expr1 -lt expr2?????????????? 測試expr1是否小于expr2 expr1 -le expr2????????????? 測試expr1是否小于等于expr2 !expr??????????????????????????????? 測試表達(dá)式是否為假 3)文件測試 -d file??????????????????????????????? 測試該文件是否為目錄 -e file??????????????????????????????? 測試該文件是否存在,但該選項(xiàng)可移植性不好,通常改用-f -f file???????????????????????????????? 測試該文件是否為常規(guī)文件 -g file??????????????????????????????? 測試該文件是否設(shè)置了set-group-id -r file??????????????????????????????? 測試該文件是否可讀 -s file??????????????????????????????? 測試該文件是否不空 -u file??????????????????????????????? 測試該文件是否設(shè)置了set-user-id -r file??????????????????????????????? 測試該文件是否可寫 -x file??????????????????????????????? 測試該文件是否可執(zhí)行

?

Shell中的條件控制結(jié)構(gòu)是怎樣的? 編程語言中的條件控制結(jié)構(gòu)通常是if..then之類的,Shell也不例外。其格式如下: if 條件1 then ? 語句A elif 條件2 then? 語句B elif 條件3 then ? 語句C else ? 語句D fi

?

Shell中的循環(huán)控制結(jié)構(gòu)是怎樣的? Shell中的循環(huán)結(jié)構(gòu)也與其他編程語言類似。基本格式如下: 1for循環(huán)(適于在字符串集中循環(huán),注意其與通常的for語句的差別) for 變量 in 值集??? do ? 語句 done 2while循環(huán)(適于在數(shù)集中循環(huán)或條件測試) while 條件 do ? 語句 done 3until語句(與while的條件判斷正好相反) until 條件 do ? 語句 done

?

關(guān)于case語句的用法是怎樣? case的結(jié)構(gòu)比較復(fù)雜,所以在這里單列出來。其基本格式為: case 變量 in ? 模式 [ | 模式] …) 語句A;; ? 模式 [ | 模式] …) 語句B;; ? … esac 看個(gè)例子吧: case “$dayofweek” in ? 1) echo “Today is Monday”;; ? 2) echo “Today is Tuesday”;; ? 3) echo “Today is Wednesday”;; ? 4) echo “Today is Thursday”;; ? 5) echo “Today is Friday”;; ? 6) echo “Today is Saturday”;; ? 7) echo “Today is Sunday”;; ? *) echo “Sorry, your input is wrong!”;; esac

Shell中的語句鏈表是怎樣的? Shell中有一項(xiàng)比較特殊的用法,就是將多個(gè)語句串聯(lián)在一起,這樣可以使編程更為簡潔。這些語句的串聯(lián)通常是條件測試語句,一般用兩個(gè)符號(hào)來組織它們:&&(表示與)和||(表示或)。&&鏈表可以連接一組命令,當(dāng)&&前面的命令都成功時(shí),才執(zhí)行&&后面的命令。而||鏈表則當(dāng)其中一條命令成功時(shí),即退出。這兩個(gè)符號(hào)甚至還可以鏈接語句集,只要你把這些語句用{}包圍就好了。

?

Shell中怎么使用函數(shù)? Shell中的函數(shù)定義很簡單,基本格式為: 函數(shù)名() { ? 語句體 } 函數(shù)的使用需要注意的幾點(diǎn): 1)函數(shù)必須先定義才能調(diào)用 2)當(dāng)函數(shù)調(diào)用的時(shí)候,原來腳本的參數(shù),如$*,$@,$#,$1,$2等會(huì)被函數(shù)的相應(yīng)參數(shù)所替換,函數(shù)調(diào)用完成,它們的值則回歸到原值。 3)在函數(shù)內(nèi)部,可以使用local來定義局部變量,該變量僅在函數(shù)內(nèi)部有效。如果局部變量與全局變量同名,局部變量會(huì)在函數(shù)內(nèi)部替換全局變量。

?

Shell中是否也有break命令,是否也有continue命令? 答案是肯定的,和其他編程語言一樣,break用來直接跳出for, whileuntil循環(huán),而continue用來跳出for, whileuntil的當(dāng)前循環(huán)。

?

Shell中出現(xiàn):在單獨(dú)一行是什么意思? 有時(shí)我們可以看到,Shell腳本中出現(xiàn)一行僅包括一個(gè)冒號(hào),它的意思其實(shí)很簡單,這個(gè)冒號(hào)就等于布爾變量true。實(shí)際上,它運(yùn)行的速度比true還快。

?

Shell中的.做什么用? 別小看這個(gè).符號(hào),它實(shí)際很有用處,這是Shell中一個(gè)特殊的命令符,用來在指定Shell腳本環(huán)境里執(zhí)行命令(腳本)。這有點(diǎn)類似于C中的#include,它可以切換到某個(gè)腳本環(huán)境下來執(zhí)行后續(xù)命令。其使用方法為:. ./script

?

Shelleval命令的作用? eval命令用來求值。它會(huì)給出后面所接變量的值,這在多次賦值時(shí)很有用。

?

Shellexec命令的作用? exec也是Shell中常用的命令,一般有兩個(gè)作用: 1)用不同的程序名替換當(dāng)前Shell腳本(主要功能) 2)修改當(dāng)前文件描述符(次要功能)

?

關(guān)于exit的用法還有什么? 我們常見的exit用來退出腳本運(yùn)行,exit 0表示成功退出,如果在exit后面加狀態(tài)碼1-125則表示有錯(cuò)誤發(fā)生,這些錯(cuò)誤可由程序指定,另外Shell還保留了一些狀態(tài)碼: 1126?????????????????????? 文件不能執(zhí)行 2127?????????????????????? 命令未找到 3128及以上??????? 收到一個(gè)信號(hào)

?

Shellexport命令的作用? export命令的主要作用是導(dǎo)出環(huán)境變量,使得該環(huán)境變量能被其他腳本和程序所用。

?

Shellexpr命令的作用? expr的主要作用是將其后的參數(shù)看作表達(dá)式來求值。它可以完成許多表達(dá)式的運(yùn)算。

Shell中關(guān)于set這個(gè)命令的用法是怎樣的? set這個(gè)命令主要用來設(shè)置參數(shù)變量,這在輸出以空格分隔的值時(shí)很有用。

?

Shell中關(guān)于shift這個(gè)命令的用法是怎樣的? 顧名思義,shift命令是用來移位的,具體來說,它可以讓參數(shù)變量向后移1位,比如,$2變成$1$3變成$2,等等。需要注意的是,移位一次都會(huì)丟掉一個(gè)參數(shù)值。

?

Shell中關(guān)于trap這個(gè)命令的用法是怎樣的? trap命令用來指定當(dāng)接收到某種信號(hào)時(shí)采取什么行動(dòng),可用來處理中斷信息。其基本格式為: trap 命令動(dòng)作 信號(hào) 最常用的幾種信號(hào): 1HUP(1)????????????????????????? 掛起;通常當(dāng)終端斷開連接時(shí),或用戶退出登錄時(shí)發(fā)生。 2INT(2)??????????????????????????? 中斷;通常在鍵入Ctrl+C時(shí)發(fā)生。 3QUIT(3)???????????????????????? 退出;通常在鍵入Ctrl+\時(shí)發(fā)生。 4ABRT(6)??????????????????????? 放棄;通常因遇到某種嚴(yán)重執(zhí)行錯(cuò)誤時(shí)發(fā)生。 5ALRM(14)???????????????????? 警告;通常由于計(jì)時(shí)器超時(shí)而發(fā)生。 6TERM(15)???????????????????? 終止;通常當(dāng)系統(tǒng)關(guān)閉時(shí)發(fā)生。 如果將trap設(shè)置為默認(rèn)動(dòng)作,可以在命令處設(shè)置為-,如果要忽略該信號(hào),可將命令設(shè)置為空串’ ‘

?

Shell中關(guān)于unset這個(gè)命令的用法是怎樣的? unset命令用來在環(huán)境變量表中刪除一個(gè)變量,它對系統(tǒng)定義的只讀變量沒有作用。

?

Shell中出現(xiàn)$((…))是什么意思? $((…))的表示是與expr同義的,用于表達(dá)式求值,但是它比expr更新,效率也更高。例如: x=0 x=$(($x+1)) 注意其與$(…)的區(qū)別,$(…)是用來得到括號(hào)內(nèi)所執(zhí)行的命令的輸出結(jié)果。

?

Shell中什么是參數(shù)擴(kuò)展(Parameter Expansion)? 參數(shù)擴(kuò)展是Shell中比較有特色的一項(xiàng)內(nèi)容,它為參數(shù)的設(shè)置提供了額外的方法。通常形式是${參數(shù)}。常用的方法有: 1${param:-default}????? 如果param為空,則設(shè)置其值等于default 2${#param}??????????????????? 求得param的長度。 3${param%word}???????? 從末尾開始,刪除param中與word匹配的最近部分,然后返回其余。 4${param%%word}????? 從末尾開始,刪除param中與word匹配的最遠(yuǎn)部分,然后返回其余。 5${param#word}????????? 從起首開始,刪除param中與word匹配的最近部分,然后返回其余。 6${param##word}??????? 從起首開始,刪除param中與word匹配的最遠(yuǎn)部分,然后返回其余。

?

Shell<<有什么特殊作用? 注意這個(gè)<<,它的作用很有意思,其后跟隨的是一個(gè)特殊的字符序列,此后的內(nèi)容就看作是從文件或鍵盤輸入的一樣,在這些內(nèi)容的末尾再加上一個(gè)與開頭相同的字符序列。這在Shell中稱為“here document”。例如: cat <<!nomeaning! This is my book !nomeaning! 輸出為: This is my book

總結(jié)

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

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

主站蜘蛛池模板: 67194av| 狠狠爱天天干 | 国产系列精品av | 亚洲成av人片一区二区梦乃 | 波多野结衣av中文字幕 | 久久久久久精 | 国产精品理伦片 | 中国性猛交 | 亚洲av无码国产精品色午夜 | 日韩v| 国产伦精品一区二区三区照片 | 国产香蕉av | 国产一区二区三区www | 国产午夜影院 | 一区二区精品免费 | 91偷拍精品一区二区三区 | 无码一区二区三区在线观看 | 国产一区精品久久 | 免费男女乱淫真视频免费播放 | 国产毛片久久久久久久 | 五月婷婷激情网 | 蜜桃网av| av综合站| 日韩免费专区 | 天天射狠狠干 | 成人午夜在线 | 精品国产免费一区二区三区 | 亚洲一区二区高清 | 69精品无码成人久久久久久 | 久久只有精品 | 久久av一区| 亚洲av无码一区二区三区网址 | 国产精品伦子伦免费视频 | 粉嫩av一区二区三区四区五区 | 学生孕妇videosex性欧美 | 欧美中文字幕在线播放 | 免费视频www在线观看网站 | 日本伦理中文字幕 | 中文字幕 视频一区 | 99re超碰| 男女爱爱福利视频 | 国产美女无遮挡永久免费 | 精品人伦一区二区三区 | 午夜在线观看免费视频 | 四虎永久在线精品免费网址 | 日本一区三区 | 中文字幕免费在线视频 | 熟妇人妻中文字幕无码老熟妇 | 91久久免费 | 福利国产视频 | 亚洲欧洲一区二区在线观看 | 日本爽爽爽爽爽爽在线观看免 | 成人传媒 | 日韩在线看片 | 国产在线观看不卡 | 色婷婷777 | avwww| 中文字幕永久 | 天天看天天色 | 反差在线观看免费版全集完整版 | 三级亚洲 | 韩国一区二区三区四区 | 日本黄色动态图 | 97超碰在线免费 | 亚洲精品福利在线观看 | 日韩激情第一页 | 久久中文字幕无码 | 亚洲av熟女一区 | 美女网站在线免费观看 | 久久精品这里只有精品 | 日韩精品成人一区 | 探花视频在线版播放免费观看 | 亚洲国产日韩欧美 | 美女黄色片网站 | 精品无码人妻一区二区三 | 人人超碰人人 | 日韩一级片网站 | 国产精品久久久久久人妻精品动漫 | 最近中文字幕一区二区 | 直接看的av | 日韩欧美在线观看一区 | 99av国产精品欲麻豆 | 午夜影院一区二区三区 | 国产aⅴ无码片毛片一级一区2 | 丁香花电影免费播放电影 | 亚洲精品国产成人av在线 | 黄色一级免费网站 | 97毛片 | 色伊伊 | 亚洲一区二区自偷自拍 | 精品国产乱码久久久久久影片 | 欧美日韩首页 | 亚洲午夜精品一区二区三区 | 一边顶弄一边接吻 | 97福利网| 亚洲第八页 | 欧美日韩国产免费一区二区三区 | 日韩视频在线观看二区 | 日韩精品久久久 |