小linux 移植命令的功能 单独脚本

来源:互联网 发布:mac 一键关闭所有窗口 编辑:程序博客网 时间:2024/06/04 19:07
之前说的从0构建linux,有种情况,当我们做好小linux后在使用过程中发现你需要用到的一个命令没有怎么办,还记得有个移植命令的功能函数吧,我们可以单独拿出来,想事后加命令直接调用就好,将其拿出来后如下:具体每一行不用详细解释,在上一篇中有解释可以参考#!/bin/bash#TARGET='/mnt/sysroot'BINCP() {TMPFILE=`mktemp -t bincp.XXXX`FULLBIN=`which $1 2>/dev/null | grep -v "alias" | sed 's@[[:space:]]/{1,/}/(.*/)@/1@g'`if [ -z $FULLBIN ];then echo "Incorrect file name or file not exist..." return 2fiBINPATH=`echo $FULLBIN | sed "s@/(.*/)/${1}@/1@g"`[ -d $TARGET/$BINPATH ] || mkdir -p $TARGET/$BINPATH &> /dev/null[ $? -eq 0 ] && cp -f $FULLBIN ${TARGET}/$BINPATH && echo -e "Copying /033[1;31m${1}/033[0m to the target.../n/tCopy the /033[1m$FULLBIN/033[0m done."# copy the library filesLDLINUX=`ls /lib | grep ld-linux`cp /lib/$LDLINUX $TARGET/libldd $FULLBIN | grep -E -v "linux-gate|ld-linux" | cut -d'>' -f2 | cut -d' ' -f2 > $TMPFILEwhile read LINE; do LIBFILE=`basename $LINE` LIBPATH=`echo $LINE | sed "s@/(.*/)/$LIBFILE@/1@g"` if [ ! -e $TARGET/$LIBPATH/$LIBFILE ]; then [ -d $TARGET/$LIBPATH ] || mkdir -p $TARGET/$LIBPATH &> /dev/null cp $LINE $TARGET/$LIBPATH [ $? -eq 0 ] && echo -e "/tCopy the /033[1m$LINE/033[0m done." fidone < $TMPFILErm -f $TMPFILE}for I in init bash mount hostname ifconfig ls cat touch mkdir; do BINCP $Idoneecho -e "/nCopy other commands or deamons to target, /033[31;1mQUIT/033[0m for quiting./n"read -p "The name of binary file will be copyed: " BINARY[[ -n $BINARY ]] && BINARY=`basename $BINARY` 2> /dev/nullwhile [[ $BINARY != 'QUIT' ]] && [ -n $BINARY ]; do BINCP $BINARY RETVAL=$? echo -n -e "/nContinue, type /033[31;1mQUIT/033[0m for quiting: " read BINARY [[ -n $BINARY ]] && BINARY=`basename $BINARY` 2> /dev/null [ $RETVAL -eq 2 ] && continue syncdonesync
原创粉丝点击