文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell script

shell script

时间:2006-12-22  来源:zhaoyangcom

20. shell script问题  20.1 如何获取一个字符串的长度  A: Andrei Ivanov <[email protected] expr `echo $string | wc -c` - 1  echo $string | awk '{ print length( $0 ); }'  /bin/expr length "$string"  expr "$string" : ".*"  echo "$string" | sed 's/./1+/g;s/+/ /;s/$/p/' | dc  A: http://www.linuxforum.net  假设是bash  $ string='1234567890' 
$ echo ${#string} 
10 
20.2 读超时自动使用缺省值  Q: shell script编程,不介入expect、perl、tcl等类似工具。读等待60秒,超时则 
   自动使用缺省值。可以使用系统缺省外部命令,要求能广泛移植在常用Unix平台 
   上 
A: CERNET 华中地区网络中心 PUE(UNIX环境程序设计)版 lookout  参看comp.unix.shell新闻组,下面以SPARC/Solaris 2.6为例  -------------------------------------------------------------------------- 
#! /sbin/sh 
stty -icanon min 0 time 255 
while true 
do 
    /usr/bin/echo "Press a key or press ENTER to exit:\c" 
    read key 
    if [ "$key" = "" ] ; then 
        echo "\nYou press Enter or timeout" 
        break 
    else 
        echo "You press the key $key" 
    fi 
done 
stty sane 
-------------------------------------------------------------------------- 
20.4 BASH中如何得到一个字符串的子串  A: loginlog@SMTH  BASH 2.0.3 以上版本  ${var:offset:length}  20.8 使用tr命令加密文件  A: 水木清华 TheCool  著名的 rot13 密码, 通过把字母移动13个位置实现对文本的加密  tr "[a-m][n-z][A-M][N-Z]" "[n-z][a-m][N-Z][A-M]" < message > newmessage  然后可以用同样的命令进行解密  tr "[a-m][n-z][A-M][N-Z]" "[n-z][a-m][N-Z][A-M]" < newmessage > message  20.9 有哪些命令用于查找定位  A: 小四  type -a telnet 
whereis telnet 
which telnet 
whatis telnet <=> man -k telnet 
20.11 如何将大写文件名转换为小写文件名  A: 小四 <[email protected] 如果要处理整个目录树的话,可以这样  find <target_dir> -exec sh -c 'mv -f "$0" `echo "$0" | tr "[A-Z]" "[a-z]"` > /de 
v/null 2>&1' {} \; 
同理,将小写文件名转换为大写文件名如下  find <target_dir> -exec sh -c 'mv -f "$0" `echo "$0" | tr "[a-z]" "[A-Z]"` > /de 
v/null 2>&1' {} \; 
这个办法有待修正,处理多层目录名本身带有大写字母的情况,有问题。比如存在如 
下目录的时候,./A/B/C/D.txt。 
A: [email protected] 2002-02-05 18:58  -------------------------------------------------------------------------- 
#! /bin/sh 
# Usage: ./loworup.sh <-l | -u> <target_directory> 

# 第二形参必须是目录,第一形参指定-l或-u 

if [ $# -ne 2 ] ; then 
    echo "Usage: ${0} <-l | -u> <target_directory>" 
    exit 1 
fi 
if [ ! -d ${2} -o "${1}" != "-l" -a "${1}" != "-u" ] ; then 
    echo "Usage: ${0} <-l | -u> <target_directory>" 
    exit 1 
fi 
exec 1>/dev/null 2>&1  dir=`dirname "${2}"` 
cd ${dir} 
if [ "${1}" = "-l" ] ; then 
    base=`basename "${2}" | tr "[A-Z]" "[a-z]"` 
else 
    base=`basename "${2}" | tr "[a-z]" "[A-Z]"` 
fi 
mv -f "`basename ${2}`" "${base}"  for entry in `find ${base}` 
do 
    before="." 
    # 
    # 这个办法依赖for in语法,用空格做分隔符,所以不能处理那些本身名字带空 
    # 格的目录项,属于小BUG 
    # 
    for after in `echo "${entry}" | sed -e 's,/, ,g'` 
    do 
        tmp_entry="${before}/${after}" 
        if [ "${1}" = "-l" ] ; then 
            before=`echo "${tmp_entry}" | tr "[A-Z]" "[a-z]"` 
        else 
            before=`echo "${tmp_entry}" | tr "[a-z]" "[A-Z]"` 
        fi 
        mv -f "${tmp_entry}" "${before}" 
    done 
done 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载