码迷,mamicode.com
首页 > 系统相关 > 详细

linux学习之路之使用脚本来复制二进制程序和所需的库文件

时间:2014-07-30 03:25:33      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:写一个脚本来复制二进制程序和所需的库文件

首先介绍bash的特殊语法

${parameter#*word}

其中parameter为变量,word为分隔符,表示从变量最边左字符开始到第一匹配到分隔符(word)之间的字符串都去掉

${parameter##*word}:表示从变量最左边字符开始到最后一次匹配到该分隔符之间的字符串都去掉

bubuko.com,布布扣

注意:其中变量不要加$符号


当*在分隔符(word)前面时,表示从左开始匹配

当*在分隔符(word)后面时,表示从右开始匹配

${parameter%word*}:表示从最右边字符开始到第一次匹配到的分隔符之间的字符串全部删除

${parameter%%word*}:表示从最右边字符开始到最后一次匹配到的分隔符之间的字符串全部删除

bubuko.com,布布扣


如何使用脚本来完成二进制程序和所需库文件的复制

#!/bin/bash
DEST=/mnt/sysroot
#复制库文件
LIBCP() {
        LIBDIR=${1%/*}
        #判断目录是否存在,不存在则创建目录
        [ ! -d $DEST$LIBDIR ] && mkdir -p $DEST$LIBDIR
        #判断库文件是否存在,不存在则复制库文件到指定目录下
        [ ! -e $DEST${1} ] && cp ${1}  $DEST$LIBDIR && echo "copy lib $1 finished "

}
#复制二进制程序
CMDCP() {

        #找到某个命令的二进制文件
        CMD=`which $1 | grep -v ‘^alias*‘ | grep -o ‘[^[:space:]]\{1,\}‘`
        CMDDIR=${CMD%/*}
        #判断这个二进制文件所在目录是否存在,不存在则创建
        [ ! -d $DEST$CMDDIR ] && mkdir -p $DEST$CMDDIR
        #判断指定目录下是否存在该二进制程序,不存在则复制
        [ ! -e $DEST#CMD ] && cp $CMD $DEST$CMDDIR && echo "copy command $CMD finished"
        #通过ldd命令来找到某个二进制文件所需要的库文件,并生成列表供for循环使用
        for BINARY in `ldd $CMD | grep -o --color ‘/.*lib\(64\)\?/[^[:space:]]\{1,\}‘ `;do
                LIBCP $BINARY
        done
        }
#提醒用户输入命令
read -p ‘Pelase input command:‘ COM
#判断用户输入的命令是否正确
until [ $COM == ‘q‘ ];do
        ! which $COM &> /dev/null && echo ‘command Wrong!‘ && read -p ‘input again:‘ COM \
        && continue
        CMDCP $COM

        read -p ‘Pelase input command:‘ COM
done

本文出自 “linux学习之路” 博客,谢绝转载!

linux学习之路之使用脚本来复制二进制程序和所需的库文件,布布扣,bubuko.com

linux学习之路之使用脚本来复制二进制程序和所需的库文件

标签:写一个脚本来复制二进制程序和所需的库文件

原文地址:http://xslwahaha.blog.51cto.com/4738972/1532529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!