Shell Tips: cppath、scppath、mybackup

目录 Linux

分享几个觉得有用的小 shell 函数。

1. scppath

在进行一些跨机器的操作时,每次 scp 总要手动去拼那个路径,首先从 PS1 拷贝粘贴用户名和主机名,然后再 pwd 拷贝粘贴当前目录,然后再 ls 拷贝粘贴要 scp 的文件名。好烦啊,所以就写了下面这个小函数来生成 scp 的文件路径,放到 ~/.bashrc 里。

function scppath()
{
    local _IFS=$IFS
    IFS=$(echo -en "\n\b")
    local _file
    for _file in $@; do
        echo "\"$USER@$HOSTNAME:$PWD/$_file\""
    done
    IFS=$_IFS
}

2. cppath

同样可以有 cppath。

function cppath()
{
    local _IFS=$IFS
    IFS=$(echo -en "\n\b")
    local _file
    for _file in $@; do
        echo "\"$PWD/$_file\""
    done
    IFS=$_IFS
}

3. mybackup

这个函数是偷懒备份用的。当写代码写到一半,不想或者不能 check in,但又想备份一下时,就用这个命令对文件或者目录进行自动的备份。

function mybackup()
{
    local _bak_dir=~/history
    local _path=''
    mkdir -p $_bak_dir
    local _IFS=$IFS
    IFS=$(echo -en "\n\b")
    for _path in $@; do
        if [ -f $_path ]; then
            cp $_path $_bak_dir/"$_path".`date +%Y-%m-%d.%H-%M-%S`
        elif [ -d $_path ]; then
            _path=`basename $_path`
            tar -cvf $_bak_dir/$_path.`date +%Y-%m-%d.%H-%M-%S`.tar $_path
        fi 
        echo "Backuped $_path to $_bak_dir."
    done
    IFS=$_IFS
}

长按识别二维码关注《边际效应》
长按识别二维码关注《边际效应》

9 条评论

  • 依云
    2011-03-23

    前两个没看懂,最后一个用 git 不需要~

    • Solrex Yang
      2011-03-23

      @依云 哈哈,看来你是 show git 来了,俺们 svn user 伤不起啊!

  • Chen Yufei
    2011-03-24

    zsh 能补全的东西非常多,其中包括 scp 的路径补全。打完 scp user@server: 之后按 tab 就可以,前提是要设置好用 public key 认证。

    • Solrex Yang
      2011-03-24

      @Chen Yufei 是啊,虽然有更强大的 shell,但我总是纠结于要不要去学,总觉得如果学很小众的东西,会浪费不少精力且助益不多。

      • zhanxw
        2011-05-06

        我这里bash也能补全(设好public key之后)

  • 依云
    2011-03-24

    只是至今为止,拼音补全还没能实现。
    另外,reCAPTCHA 认错了然后我的留言消失了,幸好我还有 TextCache~

  • zhanxw
    2011-05-06

    请问为什么要设置:
    IFS=$(echo -en "\n\b")

    • Solrex Yang
      2011-05-06

      @zhanxu 这样能正确处理文件或者目录名中包含空格的情况。

  • SHELL TIPS: rsync 和 crontab 变量 | 自由 开源 分享
    2011-08-27

    [...] Shell Tips: cppath、scppath、mybackup (8) – 分享几个觉得有用的小 shell 函数。1. scppath在进行一些跨机器的操作时,每次 scp … [...]

发表评论

电子邮件地址不会被公开。 必填项已用*标注