Linux————内置命令大全

(一)内置命令

        Shell 内置命令,就是由 Bash Shell 自身提供的命令,而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令,因为执行外部命令不仅会导致磁盘I/O操作,而且还需要为其fork一个独立的进程。当该命令执行结束后,相关进程也要终止。相对地,执行内置命令就像是在当前Shell进程中调用一个函数,避免了额外的进程切换和上下文切换开销。下面我们将详细地解释常见的几种的内置命令。

内置命令列表(红为重点,必记)

命令

说明

:

扩展参数列表,执行重定向操作

.

读取并执行指定文件中的命令(在当前 shell 环境中)

alias

为指定命令定义一个别名

bg

将作业以后台模式运行

bind

将键盘序列绑定到一个 readline 函数或宏

break

退出 for、while、select 或 until 循环

builtin

执行指定的 shell 内建命令

caller

返回活动子函数调用的上下文

cd

将当前目录切换为指定的目录

command

执行指定的命令,无需进行通常的 shell 查找

compgen

为指定单词生成可能的补全匹配

complete

显示指定的单词是如何补全的

compopt

修改指定单词的补全选项

continue

继续执行 for、while、select 或 until 循环的下一次迭代

declare

声明一个变量或变量类型。

dirs

显示当前存储目录的列表

disown

从进程作业表中刪除指定的作业

echo

将指定字符串输出到 STDOUT(标准输出)

enable

启用或禁用指定的内建shell命令

eval

将指定的参数拼接成一个命令,然后执行该命令

exec

用指定命令替换 shell 进程

exit

强制 shell 以指定的退出状态码退出

export

设置子 shell 进程可用的变量

fc

从历史记录中选择命令列表

fg

将作业以前台模式运行

getopts

分析指定的位置参数

hash

查找并记住指定命令的全路径名

help

显示帮助文件

history

显示命令历史记录

jobs

列出活动作业

kill

向指定的进程 ID(PID) 发送一个系统信号

let

计算一个数学表达式中的每个参数

local

在函数中创建一个作用域受限的变量

logout

退出登录 shell

mapfile

从 STDIN 读取数据行,并将其加入索引数组

popd

从目录栈中删除记录

printf

使用格式化字符串显示文本

pushd

向目录栈添加一个目录

pwd

显示当前工作目录的路径名

read

从 STDIN 读取一行数据并将其赋给一个变量

readarray

从 STDIN 读取数据行并将其放入索引数组

readonly

从 STDIN 读取一行数据并将其赋给一个不可修改的变量

return

强制函数以某个值退出,这个值可以被调用脚本提取

set

设置并显示环境变量的值和 shell 属性

shift

将位置参数依次向下降一个位置

shopt

打开/关闭控制 shell 可选行为的变量值

source

读取并执行指定文件中的命令(在当前 shell 环境中)

suspend

暂停 Shell 的执行,直到收到一个 SIGCONT 信号

test

基于指定条件返回退出状态码 0 或 1

times

显示累计的用户和系统时间

trap

如果收到了指定的系统信号,执行指定的命令

type

显示指定的单词如果作为命令将会如何被解释

typeset

声明一个变量或变量类型。

ulimit

为系统用户设置指定的资源的上限

umask

为新建的文件和目录设置默认权限

unalias

刪除指定的别名

unset

刪除指定的环境变量或 shell 属性

wait

等待指定的进程完成,并返回退出状态码

(2)常见内置命令

type

可使用type来确定一个命令是否是内置命令或可执行文件

参数

说明

无参数

显示出命令名是外部指令还是 bash 内建指令

-t

会将命令名以底下这些字眼显示出他的意义:file :表示为外部可执行文件; alias :表示该指令为命令别名所设定的名称; builtin :表示该指令为 bash 内建的指令功能;

-p

如果后面接的可执行文件为外部指令时,会显示出完整文件名

-a

会由 PATH 变量定义的路径中,将所有和命令名相关的指令都列出来,包含别名

alias设置别名

  alisa用于给命令创建别名。好处就是可以将经常操作比较复杂的命令进行设置别名,通过别名的操作提高工作效率。若该命令且不带任何参数,则显示当前 Shell 进程中的所有别名列表。

语法

说明

备注

alias 别名=”命令”

为命令定义一个别名,比如alias ll="ls -l --color=auto"

这里使用单引号或双引号都可以

unalias 别名

删除指定的别名

临时删除当前Shell的别名, 如果想永久删除必须去配置文件中手动删除

