通知を送信して通知を送信しようとしています。
notify-send 'System' 'Dist files is already' $(du -h /var/cache/distfiles/ | tr -d '/var/cache/distfiles/')
ただし、私には不明な理由で必要な間隔を表示できず、次のように出力されます。
Invalid number of options.
しかし、次のようにシムを取り除くと:
notify-send 'System' 'Dist files is already'$(du -h /var/cache/distfiles/ | tr -d '/var/cache/distfiles/')
完璧に動作します。なぜこれが起こるのか説明してください。私はとても愚かです。
答え1
このコマンドはtr
期待どおりに機能しません。
-d、--削除 文字を削除設定1、未翻訳
tr
意味を削除一つSET1の文字例:
$ echo foobar | tr -d fb
ooar
今見てみましょうman notify-send
:
要約 通知を送信[オプション]{要約} [ボディ]
だから合格しなければならない2パラメータ(オプションを除く)。たとえば、
$ notify-send 'System' 'foo' 'bar'
Invalid number of options.
$ notify-send 'System' 'foo'
<notification appears>
出力を見てみましょうdu -h /boot 2>/dev/null
。
4,0K /boot/efi
3,4M /boot/grub/x86_64-efi
2,3M /boot/grub/fonts
8,0M /boot/grub
146M /boot
ありますか?2各文字列熱!したがって、コマンドの結果(/boot
例のディレクトリを使用)は次のようになります。
notify-send 'System' 'Dist files is already' 4,0K /boot
出力が1行しかない場合は、ご覧のように複数行にすることができます。だから多くの議論があります。
スペースを削除すると、結果の文字列が1として読み取られるため、正しい2つの引数のように見えます。
したがって、コマンドを次のように変更します。
notify-send 'System' "Dist files is already $(du -h /var/cache/distfiles/)"
出力が1行であると確信している場合にのみ可能です。以下は/root
フォルダの例です。
$ notify-send 'System' "Dist files is already $(du -h /root 2> /dev/null)"
または
$ notify-send 'System' "Dist files is already $(du -h /root | awk '{ print $1 }')"