Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux特殊变量与路径

Linux特殊变量与路径使用及说明

作者:fengyehongWorld

这篇文章主要介绍了Linux特殊变量与路径使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一. 特殊变量

1.1 shell相关

查看当前shell解释器的路径

apluser@FengYeHong-HP:~$ echo "$SHELL"
/bin/bash
apluser@FengYeHong-HP:~$ echo "$BASH"
/bin/bash

查看当前bash的版本号

apluser@FengYeHong-HP:~$ echo "$BASH_VERSION"
5.1.16(1)-release

1.2 登录用户名和服务器名

登录用户名

apluser@FengYeHong-HP:~$ echo "$USER"
apluser
apluser@FengYeHong-HP:~$ echo "$LOGNAME"
apluser
apluser@FengYeHong-HP:~$ id -un
apluser

登录服务器名

apluser@FengYeHong-HP:~$ echo "$NAME"
FengYeHong-HP
apluser@FengYeHong-HP:~$ hostname
FengYeHong-HP

1.3 路径相关

用户家目录

apluser@FengYeHong-HP:~$ echo "$HOME"
/home/apluser
apluser@FengYeHong-HP:~$ echo ~
/home/apluser

当前工作目录

apluser@FengYeHong-HP:~$ echo "$PWD"
/home/apluser
apluser@FengYeHong-HP:~$ echo ~+
/home/apluser

可执行文件的搜索路径 → $PATH

apluser@FengYeHong-HP:~$ echo "$PATH" | xargs -d ':' -L 1 | head
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/usr/lib/wsl/lib

1.4 随机数

apluser@FengYeHong-HP:~$ echo "$RANDOM" | md5sum | cut -c 1-8
3abe73c4

1.5$符号系列

变量含义
$0当前脚本的文件名(含路径)。在命令行执行时就是命令本身。
$n第 n 个参数(如 $1 表示第一个参数)。
$#传入脚本的参数个数。
$*传入的所有参数,作为一个整体字符串。
$@传入的所有参数,每个参数独立展开。
$$当前 Shell 的进程 ID (PID)。
$!最近一次在后台执行的命令的 PID。
$?最近一条命令的返回状态(0 表示成功,非 0 表示失败)。
$_上一条命令的最后一个参数。
$-当前 Shell 的选项标志。

1.6 其他

$SECONDS:查看当前终端启动的时间

apluser@FengYeHong-HP:~$ echo "$SECONDS"
2234

$LINENO:查看在当前脚本中的行号

apluser@FengYeHong-HP:~$ echo "当前所在的行是: $LINENO"
当前所在的行是: 76

$OSTYPE:查看当前环境的类型(git bash 还是 linux)

# git for bash
$ echo "$OSTYPE"
msys

# linux
apluser@FengYeHong-HP:~$ echo "$OSTYPE"
linux-gnu

二. 路径

2.1/dev/null

/dev/null 在 Linux(以及类 Unix 系统)里是一个 特殊设备文件,常被称为 黑洞位桶 (bit bucket)。它的主要作用是:

丢弃输出,往 /dev/null 写入的所有数据都会被直接丢弃,不会保存也不会报错。

echo "hello" > /dev/null

清空文件

cat /dev/null > file.txt

把不需要的标准输出或标准错误重定向到 /dev/null

apluser@FengYeHong-HP:~$ ls /root
ls: cannot open directory '/root': Permission denied
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ls /root > /dev/null
ls: cannot open directory '/root': Permission denied
apluser@FengYeHong-HP:~$
apluser@FengYeHong-HP:~$ ls /root > /dev/null 2>&1
apluser@FengYeHong-HP:~$ echo "$?"
2
# 2> 表示 标准错误输出 重定向到 /dev/null
# 如果 ls /root 成功 → 会显示目录内容
# 如果失败(比如没有权限) → 错误信息丢到 /dev/null
# 也就是说:成功时会输出内容,但是失败时不会显示内容
ls /root 2> /dev/null

# > /dev/null → 把 标准输出 丢弃
# 2>&1 → 把 标准错误 也重定向到 标准输出,而标准输出已经被丢到 /dev/null
# 无论成功还是失败 → 任何输出都丢掉,终端上一点东西都不会显示
ls /root > /dev/null 2>&1
if printenv USERNAME > /dev/null 2>&1; then
  echo "环境变量 USERNAME 存在"
else
  echo "环境变量 USERNAME 不存在"
fi

printenv 用来打印环境变量

2.2/dev/urandom

获取随机数的路径,必须指定要获取的范围

apluser@FengYeHong-HP:~$ cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 12
KdBX3jPgX9EC

2.3 查看服务器的发行版

apluser@FengYeHong-HP:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

2.4/etc下的系统路径

路径作用
/etc/os-release当前发行版信息。
/etc/passwd用户账号信息。
/etc/group用户组信息。
/etc/hosts主机名解析。
/etc/resolv.confDNS 配置。
/etc/fstab文件系统挂载表。
/etc/shadow用户密码哈希(仅 root 可读)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文