unalias -a

删除当前Shell环境中所

临时删除当前Shell的别名, 如果想永久删除必须去配置文件中手动删除

echo输出字符串

echo用于在终端输出字符串,并在最后默认加上换行符。

语法

说明

echo 字符串

换行输出,默认

echo -n 字符串

不换行输出

echo -e 字符串

转义输出,会对转义符特殊处理,而不是当作一般文字输出

echo支持的转义符,-e参数里面会特殊处理的符号

转义符

说明

\a

发出警告声

\b

删除前一个字符

\c

最后不加上换行符号,用于强制清除echo的结尾换行输出

\f

换行但光标仍旧停留在原来的位置

\n

换行且光标移至行首;

\r

光标移至行首,但不换行

\t

插入tab

\v

与\f相同

\\

插入\字符

\nnn

插入nnn(八进制)所代表的ASCII字符;

read读取控制台输入

   read用于从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从终端控制台读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。

  options表示选项;var表示用来存储数据的变量,可以有一个,也可以有多个。optionsvar都是可选的,如果没有提供变量名,那么读取的数据将存放到环境变量 REPLY 变量中。$REPLY保存read最后一个读入命令的数据。options支持的参数如下:

选项

说明

-a array

把读取的数据赋值给数组 array,从下标 0 开始。

-d delimiter

用字符串delimiter指定读取结束的位置,而不是一个换行符(读取到的数据不包括delimiter)。

-e

在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。

-n num

读取 num 个字符,而不是整行字符。

-p prompt

显示提示信息,提示内容为prompt。

-r

原样读取(Raw mode),不把反斜杠字符解释为转义字符。

-s

静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。

-t seconds

设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败。

-u fd

使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。

exit退出

   exit用于退出当前Shell环境进程结束运行,并且可以返回一个状态码。一般使用 $? 可以获取退出状态码。

语法

说明

exit

正确退出,默认返回状态码0,代表命令执行成功

exit 非0数

错误退出,数字建议的范围0~255, 一般代表命令执行失败

      exit可以结束当前Shell进程,当Shell 进程执行出错退出时,可以返回不同的状态值代表不同的错误。比如执行一个脚本文件里面操作一个文件时,可以返回1 表示文件不存在,2 表示文件没有读取权限,3 表示文件类型不对。

declare设置变量

    declare命令可用来声明变量并设置变量的属性,也可用来显示shell函数。若不加上任何参数,则会显示全部的shell变量与函数(与执行set指令的效果相同)。

设置变量的属性

选项

说明

+/-

“-“可用来指定变量的属性,”+”则是取消变量所设的属性。

a

array,设置为普通索引数组

A

Array,设置为key-value关联数组

r

readonly,将变量设置为只读, 也可以使用readonly

x

exprot,设置变量成为全局变量,也可以使用export

i

int,设置为整型变量。变量默认为字符串类型,可更改为整型declare -i sum=100+300+50

f

function,设置为一个函数变量

test测试命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

整数比较测试

options具体如下:

参数

说明

-eq

等于则为真

-ne

不等于则为真

-gt

大于则为真

-ge

大于等于则为真

-lt

小于则为真

-le

小于等于则为真

文本:

##!/bin/bash 这一行通常被称为"shebang"或"hash-bang",它在Unix-like系统的脚本文件中表示一个特殊的标记,用于指定执行该脚本的解释器。

#!/bin/bash

num1=1 num2=1 num3=2

echo "num1=${num1},num2=${num2},num3=${num3}"

if test $num1 -eq $num2

then

echo 'num1和num2两个数相等!'

else

echo 'num1和num2两个数不相等!'

fi

if test $num2 -eq $num3

then

echo 'num2和num3两个数相等!'

else echo 'num2和num3两个数不相等!'

 效果:

字符串比较测试

options具体如下:

参数

说明

= 或 ==

等于, 等于返回0代表成功,否则返回1代表失败

!=

不等于

\<

小于

\>

大于

-z 字符串

字符串的长度为零则为真

-n 字符串

字符串的长度不为零则为真

文本:

#!/bin/bash

str1="hello" str2="world" str3=""

echo "str1=${str1},str2=${str2},str3=${str3}"

if test $str1 = $str2

then

echo 'str1和str2两个字符串相等'

else

echo 'str1和str2两个字符串不相等'

fi

if test $str1 \> $str2

then

echo 'str1大于str2

'else

echo

'str1小于str2'

fi

if test -z $str2

then

