Shell腳本練習

一、寫一個腳本,完成以下功能bash

   (1) 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在;ide

   (2) 若是存在,則顯示此設備上的全部分區信息;函數

#!/bin/bash
#
# finddev.sh
# 傳遞一個磁盤設備文件路徑給腳本,判斷此設備是否存在
# 若是存在,則顯示此設備上的全部分區信息

if [ $# -ge 1 ];then
  for dev in $@;do
    if [ -b $dev ];then
        fdisk -l $dev
    else
        errdev=$errdev" "$dev
    fi
  done
  [[ $(echo $errdev | wc -c) -gt 1 ]] && echo -e "\n============如下設備不存在==============\n$errdev"
else
  echo "請輸入一個存在的磁盤設備"
fi


腳本測試工具

[root@localhost script]# bash finddev.sh 
請輸入一個存在的磁盤設備

[root@localhost script]# bash finddev.sh /dev/adb /dev/ma

============如下設備不存在==============
 /dev/adb /dev/ma
 
[root@localhost script]# bash finddev.sh /dev/sda

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0004d0da

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       10444    83373056   8e  Linux LVM


二、寫一個腳本,完成以下功能測試

  傳遞一個參數給腳本,此參數爲gzip、bzip2或者xz三者之一;ui

  (1) 若是參數1的值爲gzip,則使用tar和gzip歸檔壓縮/etc目錄至/backups目錄中,並命名爲/backups/etc-20160613.tar.gz;rest

  (2) 若是參數1的值爲bzip2,則使用tar和bzip2歸檔壓縮/etc目錄至/backups目錄中,並命名爲/backups/etc-20160613.tar.bz2;ip

  (3) 若是參數1的值爲xz,則使用tar和xz歸檔壓縮/etc目錄至/backups目錄中,並命名爲/backups/etc-20160613.tar.xz;虛擬機

  (4) 其它任意值,則顯示錯誤壓縮工具,並執行非正常退出;it

三、寫一個腳本,接受一個路徑參數:

  (1) 若是爲普通文件,則說明其可被正常訪問;

  (2) 若是是目錄文件,則說明可對其使用cd命令;

  (3) 若是爲符號連接文件,則說明是個訪問路徑;

  (4) 其它爲沒法判斷;

四、寫一個腳本,取得當前主機的主機名,判斷

  (1) 若是主機名爲空或爲localhost,或爲"(none)",則將其命名爲mail.magedu.com;

  (2) 不然,顯示現有的主機名便可;

五、寫一個腳本,完成以下任務 :

  (1) 按順序分別複製/var/log目錄下的每一個直接文件或子目錄至/tmp/test1-testn目錄中;

  (2) 複製目錄時,才使用cp -r命令;

  (3) 複製文件時使用cp命令;

  (4) 複製連接文件時使用cp -d命令;

  (5) 餘下的全部類型,使用cp -a命令;

六、請詳細描述CentOS系統的啓動流程(詳細到每一個過程系統作了哪些事情)

七、爲運行於虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;

 (1) 爲硬盤新建兩個主分區;併爲其安裝grub;

 (2) 爲硬盤的第一個主分區提供內核和ramdisk文件; 爲第二個分區提供rootfs;

 (3) 爲rootfs提供bash、ls、cat程序及所依賴的庫文件;

 (4) 爲grub提供配置文件;

 (5) 將新的硬盤設置爲第一啓動項並可以正常啓動目標主機;

八、寫一個腳本

 (1) 能接受四個參數:start, stop, restart, status

  start: 輸出「starting 腳本名 finished.」

  ...

 (2) 其它任意參數,均報錯退出;

九、寫一個腳本,判斷給定的用戶是否登陸了當前系統;

 (1) 若是登陸了,則顯示用戶登陸,腳本終止;

 (2) 每3秒鐘,查看一次用戶是否登陸;

十、寫一個腳本,顯示用戶選定要查看的信息;

  cpu) display cpu info

  mem) display memory info

  disk) display disk info

  quit) quit

  非此四項選擇,則提示錯誤,並要求用戶從新選擇,只到其給出正確的選擇爲止;

十一、寫一個腳本

 (1) 用函數實現返回一個用戶的UID和SHELL;用戶名經過參數傳遞而來;

 (2) 提示用戶輸入一個用戶名或輸入「quit」退出;

   當輸入的是用戶名,則調用函數顯示用戶信息;

   當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息後,再次提醒輸出用戶名或quit:

十二、寫一個腳本,完成以下功能(使用函數)

  (1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的全部庫文件;

  (2) 複製命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,若是複製的文件原路徑是/usr/bin/useradd,則複製到/mnt/sysroot/usr/bin/目錄中;

  (3) 複製此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;

相關文章
相關標籤/搜索