Linux
ls 在 watch 命令中格式化
當我這樣做時
ls /dev/tty*
,我看到以下輸出:/dev/tty /dev/tty12 /dev/tty17 /dev/tty21 /dev/tty26 /dev/tty30 /dev/tty35 /dev/tty4 /dev/tty44 /dev/tty49 /dev/tty53 /dev/tty58 /dev/tty62 /dev/ttyS0 /dev/tty0 /dev/tty13 /dev/tty18 /dev/tty22 /dev/tty27 /dev/tty31 /dev/tty36 /dev/tty40 /dev/tty45 /dev/tty5 /dev/tty54 /dev/tty59 /dev/tty63 /dev/ttyS1 /dev/tty1 /dev/tty14 /dev/tty19 /dev/tty23 /dev/tty28 /dev/tty32 /dev/tty37 /dev/tty41 /dev/tty46 /dev/tty50 /dev/tty55 /dev/tty6 /dev/tty7 /dev/ttyS2 /dev/tty10 /dev/tty15 /dev/tty2 /dev/tty24 /dev/tty29 /dev/tty33 /dev/tty38 /dev/tty42 /dev/tty47 /dev/tty51 /dev/tty56 /dev/tty60 /dev/tty8 /dev/ttyS3 /dev/tty11 /dev/tty16 /dev/tty20 /dev/tty25 /dev/tty3 /dev/tty34 /dev/tty39 /dev/tty43 /dev/tty48 /dev/tty52 /dev/tty57 /dev/tty61 /dev/tty9
格式很好,我可以在終端內的適度塊中看到所有文件。
但是當我以這種方式執行這個命令時
watch -d -n1 'ls /dev/tty*'
,我看到:Every 1.0s: ls /dev/tty* debian: Wed Jun 30 21:08:06 2021 /dev/tty /dev/tty0 /dev/tty1 /dev/tty10 /dev/tty11 /dev/tty12 /dev/tty13 /dev/tty14 /dev/tty15 /dev/tty16 /dev/tty17 /dev/tty18 /dev/tty19 /dev/tty2 /dev/tty20 /dev/tty21 ...
所以垂直列出的輸出不適合我的螢幕。是什麼原因?我該如何解決這個問題?
是什麼原因?
執行命令時
watch
,它們不會連接到終端。換句話說,isatty(3)
返回 0。您可以使用以下 isatty.c 來檢查命令在執行時是否連接到終端:#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(void) { printf("%d\n", isatty(STDOUT_FILENO)); return EXIT_SUCCESS; }
編譯:
gcc isatty.c -o isatty
在終端模擬器中執行:
$ ./isatty 1
在手錶中執行它:
$ watch ./isatty Every 2.0s: ./isatty darkstar: Wed Jun 30 20:42:51 2021 0
我該如何解決這個問題?
在手錶中使用
-C
帶有 ls 的選項:watch -d -n1 'ls -C /dev/tty*'