實驗三

一.實驗內容python

  1. 練習 shell 中命令歷史、別名、特殊字符用法(第 4 章 4.2 節~4.5 節)
    2.  shell 命令應用練習(具體見實驗步驟)
  2. 編寫一個 shell 腳本,使用 4 種方式分別執行(具體見實驗步驟)
  3. 結合我的學習進度條,選擇在 linux 環境下進行的新嘗試和新探索
    二.實驗步驟及實驗結論
    1.練習shell中命令歷史、別名、特殊字符用法(第4章4.2節~4.5節)
    2.shell命令應用練習
    (1)經過幫助信息查看,簡述如下文件的用途
    ① /etc/passwd  (提示:經過 man 5 passwd 查看此文件描述說明)
    etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號(:)分隔爲7個字段,其格式和具體含義以下:
    用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登陸Shell
    ② /etc/shadow (提示:經過 man 5 shadow 查看此文件描述說明)
    /etc/shadow文件格式與/etc/passwd文件格式相似,一樣由若干個字段組成,字段之間用「:」隔開。
    文件中字段主要含義爲:
    登陸名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
    ③ /etc/group  (提示:經過 man 5 group 查看此文件描述說明)
    用戶組的全部信息都存放在/etc/group文件中。此文件的格式是由冒號(:)隔開若干個字段,這些字段具體以下:
    組名:口令:組標識號:組內用戶列表
    ④ /etc/gshadow (提示:經過 man 5 gshadow 查看此文件描述說明)
    /etc/gshadow和/etc/group是互補的兩個文件;對於大型服務器,針對不少用戶和組,定製一些關係結構比較複雜的權限模型,設置用戶組密碼是極有必要的。
    組名:口令:組管理者:組內用戶列表
    (2)依次輸入以下命令,觀察運行結果。結合 man id 查看到的幫助信息,指出每一條 命令功能
    ① id     顯示當前用戶id
    ② id -u 顯示用戶id
    ③ id -u root 顯示root的id
    ④ id -u kyo   顯示用戶kyo的id

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

① which python 查看可執行文件的位置
whereis python 查看文件的位置
locate python 配合數據庫查看文件位置
find /usr/bin -name python 實際搜尋硬盤查詢文件名稱
(說明: which, whereis, locate, find 都具備檢索的功能,結合執行結果,查找幫 助信息,總結其區別)linux

② grep  -n  -E  'root|kyo|^user*'  /etc/passwd  (提示:擴展正則表達式)   
grep  -n  -E  ' [[:digit:]] '  /etc/passwd
grep  -n  -E  ' [[:alpha:]] '  /etc/passwd
grep  -n  '[0-9]{4,}'  /etc/group (提示: 在用戶組文件中查找 GID 是 4 位數 及以上的組信息記錄)
(說明:帶選項-E的表示擴展的正則表達式;不帶選項-E的是普通的正則表達式)
[:digit:] 匹配任意一個數字字符
[:alpha:] 匹配任意一個字母字符(包括大小寫字母)



③sudo apt install gimp:安裝軟件gimp
 which gimp:查詢gimp的位置
 sudo apt remove gimp:卸載gimp
 which gimp:查詢gimp的位置,此時已經沒有查詢結果
④ls -dl /root --time-style=long-iso:/root下顯示文件目錄信息,詳細信息,時間按完整的IOS時間格式顯示
 ls -dl /root --time-style=long-iso | cut -d' ' -f1,8:以空格爲分隔符,截取上一條指令中的第一和第八個域
(說明:cut命令的選項-d後引導裏有空格;提示:和前一行對比視察)
git

 ⑤ ls -l --time-style=long-iso,:ls -l 是列出文件的詳細信息,時間設置爲long-iso格式,默認排序
   ls -l --time-style=long-iso -t:在前一條命令的基礎上按時間由近到遠排序
   ls -l --time-style=long-iso -t -r:在前一條命令的基礎上按時間排序,但變爲由遠到近排序



⑥ ls /usr/share/man:顯示/usr/share/man下的目錄
   ls /usr/share/man | grep man[1-8]:在上一條命令的基礎上搜索man1~man8
   ls /usr/share/man/man1:顯示/usr/share/man/man1下的目錄
   file /usr/share/man/man1/ls.1.gz (結合執行結果,review2.8.1 節 gzip命令內容)
   mkdir ~/temp; cp /usr/share/man/man1/ls.1.gz ~/temp:根目錄下建立temp
文件夾,把ls.1.gz複製到temp下
   cd ~/temp; ls:轉到temp目錄下,查看全部文件目錄,此時有後綴.gz
   sudo gzip -d ls.1.gz; ls:解壓並查看目錄,此時.gz消失,說明已經解壓並刪除了壓縮包



正則表達式



統計home目錄下以d開頭的檔的行數


添加用戶

統計home目錄下的用戶行數
(4)根據要求寫出相應的shell命令
① 在目錄/usr/include 下搜索檔 signal.h 是否存在

② 在/usr/include 目錄下的全部檔中查找包含 BUFSIZ 的行,並顯示所在行號。

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

④ 從/etc/group 檔中截取第 1 列(組名)和第 3 列(組 id),並按照組 id 號的數值大小由小到大排序。

(5)
① 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


3.編寫個shell腳本並用四種方式分別執行
(1)方式1: bash < filename
方式2: bash filename [ arguments ]
方式3:  filename
方式4:  .  filename
shell



(2)


三.總結
這次試驗瞭解到了編輯命令時缺乏或者多出一個空格會形成大相徑庭的結果,讓我明白了編寫代碼時要十分細心,不可粗枝大葉。另外在練習2中沒有找到major_code文件,對此不明因此,但願往後學習能夠解決。數據庫

相關文章
相關標籤/搜索