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

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左右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值