【问题标题】:scp command change using alias使用别名更改 scp 命令
【发布时间】:2016-09-26 14:42:09
【问题描述】:

我经常使用

scp -r id@remoteserver_ip:/Data_folder/

从远程超级通信服务器下载数据文件夹。

每次都必须写一样的东西是相当烦人的。

有人知道使用别名很容易使用这个命令吗?考虑到Data_folder 每次都会更改。

【问题讨论】:

    标签: bash shell alias scp


    【解决方案1】:

    您应该考虑设置 ssh 配置:

    Host myServer
        HostName remoteserver_ip
        User id
    

    也许还可以添加identity file 以避免输入密码:

    Host myServer
        ...
        IdentityFile ~/.ssh/my_id
    

    现在你可以写了:

    scp -r myServer:/something
    

    当然,您可以 - 正如其他答案所建议的那样 - 向您的 ~/.bashrc 添加一个函数:

    my_scp() {
      scp -r myServer:"$1"
    }
    

    然后调用:

    my_scp /something
    

    【讨论】:

      【解决方案2】:

      别名不能替换单词的一部分。不过,您可以创建一个函数:

      myscp () {
          scp -r id@remoteserver_ip:/"$1"/
      }
      

      然后,只需致电myscp Data_folder

      另外,scp(至少在我的系统上)也需要目标文件夹。您可以在函数中将.作为next参数添加到函数中的命令中,或者使用"$2"并在运行函数时在命令行中指定。

      【讨论】:

        【解决方案3】:

        您不能设置别名来获取参数。所以你必须创建一个函数,然后你就可以给它起别名 scp

        function super_scp() {
            scp -r id@remoteserver_ip:${1} ${2}
        }
        
        alias scp=super_scp
        

        然后你就可以像这样使用它了:

        scp /path/to/folder /destination 
        

        【讨论】:

        • 这个函数在哪里定义的?
        • 它可以放在.bashrc 文件中,以便在登录时自动获取。
        • bashrc 中的别名不太推荐队友:P 最好在 bash_profile 中创建别名而不是创建 bash_aliases
        • 这并不重要,只要你从.bash_profile 获取非交互模式即可。
        • 你完全正确!但我真的不喜欢为 bashrc 添加别名,因为它会使文件变得如此之大,一无所获!这里askubuntu.com/questions/194111/… 他们建议将 bash_aliases 采购到 bashrc :)
        【解决方案4】:

        您可以在 $PATH 文件夹之一中创建一个 bash 文件。

        #! /bin/bash
        scp -r id@remoteserver_ip:"$1" "$2"
        

        我们将脚本称为 myscp。

        你可以写而不是写你写的整行

        myscp /home/file.txt /home/file2.txt
        

        【讨论】:

          猜你喜欢
          • 2020-08-07
          • 1970-01-01
          • 2013-10-30
          • 2013-02-22
          • 2020-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-16
          相关资源
          最近更新 更多