【shell】终端的各种使用特性

it2024-04-08  46

ssh登录并执行初始命令(cat tty+ script命令实现)

-q 不要打印Script started…, Script end…的信息

下面这条命令:可以保证在登录了远程shell的情况下,首先执行一段自定义命令,然后保持输入输出不关闭

echo 'echo yes' |cat - /dev/tty |script /dev/null ssh $D

其核心就是中间的cat命令使用了 /dev/tty来保证输入不关闭,从而保证不会发送EOF导致远程关闭 script配合ssh使用用来避免ssh识别到非终端的输入

这里应该总结的一个比较重要的特性是,使用cat /dev/tty来保活,实际上,cat 还可用来延时

echo 'echo yes'|cat - <(sleep 1)

ssh登录并执行初始命令(2次exec实现)

function swd { local cur cur=$(shortpath) # -t: force terminal allocation # first bash to read profiles # second bash to change director ssh -t $D "exec bash --login -i -c 'cd $cur;exec bash --login -i'" }

使用ssh -t $D "exec bash --login -i -c 'cd $cur;exec bash --login -i'"比较慢,为什么?因为需要执行两次exec

但是相比cat tty的实现,这个方案保留了100%的终端特性,所以建议使用这个。

平均2.8s~3s的时间,前面的实现估计1.6s左右

最新回复(0)