1. 程式人生 > >Linux實驗三: shell 編程(1)

Linux實驗三: shell 編程(1)

linu 輸入 which pass 解釋 文件的時間 幫助 用戶信息 普通用戶

  1. hell 命令應用練習

① /etc/passwd ‘

etc/passwd 為每個用戶賬戶包含一行,包含使用冒號 (“:”)分隔的七個字段,分別是:登錄名,選的加密後的密碼,字用戶ID ,字組 ID ,戶名和註釋字段, 用戶主目錄,可選的用戶命令解釋器

② /etc/shadow

shadow是一個文件,它包含系統賬戶的密碼信息和可選的年齡信息。 如果沒有維護好密碼安全,此文件絕對不能讓普通用戶可讀。

③ /etc/group

文件是用戶組的配置文件,內容包括用戶和用戶組,並且能顯示出用戶是歸屬哪個用戶組或哪幾個用戶組,因為一個用戶可以歸屬一個或多個不同的用戶組;同一用戶組的用戶之間具有相似的特征。

④ /etc/gshadow 、

/etc/gshadow 包含影子化了的組賬戶信息。如果沒有維護好密碼安全,此文件絕對不能讓普通用戶可讀。

(2)依次輸入如下命令,觀察運行結果。結合 man id 查看到的幫助信息,指出每一條 命令功能

① Id 顯示真實有效的用戶ID(UID)和組ID(GID)

② id -u 顯示用戶id

③ id -u root 顯示root用戶id

④ id -u Jiang 顯示jiang的id

(3)在 shell 命令終端依次輸入以下命令,觀察執行結果,理解每條命令實現的具體功能

① which python which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。

whereis python查看文件的位置

locate python 配合數據庫查看文件位置

find/usr/bin -name python 實際搜尋硬盤查詢文件名稱

技術分享圖片

技術分享圖片

③ grep -n -E ‘root|jiang|^user*‘ /etc/passwd

在/etc/passwd 中查找以root或者jiang開頭的行

技術分享圖片

grep -n -E ‘ [[:digit:]] ‘ /etc/passwd

在/etc/passwd 中查找含有的數字

技術分享圖片

grep -n -E ‘ [[:alpha:]] ‘ /etc/passwd

在/etc/passwd 中查找含有的字母

技術分享圖片

grep -n ‘[0-9]\{4,\}‘ /etc/group (提示: 在用戶組文件中查找 GID 是 4

技術分享圖片

sudo apt install gimp:安裝gimp軟件

技術分享圖片

which gimp查找gimp 的位置

sudo apt remove gimp 卸載gimp

which gimp 再查找gimp的位置,找不到

④ ls -dl /root --time-style=long-iso

ls -dl /root --time-style=long-iso | cut -d‘ ‘ -f1,8

技術分享圖片

⑤ ls -l --time-style=long-iso

將文件的時間按long-ios的形式進行列出

技術分享圖片

ls -l --time-style=long-iso -t

將文件按時間的修改時間順序列出

技術分享圖片

ls -l --time-style=long-iso -t -r

按上面的時間逆序排列

技術分享圖片

⑥ ls /usr/share/man 查看該目錄

ls /usr/share/man | grep man[1-8] 搜索該目錄下是否有man1-8

ls /usr/share/man/man1 查看man1目錄

file /usr/share/man/man1/ls.1.gz 查看該文件信息

mkdir ~/temp; cp /usr/share/man/man1/ls.1.gz ~/temp 創建一個temp的目錄,將ls.1.gz復制到該目錄下

cd ~/temp; ls 轉到temp目錄下並查看

sudo gzip -d ls.1.gz; ls 解壓並查看文件目錄

技術分享圖片

⑦ ls –l /home | grep "^d" | wc –l

⑧ sudo adduser user7 創建user用戶

ls /home | tee users | wc –l 查找用戶並統計數目

技術分享圖片

(4)根據要求寫出相應的 shell 命令 ① 在目錄/usr/include 下搜索文件 signal.h 是否存在

技術分享圖片

② 在/usr/include 目錄下的所有文件中查找包含 BUFSIZ 的行,並顯示所在行號。 要求:屏幕上只顯示查找到的結果,過濾錯誤信息。

技術分享圖片

③ 在用戶名密碼文件/etc/passwd 中查找登錄 shell 為 bash 的用戶信息記錄,並顯 示行號

技術分享圖片

④ 從/etc/group 文件中截取第 1 列(組名)和第 3 列(組 id),並按照組 id 號的數 值大小由小到大排序。(提示:綜合使用 cut, 管道線及 sort 命令)

技術分享圖片

(5)體驗 awk, sed 用法:依次執行命令,觀察執行結果

① cp /etc/apt/sources.list t1; less t1

技術分享圖片

② sed -e "s/#.*//g" t1

技術分享圖片

③ sed -e "s/#.*//g" t1 | awk ‘{if (length != 0) print $0}‘

技術分享圖片

④ tail -5 /etc/passwd | awk -F: ‘{print $1}‘

技術分享圖片

⑤ tail -5 /etc/group | tee t2

awk ‘BEGIN{print "file t2"} {print "line" NR ":" $0} END {print "over"}‘ t2

技術分享圖片

(6)查閱網絡或幫助,體驗命令 curl 和 wget 用法。

① 命令工具 curl 功能,截圖顯示自己嘗試的練習,並作必要陳述說明

技術分享圖片

② 命令工具 wget 功能,截圖顯示自己嘗試的練習,並作必要陳述說明

技術分享圖片

(1) 練習 1

技術分享圖片

(2) 練習2

技術分享圖片

Linux實驗三: shell 編程(1)