導航:首頁 > 程序命令 > linuxshell內置命令

linuxshell內置命令

發布時間:2022-08-05 13:34:55

❶ 如何運行linux shell程序

如何運行shell程序,如何在shell程序以及後續腳本中使用同一個變數,這些在工作中經常用到, 我找到如下的文章,再加深復習一下。
1 source命令用法:
source FileName
作用:在當前bash環境下讀取並執行FileName中的命令。該filename文件可以無"執行許可權"
註:該命令通常用命令「.」來替代。
如:source .bash_profile
. .bash_profile兩者等效。
source(或點)命令通常用於重新執行剛修改的初始化文檔。
source命令(從 C Shell 而來)是bash shell的內置命令。
點命令,就是個點符號,(從Bourne Shell而來)。
source的程序主體是bash,腳本中的$0變數的值是bash,而且由於作用於當前bash環境,腳本中set的變數將直接起效

2 sh, bash的命令用法:
sh/bash FileName

作用:打開一個子shell來讀取並執行FileName中命令。該filename文件可以無"執行許可權"

註:運行一個shell腳本時會啟動另一個命令解釋器.
每個shell腳本有效地運行在父shell(parent shell)的一個子進程里.
這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.
shell腳本也可以啟動他自已的子進程.
這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.
在ubuntu中sh只是bash的一個鏈接。
由於是在子shell中執行,腳本設置的變數不會影響當前shell。

3 ./的命令用法:
./FileName
作用:打開一個子shell來讀取並執行FileName中命令。該filename文件需要"執行許可權"
註:運行一個shell腳本時會啟動另一個命令解釋器.
每個shell腳本有效地運行在父shell(parent shell)的一個子進程里.
這個父shell是指在一個控制終端或在一個xterm窗口中給你命令指示符的進程.
shell腳本也可以啟動他自已的子進程.
這些子shell(即子進程)使腳本並行地,有效率地地同時運行腳本內的多個子任務.
由於是在子shell中執行,腳本設置的變數不會影響當前shell。

4 export:
一個變數創建時,它不會自動地為在它之後創建的shell進程所知。而命令export可以向後面的shell傳遞變數的值。當一個shell腳本調用並執行時,它不會自動得到原為腳本(調用者)里定義的變數的訪問權,除非這些變數已經被顯式地設置為可用。export命令可以用於傳遞一個或多個變數的值到任何後繼腳本
5. 舉例
比如您在一個腳本里export $KKK=111 ,假如您用./a.sh執行該腳本,執行完畢後,您運行 echo $KKK ,發現沒有值,假如您用source來執行 ,然後再echo ,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell里運行的,所以執行後,結構並沒有反應到父shell里,但是 source不同他就是在本shell中執行的,所以能夠看到結果.
小測試
1 建立test.sh
#!/bin/bash
export s=/home/jboss/
2 執行命令: source test.sh
echo $s
結果輸出: /home/jboss/
3 新開個shell
執行命令: ./test.sh
echo $s
結果: 沒有輸出s值

結論:
1、執行腳本時是在一個子shell環境運行的,腳本執行完後該子shell自動退出。
2、一個shell中的系統環境變數才會被復制到子shell中(用export定義的變數);
3、一個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中)。3、不用 export定義的變數只對該shell有效,對子shell也是無效的。

直接執行一個腳本文件是在一個子shell中運行的,而source則是在當前shell環境中運行的。
source可以讓腳本影響它們的父shell環境,這和export去影響子shell環境相反.

❷ linux shell 內置命令的作用,存放在哪裡

shell的內置指令,默認狀況下bash有50多個內置命令,一般存放在/sbin, /bin, /usr/bin,這幾個目錄中。命令詳情可查看 Linux命令大全 。

❸ 請將/etc/passwd文件的內容拷貝到以你的名字命名的新文件中,生成的新文件放在/home目錄下, 使用linux

使用的Linux命令為:cat /etc/passwd 2> /home/你的名字命名的新文件。

cat命令用於連接文件並列印到標准輸出設備上。

