Linux特殊變量與路徑使用及說(shuō)明
一. 特殊變量
1.1 shell相關(guān)
查看當(dāng)前shell解釋器的路徑
apluser@FengYeHong-HP:~$ echo "$SHELL" /bin/bash apluser@FengYeHong-HP:~$ echo "$BASH" /bin/bash
查看當(dāng)前bash的版本號(hào)
apluser@FengYeHong-HP:~$ echo "$BASH_VERSION" 5.1.16(1)-release
1.2 登錄用戶(hù)名和服務(wù)器名
登錄用戶(hù)名
apluser@FengYeHong-HP:~$ echo "$USER" apluser apluser@FengYeHong-HP:~$ echo "$LOGNAME" apluser apluser@FengYeHong-HP:~$ id -un apluser
登錄服務(wù)器名
apluser@FengYeHong-HP:~$ echo "$NAME" FengYeHong-HP apluser@FengYeHong-HP:~$ hostname FengYeHong-HP
1.3 路徑相關(guān)
用戶(hù)家目錄
apluser@FengYeHong-HP:~$ echo "$HOME" /home/apluser apluser@FengYeHong-HP:~$ echo ~ /home/apluser
當(dāng)前工作目錄
apluser@FengYeHong-HP:~$ echo "$PWD" /home/apluser apluser@FengYeHong-HP:~$ echo ~+ /home/apluser
可執(zhí)行文件的搜索路徑 → $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 隨機(jī)數(shù)
apluser@FengYeHong-HP:~$ echo "$RANDOM" | md5sum | cut -c 1-8 3abe73c4
1.5$符號(hào)系列
| 變量 | 含義 |
|---|---|
| $0 | 當(dāng)前腳本的文件名(含路徑)。在命令行執(zhí)行時(shí)就是命令本身。 |
| $n | 第 n 個(gè)參數(shù)(如 $1 表示第一個(gè)參數(shù))。 |
| $# | 傳入腳本的參數(shù)個(gè)數(shù)。 |
| $* | 傳入的所有參數(shù),作為一個(gè)整體字符串。 |
| $@ | 傳入的所有參數(shù),每個(gè)參數(shù)獨(dú)立展開(kāi)。 |
| $$ | 當(dāng)前 Shell 的進(jìn)程 ID (PID)。 |
| $! | 最近一次在后臺(tái)執(zhí)行的命令的 PID。 |
| $? | 最近一條命令的返回狀態(tài)(0 表示成功,非 0 表示失?。?。 |
| $_ | 上一條命令的最后一個(gè)參數(shù)。 |
| $- | 當(dāng)前 Shell 的選項(xiàng)標(biāo)志。 |
1.6 其他
$SECONDS:查看當(dāng)前終端啟動(dòng)的時(shí)間
apluser@FengYeHong-HP:~$ echo "$SECONDS" 2234
$LINENO:查看在當(dāng)前腳本中的行號(hào)
apluser@FengYeHong-HP:~$ echo "當(dāng)前所在的行是: $LINENO" 當(dāng)前所在的行是: 76
$OSTYPE:查看當(dāng)前環(huán)境的類(lèi)型(git bash 還是 linux)
# git for bash $ echo "$OSTYPE" msys # linux apluser@FengYeHong-HP:~$ echo "$OSTYPE" linux-gnu
二. 路徑
2.1/dev/null
/dev/null 在 Linux(以及類(lèi) Unix 系統(tǒng))里是一個(gè) 特殊設(shè)備文件,常被稱(chēng)為 黑洞 或 位桶 (bit bucket)。它的主要作用是:
丟棄輸出,往 /dev/null 寫(xiě)入的所有數(shù)據(jù)都會(huì)被直接丟棄,不會(huì)保存也不會(huì)報(bào)錯(cuò)。
echo "hello" > /dev/null
清空文件
cat /dev/null > file.txt
把不需要的標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯(cuò)誤重定向到 /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> 表示 標(biāo)準(zhǔn)錯(cuò)誤輸出 重定向到 /dev/null # 如果 ls /root 成功 → 會(huì)顯示目錄內(nèi)容 # 如果失敗(比如沒(méi)有權(quán)限) → 錯(cuò)誤信息丟到 /dev/null # 也就是說(shuō):成功時(shí)會(huì)輸出內(nèi)容,但是失敗時(shí)不會(huì)顯示內(nèi)容 ls /root 2> /dev/null # > /dev/null → 把 標(biāo)準(zhǔn)輸出 丟棄 # 2>&1 → 把 標(biāo)準(zhǔn)錯(cuò)誤 也重定向到 標(biāo)準(zhǔn)輸出,而標(biāo)準(zhǔn)輸出已經(jīng)被丟到 /dev/null # 無(wú)論成功還是失敗 → 任何輸出都丟掉,終端上一點(diǎn)東西都不會(huì)顯示 ls /root > /dev/null 2>&1
if printenv USERNAME > /dev/null 2>&1; then echo "環(huán)境變量 USERNAME 存在" else echo "環(huán)境變量 USERNAME 不存在" fi
> /dev/null:丟掉正常輸出2>&1:丟掉錯(cuò)誤輸出- 在 Bash 里,
if并不是判斷輸出結(jié)果,而是判斷命令的退出狀態(tài)碼 ($?) 0表示成功(條件成立),非0表示失敗(條件不成立)
printenv 用來(lái)打印環(huán)境變量
- 如果環(huán)境變量
USERNAME存在,就會(huì)輸出它的值,并返回狀態(tài)碼 0。 - 如果環(huán)境變量不存在,就會(huì)返回狀態(tài)碼 非 0
- 因?yàn)槲覀兪褂?code>/dev/null 2>&1來(lái)丟棄標(biāo)準(zhǔn)和錯(cuò)誤輸出,因此即使變量不存在也不會(huì)報(bào)錯(cuò)。
2.2/dev/urandom
獲取隨機(jī)數(shù)的路徑,必須指定要獲取的范圍
apluser@FengYeHong-HP:~$ cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 12 KdBX3jPgX9EC
2.3 查看服務(wù)器的發(fā)行版
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下的系統(tǒng)路徑
| 路徑 | 作用 |
|---|---|
| /etc/os-release | 當(dāng)前發(fā)行版信息。 |
| /etc/passwd | 用戶(hù)賬號(hào)信息。 |
| /etc/group | 用戶(hù)組信息。 |
| /etc/hosts | 主機(jī)名解析。 |
| /etc/resolv.conf | DNS 配置。 |
| /etc/fstab | 文件系統(tǒng)掛載表。 |
| /etc/shadow | 用戶(hù)密碼哈希(僅 root 可讀) |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
樹(shù)莓派搭建nas服務(wù)器的詳細(xì)過(guò)程
這篇文章主要介紹了樹(shù)莓派搭建nas服務(wù)器的教程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
Linux下如何清理系統(tǒng)緩存并釋放內(nèi)存
Linux清理系統(tǒng)緩存需先執(zhí)行sync確保數(shù)據(jù)寫(xiě)入磁盤(pán),再使用drop_caches(0-3)釋放內(nèi)存,最后用free -h查看效果,以釋放內(nèi)存并提升系統(tǒng)響應(yīng)2025-07-07
在Ubuntu 16.10安裝mysql workbench報(bào)未安裝軟件包 libpng12-0錯(cuò)誤的解決方法
這篇文章主要介紹了在Ubuntu 16.10安裝mysql workbench報(bào)未安裝軟件包 libpng12-0錯(cuò)誤的解決方法的相關(guān)資料,需要的朋友可以參考下2016-11-11
Linux系統(tǒng)下利用C程序輸出某進(jìn)程的內(nèi)存占用信息
這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)下利用C程序輸出某進(jìn)程的內(nèi)存占用信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來(lái)一起看看吧。2017-12-12
Apache Pulsar 微信大流量實(shí)時(shí)推薦場(chǎng)景下實(shí)踐詳解
這篇文章主要為大家介紹了Apache Pulsar 微信大流量實(shí)時(shí)推薦場(chǎng)景下實(shí)踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

