我必须在同一个终端窗口中观看两个命令。我的意思是像
watch du -h filename.txt && df -h
Run Code Online (Sandbox Code Playgroud)
但它只显示一个输出。
所以我在想的是可能无法使用 watch 在同一个窗口上运行多个命令。
如果有任何方法,请告诉我。
谢谢你。
我想看输出的变化
gsettings list-recursively|grep text-scal
Run Code Online (Sandbox Code Playgroud)
这是
org.gnome.desktop.interface text-scaling-factor 1.0
com.canonical.Unity.Interface text-scale-factor 1.0
Run Code Online (Sandbox Code Playgroud)
但如果我试着用
watch gsettings list-recursively|grep text-scal
Run Code Online (Sandbox Code Playgroud)
我没有输出,因为管道似乎是问题所在。
我怎样才能看到变化?
因此,我制作了自定义的别名命令并尝试将其与 一起使用alias,但在与该命令连接时我的别名未被识别watch。
所以我试着把它写成一条线索,幸运的是,这个线索帮助了我。
但这是什么原因呢?
我在 my 中创建了一个别名.bashrc,效果非常好。
alias gpu='sensors nouveau-pci-0100'
alias cpu='sensors coretemp-isa-0000'
Run Code Online (Sandbox Code Playgroud)
当我连接watch并gpu喜欢这样时:
watch GPU
Run Code Online (Sandbox Code Playgroud)
我每 2 秒就会收到以下信息:
sh: 1: gpu: not found
Run Code Online (Sandbox Code Playgroud)
我就上面提到的线程解决了这个问题,如下所示:
alias = watchh='watch '
watchh gpu
Run Code Online (Sandbox Code Playgroud)
但为什么会出现这种情况呢?为什么它不能使用我明确定义的别名命令?
我的猜测是,这与用户有关,因为我已经root过一次,并且无法使用我的别名,但我确实需要专家来回答这个问题。
运行时git status -sb我看到:

我想要watch(来自 procps-ng 3.3.3)一个存储库。该--color选项应该保留颜色。
有趣的是,它适用于ls:
$ watch --color "ls --color"
Run Code Online (Sandbox Code Playgroud)
显示:

但是对于git颜色消失:
$ watch --color "git status -sb"
Run Code Online (Sandbox Code Playgroud)

那么,为什么watch显示ls来自git输出而不是来自输出的颜色?
gnuwatch是一个非常有用的检查程序输出的工具:它执行程序并每 2 秒全屏显示输出。
有时,我不想删除以前的输出,而是希望逐行打印带有时间戳。为此,我使用 bash 脚本,例如:
while true;
do echo -n "`date` ";
ssh ubuntu@server -o ConnectTimeout=1 "uptime" ;
sleep 1;
done
Run Code Online (Sandbox Code Playgroud)
是否有watch类似的工具可以运行命令并在一行中显示其带有时间戳的输出,而无需删除以前的输出?
在处理一个在这里无关紧要的(Python)脚本时,我遇到了一个非常奇怪的行为,涉及watchand ps aux,当后者通过管道传输到其他东西时。
我已经设法将问题减少到一行。跑步时
watch "ps aux | grep 'ps aux'"
Run Code Online (Sandbox Code Playgroud)
在终端中,正如预期的那样,您通常会得到几行输出。
请注意,前三行被切断,ps aux最后几乎不适合。当您将终端的尺寸减小到不再适合的位置时,它会完全从结果中删除。
这意味着 grep 只接收截止输出。我对此感到最困惑的是发生这种情况的范围极其有限。这不会发生在任何一个
ps aux | grep "ps aux"
watch "ps u -C ps"
watch "ssh localhost 'ps aux | grep \"ps aux\"'"
Run Code Online (Sandbox Code Playgroud)
在所有这些情况下,列表都按预期环绕。
在 Ubuntu 15.04 上,bash 和 sh 似乎都是这种情况。
虽然我设法在我的脚本中解决了这个问题,但有人对这种行为有任何解释吗?
我想在创建文件时关注它。所以我用了这个命令
ls -hal ./file |awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)
这给出了我正在寻找的文件的大小。我使用awk是因为我不需要其他东西,只需要文件大小。
但是我无法在watch命令中使用它,因为如果我尝试
watch ls -hal ./file |awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)
然后 watch 只接受ls -hal ./file然后通过管道将其传送到awk,不提供任何输出。
如果我尝试
watch "ls -hal ./file |awk '{print $5}'"
Run Code Online (Sandbox Code Playgroud)
然后它会变得很奇怪,显示错误的命令和整个输出。
Every 2.0s: ls -hal ./file |awk '{print }' Sun Jul 20 15:52:18 2014
-rw-rw---- 1 aditya aditya 1.7K Jul 20 15:52 ./file
Run Code Online (Sandbox Code Playgroud)
您可以看到$5awk 命令中没有。
进一步引用会产生各种类似的错误。
那么引用这个命令的正确方法是什么?
我想要watch输出git log --oneline --graph所有颜色,并尝试调整解决方案:Why don't git Colors shown while using watch?,但它只是将(几乎)整个输出呈现为橙色:
watch -c$ watch -c git -c color.diff=always log --graph --oneline
Run Code Online (Sandbox Code Playgroud)
请注意,从第一个提交哈希开始,所有内容都以橙色打印。这是的输出watch from procps-ng 3.3.10。
$ git log --graph --oneline
Run Code Online (Sandbox Code Playgroud)
附加的输出-c color.diff=always是相同的,cat -A显示正在使用的 ANSI 颜色序列:
$ git -c color.diff=always log --graph --oneline | cat -A
* ^[[33m8ccd905^[[m L
* ^[[33me4ad4f6^[[m E
* ^[[33mf427d2a^[[m U
* ^[[33me8351c8^[[m Z
* ^[[33mf06747c^[[m I
Run Code Online (Sandbox Code Playgroud)
我怎样才能watch git log …
watch命令不适用于别名命令。
没有别名:
\n\xe2\x9e\x9c scrcpy git:(master) git -P branch\n* master\n\xe2\x9e\x9c scrcpy git:(master) watch git branch\nRun Code Online (Sandbox Code Playgroud)\n\n有别名
\n\xe2\x9e\x9c scrcpy git:(master) which gb\ngb: aliased to git branch\n\xe2\x9e\x9c scrcpy git:(master) watch gb\nRun Code Online (Sandbox Code Playgroud)\n\n 我已经执行
>> watch tree ./
Run Code Online (Sandbox Code Playgroud)
现在我的问题是我无法退出watch- 不关闭终端。
我阅读了手册页,watch但他们没有提到如何退出手表屏幕。
您是否需要使用魔术键组合来退出 watch ?
就像你第一次打开 vim 不知道如何关闭它时遇到的问题一样。