echo "str2字符串长度为0"

else

echo "str2字符串长度不为0"

fi

if test -z $str3

then

echo "str3字符串长度为0"

else

echo "str3字符串长度不为0"

fi

效果:

文件测试运

       

options具体如下:

参数

说明

-e 文件名

exists, 如果文件存在则为真

-r 文件名

read,如果文件存在且可读则为真

-w 文件名

write,如果文件存在且可写则为真

-x 文件名

execute,如果文件存在且可执行则为真

-s 文件名

string,如果文件存在且至少有一个字符则为真

-d 文件名

directory,如果文件存在且为目录则为真

-f 文件名

file,如果文件存在且为普通文件则为真

-c 文件名

character,如果文件存在且为字符型特殊文件则为真

-b 文件名

如果文件存在且为块特殊文件则为真

文本:

#!/bin/bash

# 检查文件是否存在且可写
if test -w ./a.sh; then
    echo '文件已存在并且可写!'
else
    echo '文件不存在或不可写!'
fi

# 检查两个文件是否都存在
if test -e ./a.sh -a -e ./v.sh; then
    echo '两个文件都存在!'
else
    echo '可能有一个或两个文件不存在'
fi
 

 演示效果:

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

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

相关文章

Android Studio中配置Git

安装Git 在安装Android Studio之前&#xff0c;需要先安装Git。可以从Git官网下载并安装Git&#xff1a;https://git-scm.com/downloads 在Android Studio中配置Git 在Android Studio中&#xff0c;依次点击“File” -> “Settings”&#xff0c;在弹出的窗口中选择“Ver…

设置防火墙

1.RHEL7中的防火墙类型 防火墙只能同时使用一张,firewall底层调用的还是lptables的服务: firewalld:默认 &#xff0c;基于不同的区域做规则 iptables: RHEL6使用&#xff0c;基于链表 Ip6tables Ebtables 2.防火墙的配置方式 查看防火墙状态: rootlinuxidc -]#systemct…

041-第三代软件开发-QCustcomPlot波形标注

第三代软件开发-QCustcomPlot波形标注 文章目录 第三代软件开发-QCustcomPlot波形标注项目介绍QCustcomPlot波形标注效果初始化绘制 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML…

精密数据工匠:探索 Netty ChannelHandler 的奥秘

通过上篇文章&#xff08;Netty入门 — Channel&#xff0c;把握 Netty 通信的命门&#xff09;&#xff0c;我们知道 Channel 是传输数据的通道&#xff0c;但是有了数据&#xff0c;也有数据通道&#xff0c;没有数据加工也是没有意义的&#xff0c;所以今天学习 Netty 的第四…

Windows2008系统怎么隐藏或打开文件后缀

打开服务器的控制面板-选择小图标-文件夹选项 在文件夹选项那边点击查看-隐藏一直文件类型的扩展名 选择勾选&#xff08;隐藏一直文件类型的扩展名&#xff09;-下图示文件后缀不显示 选择不勾选&#xff08;隐藏一直文件类型的扩展名&#xff09;-下图示文件后缀显示

自定义元素宽高比例(aspect-ratio)与@supports兼容支持和图片裁剪(object-fit)的用法

使用grid布局可以轻松实现响应式布局&#xff0c;子元素只需要设置最小宽度即可&#xff0c;如果对子元素没有设置高度&#xff0c;那么高度取决于内容的最大值&#xff0c;这样显然是不稳定的&#xff0c;如下图所示&#xff1a; 出现这种问题就造成布局混乱了&#xff0c;可…

5000张照片怎么快速发给别人?分享三个简单的方法!

有的时候我们不得不一次性发送很多图片&#xff0c;一张一张发实在让人头疼&#xff0c;这个时候就需要借助一些图片压缩工具打包成文件压缩包发送。下面介绍了三种好用的方法&#xff0c;一起来看看吧&#xff5e; 方法一&#xff1a;使用微信助手 可以使用微信助手&#xff…

【C++】多态 ⑨ ( vptr 指针初始化问题 | 构造函数 中 调用 虚函数 - 没有多态效果 )

文章目录 一、vptr 指针初始化问题1、vptr 指针与虚函数表2、vptr 指针初始化时机3、构造函数 中 调用 虚函数 - 没有多态效果4、代码示例 构造函数 的 作用就是 创建对象 , 构造函数 最后 一行代码 执行完成 , 才意味着 对象构建完成 , 对象构建完成后 , 才会将 vptr 指针 指向…

