我有一台电脑:
Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
它在所有接口上的端口 80 上运行 Apache,并且它没有出现在 中netstat -planA inet
,但意外地可以在 中找到netstat -planA inet6
:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5672 :::* LISTEN 2402/beam.smp
tcp6 0 0 :::111 :::* LISTEN 1825/rpcbind
tcp6 0 0 :::9200 :::* LISTEN 2235/java
tcp6 0 0 :::80 :::* LISTEN 2533/apache2
tcp6 0 0 :::34611 :::* LISTEN 1856/rpc.statd
tcp6 0 0 :::9300 :::* …
Run Code Online (Sandbox Code Playgroud) 我$PS1
在 Zsh 中包含这个表达式:%(?. %?.)
它的意思是“如果前一个命令 ( $?
) 的退出代码为真,则显示$?
,否则不显示”。这通常很有用,但有一件事让我烦恼:当我在没有运行命令的情况下按 Control+C 时,shell 将最后一个命令的返回码设置为非零!Zsh 将其设置为 1,Bash 将其设置为 130。Dash 是我系统上唯一一个不会在 Control+C 上重置它的 shell。
如何重现:
echo $?
.有没有办法在 Zsh 上关闭这种行为?
是否有可能让 Zsh 停止尝试更正不应该是包含当前目录中的文件的文件的参数,而无需完全关闭更正或将其限制为setopt CORRECT
(仅更正命令)?
例如,当CORRECT_ALL
设置为 时setopt
,会发生这种情况:
gris@arefiev: ~% cd srcc
change srcc to src-nyae? n
Run Code Online (Sandbox Code Playgroud)
到目前为止,很好(参数cd
应该是一个文件)。然而,
gris@arefiev: ~% man zile
change zile to .zile-nyae?
Run Code Online (Sandbox Code Playgroud)
什么?我希望它纠正zile
到.zile
时候man
被调用-C
选项。它还尝试更正ssh
, 第一个参数的主机参数sudo
等,这真的很烦人。
alias man='nocorrect man'
对于每个受影响的命令,我必须求助于拐杖:设置等,但显然这不是最好的解决方案。我也不喜欢CORRECT
并且更喜欢拐杖加号CORRECT_ALL
而不是CORRECT
.
zsh 是zsh 4.3.17 (x86_64-unknown-linux-gnu)
,Debian sid。
更新:这是我的.zshrc
http://pastebin.com/67mykgRv
我正在寻找一种可靠的跨平台方式来检查具有特定 pid 的进程是否正在运行。出现了两种可能的解决方案:
kill -0 $PID
— 如果进程存在,退出状态为 0,否则为 1,但是对于需要额外权限才能杀死的 pid,它也会返回 1。ps a | grep "^\s*${PID}"
和类似的都是丑陋的。有没有办法拥有像#1 这样的东西,但没有所有者限制?