shell 编程中内置的变量(冷门又好用)

简介

    分别盘点一下 shell 中的内置变量,真的巨好用!!!包括:环境变量类、shell 变量类、终端设置类和其他一些变量。

        

常用的内置变量目录如下

1. 环境变量类

$MACHTYPE:机器类型

$OSTYPE:操作系统类型

$HOSTNAME:当前主机名

$HOME:当前用户家目录

$USER:当前用户名

$SHELL:当前shell的路径

2. shell 变量类

$PWD:当前目录

$OLDPWD:上一个工作目录

$?:上一个命令的状态码

$0:当前 shell 脚本名称

$$:当前 shell 脚本 PID

$PPID:当前 shell 脚本的父ID

$IFS:字段分隔符

3. 终端类

$TERM:终端的类型

$PS1:设置终端提示符

$PS2:设置终端多行提示符

$COLUMNS:终端的宽度

$LINES:终端的高度

4. 其他变量

$RANDOM:随机数

$SECONDS:shell 脚本启动的秒数


        

1. 环境变量类

$MACHTYPE:机器类型

echo $MACHTYPE

        

$OSTYPE:操作系统类型

echo $OSTYPE

        

$HOSTNAME:当前主机名

echo $HOSTNAME

        

$HOME:当前用户家目录

  • $HOME 表示当前用户的家目录
echo $HOME

当使用 su 命令切换到另一个用户,也能够识别当前用户的家目录

        

$USER:当前用户名

  • $USER 表示当前用户的名称
echo $USER

当使用 su 命令切换到另一个用户,也能够识别当前用户名

        

$SHELL:当前shell的路径

  • 这个 shell 的路径是指系统 shell 的路径
echo $SHELL


        

2. shell 变量类

$PWD:当前目录

  • $PWD 表示当前终端的路径,不是脚本的路径
echo $PWD

如果需要获取脚本的路径,可以这样写

path=$(dirname `realpath ${BASH_SOURCE}`)

        

$OLDPWD:上一个工作目录

  • $OLDPWD 用来获取上一个工作 目录

      

$?:上一个命令的状态码

状态码的范围是 0~255

0: 表示命令成功执行。
1-125: 表示命令执行失败或出现错误。
126: 表示命令不可执行。可能是因为权限不足或命令无法找到等原因。
127: 表示命令未找到。通常是因为找不到执行的命令或脚本。
128+: 表示命令因为收到了一个信号而退出。
130: 表示命令因为收到了 SIGINT 信号而中断。类似于键盘上按下 Ctrl+C 中断命令的情况。
137: 表示命令因为收到了 SIGKILL 信号而被终止。
255: 表示状态码超出了范围。

        

$0:当前 shell 脚本名称

echo $0

        

$$:当前 shell 脚本 PID

echo $$

          

$PPID:当前 shell 脚本的父ID

echo $PPID

我们来查询一下脚本自己的 PID 和父 ID

echo "父ID: $PPID, 自己PID: $$"
ps -ef |grep $PPID |grep -v grep

        

$IFS:字段分隔符

设置字段分隔符

IFS=' '    # 设置分隔符为空格
IFS=','    # 设置分隔符为逗号
IFS=':'    # 设置分隔符为冒号
IFS='\t'   # 设置分隔符为制表符
IFS='\n'   # 设置分隔符为换行
IFS='abc'  # 设置分隔符为字符串
IFS=' ;\t' # 设置多个分隔符

        

比如 for 循环一个字符变量

str="AAA  BBB,CCC"
IFS=','
for i in ${str};do echo ${i} ;done

        

3. 终端类

$TERM:终端的类型

  • 用于指定当前终端所使用的终端类型

        

$PS1:设置终端提示符

  • $PS1 用于定义命令提示符格式,可以通过修改环境变量的值来自定义。

比如我当前的提示是这样的

【用户名】【主机名】【目录名】

查看一下当前的设置

        

我们来自定义设置一下

【案例一】显示用户名、主机名和工作目录

export PS1="\u@\h:\w$ "

        

【案例二】只显示工作目录

export PS1="\w$ "

        

【案例三】自定义提示符颜色

export PS1="\[\033[01;32m\]\u@\h:\w\[\033[00m\]$ "

        

详细的转译序号说明如下

