Linux 指令碼的基礎練習

2021-10-08 22:43:06 字數 1791 閱讀 8731

指令碼:

1.在/fed目錄中批量建立10個檔案,檔名由10個隨機小寫字母+固定字元組成.固定字元 為_html, 如:ahdkhzhdld_html。

2.將上述目錄中的檔案重新命名,將 html 換成 html。

3.僅保留上述目錄中最新的檔案,其它檔案都刪除掉。

感覺自己寫得太繁雜。。。

#!/bin/bash

#定義乙個隨機生成10個字母的函式

function genletters()do

num=$[

$random

%26 ]

one_letters=$

#變數切片

name=$name

$one_letters

done

echo

$name

}echo

"正在建立檔案..."

sleep 2

#開始建立檔案

for j in

do touch /fed/$(genletters)_html

done

echo

"檔案建立完畢!結果如下:"

ls/fed/

#直接展示第一步結果

sleep 5

echo

"開始重新命名檔案...."

sleep 1

find /fed/

-name "*html" > /fed/oldname #將舊檔名寫入檔案

find /fed/

-name "*html"

|sed 's/html/html/g' > /fed/newname #將新檔名寫入檔案

#開始重新命名

for i in

do#使用awk每次各讀取乙個檔名

old_name=`awk 'nr=='

$i''

/fed/oldname`

new_name=`awk 'nr=='

$i''

/fed/newname`

mv$old_name

$new_name

done

echo

"重新命名完畢!結果如下:"

ls/fed/

#直接展示第二步結果

sleep 5

echo

"正在刪除舊檔案..."

sleep 1

ls-l /fed/

|awk 'nr!=1' >/tmp/all_file_name #將所有檔名寫入新的資料夾

total=`cat

/tmp/all_file_name |wc -l` #統計乙個有多少個檔案

newestfile=/fed/newname #這個是最新的檔案,因為他在上面的迴圈中最後被呼叫

for i in `seq 1 $total`

do file_name=/fed/`sed -n "$p"

/tmp/all_file_name` #逐個取出檔名

test $file_name

-ot $newestfile

#檢查是否比最新的檔案要舊

result=`echo $?` #如果返回0,則比最新的檔案要舊

[$result

-eq 0 ]&& rm

-rf $file_name && echo

"已刪除$file_name"

done

echo

"舊檔案刪除完畢!結果如下:"

ls/fed/

#直接展示第三步結果

Linux 指令碼練習1

一 統計出 etc passwd檔案中其預設shell為非 sbin nologin的使用者個數,並將使用者都顯示出來 二 查出使用者uid最大值的使用者名稱 uid及shell型別 三 統計當前連線本機的每個遠端主機ip的連線數,並按從大到小排序 四 編寫指令碼 createuser.sh,實現如...

shell指令碼基礎練習題

1.設計乙個 shell 程式,新增乙個新組為 class1,然後新增屬於這個組的 30 個使用者,使用者名稱的形式為stuxx,其中 xx 從 01 到 30。在 tmp目錄下新建乙個shell指令碼std.sh root localhost tmp vim std.sh bin bash 新增乙...

Linux基礎練習一

1.建立乙個目錄檔案 data。解答 方法一 root test cd 相對路徑 root test mkdir data 方法二 絕對路徑 root test mkdir data 方法三 封號 多個命令的分隔符 root test cd mkdir data mkdir mkdir 2.在 da...