赞
踩
简介
分别盘点一下 shell 中的内置变量,真的巨好用!!!包括:环境变量类、shell 变量类、终端设置类和其他一些变量。
常用的内置变量目录如下
echo $MACHTYPE
echo $OSTYPE
echo $HOSTNAME
echo $HOME
当使用 su 命令切换到另一个用户,也能够识别当前用户的家目录
echo $USER
当使用 su 命令切换到另一个用户,也能够识别当前用户名
echo $SHELL
echo $PWD
如果需要获取脚本的路径,可以这样写
path=$(dirname `realpath ${BASH_SOURCE}`)
状态码的范围是 0~255
- 0: 表示命令成功执行。
- 1-125: 表示命令执行失败或出现错误。
- 126: 表示命令不可执行。可能是因为权限不足或命令无法找到等原因。
- 127: 表示命令未找到。通常是因为找不到执行的命令或脚本。
- 128+: 表示命令因为收到了一个信号而退出。
- 130: 表示命令因为收到了 SIGINT 信号而中断。类似于键盘上按下 Ctrl+C 中断命令的情况。
- 137: 表示命令因为收到了 SIGKILL 信号而被终止。
- 255: 表示状态码超出了范围。
echo $0
echo $$
echo $PPID
我们来查询一下脚本自己的 PID 和父 ID
- echo "父ID: $PPID, 自己PID: $$"
- ps -ef |grep $PPID |grep -v grep
设置字段分隔符
- 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
比如我当前的提示是这样的
【用户名】【主机名】【目录名】
查看一下当前的设置
我们来自定义设置一下
【案例一】显示用户名、主机名和工作目录
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:将光标向左移动一格。
先看一下默认的多行提示符
设置多行提示符
export PS2=">>> "
echo $COLUMNS
手动调整终端宽度也会使变量发生变化
通过获取终端宽度 ,可以根据情况输出满屏的字符。
perl -E "say '=' x ${COLUMNS}"
echo ${LINES}
根据当前高度获取
通过获取终端高度,输出满屏的符号
for ((i=1; i<=LINES; i++));do perl -E "say '-' x ${COLUMNS}" ;done
如果想控制随机数在 0~100,试试取余的方法
echo $((RANDOM % 100))
- sleep 3
- echo $SECONDS
如果直接在终端输出,则显示终端启动的秒数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。