文章目錄
- 一、實驗目的
- 二、實驗環境
- 三、實驗內容
- 3.1 Shell變量與腳本基礎
- 3.2 定制終端提示符(PS1變量)
- 3.3 文件查找與類型確認(find命令)
- 3.4 管道命令實戰(用戶登錄統計)
- 3.5 交互式備份壓縮腳本
- 四、總結
- 4.1 問題與解決
- 4.2 實驗收獲
一、實驗目的
- 掌握Shell變量賦值與
echo
命令的使用,實現字符串拼接與輸出。 - 學習通過修改
PS1
環境變量定制終端提示符(路徑、日期、時間等)。 - 熟練使用
find
命令查找文件并確認類型。 - 理解管道機制,結合
who
、grep
、wc
等命令統計用戶登錄信息。 - 編寫交互式Shell腳本,實現目錄備份壓縮功能(支持gzip/bzip2選擇)。
二、實驗環境
- 虛擬機平臺:VMware Workstation
- 操作系統:Red Hat Linux
- 輔助工具:
vi
文本編輯器、rpm
包管理器(用于安裝中文輸入法zhcon
)
三、實驗內容
3.1 Shell變量與腳本基礎
- 變量賦值與輸出
name="xxx" is="是" class="網安22xx" echo "$name$is$class的學生" # 輸出:黃羽悅是網安2211的學生
- 腳本文件創建
使用vi mysh
編寫腳本,內容如下:
賦予執行權限并運行:#!/bin/bash name="xxx" is="是" class="網安22xx" echo "$name$is$class的學生"
chmod +x mysh ./mysh # 正確輸出結果
3.2 定制終端提示符(PS1變量)
- 臨時修改示例
PS1='\w$ ' # 當前路徑作為提示符 PS1='$(date +%F)$ ' # 當前日期(YYYY-MM-DD) PS1='$(date +%T)$ ' # 當前時間(HH:MM:SS)
- 永久修改
編輯~/.bashrc
,添加:
執行PS1='\w$(if [ $UID -eq 0 ]; then echo "#"; else echo "$"; fi) '
source ~/.bashrc
生效。
3.3 文件查找與類型確認(find命令)
find / -name passwd 2>/dev/null | while read file; do file "$file" # 輸出文件類型(如"/etc/passwd: ASCII text")
done
3.4 管道命令實戰(用戶登錄統計)
- 創建用戶:
useradd abc && echo "123456" | passwd --stdin abc
- 遠程登錄用戶數(結果為1):
who | grep "pts/" | wc -l
- 虛擬控制臺登錄的abc用戶數(結果為2):
who | grep "abc" | grep -v "pts/" | wc -l
3.5 交互式備份壓縮腳本
#!/bin/bash
read -p "選擇壓縮方式(1:gzip,2:bzip2):" choice
read -p "輸入備份目錄路徑:" source_dir
read -p "輸入備份文件名:" backup_file case $choice in 1) tar -czvf "$backup_file.tar.gz" "$source_dir" ;; 2) tar -cjvf "$backup_file.tar.bz2" "$source_dir" ;; *) echo "選擇錯誤!" && exit 1 ;;
esac
echo "壓縮完成,文件路徑:${backup_file}.tar.${choice:==1?gz:bz2}"
四、總結
4.1 問題與解決
-
中文輸入法安裝失敗
- 原因:虛擬機未聯網,無法直接下載安裝包。
- 解決:通過主機下載
zhcon-0.2.6-29.fc24.x86_64.rpm
后,使用共享文件夾傳輸至虛擬機,執行rpm -ivh
安裝。
-
腳本權限錯誤
- 原因:誤將
chmod +x
寫成chmod -x
(移除執行權限)。 - 解決:重新賦予權限
chmod +x mysh
。
- 原因:誤將
4.2 實驗收獲
- 深入理解Shell變量作用域與腳本執行機制,掌握
echo
、find
、who
等基礎命令的組合使用。 - 通過
PS1
變量定制,學會靈活調整終端交互界面,提升操作效率。 - 管道機制的實戰應用讓我認識到Linux命令行“小工具組合大功能”的設計哲學。
- 交互式腳本的編寫初步體驗了Shell在系統管理自動化中的價值,后續需進一步學習條件判斷、函數封裝等高級特性。
結論:本次實驗通過理論與實踐結合,夯實了Linux Shell基礎,為后續網絡安全與系統管理課程奠定了重要基礎。