『运维备忘录』之 Shell 内置命令大集合

前言

在 Shell 中,有许多内置命令可用于执行各种任务,包括文件操作、进程管理、环境变量设置等。本文将详细介绍一些常见的Shell内置命令及其示例用法。


命令描述
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等待进程完成

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循环)中跳出。

builtin

builtin命令用于执行一个内置命令,而不是调用外部可执行文件。例如:

builtin echo hello

上面的示例中,builtin echo将执行Shell内置的echo命令,而不是调用外部的echo可执行文件。

caller

caller命令用于显示调用当前函数的函数的信息。例如:

function foo() {     echo "Caller: $(caller)"
}function bar() {      foo
}
bar

上面的示例中,我们定义了两个函数foo和bar。在foo函数中,我们使用caller命令显示调用foo函数的函数的信息。然后,我们在bar函数中调用foo函数。运行上述代码将输出如下结果:

Caller: 2 bar

输出结果显示,foo函数是由bar函数调用的,而bar函数的调用是由脚本的第2行执行的。

case

case命令用于执行多个条件分支语句。它类似于switch语句,根据变量的值执行相应的命令块。

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选项指示自动补全后不插入空格。

coproc

coproc命令用于创建一个与命令或进程通信的协程。例如:

coproc myproc {command; }

上面的示例中,coproc命令创建一个名为myproc的协程,并将其中的命令执行结果与该协程相关联。

declare

declare命令用于声明变量的属性和类型。例如:

declare -i num=10

上面的示例中,declare -i num=10将声明一个整数类型的变量num,并将其初始化为10。

dirs

dirs命令用于显示当前的目录堆栈。

disown

disown命令用于将作业从Shell的作业列表中移除。例如:

sleep 60 &
disown

在上面的示例中,sleep 60 &命令将sleep命令置于后台运行,并将其作为一个作业。然后,使用disown命令将该作业从Shell的作业列表中移除。

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进程。

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; docase $opt ina)echo "Option -a: $OPTARG";;b)echo "Option -b: $OPTARG";;\?)echo "Invalid option: -$OPTARG";;esac
done

在上面的示例中,我们使用getopts命令解析脚本的命令行选项。-a和-b是选项,后面可以跟参数。$OPTARG表示选项的参数值。

hash

hash命令用于查找并记住命令的完整路径。例如:

hash ls

上面的示例中,hash ls命令将查找并记住ls命令的完整路径。

jobs

jobs命令用于显示作业列表。

local

local命令用于声明一个局部变量。例如:

function foo() {local var="Hello"echo $var
}foo

在上面的示例中,我们定义了一个函数foo,其中使用local命令声明了一个局部变量var,并将其赋值为Hello。在函数内部,我们使用echo命令输出该局部变量的值。

logout

logout命令用于退出当前登录的Shell会话。

mapfile

mapfile命令用于将输入的文本行读入到一个数组中。

示例:

mapfile -t lines < file.txt

 上面的示例中,mapfile -t lines < file.txt命令将从file.txt文件中读取文本行,并将它们存储在名为lines的数组中。

popd

popd命令用于从目录堆栈中弹出并切换到上一个目录。

pushd

pushd命令用于将目录压入堆栈并切换到新目录。例如:

pushd /path/to/directory

上面的示例中,pushd /path/to/directory命令将将指定的目录/path/to/directory压入目录堆栈,并切换到该目录。

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=1.23

在上面的示例中,readonly PI=1.23将变量PI声明为只读变量,并将其值设置为1.23。一旦变量被声明为只读,就无法再修改它的值。

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"; doecho "You selected $option."break
done

在上面的示例中,select命令创建了一个菜单,其中包含"Apple"、"Banana"和"Orange"三个选项。用户可以通过输入选项的编号来选择一个选项。选择后,通过$option变量可以获取用户的选择。在示例中,我们使用echo命令输出用户选择的选项,并使用break语句退出循环。

set

set命令用于设置Shell的选项和参数。例如:

set -o errexit

在上面的示例中,set -o errexit命令将设置Shell选项errexit,即在脚本中遇到错误时立即退出。

shift

