Shell是一种命令行解释器,它允许用户与操作系统进行交互。在Shell中,有许多内置命令可用于执行各种任务,包括文件操作、进程管理、环境变量设置等。在本文中,我们将详细介绍一些常见的Shell内置命令及其示例用法。 示例: 在上面的示例中,我们为 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中,当 示例: 上面的示例中, 示例: 上面的示例中,我们定义了两个函数 输出结果显示, 示例: 在上面的示例中,根据变量 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中,当 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中,我们使用 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中,我们定义了一个函数 示例: 上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 在上面的示例中,我们定义了一个名为 示例: 在上面的示例中, 示例: 在上面的示例中, 示例: 在上面的示例中,我们定义了一个名为 示例: 在上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中, 示例: 上面的示例中, 示例: 在上面的示例中,alias
alias
命令用于创建或查看命令别名。它允许您为常用的命令创建简短的别名,以便更方便地使用它们。alias ll='ls -l'
ls -l
命令创建了一个别名ll
。现在,每当我们输入ll
时,实际上是在执行ls -l
命令。bg
bg
命令用于将一个作业置于后台运行。当一个作业被挂起或停止时,可以使用bg
命令将其切换到后台并继续运行。bg %1
%1
表示作业号为1的作业。使用bg %1
命令,我们将该作业切换到后台运行。bind
bind
命令用于显示当前绑定到特定键的Shell函数或操作。bind -P
bind -P
命令将显示所有绑定到键的函数和操作的列表。break
break
命令用于从循环结构(如for
或while
循环)中跳出。for i in 1 2 3 4 5
do
if [ $i -eq 3 ]
then
break
fi
echo $i
done$i
的值等于3时,break
命令将退出for
循环。builtin
builtin
命令用于执行一个内置命令,而不是调用外部可执行文件。builtin echo hello
builtin echo
将执行Shell内置的echo
命令,而不是调用外部的echo
可执行文件。caller
caller
命令用于显示调用当前函数的函数的信息。function foo() {
echo "Caller: $(caller)"
}
function bar() {
foo
}
barfoo
和bar
。在foo
函数中,我们使用caller
命令显示调用foo
函数的函数的信息。然后,我们在bar
函数中调用foo
函数。运行上述代码将输出如下结果:Caller: 2 bar
foo
函数是由bar
函数调用的,而bar
函数的调用是由脚本的第2行执行的。case
case
命令用于执行多个条件分支语句。它类似于switch
语句,根据变量的值执行相应的命令块。fruit="apple"
case $fruit in
"apple")
echo "It's an apple.";;
"banana")
echo "It's a banana.";;
"orange")
echo "It's an orange.";;
*)
echo "Unknown fruit.";;
esacfruit
的值,case
命令将执行相应的命令块。由于fruit
的值为apple
,因此输出将是:It's an apple.
cd
cd
命令用于更改当前工作目录。cd /path/to/directory
cd
命令将当前工作目录更改为/path/to/directory
。command
command
命令用于执行指定的命令,而不受别名或函数的影响。command ls
command ls
将执行ls
命令,而不受可能存在的ls
命令别名的影响。compgen
compgen
命令用于生成自动补全的候选列表。compgen -c
compgen -c
将生成所有可用的命令的候选列表。complete
complete
命令用于设置命令的自动补全规则。complete -W "option1 option2 option3" command
complete -W "option1 option2 option3" command
将为command
命令设置自动补全,补全的选项是option1
、option2
和option3
。compopt
compopt
命令用于设置或查询自动补全选项。compopt -o nospace command
compopt -o nospace command
将为command
命令设置自动补全选项,其中nospace
选项指示自动补全后不插入空格。continue
continue
命令用于跳过循环中的当前迭代并继续下一次迭代。for i in 1 2 3 4 5
do
if [ $i -eq 3 ]
then
continue
fi
echo $i
done$i
的值等于3时,continue
命令将跳过该次循环迭代,输出结果将是:1
2
4
5coproc
coproc
命令用于创建一个与命令或进程通信的协程。coproc myproc { command; }
coproc
命令创建一个名为myproc
的协程,并将其中的命令执行结果与该协程相关联。declare
declare
命令用于声明变量的属性和类型。declare -i num=10
declare -i num=10
将声明一个整数类型的变量num
,并将其初始化为10。dirs
dirs
命令用于显示当前的目录堆栈。dirs
dirs
命令将显示当前的目录堆栈。disown
disown
命令用于将作业从Shell的作业列表中移除。sleep 60 &
disownsleep 60 &
命令将sleep
命令置于后台运行,并将其作为一个作业。然后,使用disown
命令将该作业从Shell的作业列表中移除。echo
echo
命令用于在终端输出文本或变量的值。echo "Hello, World!"
echo
命令将输出字符串”Hello, World!”。enable
enable
命令用于启用或禁用Shell内置命令。enable -n command
enable -n command
将禁用名为command
的内置命令。eval
eval
命令用于将参数作为Shell命令执行。x=5
eval "echo $x"eval "echo $x"
将执行echo $x
命令,并输出变量x
的值。exec
exec
命令用于用新的进程替换当前Shell进程。exec command
exec command
将用command
命令替换当前的Shell进程。exit
exit
命令用于终止当前Shell会话。exit
exit
命令将终止当前的Shell会话。export
export
命令用于设置或显示环境变量。export PATH="/usr/local/bin:$PATH"
export PATH="/usr/local/bin:$PATH"
将把/usr/local/bin
添加到PATH
环境变量的开头。false
false
命令用于返回一个退出状态值表示失败。false
echo $?false
命令将返回一个退出状态值为1,表示失败。然后,echo $?
命令将输出上一个命令的退出状态值。fc
fc
命令用于编辑并重新执行之前执行的命令。fc -e vi
fc -e vi
命令将打开一个文本编辑器(例如vi),允许您编辑并重新执行之前执行的命令。fg
fg
命令用于将一个作业置于前台运行。fg %1
%1
表示作业号为1的作业。使用fg %1
命令,我们将该作业切换到前台运行。getopts
getopts
命令用于解析脚本的命令行选项。while getopts ":a:b:" opt; do
case $opt in
a)
echo "Option -a: $OPTARG"
;;
b)
echo "Option -b: $OPTARG"
;;
?)
echo "Invalid option: -$OPTARG"
;;
esac
donegetopts
命令解析脚本的命令行选项。-a
和-b
是选项,后面可以跟参数。$OPTARG
表示选项的参数值。hash
hash
命令用于查找并记住命令的完整路径。hash ls
hash ls
命令将查找并记住ls
命令的完整路径。help
help
命令用于显示Shell内置命令的帮助信息。help cd
help cd
命令将显示cd
命令的帮助信息。history
history
命令用于显示命令历史记录。history
history
命令将显示之前执行的命令的历史记录。jobs
jobs
命令用于显示作业列表。jobs
jobs
命令将显示当前Shell会话中的作业列表。kill
kill
命令用于发送信号给指定的进程。kill -TERM PID
kill -TERM PID
命令将向具有指定进程ID(PID)的进程发送SIGTERM
信号,以请求其终止。local
local
命令用于声明一个局部变量。function foo() {
local var="Hello"
echo $var
}
foofoo
,其中使用local
命令声明了一个局部变量var
,并将其赋值为Hello
。在函数内部,我们使用echo
命令输出该局部变量的值。logout
logout
命令用于退出当前登录的Shell会话。logout
logout
命令将退出当前登录的Shell会话。mapfile
mapfile
命令用于将输入的文本行读入到一个数组中。mapfile -t lines < file.txt
mapfile -t lines < file.txt
命令将从file.txt
文件中读取文本行,并将它们存储在名为lines
的数组中。popd
popd
命令用于从目录堆栈中弹出并切换到上一个目录。popd
popd
命令将从目录堆栈中弹出并切换到上一个目录。printf
printf
命令用于格式化输出。printf "Hello, %s!n" "John"
printf
命令使用格式字符串"Hello, %s!n"
,并通过%s
占位符将"John"
作为参数进行格式化输出。输出结果为Hello, John!
。pushd
pushd
命令用于将目录压入堆栈并切换到新目录。pushd /path/to/directory
pushd /path/to/directory
命令将将指定的目录/path/to/directory
压入目录堆栈,并切换到该目录。pwd
pwd
命令用于显示当前工作目录的路径。pwd
pwd
命令将显示当前工作目录的路径。read
read
命令用于从标准输入读取一行文本并将其赋值给变量。read -p "Enter your name: " name
echo "Hello, $name!"read -p "Enter your name: " name
命令将提示用户输入名称,并将输入的值赋给变量name
。然后,通过echo
命令输出欢迎消息。readarray
readarray
命令用于从输入中读取多行文本并将其存储到数组中。readarray lines < file.txt
readarray lines < file.txt
命令将从file.txt
文件中读取多行文本,并将每行文本存储在名为lines
的数组中。readonly
readonly
命令用于将变量声明为只读,即不可修改的变量。readonly PI=3.14
readonly PI=3.14
将变量PI
声明为只读变量,并将其值设置为3.14。一旦变量被声明为只读,就无法再修改它的值。return
return
命令用于从函数中返回一个值。function add_numbers() {
local sum=$(( $1 + $2 ))
return $sum
}
add_numbers 5 7
result=$?
echo "Sum: $result"add_numbers
的函数,该函数接受两个参数,并计算它们的和。使用return
命令,我们将和作为函数的返回值。然后,我们通过$?
获取函数的返回值,并将其存储在变量result
中。最后,我们使用echo
命令输出返回值。select
select
命令用于创建一个菜单并等待用户选择。select option in "Apple" "Banana" "Orange"; do
echo "You selected $option."
break
doneselect
命令创建了一个菜单,其中包含”Apple”、”Banana”和”Orange”三个选项。用户可以通过输入选项的编号来选择一个选项。选择后,通过$option
变量可以获取用户的选择。在示例中,我们使用echo
命令输出用户选择的选项,并使用break
语句退出循环。set
set
命令用于设置Shell的选项和参数。set -o errexit
set -o errexit
命令将设置Shell选项errexit
,即在脚本中遇到错误时立即退出。shift
shift
命令用于将命令行参数向左移动,丢弃第一个参数并将后面的参数依次向前移动。function print_args() {
echo "Arguments: $*"
shift
echo "Shifted Arguments: $*"
}
print_args "apple" "banana" "orange"print_args
的函数,它接受多个参数并输出它们。通过调用print_args
函数并传递三个参数,我们可以看到在调用shift
命令后,参数向左移动了一位,并丢弃了第一个参数。因此,在第二次输出中,我们只能看到”banana”和”orange”。shopt
shopt
命令用于显示和设置Shell的选项。shopt -s extglob
shopt -s extglob
命令将启用扩展模式匹配选项extglob
,使得在文件名匹配和模式匹配中可以使用更丰富的模式语法。source
source
命令用于在当前Shell会话中执行脚本文件,并保持在当前Shell环境中运行。source script.sh
source script.sh
命令将执行名为script.sh
的脚本文件,并将其内容加载到当前Shell会话中。这使得脚本中定义的变量、函数和其他命令可以在当前Shell中使用。suspend
suspend
命令用于挂起当前Shell会话。suspend
suspend
命令将挂起当前Shell会话,并返回到父Shell或终端。您可以使用fg
命令将挂起的会话切换回前台运行。test
test
命令用于对条件进行测试,并返回退出状态值以指示条件是否为真。if test -f file.txt; then
echo "File exists."
else
echo "File does not exist."
fitest -f file.txt
条件用于检查是否存在名为file.txt
的文件。如果条件为真,则执行if
语句块中的命令,否则执行else
语句块中的命令。time
time
命令用于测量命令的执行时间。time ls
time ls
命令将测量ls
命令的执行时间,并输出包括实际时间、用户CPU时间和系统CPU时间的统计信息。times
times
命令用于显示Shell会话的累计用户和系统CPU时间。times
times
命令将显示Shell会话的累计用户和系统CPU时间。trap
trap
命令用于在接收到信号时执行命令或脚本。trap "echo 'Signal received!'" SIGINT
trap "echo 'Signal received!'" SIGINT
命令将设置一个SIGINT
信号的陷阱,即在接收到SIGINT
信号(例如通过按下Ctrl+C)时执行命令echo 'Signal received!'
。true
true
命令用于返回一个退出状态值表示成功。true
echo $?true
命令将返回一个退出状态值为0,表示成功。然后,echo $?
命令将输出上一个命令的退出状态值。type
type
命令用于显示命令的类型,包括内置命令、外部命令或别名。type ls
type ls
命令将显示命令ls
的类型。如果ls
是一个内置命令,它将显示ls is a shell builtin
;如果ls
是一个外部命令,它将显示ls is /bin/ls
;如果ls
是一个别名,它将显示ls is aliased to 'ls --color=auto'
。typeset
typeset
命令用于声明变量的属性,如类型、作用域和只读属性。typeset -i num=10
echo $numtypeset -i num=10
命令将变量num
声明为整数类型,并将其初始化为10。然后,使用echo
命令输出变量num
的值。ulimit
ulimit
命令用于设置和显示Shell会话的资源限制。ulimit -n
ulimit -n
命令将显示Shell会话的最大打开文件描述符数。umask
umask
命令用于设置文件创建权限的屏蔽位。umask 022
umask 022
命令将设置文件创建权限的屏蔽位为022,表示允许拥有者具有完全权限,而组和其他用户的写权限被禁止。unalias
unalias
命令用于取消命令的别名定义。unalias ll
unalias ll
命令将取消ll
命令的别名定义。unset
unset
命令用于取消变量的定义。unset my_var
unset my_var
命令将取消变量my_var
的定义。variables
variables
命令用于显示当前Shell会话中定义的所有变量。variables
variables
命令将显示当前Shell会话中定义的所有变量的列表。wait
wait
命令用于等待后台进程的完成。command1 &
command2 &
wait
echo "All commands completed."command1
和command2
是后台进程。wait
命令将等待这些后台进程完成后再继续执行后续命令。总结
命令
描述
alias
创建命令别名,用于将命令或命令组合关联到用户自定义名称
bg
将作业放入后台运行
bind
显示或修改键盘绑定
break
用于跳出循环语句
builtin
用于运行内置Shell命令而不是外部命令
caller
显示当前/调用子例程的函数调用信息
case
在条件语句中使用模式匹配进行多路分支
cd
更改当前工作目录
command
在不启动新进程的情况下执行命令
compgen
生成与已输入的文本匹配的命令及其参数的列表
complete
用于定义自动完成的规则
compopt
用于更改自动完成的行为选项
continue
在循环中跳过当前迭代
coproc
同时创建I/O重定向的子进程对(协程)
declare
声明变量的属性和赋值
dirs
显示当前目录堆栈中的目录
disown
从作业列表中移除作业,使其在后台运行且与Shell无关联
echo
在标准输出上打印文本
enable
启用或禁用Shell内置命令
eval
将参数作为Shell命令执行
exec
用给定的命令替换当前进程
exit
终止Shell会话并返回给定的退出状态
export
设置环境变量
false
返回退出状态1
fc
打开文本编辑器以编辑和重新执行历史命令
fg
将作业放入前台运行
getopts
解析命令行选项和参数
hash
维护路径名到已解析命令的哈希表
help
显示Shell内置命令的帮助信息
history
显示命令历史记录
jobs
列出当前作业和作业状态
kill
终止进程或发送信号给进程
local
声明和限定局部变量的作用域
logout
登出当前用户
mapfile
从标准输入读取行,并将其存储在数组中
popd
从目录堆栈中弹出并切换到上一个目录
printf
格式化输出
pushd
将当前目录推入目录堆栈,并切换到指定的目录
pwd
显示当前工作目录的路径
read
从标准输入读取一行或从文件描述符读取数据
readarray
从输入中读取多行文本,并将其存储在数组中
readonly
将变量设置为只读
return
从函数中返回
select
创建菜单并等待用户选择
set
显示或设置Shell选项
shift
将参数列表向左移动指定数量的位置
shopt
显示或设置Shell选项
source
在当前Shell会话中执行脚本文件
suspend
暂停Shell的执行,使其进入挂起状态
test
执行条件测试
time
测量命令执行的时间
times
显示Shell和其子进程的累计执行时间
trap
设置在接收到信号时要执行的命令
true
返回退出状态0
type
显示命令的类型,显示命令是内置命令、外部命令还是别名
typeset
声明和限定变量的属性和作用域
ulimit
显示或设置Shell进程的资源限制
umask
显示或设置文件创建的默认权限掩码
unalias
删除命令别名
unset
删除变量或函数
variables
显示当前Shell会话中定义的变量和函数
wait
等待进程完成
2023-07-04
2023-07-04
2023-07-04
2023-07-04
2023-07-04
原文始发于微信公众号(运维漫谈):Shell内置命令大全,Linux运维工程师收藏!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/220507.html