【Shell的基本操作】

文章目錄

    • 一、實驗目的
    • 二、實驗環境
    • 三、實驗內容
      • 3.1 Shell變量與腳本基礎
      • 3.2 定制終端提示符(PS1變量)
      • 3.3 文件查找與類型確認(find命令)
      • 3.4 管道命令實戰(用戶登錄統計)
      • 3.5 交互式備份壓縮腳本
    • 四、總結
      • 4.1 問題與解決
      • 4.2 實驗收獲

一、實驗目的

  1. 掌握Shell變量賦值與echo命令的使用,實現字符串拼接與輸出。
  2. 學習通過修改PS1環境變量定制終端提示符(路徑、日期、時間等)。
  3. 熟練使用find命令查找文件并確認類型。
  4. 理解管道機制,結合whogrepwc等命令統計用戶登錄信息。
  5. 編寫交互式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 問題與解決

  1. 中文輸入法安裝失敗
    在這里插入圖片描述

    • 原因:虛擬機未聯網,無法直接下載安裝包。
    • 解決:通過主機下載zhcon-0.2.6-29.fc24.x86_64.rpm后,使用共享文件夾傳輸至虛擬機,執行rpm -ivh安裝。
  2. 腳本權限錯誤
    在這里插入圖片描述

    • 原因:誤將chmod +x寫成chmod -x(移除執行權限)。
    • 解決:重新賦予權限chmod +x mysh

4.2 實驗收獲

  • 深入理解Shell變量作用域與腳本執行機制,掌握echofindwho等基礎命令的組合使用。
  • 通過PS1變量定制,學會靈活調整終端交互界面,提升操作效率。
  • 管道機制的實戰應用讓我認識到Linux命令行“小工具組合大功能”的設計哲學。
  • 交互式腳本的編寫初步體驗了Shell在系統管理自動化中的價值,后續需進一步學習條件判斷、函數封裝等高級特性。

結論:本次實驗通過理論與實踐結合,夯實了Linux Shell基礎,為后續網絡安全與系統管理課程奠定了重要基礎。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80114.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

快速選擇算法:優化大數據中的 Top-K 問題

在處理海量數據時,經常會遇到這樣的需求:找出數據中最大的前 K 個數,而不必對整個數據集進行排序。這種場景下,快速選擇算法(Quickselect)就成了一個非常高效的解決方案。本文將通過一個 C 實現的快速選擇算…

AQS 基本思想與源碼分析

充分了解 AbstractQueuedSynchronizer 對于深入理解并發編程是有益處的,它是用來構建鎖或者其他同步組件的基礎框架,我們常用的同步工具類如 CountDownLatch、Semaphore、ThreadPoolExecutor、ReentrantLock 和 ReentrantReadWriteLock 內部都用到了它。…

理解位圖算法:使用 C++ 實現高效數據查重

在處理海量數據時,我們常常需要檢查某個元素是否已經存在于集合中。傳統的方法如哈希表或集合容器雖然有效,但在數據量極大的情況下會占用大量內存。這時,位圖算法 (Bitmap) 就成為了一種非常高效的解決方案。本文將通過分析一段使用位圖算法…

數學復習筆記 12

前言 現在做一下例題和練習題。矩陣的秩和線性相關。另外還要復盤前面高數的部分的內容。奧,之前矩陣的例題和練習題,也沒有做完,行列式的例題和練習題也沒有做完。累加起來了。以后還是得學一個知識點就做一個部分的內容,日拱一…

1-10 目錄樹

在ZIP歸檔文件中,保留著所有壓縮文件和目錄的相對路徑和名稱。當使用WinZIP等GUI軟件打開ZIP歸檔文件時,可以從這些信息中重建目錄的樹狀結構。請編寫程序實現目錄的樹狀結構的重建工作。 輸入格式: 輸入首先給出正整數N(≤104)…

Python爬蟲實戰:研究 RPC 遠程調用機制,實現逆向解密

1. 引言 在網絡爬蟲技術的實際應用中,目標網站通常采用各種加密手段保護其數據傳輸和業務邏輯。這些加密機制給爬蟲開發帶來了巨大挑戰,傳統的爬蟲技術往往難以應對復雜的加密算法。逆向解密作為一種應對策略,旨在通過分析和破解目標網站的加密機制,獲取原始數據。 然而,…

debugfs:Linux 內核調試的利器

目錄 一、什么是 debugfs?二、debugfs 的配置和啟用方式2.1 內核配置選項2.2 掛載 debugfs2.3 Android 系統中的 debugfs 三、debugfs 的典型應用場景3.1 調試驅動開發3.2 內核子系統調試3.3 性能分析 四、常見 debugfs 子目錄與功能示例4.1 /sys/kernel/debug/trac…

