# Bash (简体中文)/Functions (简体中文)

From ArchWiki
< Bash (简体中文)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

本文或本节需要翻译。要贡献翻译，请访问简体中文翻译团队。

附注： 与英文页面的内容完全不同（在 Talk:Bash (简体中文)/Functions (简体中文)# 中讨论）

从笔记 (note taker) 得到启发，一个小的 todo 脚本

    todo() {
       test -f $HOME/.todo || touch $HOME/.todo
       if test $# = 0
       then
               cat $HOME/.todo
       elif test $1 = -l
       then
               cat -n $HOME/.todo
       elif test $1 = -c
       then
               > $HOME/.todo
       elif test $1 = -r
       then
               cat -n $HOME/.todo
               echo -ne "----------------------------\nType a number to remove: "
               read NUMBER
               sed -ie ${NUMBER}d $HOME/.todo
       else
               echo $@ >> $HOME/.todo
       fi
    }

一个小的笔记(note taker)

    note ()
    {
           #if file doesn't exist, create it
           [ -f $HOME/.notes ] || touch $HOME/.notes
           #no arguments, print file
           if [ $# = 0 ]
           then
                   cat $HOME/.notes
           #clear file
           elif [ $1 = -c ]
           then
                   > $HOME/.notes
           #add all arguments to file
           else
                   echo "$@" >> $HOME/.notes
           fi
    }

解压缩函数，另外你也可以使用 atool (在 [community] 仓库中)

    extract() {
     local e=0 i c
     for i; do
       if [ -f $i && -r $i ]; then
           c=
           case $i in
             *.tar.bz2) c='tar xjf'    ;;
             *.tar.gz)  c='tar xzf'    ;;
             *.bz2)     c='bunzip2'    ;;
             *.gz)      c='gunzip'     ;;
             *.tar)     c='tar xf'     ;;
             *.tbz2)    c='tar xjf'    ;;
             *.tgz)     c='tar xzf'    ;;
             *.7z)      c='7z x'       ;;
             *.Z)       c='uncompress' ;;
             *.exe)     c='cabextract' ;;
             *.rar)     c='unrar x'    ;;
             *.xz)      c='unxz'       ;;
             *.zip)     c='unzip'      ;;
             *)     echo "$0: cannot extract \`$i': Unrecognized file extension" >&2; e=1 ;;
           esac
           [ $c ] && command $c "$i"
       else
           echo "$0: cannot extract \`$i': File is unreadable" >&2; e=2
       fi
     done
     return $e
    }

    docview ()
    {
      if [ -f $1 ] ; then
          case $1 in
              *.pdf)       xpdf $1    ;;
              *.ps)        oowriter $1    ;;
              *.odt)       oowriter $1     ;;
              *.txt)       leafpad $1       ;;
              *.doc)       oowriter $1      ;;
              *)           echo "don't know how to extract '$1'..." ;;
          esac
      else
          echo "'$1' is not a valid file!"
      fi
    }

计算器

    calc() { echo "scale=3;$@" | bc -l ; }

Kingbash - 菜单驱动的自动完成 (参见 https://bbs.archlinux.org/viewtopic.php?id=101010)

从AUR安装kingbashAUR[断开的链接：package not found] 然后插入下面的代码到 .bashrc

    function kingbash.fn() {
      echo -n "KingBash> $READLINE_LINE" #Where "KingBash> " looks best if it resembles your PS1, at least in length.
      OUTPUT=`/usr/bin/kingbash "$(compgen -ab -A function)"`
      READLINE_POINT=`echo "$OUTPUT" | tail -n 1`
      READLINE_LINE=`echo "$OUTPUT" | head -n -1`
      echo -ne "\r\e[2K"; }
    bind -x '"\t":kingbash.fn'

Category:

- Command-line shells (简体中文)

Hidden categories:

- Pages or sections flagged with Template:Translateme (简体中文)
- Pages with broken package links