什麼是Bash Shell的內建(build in)命令
1.什麼是build in命令:
shell內建命令是指bash(或其它版本)工具中整合的命令。一般都會有一個與之同名的系統命令,比如bash中的echo命令與/bin/echo是兩個不同的命令,儘管他們行為大體相仿。當在bash中鍵入一個命令時系統會先看他是否是一個內建命令,如果不是才會檢視是否是系統命令或第三方工具。所以在bash中鍵入echo命令實際上執行bash工具集中的bash命令也就是內建命令,而不是/bin/echo這個系統命令。
2.內建命令與系統命令
內建命令要比系統論命令有比較高的執行效率。外部命令執行時往往需要fork出(產生出)一個子程序,而內建命令一般不用。下面(或許以後還會有)這一篇文章將介簡bash的內建命令。
3.檢視一個命令是系統命令還是內建命令:type
[email protected]:~/Documents
$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
[email protected]:~/Documents
$ type -a echo
echo is a shell builtin
echo is /bin/echo
可以看出,有些命令,echo和pwd同時是內建命令和系統命令。
4.常見命令的型別
[[email protected] ~]# type -a cd
cd is a shell builtin
[
pwd is a shell builtin
pwd is /bin/pwd
[[email protected] ~]# type -a time
time is a shell keyword
time is /usr/bin/time
[[email protected] ~]# type -a date
date is /bin/date
[[email protected] ~]# type -a which
which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
which is /usr/bin/which
[
whereis is /usr/bin/whereis
[[email protected] ~]# type -a whatis
whatis is /usr/bin/whatis
[[email protected] ~]# type -a function
function is a shell keyword
[[email protected] ~]# type -a ls
ls is aliased to `ls --color=tty'
ls is /bin/ls
[[email protected] ~]# type -a ll
ll is aliased to `ls -l --color=tty'
[[email protected] ~]# type -a echo
echo is a shell builtin
echo is /bin/echo
[[email protected] ~]# type -a bulitin
-bash: type: bulitin: not found
[[email protected] ~]# type -a builtin
builtin is a shell builtin
[[email protected] ~]# type -a keyword
-bash: type: keyword: not found
[[email protected] ~]# type -a command
command is a shell builtin
[[email protected] ~]# type -a alias
alias is a shell builtin
[[email protected] ~]# type -a grep
grep is /bin/grep
[[email protected] ~]#
Shell識別三種基本命令:內建命令、Shell函式以及外部命令:
(1)內建命令就是由Shell本身所執行的命令。
有些命令是由於其必要性才內建的,例如cd用來改變目錄,read會將來自使用者(和檔案)的輸入資料傳給Shell外亮。
另一種內建命令的存在則是為了效率,其中最典型的就是test命令,編寫指令碼時經常會用到它。另外還有I/O命令,例如echo於printf.
(2)Shell函式是功能健全的一系列程式程式碼,以Shell語言寫成,它們可以像命令那樣引用。
(3)外部命令就是由Shell副本(新的程序)所執行的命令,基本的過程如下:
a. 建立一個新的程序。此程序即為Shell的一個副本。
b. 在新的程序裡,在PATH變數內所列出的目錄中,尋找特定的命令。
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin為PATH變數典型的預設值。
當命令名稱包含有斜槓(/)符號時,將略過路徑查詢步驟。
c. 在新的程序裡,以所找到的新程式取代執行中的Shell程式並執行。
d. 程式完成後,最初的Shell會接著從終端讀取下一條命令,和執行腳本里的下一條命令。
使用type可以檢視是否是內建命令:
type (不帶引數)會顯示命令是內建命令還是外部命令
-t :file 外部命令;alias 命令別名;builtin 內建命令
-a :會將命令PATH路徑顯示出來
如何執行互動式命令:
使用者在命令列輸入命令後,一般情況下Shell會fork並exec該命令,但是Shell的內建命令例外,執行內建命令相當於呼叫Shell程序中的一個函式,並不建立新的程序.
比如:cd、alias、umask、exit等命令即是內建命令,凡是用which命令查不到程式檔案所在位置的命令都是內建命令,內建命令沒有單獨的man手冊,要在man手冊中檢視內建命令,應該man bash-builtins,進而查詢內建命令用法;內建命令雖然不建立新的程序,但也會有Exit Status,通常也用0表示成功非零表示失敗,雖然內建命令不建立新的程序,但執行結束後也會有一個狀態碼,也可以用特殊變數$?讀出
相關推薦
什麼是Bash Shell的內建(build in)命令
1.什麼是build in命令: shell內建命令是指bash(或其它版本)工具中整合的命令。一般都會有一個與之同名的系統命令,比如bash中的echo命令與/bin/echo是兩個不同的命令,儘管他們行為大體相仿。當在bash中鍵入一個命令時系統會先看他是否是一個內
Shell內建命令與運行方法
col shell 執行 log family i++ 整數 執行文件 讀取 1. !# /bin/bash 這句話是shell腳本的第一行,/bin/bash表示腳本的解釋器位置。 2. 腳本的運行: (1)bash
Linux Shell 內建命令 : builtin 命令詳解
builtin命令用於執行指定的shell內部命令,並返回內部命令的返回值。builtin命令在使用時,將不能夠再使用Linux中的外部命令。當系統中定義了與shell內部命令相同的函式時,使用builtin顯式地執行shell內部命令,從而忽略定義的shell函式。 語法
系統技術非業餘研究 » shell內建命令rp()
我們經常需要在erlang shell下顯示變數的值. 為了節省版面, 變數的輸出是會被截斷的 以 …]來作為提示. 有時候這樣很不方便, 不能看到全部的值, 比如processes(). 這時候shell內建命令rp用於看格式化的資料來救助了, 比如我們可以這rp(processes()).
shell內建在其原始碼中的命令
shell有很多內建在其原始碼中的命令。這些命令是內建的,所以shell不必到磁碟上搜索它們,執行速度因此加快。bash提供的help功能,能提供任何內建命令的線上幫助,表14-12列出了這些內建命令。 表14-12 內建命令 命 令 功 能 .
shell內建命令
內建變數即預定義變數。在 shell 中,預先定義了幾個有特殊含義的 shell 變數,它們的值只能由 shell 根據實際情況進行賦值,而不能通過使用者重新設定。所有預定義變數都由 $ 符和另一個符號組成,常用的 shell 預定義變數如下: $#: 位置引數的數量。 $*: 所有位置引數的內容。 $
CentOS7的bash shell及顯示路徑、命令補全方法
相信很多使用linux的朋友在接觸solaris時,都會感覺不習慣。因為linux預設使用的是bash shell,而solaris用的是 sh shell。好久沒接觸系統了,昨天安裝了solaris,安裝完系統後發現完全不是那麼回事,使用起來很不方便,所以決定修改預設sh
常用的shell內建變數
$$ -- Shell本身的PID $! -- Shell最後執行的後臺Process的PID $? -- 最後執行的命令的結束程式碼(返回值) $- -- 使用Set命令設定的Flag一覽 $* -- 所有引數列表。如"$*"用「"」括起來的情況、以"$1 $2
iOS應用內建付費 In-App Purchase 詳細介紹(IAP詳解)
In App Purchase(程式內購買)為蘋果開發人員們打開了一個新的盈利渠道,如果您對此並不瞭解,下面這段 CocoaChina 會員“leon”翻譯的 In App Purchase 詳細介紹一定不能錯過。 一、In App Purchase概覽 Store
linux shell內建變數和常見比較
特殊的shell變數 變數 含義 $0 指令碼名 $1 -$9 位置引數1-9 ${10} 位置引數10 $# 位置引數的個數 "$*" 所有位置引數(作為單個字串) "[email pr
Bash Shell-使用內建的set和shopt命令設定bash選項
set命令可以用來定製shell環境,使用選項“o”來開啟或者關閉選項。 例如開啟選項:set -o 選項,關閉選專案:set +o 選項。 例如要開啟vi互動式命令列編輯,則如下: 1.檢視當前設定情況 [[email protected] ~]# set -o alle
Linux/Unix Bash Shell 所有內建命令
對於bash shell本身包含的內建命令,我們如何在Linux / Apple OS X / *BSD / 類Unix作業系統上全部列出他們,並且無需查閱大量得bash手冊? shell 內建命令就是一個命令或一個函式,從 shell 中呼叫,它直接在 shell 中執行。bash shell
CentOS 7 Shell指令碼程式設計第六講 Bash Shell 外部命令和內建命令
開發十年,就只剩下這套架構體系了! >>>
CentOS 7 Shell指令碼程式設計第七講 Bash Shell 常用內建命令簡介
開發十年,就只剩下這套架構體系了! >>>
Linux(小專案)————shell的實現,包含重定向、內建命令。
bash原理: 通過上面bash的原理我們可以,瞭解到shell的框架與流程: 1.等待使用者輸入命令。 2.解析使用者輸入的字串。 3.建立子程序執行exec程式替換 4.父程序等待子程序退出。 迴圈執行1~4步驟,即可完成my_shell。 最簡單版本的my_shell實現:
Hive基本操作,DDL操作(建立表,修改表,顯示命令),DML操作(Load Insert Select),Hive Join,Hive Shell引數(內建運算子、內建函式)等
1. Hive基本操作 1.1 DDL操作1.1.1 建立表 建表語法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
Linux程式設計 10 (shell外部命令與內建命令,alias ,type命令)
一. 內部命令 Linux命令有內部命令(內建命令)和外部命令之分,內部命令和外部命令功能基本相同,但也有些細微差別。內部命令不需要使用子程序來執行,它們已經和shell編譯成一體,作為shell工具的組成部分存在。不需要藉助外部程式檔案來執行。它們是一些比較簡單的linux系統命令,如exit,his
bash內建命令mapfile:讀取檔案內容到陣列
bash提供了兩個內建命令:readarray和mapfile,它們是同義詞。它們的作用是從標準輸入讀取一行行的資料,然後每一行都賦值給一個數組的各元素。顯然,在shell程式設計中更常用的是從檔案、從管道讀取,不過也可以從檔案描述符中讀取資料。 需要先說明的是,shell並不像其它專門的程式語言對陣列、列表
Bash內建命令-shopt
1.shopt 命令簡介 2.shopt 引數含義說明 3.shopt 使用示例 1)extglob 引數 shopt 命令用於顯示和設定shell中的行為選項,通過這些選項以增強shell易用性。 shopt命令若不帶任何引數選項,則可以顯示所有可以設定的shell操作選項。
Linux help --顯示Bash內建命令的幫助資訊
用途說明 help命令顧名思義就是顯示幫助資訊的,它是個Bash內建命令,也只是用來顯示Bash內建命令的幫助資訊的(Display helpful information about builtin commands)。如果要顯示外部命令的幫助資訊,可以使用man命令或者info命令。在使用Linux或