linux命令是對Linux系統進行管理的命令。對於Linux系統來說,無論是中央處理器、內存、磁碟驅動器、鍵盤、滑鼠,還是用戶等都是文件。

Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。linux命令在系統中有兩種類型:內置Shell命令和Linux命令。

(3)linuxshell內置命令擴展閱讀:

cat命令選項說明:

cat [選項] [文件],選項 -A, --show-all 等價於 -vET、-b,--number-nonblank 對非空輸出行編號、-e 等價於 -vE、-E,--show-ends 在每行完畢處顯現 $。

-n,--number 對輸出的一切行編號、-s,--squeeze-blank 不輸出多行空行。

-t 與 -vT 等價、-T,--show-tabs 將跳 字元顯現為 ^I、-v,--show-nonprinting 運用 ^ 和 M- 引證,除了 LFD 和 TAB 之外、--help 顯現此協助信息並脫離。

Linux優點:

1、Linux由眾多微內核組成,其源代碼完全開源。

2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發出新的協議棧。

3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性。

❹ Linux裡面type命令作用是什麼

Linux里的這個type命令是個極其冷僻的命令,極少被使用,已被廢棄。


一般情況下,type命令被用於判斷另外一個命令是否是內置命令,但是它實際上有更多的用法。

1.判斷一個名字當前是否是alias、keyword、function、builtin、file或者什麼都不是:

