Linux shell 內部命令和外部命令

2021-10-01 12:39:11 字數 2004 閱讀 3720

linux中的命令大致分為兩類:內部命令和外部命令,內部命令也稱shell內建命令或者內嵌命令,外部命令存放在乙個檔案中,需要時候在檔案中查詢,這些檔案定義在$path中。

首先linux所有的都是檔案,我們在作業系統載入的時候會載入shell表現為/bin/bas**件

內建命令不需要子程序來執行,它已經和shell編譯為一體。作為shell工具的組成部分存在。內建命令不需要借助外部程式檔案來執行。內部命令可以通過enable命令來檢視:

enable .

enable :

enable [

enable alias

enable bg

enable bind

enable break

enable builtin

enable caller

enable cd

...

header 1

header 2

bind

將鍵盤序列繫結到乙個 readline 函式或巨集

cd將當前目錄切換為指定的目錄

dirs

顯示當前儲存目錄的列表

echo

將指定字串輸出到 stdout

exec

用指定命令替換 shell 程序

export

設定子 shell 程序可用的變數

fc從歷史記錄中選擇命令列表

fg將作業以前臺模式執行

getopts

分析指定的位置引數

help

顯示幫助檔案

history

顯示命令歷史記錄

jobs

列出活動作業

kill

向指定的程序 id(pid) 傳送乙個系統訊號

pwd顯示當前工作目錄的路徑名

set設定並顯示環境變數的值和 shell 屬性

test

基於指定條件返回退出狀態碼 0 或 1

times

顯示累計的使用者和系統時間

type

顯示指定的單詞如果作為命令將會如何被解釋

umask

為新建的檔案和目錄設定預設許可權

unset

刪除指定的環境變數或 shell 屬性

wait

等待指定的程序完成,並返回退出狀態碼

可以利用type命令來了解某個命令是否是內建的:

# 內建命令

localhost:~ dong$ type echo

echo is a shell builtin

# 外部命令

localhost:~ dong$ type ps

ps is /bin/ps

部分命令有多種實現,常見的為echo、pwd這兩個命令既是內建命令也是外部命令。如果只用type命令不帶選項,優先顯示shell 內嵌命令,上面的例子也測試過 type echo。只會顯示shell 內嵌。要檢視命令的不同實現,需要使用type -a選項:

localhost:~ dong$ type -a pwd

pwd is a shell builtin

pwd is /bin/pwd

外部命令有時候被稱為檔案系統命令,是存在於bash shell之外的程式。它們並不是shell程式的一部分。外部命令通常位於 /bin、/usr/bin、/sbin、/usr/sbin中。可以使用which和type命令來找到。假設要找ps命令:

localhost:~ dong$ which ps

/bin/ps

localhost:~ dong$ type ps

ps is /bin/ps

注意一下:which 命令只顯示外部命令的檔案

外部命令的執行時,會建立乙個子程序。這個操作被稱為衍生。在執行速度相比內建命令來說,相對要慢些。這也因為外部命令程式通常位於/bin、/usr/bin、/sbin、/usr/sbin查詢命令上需要時間。

Linux Shell命令 tr命令

在linux常用的命令中,我們可以通過使用tr,非常容易地實現 sed 的許多最基本功能。1 定義 日常操作中,tr用來從標準輸入中通過替換或刪除操作進行字元轉換。2 使用格式 tr c d s string1 to translate from string2 to translate to in...

linux shell基礎命令

建立檔案 touch file1 複製檔案file1成file2 cp file1 file2 複製整個目錄的內容 cp r file1 file2 建立檔案硬連線 cp l file1 file2 建立檔案軟連線 cp s file1 file2 重新命名檔案 mv file1 file2 建立目...

Linux Shell 命令 簡介

安裝openssh 服務端 sudo apt get install openssh server openssh client windows 下客戶端 putty 常用命令 一 ls 檢視目錄命令 一般放在home 目錄下 ls l 根目錄下的列表 ls a 根目錄下所有的檔案 ls la 組合...