shift命令用于将命令行参数向左移动,丢弃第一个参数并将后面的参数依次向前移动。例如:

function print_args() { echo "Arguments: $*"shiftecho "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会话。

test

test命令用于对条件进行测试,并返回退出状态值以指示条件是否为真。例如:

if test -f file.txt; thenecho "File exists."
elseecho "File does not exist."
fi

在上面的示例中,test -f file.txt条件用于检查是否存在名为file.txt的文件。如果条件为真,则执行if语句块中的命令,否则执行else语句块中的命令。

time

time命令用于测量命令的执行时间。

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 $num

在上面的示例中,typeset -i num=10命令将变量num声明为整数类型,并将其初始化为10。然后,使用echo命令输出变量num的值。

ulimit

ulimit命令用于设置和显示Shell会话的资源限制。例如:

ulimit -n

上面的示例中,ulimit -n命令将显示Shell会话的最大打开文件描述符数。

umask

umask命令用于设置文件创建权限的屏蔽位。

unalias

unalias命令用于取消命令的别名定义。

unset

unset命令用于取消变量的定义。

variables

variables命令用于显示当前Shell会话中定义的所有变量。

wait

wait命令用于等待后台进程的完成。例如:

command1 &
command2 &
wait
echo "All commands completed."

在上面的示例中,command1和command2是后台进程。wait命令将等待这些后台进程完成后再继续执行后续命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt textBrowser的Html相关

Qt textBrowser的Html相关 Qt textBrowser的Html相关 Qt textBrowser的Html相关 一开始就想要一个简单的功能&#xff0c;点一下按钮&#xff0c;添加的文字居中显示&#xff0c;再点一下按钮&#xff0c;添加的文字变更颜色居右显示。 但是&#xff1a; ui->textEdit-&g…

WordPress免费的远程图片本地化下载插件nicen-localize-image

nicen-localize-image&#xff08;可在wordpress插件市场搜索下载&#xff09;&#xff0c;是一款用于本地化文章外部图片的插件&#xff0c;支持如下功能&#xff1a; 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章…

python类的属性、方法、静态方法、静态方法类内部的调用、直接调用与实例化调用

设计者&#xff1a;ISDF工软未来 版本&#xff1a;v1.0 日期&#xff1a;2024/3/4 class Restaurant:餐馆类def __init__(self,restaurant_name,cuisine_type):#类的属性self.restaurant_name restaurant_nameself.cuisine_type cuisine_type# self.stregth_level 0def desc…

基于机器学习的密码强度检测

项目简介 利用机器学习对提供的数据集预测用户输入的密码是否为弱密码。 原始数据集只包含关于弱密码的信息&#xff0c;并没有包含强密码的数据或分类器&#xff0c;这意味着模型无法学习到强密码的规律!!! 我之所以这样设计这个示例&#xff0c;其目的是为了向你展示模型的…

python65-Python的循环之for表达式

for表达式用于利用其他区间、元组、列表等可迭代对象创建新的列表。for 表达式的语法格式如下: [表达式 for 循环计数器 in 可迭代对象] 从上面的语法格式可以看出,for表达式与普通for循环的区别 1)在for关键字之前定义一个表达式,该表达式通常会包含循环计数器 2)for …

@RestController和@Controller的区别

RestController和Controller是Spring框架中两个常用的注解&#xff0c;用于标识Controller类 1.Controller&#xff1a;使用Controller注解标记的类是一个典型的MVC控制器&#xff08;controller&#xff09;&#xff0c;用于处理请求并返回视图。通常在该类的方法上使用Reque…

alzet供应商你值得拥有

在20世纪70年代&#xff0c;ALZE公司研发出来一款巧妙的药物输送装置——Alzet osmotic pump。这款产品如胶囊般精致小巧&#xff0c;它既有胶囊的外表&#xff0c;也具有胶囊的作用。在Alzet osmotic pump中藏有可以装配药物溶液的空间。此款胶囊泵如同一个小投递员&#xff0…

Vue整合three.js 环境从头搭建 详细教程

