复制命令的Shell脚本编写示例
来源:互联网 发布:淘宝店铺怎样进行装修 编辑:程序博客网 时间:2024/06/05 21:53
编写脚本/root/bin/copycmd.sh:
(1) 提示用户输入一个可执行命令名称
(2) 获取此命令所依赖到的所有库文件列表
(3) 复制命令至某目标目录(例如/mnt/sysroot)下的对应路径下;如:/bin/bash ==> /mnt/sysroot/bin/bash
/usr/bin/passwd==> /mnt/sysroot/usr/bin/passwd
(4) 复制此命令依赖到的所有库文件至目标目录下的对应路径下:如:/lib64/ld-linux-x86-64.so.2 ==> /mnt/sysroot/lib64/ld-linux-x86-64.so.2
(5)每次复制完成一个命令后,不要退出,而是提示用户键入新的要复制的命令,并重复完成上述功能;直到用户输入quit退出。
该脚本使用到了函数、递归等知识,难度相对较高,逻辑性较强,脚本内容如下:
#!/bin/bash#------------------------------------------# Filename:copycmd72.sh # Revision:1.0 # Date:2017-09-11 # Author:156# Email:1140994710@qq.com# Description:用于复制命令和他的库文件到/mnt/sysroot/目录下。#------------------------------------------#判断用户输入的命令是不是命令com() { local var1 man $1 &>/dev/null var1=$? if [ $var1 -eq 0 ];then return 0 else echo -e "\terror,找不到\e[33m${1}命令\e[0m,您请确认!" return 1 fi}#判断命令是内部命令还是外部命令encmd() { local var2=`type $1` local var3=`echo $var2 | grep -o "builtin"` if [ -n "$var3" ];then echo -e "\terror,\e[34m${CMD}是内部命令\e[0m,不可以复制!" return 1 else return 0 fi}#判断文件类型的函数filetype() { file=`ls -l $1 | grep -o "^."` case $file in -) return 0 ;; d) return 1 ;; l) return 2 ;; esac}#创建目录的函数createdir() { local dirnm=`dirname $1` mkdir -p ${Dir}${dirnm} targetdir=${Dir}${dirnm} return 0}#复制文件的函数copy() { filetype $1 local ft=$? if [ $ft -eq 0 ];then createdir $1 cp -pdr $1 $targetdir &> /dev/null echo -e "\t\t$1\t\c" echo -e "========>\t\c" echo -e "\e[31m${targetdir}\e[0m" return 0 elif [ $ft -eq 2 ];then createdir $1 cp -pdr $1 $targetdir &> /dev/null echo -e "\t\t$1\t\c" echo -e "========>\t\c" echo -e "\e[31m${targetdir}\e[0m" lianjiewenjian=$(locate `ls -l $1 | cut -d " " -f 11`) copy $lianjiewenjian fi}Dir="/mnt/sysroot"mkdir -p $Dirwhile true;do read -p "请输入一个您想要复制的命令(quit:退出):" cmd CMD=`basename $cmd` if [ "$CMD" == "quit" ];then exit 1 fi com $CMD if [ $? == 0 ];then encmd $CMD encmd=$? if [ $encmd -eq 0 ];then #因为在脚本里面不可以执行别名所以,不需要varA=`which ls | grep "^[[:space:]]" | grep -o "/.*"` varA=`which $CMD` echo -e "\t\e[5;31m${CMD}命令\e[0m正在复制……" copy $varA for A in `for i in $(ldd $varA);do echo $i ;done | grep -o "/.*"` ;do copy $A done echo -e "\t\e[5;31m${CMD}命令\e[0m复制结束!" fi fidone
小编刚接触linux,水平一般,脚本中的内容也比较冗杂,该博客的目的只是为了给大家一个思路,希望能起到抛砖引玉的效果。
阅读全文
0 0
- 复制命令的Shell脚本编写示例
- 初级shell脚本编写示例
- shell脚本的编写
- shell脚本的编写
- shell脚本的编写
- linux shell脚本编写必须会的字符串截取命令
- shell 脚本 与 shell 脚本的编写
- shell脚本命令编写面试题目
- linux shell脚本的编写
- Shell编写脚本的笔记
- shell脚本编写的flipbird
- 编写简单的shell脚本
- Shell脚本的编写技巧
- 编写Linux的shell脚本
- CentOS下编写shell脚本来监控MySQL主从复制的教程_MySQL
- Shell命令编写——复制命令cp
- 9、Shell编程:Shell的介绍、Shell脚本的编写
- LINUX Shell:复制文件夹的脚本
- 访问控制修饰符
- 10. Regular Expression Matching 字符串匹配 左程云
- c#开始
- 欢迎使用CSDN-markdown编辑器
- Spring Boot学习之路一:入门
- 复制命令的Shell脚本编写示例
- redis主从复制小程序
- day13-request和response
- 拖曳案例
- SPOJ
- php连接redis(phpredis)
- 2018年新浪微博产品笔试题目
- 嵌入式Linux驱动笔记(十四)------详解clock时钟(CCF)框架及clk_get函数
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F. Trig Function(切比雪夫多项式)