亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

作業(yè)——拷貝命令及其鏈接庫

1),提示用戶輸入一個可執(zhí)行命令的名稱

2),獲取此命令所依賴額所有庫文件列表

3),復制命令至某目標目錄(/mnt/sysroot,即把此目錄當做根)下的對的路徑中

bash,/bin/bash ===> /mnt/sysroot/bin/bash

useradd, /usr/sbin/useradd ===> /mnt/sysroot/usr/sbin/useradd

4),復制此命令所有依賴的所有庫文件至目標目錄對應的路徑下:

/lib64/ld-Linux-x86_64.so.2 ==>

/mnt/sysroot/lib64/ld-Linux-x86_64.so.2

5,每次復制完成一個命令后,不要退出,而是繼續(xù)提示用戶輸入命令,直到輸入"quit"菜退出文

blob.png

# 傳遞給函數(shù)可執(zhí)行命令,復制命令程序和依賴庫文件到指定目錄 ,并且取掉絕對路徑

f_copy_com_lib() {

     command_path=$(which "$1" | grep -v "alias") #獲取絕對路徑

     temp_dir=${command_path#*/} # 取掉絕對路徑

     temp_dir=${temp_dir%/*} # 取掉后面的文件文件名

     mkdir -p $dir_path$temp_dir # 創(chuàng)建/mnt/sysroot下對應的的目錄

     cp -rf $command_path  $dir_path$temp_dir

    

    #獲取命令路徑要注意兩個問題:第一個要避開which查出結(jié)果有alias別名問題, which COM | grep -v "alias" 除去別名

     #第一步,查出命令路徑,第二步,去掉alias,第三步,查出命令所以來的庫,第四步,獲取庫的準確路徑

     for lib_file in $( ldd $(which "$1" | grep -v "alias" ) | grep -o "/lib[^[:space:]]*") ; do

     #a_library[$i]=$lib_file # 完整的庫文件路徑

    

     temp_dir=${lib_file#*/} #取掉絕對路徑 ${string#*word} 

     temp_dir=${temp_dir%/*} #去掉基名

     mkdir -p $dir_path$temp_dir #創(chuàng)建一個庫文件的路徑 

     cp -rf $lib_file   $dir_path$temp_dir  #復制庫文件到指定的目錄中

     #echo "${a_library[$i]}" #let i++

     echo "$lib_file"

     echo 

done

}

while true ; do

cat << EOF

+++++++++++++++++++++++++++++++++++++++++++++++++

command)Please enter the system existing  command

quit) quit script

+++++++++++++++++++++++++++++++++++++++++++++++++

EOF

read -p "Please enter existing command:" v_command

if [ $v_command == "quit" ] ; then

break

fi

#如果輸入的不存在的命令,處理

if ! ( which $v_command &>/dev/null ) ; then

echo "ERROR:command not found!"

continue # 進行下一次循環(huán)

fi

f_copy_com_lib  $v_command

don

blob.png

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓機構(gòu)!