# 用户名和主机信息
\u:当前用户名
\h:短主机名
\H:完整主机名(包括域名)
\@:12小时制的时间(格式:HH:MM am/pm)
\A:24小时制的时间(格式:HH:MM)
# 工作目录信息
\w:完整工作目录路径
\W:当前工作目录的基名
\d:当前日期(格式:Weekday Month Day)
# 控制文本颜色:
\033[0m:重置所有文本属性,包括颜色。
\033[30m 到 \033[37m:设置文本前景色(即文本的颜色),范围从黑色到白色。
\033[40m 到 \033[47m:设置文本背景色,范围从黑色到白色。

# 控制文本样式:
\033[1m:设置粗体样式。
\033[4m:设置下划线样式。
\033[7m:设置反色样式(即文本背景色与前景色交换)。

# 控制光标位置:
\033[A:将光标上移一行。
\033[B:将光标下移一行。
\033[C:将光标向右移动一格。
\033[D:将光标向左移动一格。

        

$PS2:设置终端多行提示符

先看一下默认的多行提示符

        

设置多行提示符

export PS2=">>> "

        

$COLUMNS:终端的宽度

echo $SECONDS

手动调整终端宽度也会使变量发生变化

        

通过获取终端宽度 ,可以根据情况输出满屏的字符。

perl -E "say '=' x ${COLUMNS}"

        

$LINES:终端的高度

echo ${LINES}

根据当前高度获取

        

通过获取终端高度,输出满屏的符号

for ((i=1; i<=LINES; i++));do perl -E "say '-' x ${COLUMNS}" ;done

        

4. 其他变量

$RANDOM:随机数

  • 0~32767 之间到随机数

        

如果想控制随机数在 0~100,试试取余的方法

echo $((RANDOM % 100))

        

$SECONDS:shell 脚本启动的秒数

sleep 3
echo $SECONDS

        

如果直接在终端输出,则显示终端启动的秒数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超声系统前端理论与模拟仿真-续

作者&#xff1a;蒋志强 本人同意他人对我的文章引用&#xff0c;但请在引用时注明出处&#xff0c;谢谢&#xff0e;作者&#xff1a;蒋志强 前言 近期整理了一下彩超前端及波束合成相关的内容&#xff0c;很早以前已经有过一次&#xff0c;这次把其它的内容总结一下&#xf…

【自定义磨砂动态背景】前端及pyqt6实现

如何实现一个自定义的磨砂动态背景呢&#xff1f; 这种效果看起来特别的高端&#xff0c;很新颖美观。 具体的效果可以看这里的演示&#xff1a;https://www.bilibili.com/video/BV1zj411H7wd/ 其实原理就是底层有多个多彩多边形在移动&#xff0c;然后再盖上一层模糊滤镜。 前…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

通过自然语言处理增强推荐系统:协同方法

一、介绍 自然语言处理 (NLP) 是人工智能的一个分支&#xff0c;专注于使机器能够以有意义且有用的方式理解、解释和响应人类语言。它包含一系列技术&#xff0c;包括情感分析、语言翻译和聊天机器人。 另一方面&#xff0c;推荐系统&#xff08;RecSys&#xff09;是旨在向用户…

机器视觉系统选型-避免畸变

在定位及高精度测量的系统中&#xff0c;镜头畸变的影响尤其重要 • 使用远心镜头 • 进行系统标定

【Unity+AI】SentisAI大模型植入Unity

相关教程 把AI模型放入Unity-手写数字识别【UnitySentis入门-1】_哔哩哔哩_bilibili Unity官方文档创建引擎以运行模型 |森蒂斯 |1.2.0-exp.2 (unity3d.com) 教程转载自&#xff1a;AI Tools for Game Dev 游戏开发人工智能工具/UnitySentis/01-Unity Sentis 入门.md chut…

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则&#xff0c;检测产生潜在性能问题的字符转换代码&#xff0c;并给出相关建议。 在Rus…

机器人制作开源方案 | 森林管理员

​作者&#xff1a;李佳骏、常睿康、张智斌、李世斌、高华耸 单位&#xff1a;山西能源学院 指导老师&#xff1a;赵浩成、郜敏 1. 研究背景 森林作为地球上可再生自然资源及陆地生态的主体&#xff0c;在人类生存和发展的历史中起着不可代替的作用&#xff0c;它不仅能提供…

多功能视频编码标准 H.266/VVC

视频技术的最新进展潜在地增加了对流传输和广播视频内容的需求。在今日 人们依靠视频来相识并建立联系&#xff0c;借助超高清(Ultra High Definition&#xff0c;UHD)、虚 拟现实(Virtual Reality&#xff0c;VR)和 360 全景视频等技术&#xff0c;人们可以在线捕捉并分享最 快…

119. 杨辉三角 II(Java)

给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出: [1,1]提示…

彻底卸载Keil4

彻底卸载Keil4 双击 然后回到该软件的文件夹位置&#xff0c;把该文件夹删除即可&#xff0c;然后清一下回收站。

2024年软考电子商务设计师如何备考?考什么?

一、电子商务设计师概述&#xff1f; 电子商务设计师属于软考中级资格考试&#xff0c;软考是由国家人力资源和社会保障部&#xff08;原人事部&#xff09;、工业和信息化部&#xff08;原信息产业部&#xff09;领导的国家级考试&#xff0c;其目的是&#xff0c;科学、公正…

Hive05_DML 操作

1 DML 数据操作 1.1 数据导入 1.1.1 向表中装载数据&#xff08;Load&#xff09; 1&#xff09;语法 hive> load data [local] inpath 数据的 path [overwrite] into table student [partition (partcol1val1,…)];&#xff08;1&#xff09;load data:表示加载数据 &…

20231225在WIN10下使用SSH连接Ubuntu20.04.6

20231225在WIN10下使用SSH连接Ubuntu20.04.6 2023/12/25 23:03 https://jingyan.baidu.com/article/5552ef479e1856108ffbc9e3.html Win10怎么开启SSH功能 Win10怎么开启SSH功能,下面就一起来看看吧! 工具/原料 华硕天选4 Windows10 方法/步骤 点击左下角的开始菜单,打开Wind…

排序算法中In-place和Out-place

参考链接 排序方式中 In-place 和 Out-place&#xff1a; in-place 占用常数内存&#xff0c;不占用额外内存 假如问题规模是n&#xff0c;在解决问题过程中&#xff0c;只开辟了常数量的空间&#xff0c;与n无关&#xff0c;这是原址操作&#xff0c;就是In-place。 例 &…

【论文阅读】MCANet: Medical Image Segmentation with Multi-Scale Cross-Axis Attention

文章目录 摘要创新点总结实现效果总结 摘要 链接&#xff1a;https://arxiv.org/abs/2312.08866 医学图像分割是医学图像处理和计算机视觉领域的关键挑战之一。由于病变区域或器官的大小和形状各异&#xff0c;有效地捕捉多尺度信息和建立像素间的长距离依赖性至关重要。本文提…

学Java的第三天

一、自增自减运算符 &#xff0c;自增&#xff0c;变量的值加一 --&#xff0c;自减&#xff0c;变量的值减一 和-- 既可以放在变量的后边&#xff0c;也可以放在变量的前边。 单独使用的时候&#xff0c; 和 -- 放在变量的前边还是后边&#xff0c;结果是一样的。 参与操作…

【Hadoop】ZooKeeper数据模型Znode

ZooKeeper 数据模型ZnodeZooKeeper 中的时间ZooKeeper 节点属性 ZooKeeper 数据模型Znode 前面提过&#xff0c;Zookeeper相当于文件系统通知机制。既然是文件系统&#xff0c;那就涉及数据模型。 ZooKeeper 的数据模型在结构上和Unix标准文件系统非常相似&#xff0c;都是采用…

W6100-EVB-Pico评估版介绍

文章目录 1 简介2 硬件资源2.1 硬件规格2.2 引脚定义2.3 工作条件 3 参考资料3.1 Datasheet3.2 原理图3.3 尺寸图&#xff08;尺寸&#xff1a;mm&#xff09;3.4 参考例程 4 硬件协议栈优势 1 简介 W6100-EVB-Pico是一款基于树莓派RP2040和全硬件TCP/IP协议栈以太网芯片W6100的…

IDEA常用快捷键三-----文本选择

目录 1、CtrlA&#xff1a; 全选 2、Shift Left&#xff1a; 向左选择 3、Shift Right: 向右选择 4、CtrlShiftLeft: 向左选择一个单词 5、CtrlShiftRight&#xff1a;向右选择一个单词 6、ShiftLeftFn &#xff1a; 向左选择至行头 7、ShiftRightFn&#xff1a; …