将rlogin命令转换为别名

 Jackson-過時間 发布于 2023-02-09 12:10

我在多台机器上工作,需要远程登录.我想有一个别名,可以使我的rlogin命令更简单.

所以,我想将以下命令转换为别名:

rlogin `echo "machine $num" | tr -d ' '`

我试着在我的.cshrc文件中写这个:

alias rl rlogin `echo machine$1| tr -d ' '`

当我做 rl 13

它说 :

usage: rlogin [ -8EL] [-e char] [ -l username ] host

我在这里错过了什么?

2 个回答
  • 您可以通过运行alias rl以下命令轻松查看别名未按预期定义:

    % alias rl rlogin `echo machine$1| tr -d ' '`
    % alias rl
    rlogin machine
    

    定义别名的方式有两个问题.

    首先,在定义这样的别名时:

    alias rl rlogin `...`
    

    定义...别名时评估命令,而您需要将评估推迟到使用它的时间.正确的方法是将所有内容封装在单引号中,例如

    '`...`'
    

    (另外,我们需要用双引号替换内部单引号,以免与外部单引号冲突).

    其次,你需要使用\!*而不是$1.

    所以你得到:

    % alias rl rlogin '`echo machine\!* | tr -d " "`'
    % alias rl
    rlogin `echo machine!* | tr -d " "`
    

    2023-02-09 12:12 回答
  • tr别名中的管道是无用的.简单地说:

    alias rl 'rlogin machine\!:1'
    

    并通过说:

    rl 42
    

    应该工作,即应该发布rlogin machine42.

    请注意,您需要转义!它以防止shell对其进行解释以进行历史记录扩展.

    2023-02-09 12:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有