我有一台家用电脑(我们称它为富兰克林,因为我就是这么称呼它的),我经常从我的工作笔记本电脑上通过 ssh 连接到它。当我在家时,我 ssh 到 franklin.local,而当我在工作或其他任何地方时,我 ssh 到 remote.address.of.franklin。
我希望在我的个人资料中有一个功能,该功能始终以正确的方式连接。我的网络状况经常变化(有线与无线、不同的 SSID 等),所以我不想通过检测网络状态来做到这一点,而是:
这是我现在使用的:
function franklin () {
ping -c 5 "franklin.local" > /dev/null
if [[ $? != 0 ]]
then
echo "franklin not available on local, so trying remote connection"
ssh -p 22 remote.address.of.franklin
else
echo "franklin available on local network, so trying local connection"
ssh username@franklin.local
fi
}
Run Code Online (Sandbox Code Playgroud)
问题是,ping 需要时间。我的问题是:我可以同时执行两个 ssh 命令,然后自动使用第一个连接的命令吗?
我在运行 OS X 10.8.4 的 Mac 上通过 MacPorts 安装了 coreutils。我已ls
设置为在可用时使用ls
[ (GNU coreutils) 8.21
]的 coreutils 版本:
if [ -e /opt/local/libexec/gnubin ]; then
alias ls='/opt/local/libexec/gnubin/ls --color=auto'
else
alias ls='/bin/ls -G'
fi
Run Code Online (Sandbox Code Playgroud)
当我ls -l
在包含已知具有扩展属性 (xattrs) 的文件的目录中运行时,我希望@
在这些列表中的权限之后看到一个符号。但是,我看不到任何@
迹象。如果我跑/bin/ls -l
,我会得到@
标志。
文件列表来自/bin/ls -l
:
-rw-r--r--@ 1 zev.eisenberg staff 132887 Jul 19 16:24 flowchart.graffle
Run Code Online (Sandbox Code Playgroud)
文件列表来自ls -l
(使用 coreutils):
-rw-r--r-- 1 zev.eisenberg staff 132887 Jul 19 16:24 flowchart.graffle
Run Code Online (Sandbox Code Playgroud)
当 xattrs 存在时,如何让 coreutils …
我的一个朋友在 StackOverflow 上发布了这个,我想我们可能更有可能在这里得到答案。他的帖子指的是速度,但我们现在知道我们用来解析 git status 的 python 脚本很慢,并且在某些时候我们打算重写它以使其更快。然而,RPROMPT
异步设置的问题对我来说仍然很有趣,所以我想我会在这里引用他的问题:
自从我开始使用 git 以来,我已经设置了 RPROMPT 来显示当前分支。我最近一直在使用一些“花哨的”脚本来显示未/暂存的文件计数和其他有用的一目了然的东西。( https://github.com/olivierverdier/zsh-git-prompt/tree/master )
使用它一两个星期后,它的性能开始困扰我。
是否有更快的方法来获取此信息,或者是否有异步编写 RPROMPT 的方法?我不想在计算 RPROMPT 时等待输入命令,并且会非常高兴它在我的主 PROMPT 稍晚出现。
没有冒犯上述脚本;这很棒。我只是不耐烦。