目录 一、创建Vue项目 二、搭建three.js 三、引入扩展库OrbitControls 首先我们要有nodejs环境,这里我们用的是17.1.0版本。 一、创建Vue项目 第一步:终端命令创建vue项目 npm create vite@latest

AI蠕虫病毒威胁升级,揭示AI安全新危机

一组研究人员成功研发出首个能够通过电子邮件客户端窃取数据、传播恶意软件以及向他人发送垃圾邮件的AI蠕虫&#xff0c;并在使用流行的大规模语言模型&#xff08;LLMs&#xff09;的测试环境中展示了其按设计功能运作的能力。基于他们的研究成果&#xff0c;研究人员向生成式…

用pyinstaller打包python代码为exe可执行文件并在其他电脑运行的方法

本文介绍基于Python语言中的pyinstaller模块&#xff0c;将写好的.py格式的Python代码及其所用到的所有第三方库打包&#xff0c;生成.exe格式的可执行文件&#xff0c;从而方便地在其他环境、其他电脑中直接执行这一可执行文件的方法。 有时&#xff0c;我们希望将自己电脑上的…

python笔记:super(),__getitem()__,__call()__

目录 Q1&#xff1a;super(NetworkBlock, self).__init__()什么意思 Q2&#xff1a;__call__() 类的实例圆括号自动调用 Q3&#xff1a;__getitem__() 类的实例 方括号自动调用 Q4&#xff1a;没有双下划线方法时&#xff0c;普通的调用类的方法 总结 Q1&#xff1a;super…

Python 全栈系列230 轻全局函数服务 GFGoLite

说明 为了将GlobalFunc推向正常的应用轨道&#xff0c;构造一个功能简单的服务。 内容 1 工作模式 Server模式&#xff1a;以API服务方式执行 Worker模式: 以Worker方式执行。通过left/right文件夹和rsync方式执行任务并写结果。 2 构造方法 重载和执行&#xff1b;从标…

基于springboot的助农管理系统的设计与实现

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1研究背…

【网站项目】219一中体育馆管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

pywin32,一个超强的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超强的 Python 库 - pywin32。 Github地址&#xff1a;https://github.com/mhammond/pywin32 在Python的世界里&#xff0c;有许多优秀的第三方库可以帮助开发者更轻松地处理各种任务。其中&a…

【性能】后台与黑屏

目录 现象观察 调整应用的电池策略 现象观察 切换到后台&#xff0c; 一个心跳期间&#xff0c;就会发close socket 直接黑屏&#xff0c;没有收到任何消息&#xff0c;直接到onclose,然后有离线触发 也到时间。 调整应用的电池策略 修改成“无限制”后&#xff0c;就不会断…

C#面:简单介绍 序列化 和 反序列化

序列化&#xff1a; 是将对象转换为可保持或可传输的形式的过程。 .NET 具有以下序列化技术&#xff1a; 二进制序列化保持类型保真&#xff0c;这对于多次调用应用程序时保持对象状态非常有用。 例如&#xff0c;通过将对象序列化到剪贴板&#xff0c;可在不同的应用程序之…

Linxu自动化构建工具make/Makefile究竟时什么?

Linxu自动化构建工具make/Makefile究竟时什么&#xff1f; 一、简介二、makefile文件制作&#xff08;简洁版&#xff09;2.1 源文件2.2 makefile如何制作2.2.1 依赖关系、依赖方法2.2.3 伪目标&#xff08;清理文件资源&#xff09; 三、make/Makefile自动化原理3.1 伪目标为什…

SpringBoot+Vue实现el-table表头筛选排序(附源码)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;在笑大学牲 &#x1f39f;️个人主页&#xff1a;无所谓^_^ ps&#xff1a;点赞是免费的&#xff0c;却可以让写博客的作者开心好几天&#x1f60e; 前言 后台系统对table组件的需求是最常见的&#xff0c;不过element-ui的el…

Grpc项目集成到java方式调用实践

背景&#xff1a;由于项目要对接到grcp 的框架&#xff0c;然后需要对接老外的东西&#xff0c;还有签名和证书刚开始没有接触其实有点懵逼。 gRPC 是由 Google 开发的高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架。它建立在 HTTP/2 协议之上&#xff0c;使用 …