对xss-labs靶场的一次XSS攻击

1、首先我们进入靶场&#xff0c;提示我们开始测试 2、我使用AWVS工具进行了先行扫描&#xff0c;发现爆出XSS漏洞 3、然后对症下药 在输入框中输入&#xff1a; <script>alert(document.cookie)</script> 4、进入下一关 5、我们直接执行<script>…

一次cs上线服务器的练习

环境&#xff1a;利用vm搭建的环境 仅主机为65段 测试是否能与win10ping通 配置转发 配置好iis Kali访问测试 现在就用burp抓取winser的包 开启代理 使用默认的8080抓取成功 上线

微服务之负载均衡使用场景

在如见常见微服务系统中&#xff0c;负载均衡组件是一种将流量分配到多个服务的技术&#xff0c;目的是提高系统的性能和可用性。负载均衡有两种常见的模式&#xff1a;服务端模式和客户端模式。服务端模式使用独立的应用程序&#xff08;如 Nginx&#xff09;来转发请求&#…

20.2 OpenSSL 非对称RSA加解密算法

RSA算法是一种非对称加密算法&#xff0c;由三位数学家Rivest、Shamir和Adleman共同发明&#xff0c;以他们三人的名字首字母命名。RSA算法的安全性基于大数分解问题&#xff0c;即对于一个非常大的合数&#xff0c;将其分解为两个质数的乘积是非常困难的。 RSA算法是一种常用…

内网渗透-域信息收集

域环境 虚拟机应用&#xff1a;vmware17 域控主机&#xff1a;win2008 2r 域成员主机&#xff1a;win2008 2r win7 一.域用户和本地用户区别 使用本地用户安装程序时&#xff0c;可以直接安装 使用域用户安装程序时&#xff0c;需要输入域控管理员的账号密码才能安装。总结…

Leetcode.树形DP

目录 543.二叉树的直径 124.二叉树中的最大路径和 2246.相邻字符不同的最长路径 543.二叉树的直径 用递归来写 考虑 树形DP 维护以当前节点为根节点的最大值&#xff0c;同时返回给父节点经过当前节点的最大链的长度&#xff0c;这有个trick 当遍历到空节点的时候返回-1 递归…

Web3公链之Cosmos生态的项目Celestia

文章目录 Web3公链之Cosmos生态的项目&#xff1a;模块化区块链Celestia什么是CelestiaCelestia网络架构数据可用性问题有哪些可用的解决方案&#xff1f; 发展历史运行节点参考 Web3公链之Cosmos生态的项目&#xff1a;模块化区块链Celestia 什么是Celestia 官网&#xff1a…

Go学习第十七章——Gin中间件与路由

Go web框架——Gin中间件与路由 1 单独注册中间件1.1 入门案例1.2 多个中间件1.3 中间件拦截响应1.4 中间件放行 2 全局注册中间件3 自定义参数传递4 路由分组4.1 入门案例4.2 路由分组注册中间件4.3 综合使用 5 使用内置的中间件6 中间件案例权限验证耗时统计 1 单独注册中间件…

驱动day10作业

基于platform驱动模型完成LED驱动的编写 驱动程序 #include <linux/init.h> #include <linux/module.h> #include<linux/platform_device.h> #include<linux/mod_devicetable.h> #include<linux/of.h> #include<linux/of_gpio.h> #inclu…

【CSS】包含块

CSS规范中的包含块 包含块的内容&#xff1a; 元素的尺寸和位置&#xff0c;会受它的包含块所影响。 对于一些属性&#xff0c;例如 width, height, padding, margin&#xff0c;绝对定位元素的偏移值&#xff08;比如 position 被设置为 absolute 或 fixed&#xff09;&…

【原创】java+swing+mysql无偿献血管理系统设计与实现

摘要&#xff1a; 无偿献血管理系统是为了实现无偿献血规范化、有序化、高效化的管理而设计的。本文主要介绍使用java语言开发一个基于C/S架构的无偿献血管理系统&#xff0c;提高无偿献血管理的工作效率。 功能分析&#xff1a; 系统主要提供给管理员、无偿献血人员&#x…

【Mybatis-Plus】代码生成器

目录 安装插件 数据库建表 Other Config Database Code Generator 根据创建好的数据库表&#xff0c;来直接生成代码 安装插件 数据库建表 Other 点开之后有两个功能 1.数据库配置 2.代码生成 Config Database 首先点开这个配置数据库 Code Generator 配置完数据库…