type ls的輸出是ls 是 `ls --color=auto' 的別名

type if的輸出是if 是 shell 關鍵字

type type的輸出是type 是 shell 內嵌

type frydsh的輸出是bash: type: frydsh: 未找到

2.判斷一個名字當前是否是alias、keyword、function、builtin、file或者什麼都不是的另一種方法(適用於腳本編程):

type -t ls的輸出是alias

type -t if的輸出是keyword

type -t type的輸出是builtin

type -t gedit的輸出是file

type -t frydsh沒有輸出

3.顯示一個名字的所有可能:

type -a kill的輸出是kill 是 shell 內嵌 和kill 是 /bin/kill

type -at kill的輸出是builtin 和file

4.查看一個命令的執行路徑(如果它是外部命令的話):

type -p gedit的輸出是/usr/bin/gedit

type -p kill沒有輸出(因為kill是內置命令)

5.強制搜索外部命令:

type -P kill的輸出是/bin/kill



❺ linux什麼是內部命令什麼是外部命令

linux命令有內部命令和外部命令之分。內部命令實際上是shell程序的一部分,其中包含的是一些比較簡練的linux系統命令,這些命令由shell程序識別並在shell程序內部完成運行,通常在linux系統載入運行時shell就被載入並駐留在系統內存中。外部命令是linux系統中的實用程序部分,因為實用程序的功能通常都比較強大,所以它們包含的程序量也會很大,在系統載入時並不隨系統一起被載入到內存中,而是在需要時才將其調進內存。通常外部命令的實體並不包含在shell中,但是其命令執行過程是由shell 程序控制的。shell程序管理外部命令執行的路徑查找、載入存放,並控制命令的執行。

❻ linux問題:怎樣查看命令su是否是shell內置命令

使用命令
type
su
來查看命是否屬於系統內置命令,
如果執行結果是「su
is
a
shell
builtin」
這表示su
命令是系統內置命令
builtin
表示是內含的意思
比如
type
mkdir
則執行結果是
mkdir
is
/bin/mkdir
這表示mkdir是一個命令程序
在/bin/mkdir
目錄下
祝你使用愉快!!
如果有什麼其他的問題,在下一定盡力而為!!!

❼ 能把這個linux shell命令的每個參數給解釋一下么

問題描述:在linux shell中如何處理tail -n 10 access.log這樣的命令行選項?
在bash中,可以用以下三種方式來處理命令行參數,每種方式都有自己的應用場景。
1,直接處理,依次對$1,$2,...,$n進行解析,分別手工處理;
2,getopts來處理,單個字元選項的情況(如:-n 10 -f file.txt等選項);
3,getopt,可以處理單個字元選項,也可以處理長選項long-option(如:--prefix=/home等)。
總結:小腳本手工處理即可,getopts能處理絕大多數的情況,getopt較復雜、功能也更強大。
1,直接手工處理位置參數
必須要要知道幾個變數,

復制代碼代碼如下:

* $0 :即命令本身,相當於c/c++中的argv[0]
* $1 :第一個參數.
* $2, $3, $4 ... :第2、3、4個參數,依次類推。
* $# 參數的個數,不包括命令本身
* $@ :參數本身的列表,也不包括命令本身
* $* :和$@相同,但"$*" 和 "$@"(加引號)並不同,"$*"將所有的參數解釋成一個字元串,而"$@"是一個參數數組。

手工處理方式能滿足多數的簡單需求,配合shift使用也能構造出強大的功能,但處理復雜選項時建議用下面的兩種方法。
例子,(getargs.sh):

復制代碼代碼如下:

#!/bin/bash
if [ $# -lt 1 ]; then
echo "error.. need args"
exit 1
fi
echo "commond is $0"
echo "args are:"
for arg in "$@"
do
echo $arg
done

運行命令:

復制代碼代碼如下:

./getargs.sh 11 22 cc
commond is ./getargs.sh
args are:
11
22
cc

2,getopts (shell內置命令)
處理命令行參數是一個相似而又復雜的事情,為此,c提供了getopt/getopt_long等函數,c++的boost提供了options庫,在shell中,處理此事的是getopts和getopt。
getopts/getopt的區別,getopt是個外部binary文件,而getopts是shell builtin。

復制代碼代碼如下:

[root@jbxue ~]$ type getopt
getopt is /usr/bin/getopt
[root@jbxue ~]$ type getopts
getopts is a shell builtin

getopts不能直接處理長的選項(如:--prefix=/home等)
關於getopts的使用方法,可以man bash 搜索getopts
getopts有兩個參數,第一個參數是一個字元串,包括字元和「:」,每一個字元都是一個有效的選項,如果字元後面帶有「:」,表示這個字元有自己的參數。getopts從命令中獲取這些參數,並且刪去了「-」,並將其賦值在第二個參數中,如果帶有自己參數,這個參數賦值在「optarg」中。提供getopts的shell內置了optarg這個變變,getopts修改了這個變數。
這里變數$optarg存儲相應選項的參數,而$optind總是存儲原始$*中下一個要處理的元素位置。
while getopts ":a:bc" opt #第一個冒號表示忽略錯誤;字元後面的冒號表示該選項必須有自己的參數
例子,(getopts.sh):

復制代碼代碼如下:

echo $*
while getopts ":a:bc" opt
do
case $opt in
a ) echo $optarg
echo $optind;;
b ) echo "b $optind";;
c ) echo "c $optind";;
? ) echo "error"
exit 1;;
esac
done
echo $optind
shift $(($optind - 1))
#通過shift $(($optind - 1))的處理,$*中就只保留了除去選項內容的參數,可以在其後進行正常的shell編程處理了。
echo $0
echo $*

執行命令:

復制代碼代碼如下:

./getopts.sh -a 11 -b -c
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh

3,getopt(一個外部工具)
具體用用法可以 man getopt
#-o表示短選項,兩個冒號表示該選項有一個可選參數,可選參數必須緊貼選項,如-carg 而不能是-c arg
#--long表示長選項
例子,(getopt.sh):

復制代碼代碼如下:

#!/bin/bash
# a small example program for using the new getopt(1) program.
# this program will only work with bash(1)
# an similar program using the tcsh(1) script. language can be found
# as parse.tcsh
# example input and output (from the bash prompt):
# ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
# option a
# option c, no argument
# option c, argument `more'
# option b, argument ` very long '
# remaining arguments:
# --> `par1'
# --> `another arg'
# --> `wow!*\?'
# note that we use `"$@"' to let each command-line parameter expand to a
# separate word. the quotes around `$@' are essential!
# we need temp as the `eval set --' would nuke the return value of getopt.
#-o表示短選項,兩個冒號表示該選項有一個可選參數,可選參數必須緊貼選項
#如-carg 而不能是-c arg
#--long表示長選項
#"$@"在上面解釋過
# -n:出錯時的信息
# -- :舉一個例子比較好理解:
#我們要創建一個名字為 "-f"的目錄你會怎麼辦?
# mkdir -f #不成功,因為-f會被mkdir當作選項來解析,這時就可以使用
# mkdir -- -f 這樣-f就不會被作為選項。
temp=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
-n 'example.bash' -- "$@"`
if [ $? != 0 ] ; then echo "terminating..." >&2 ; exit 1 ; fi
# note the quotes around `$temp': they are essential!
#set 會重新排列參數的順序,也就是改變$1,$2...$n的值,這些值在getopt中重新排列過了
eval set -- "$temp"
#經過getopt的處理,下面處理具體選項。
while true ; do
case "$1" in
-a|--a-long) echo "option a" ; shift ;;
-b|--b-long) echo "option b, argument \`$2'" ; shift 2 ;;
-c|--c-long)
# c has an optional argument. as we are in quoted mode,
# an empty parameter will be generated if its optional
# argument is not found.
case "$2" in
"") echo "option c, no argument"; shift 2 ;;
*) echo "option c, argument \`$2'" ; shift 2 ;;
esac ;;
--) shift ; break ;;
*) echo "internal error!" ; exit 1 ;;
esac
done
echo "remaining arguments:"
for arg do
echo '--> '"\`$arg'" ;
done

