回答:
正しいコマンドは
watch --color "ls -a1 --color"
マニュアルページや--help画面には記載されていません。それを見つけるために文字列を使用する必要があります。
watch --color "sudo iwlist wlan0 scanning | egrep 'Quality|ESSID' | egrep --color -i 'foobar|$'"
:(色を食べるようになる
watch
procpsの(ほとんどのLinuxディストリビューションのデフォルトは、私は信じている)からは、持っている--color
V3.3.2以降のオプションを選択します。
「ウォッチ」コマンドでは不可能だと思います。これを行うより長い方法を次に示します。
while true; do clear; date;echo;ls -al --color; sleep 2; done
たとえば、これをスクリプトに入れることができます。
echo "while true; do clear; date;echo;\$*;sleep 2; done" > watch2
chmod +x watch2
./watch2 ls -al --color
明確にするために、「監視」コマンドでは不可能だと思う理由を次に示します。cat -vを使用するとどうなるかをご覧ください。
watch "ls -al --color|cat -v"
それはあなたに色制御文字を示しています...私はあなたが望むものではないと思います。
man watch
明かすことなくそれが可能であるべきであると示唆しwatch
ます。
cat -v
何man watch
が話しているのかを確認してください。
while true; do out=$(date;echo;ls -al --color);clear;echo $out;sleep 2;done
echo "$out"
。 stackoverflow.com/q/2414150/86967
私のようにwatch
、HomebrewのMacを使用している場合、色はサポートされません。
欲しいのはfswatchですが、まだHomebrewではありません。それをインストールするには、もう少し複雑なことをしたいでしょう
https://raw.github.com/mlevin2/homebrew/116b43eaef08d89054c2f43579113b37b4a2abd3/Library/Formula/fswatch.rb
使用方法については、このSOの回答を参照してください。
watch
のコマンドに適用されます
更新:watch
問題を修正した最新バージョンが判明します。したがって、の色watch --color
が間違っている場合は、単に更新することをお勧めします(私のシステムでは、procps
パッケージ内にあります)。
watch --color
私の経験では、色のサポートは限られています(ただし、には十分ですls -l --color
)。これが私のバージョンの@davrの答えです。いくつかの追加機能がありますが、最も重要なのはちらつきを低減することです。それを.bashrcに入れて、として使用できますcwatch ls -l --color
。
# `refresh cmd` executes clears the terminal and prints
# the output of `cmd` in it.
function refresh {
tput clear || exit 2; # Clear screen. Almost same as echo -en '\033[2J';
bash -ic "$@";
}
# Like watch, but with color
function cwatch {
while true; do
CMD="$@";
# Cache output to prevent flicker. Assigning to variable
# also removes trailing newline.
output=`refresh "$CMD"`;
# Exit if ^C was pressed while command was executing or there was an error.
exitcode=$?; [ $exitcode -ne 0 ] && exit $exitcode
printf '%s' "$output"; # Almost the same as echo $output
sleep 1;
done;
}
次のようなこともできます
cwatch 'ls -l --color | head -n `tput lines`'
端末の行数が出力より少ない場合。ただし、すべての行が端末の幅より短い場合にのみ機能します。私が知っている最善の回避策は次のとおりです。
cwatch 'let lines=`tput lines`-2; ls -l --color | head -n $lines'