我正在尝试使用包含引号的命令让 watch 正常工作,并且 watch 手册页对引号的工作方式不是很详细。举一个具体的例子,我如何在 watch 中运行以下命令:
ps -ef | awk -F' ' '{print $2}'
Run Code Online (Sandbox Code Playgroud)
我试过了:
watch "ps -ef | awk -F' ' '{print $2}'"
Run Code Online (Sandbox Code Playgroud)
和
watch 'ps -ef | awk -F\' \' \'{print $2}\''
Run Code Online (Sandbox Code Playgroud)
但这些都不能正常工作。
我注意到很多次当我通过CTRL+从命令行反向搜索历史时r,如果我想编辑命令,有时当我按下箭头键或输入CTRL+a或CTRL+时,光标会跳到错误的位置e. 它跳转到的特定位置似乎是一个偏移量,等于我在PS1.
这会造成困难,因为光标的实际位置与屏幕上呈现的不同;对命令的未来编辑呈现为就好像光标位于它跳转到的位置一样,但实际命令保留了正确的位置而没有任何跳转。
有谁知道是什么导致了这个或如何解决它?
编辑:如果我PS1在问题末尾添加换行符似乎会消失。但是,我更愿意在与提示相同的行中输入命令。
我想通过对文件的更改进行跟踪tail -f,然后grep在终止之前打印出与命令匹配的第一行。什么是最简单的方法来做到这一点?到目前为止,我一直在尝试这样的事情:
tail -f foo.log | grep 'bar' | head -1
Run Code Online (Sandbox Code Playgroud)
然而,管道只是挂起,大概是由于缓冲。我也试过
tail -f foo.log | grep --line-buffered 'bar' | head -1
Run Code Online (Sandbox Code Playgroud)
这会打印出该行,但除非我点击 ^C,否则该过程不会终止,大概是因为需要第二行输入来终止head -1。解决这个问题的最佳方法是什么?
我想将 Alt+N 和 Alt+P 分别映射到向下箭头和向上箭头。我想这样做是因为 eclipse 中的各种弹出对话框要求用户键入箭头键,并且 eclipse 中定义的快捷方式(例如,line-down)在这些对话框中无效。
在 Eclipse 中完成此任务的最简单方法是什么?设置为全局的而不仅仅是 Eclipse 应该没问题。
我曾经find在我的机器上搜索一个文件,如下所示:
find / -name version-1.0.*
Run Code Online (Sandbox Code Playgroud)
结果是我的主目录中只有一个文件version-1.0.23. 但是,如果我运行以下命令:
find / -name version-1.0.1*
Run Code Online (Sandbox Code Playgroud)
结果是/data/somelongpath/version-1.0.19。
为什么会从第一种情况的结果中省略第二个结果?
我想在没有密码的情况下进行 ssh、scp、git fetch 等操作。我看到了之前的问题,并关闭了有关此问题的问题,但建议似乎是使用 ssh 密钥。但是,在设置 ssh 密钥后,我仍然被要求输入密码(不是要求我的私钥密码;而是要求我的登录密码)。我应该如何设置它以便它只使用我的私钥进行身份验证?
我正在尝试编写一个设置本地 IP 地址的脚本。这是我到目前为止:
#!/bin/sh
echo -n \
"# interfaces(5) file used by ifup(8) and ifdown(8)\n"\
"auto lo\n"\
"iface lo inet loopback\n"\
"auto eth0\n"\
"iface eth0 inet static\n"\
" address 192.168.2.130\n"\
" netmask 255.255.255.0\n"\
" gateway 192.168.2.1\n"\
" dns-nameservers 8.8.8.8\n"\
> /etc/network/interfaces
/sbin/ifup eth0
Run Code Online (Sandbox Code Playgroud)
该文件/etc/network/interfaces看起来格式合理,但该ifup命令导致以下错误:
RTNETLINK answers: File exists
Failed to bring up eth0.
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我有一个 bash 命令,我想每秒运行一次并保持输出显示在屏幕上。我可以执行以下操作:
while "true"; do foo; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
但这会产生分散注意力的滚动。或者,我可以执行以下操作:
while "true"; do clear; foo; sleep 1; done
Run Code Online (Sandbox Code Playgroud)
但这会导致输出在清除和写入时闪烁。有没有一种好方法可以让命令的输出覆盖终端上的内容?
我阅读了一堆关于为 git 安装 bash-completion 的说明,并确定了 macport 解决方案,例如,这里提到的:How to get git-completion.bash to work on Mac OS X?
但是,这不起作用,我必须调用source /opt/local/etc/bash_completion.d/git或将其放入我的 .bashrc 以激活 git bash 完成。我错过了什么吗?似乎特定完成包的采购应该更加自动化,而且我发现网上没有人在他们的说明中列出了这一点,以使 git bash-completion 在 mac os 上工作。