運行命令:

復制代碼代碼如下:

./getopt.sh --b-long abc -a -c33 remain
option b, argument `abc'
option a
option c, argument `33'
remaining arguments:
--> `remain'

以上提供參考學習,謝謝!

❽ Linux shell 命令cd是怎麼實現的放在哪個文件夾

cd命令通常沒有對應的可執行文件,是shell的內置命令,bash的源碼中有cd的實現(bash可以從gnu官網下載),代碼不多。
大致做了這些事:
1、更新當前shell的環境變數$PWD的值
2、調用系統調用chdir
chdir的實現在內核中。

❾ Linux下的Source命令怎麼用

source命令用法:source FileName作用:在當前bash環境下讀取並執行FileName中的命令。註:該命令通常用命令「.」來替代。如:source .bash_rc 與 . .bash_rc 是等效的。注意:source命令與shell scripts的區別是,source在當前bash環境下執行命令,而scripts是啟動一個子shell來執行命令。這樣如果把設置環境變數(或alias等等)的命令寫進scripts中,就只會影響子shell,無法改變當前的BASH,所以通過文件(命令列)設置環境變數時,另外你要是想學習Linux技術的話,推薦踏實看完《Linux就該這么學》這本書,保准成高手了。

❿ Linux shell 命令cd是怎麼實現的放在哪個文件夾

cd命令通常沒有對應的可執行文件,是shell的內置命令,bash的源碼中有cd的實現(bash可以從gnu官網下載),代碼不多。
大致做了這些事:
1、更新當前shell的環境變數$PWD的值
2、調用系統調用chdir
chdir的實現在內核中。

閱讀全文

與linuxshell內置命令相關的資料

熱點內容
程序員看過來我想靜靜搞笑視頻 瀏覽:370
curlphp爬蟲 瀏覽:872
python按日期循環 瀏覽:108
php三個等號 瀏覽:758
培訓班出來的程序員解決問題很差 瀏覽:961
程序員那麼可愛25集 瀏覽:753
伺服器地址和ip地址一樣不 瀏覽:664
php中括弧定義數組 瀏覽:602
php列印堆棧 瀏覽:516
華為adb命令行刷機 瀏覽:965
人像攝影pdf 瀏覽:761
解壓文件密碼怎樣重新設置手機 瀏覽:1001
高考指南pdf 瀏覽:695
爬蟲python數據存儲 瀏覽:240
u盤怎麼取消加密 瀏覽:431
567除以98的簡便演算法 瀏覽:342
pdf手機如何解壓 瀏覽:21
python描述器 瀏覽:60
戰地聯盟3解壓密碼 瀏覽:805
s型命令 瀏覽:25