lua 作為嵌入式設備的配置語言

從lua的腳本中獲取數據 lua中棧的索引 3 | -1 2 | -2 1 | -3 可以在lua的解釋器中加入自己自定的一些功能,其實沒啥必要,就是為了可以練習下lua

棋牌室臺球室快速接入美團團購接口

北極星平臺從2024年12月份開始慢慢關閉,現在很多開發者反饋北極星token已經不能刷新了,全部遷移到美團團購綜合平臺。 申請這個平臺要求很高 1、保證金費用要15萬起步 2、平臺必須是二級等保和安全產品 ,一個二級等保費用10萬起步 所以很多…

開源輕量級地圖解決方案leaflet

Leaflet 地圖:開源輕量級地圖解決方案 Leaflet 是一個開源的 JavaScript 庫,用于在網頁中嵌入交互式地圖。它以輕量級、靈活性和易用性著稱,適用于需要快速集成地圖功能的項目。以下是關于 Leaflet 的詳細介紹和使用指南。 1. Leaflet 的核心…

一個批量文件Dos2Unix程序(Microsoft Store,開源)1.1.0 編碼檢測和預覽

之前的版本是個意思意思,驗證商店發布的(其實是我以前自己用的工具),這次把格式檢查和轉換都做上了,功能應該差不多了,還有一些需要小改進的地方。 因為還沒什么用戶嘛,還是保持全功能免費試用。…

特征提取:如何從不同模態中獲取有效信息?

在多模態學習中,不同模態(文本、圖像、語音、視頻、傳感器數據等)所攜帶的信息豐富且互補。但不同模態的數據結構、表示空間、時空分布截然不同,因此,如何對各模態進行高效、有效的特征提取,是整個多模態學…

Go語言爬蟲系列教程 實戰項目JS逆向實現CSDN文章導出教程

爬蟲實戰:JS逆向實現CSDN文章導出教程 在這篇教程中,我將帶領大家實現一個實用的爬蟲項目:導出你在CSDN上發布的所有文章。通過分析CSDN的API請求簽名機制,我們將繞過平臺限制,獲取自己的所有文章內容,并以…

交叉熵損失函數,KL散度, Focal loss

交叉熵損失函數(Cross-Entropy Loss) 交叉熵損失函數,涉及兩個概念,一個是損失函數,一個是交叉熵。 首先,對于損失函數。在機器學習中,損失函數就是用來衡量我們模型的預測結果與真實結果之間…

149.WEB滲透測試-MySQL基礎(四)

免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動! 內容參考于: 易錦網校會員專享課 上一個內容:148.WEB滲透測試-MySQL基礎(三) 非關系型數據庫: &a…

c/c++中程序內存區域的劃分

c/c程序內存分配的幾個區域: 1.棧區:在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放,棧內存分配運算內置于處理器的指令集中,效率很高但是分配的內存容量有…

構建穩定的金字塔模式生態:從自然法則到系統工程

在自然界中,金字塔結構廣泛存在于生態系統之中,表現為營養級能量金字塔、生物量金字塔和數量金字塔等形式。這種結構不僅形象地描述了生態能量流轉的規律,也體現出生態系統中“穩定性”與“層級性”的天然法則。在現代軟件架構、企業組織、平…

Vue 3.0雙向數據綁定實現原理

Vue3 的數據雙向綁定是通過響應式系統來實現的。相比于 Vue2,Vue3 在響應式系統上做了很多改進,主要使用了 Proxy 對象來替代原來的 Object.defineProperty。本文將介紹 Vue3 數據雙向綁定的主要特點和實現方式。 1. 響應式系統 1.1. Proxy對象 Vue3 …

TIP-2021《SRGAT: Single Image Super-Resolution With Graph Attention Network》

推薦深藍學院的《深度神經網絡加速:cuDNN 與 TensorRT》,課程面向就業,細致講解CUDA運算的理論支撐與實踐,學完可以系統化掌握CUDA基礎編程知識以及TensorRT實戰,并且能夠利用GPU開發高性能、高并發的軟件系統&#xf…

大語言模型與多模態模型比較

一、核心差異:輸入數據類型與模態融合 輸入數據類型 LLM:僅處理文本數據,例如文本分類、機器翻譯、問答等任務,通過大規模語料庫學習語言規律。 LMM:支持文本、圖像、音頻、視頻等多種模態輸入,例如根據圖…