使用超过一级的 bash 别名(shell in shell)

Using bash alias beyond one level (shell in shell)

我想在我的终端上执行一个别名,它将登录到另一个 shell 并在那里执行命令。

例如,

sh = 'ssh admin@x.x.x.x'

shls = 'sh;ls'(也试过'sh && ls')

在这种情况下,当我给出 'shls' 时,我想 ssh 到(启用密码较少的条目)x.x.x.x,然后在那里执行 ls 命令。但是 'ls' 部分不起作用。

我知道 shell 已更改,因此它不再在父 shell 的范围内触发 ls,但只是想知道是否有办法将其推送到已登录的 shell 并在那里执行。

事实上,我想使用 x.x.x.x 中可用的另一个别名代替 'ls',但作为第一步,我想至少让它工作。

希望我能说清楚,在此先感谢您的帮助。

您可以将命令作为参数传递给 ssh(在各种连接参数之后):

alias shls='ssh admin@x.x.x.x ls'

顺便说一句,我建议不要使用 sh 别名——这是 运行 一个 shell 脚本 (*) 的常用命令,给它一个不同的含义可能会导致混乱。

(* 尽管使用 sh 命令,但通常最好为脚本提供适当的 shebang 行,然后输入其路径。)