[解決済み] エコーの表示と更新を同じ行で行う方法
2022-05-14 10:05:16
質問
私はBashで以下を持っています (Linuxの場合)
for dir in Movies/*
do
(cd "$dir" && pwd|cut -d \/ -f5|tr -s '\n' ', ' >> ../../movielist &&
exiftool * -t -s3 -ImageSize -FileType|tr -s '\t' ',' >> ../../movielist )
echo "Movie $movies - $dir ADDED!"
let movies=movies+1
done
しかし、私は、"echo"が次の行に次のechoを表示するようにしたい(最後のecho出力と連結するのではなく、置き換える)ので、それが更新されているように見えるようにします。パーセントのプログレスバーが同じ行に表示されるのと同じようなものです。
どのように解決するのですか?
さて、私は正しく読んでいなかった
man echo
のページを正しく読んでいませんでした。
echoには、3番目のエスケープ文字を追加すれば、これを実行できる2つのオプションがありました。
2つのオプションは
-n
と
-e
.
-n
のようにすると、末尾の改行が出力されなくなります。そのため、何かをエコーするたびに改行する手間が省けます。
-e
はバックスラッシュのエスケープ記号を解釈できるようにします。
これにはどのようなエスケープシンボルを使うか当ててみてください。
\r
. そう、キャリッジリターンを使うと最初に戻ってしまうので、視覚的に同じ行で更新しているように見えてしまうのです。
つまり、エコー行は次のようになります。
echo -ne "Movie $movies - $dir ADDED!"\\r
Bash に殺されないように、エスケープシンボルをエスケープする必要がありました。
\
という記号が2つあるのはそのためです。
ウィリアムが言っていたように
printf
はこのような似たような(そしてさらに広範囲な)作業を行うこともできます。
関連
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法とは?
-
[解決済み] ターミナルでbashスクリプトを実行するにはどうすればよいですか?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] コマンドラインから .bash_profile を再読み込みする方法は?
-
[解決済み] シェルコマンドを実行しながらエコーする方法
-
[解決済み] ターミナルで現在の行をクリア/削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シェルスクリプトでブール変数を宣言して使用するにはどうすればよいですか?
-
[解決済み] 部分的にコピーされたファイルでscpを再開する方法は?[クローズド]です。
-
[解決済み] find -exec cp {} でエラー 'find: missing argument to -exec' が発生した場合の解決策。TARGET_DIR + [閉店]。
-
[解決済み] bashの文字列の等値性テストで、予期しない演算子エラーが発生するのはなぜですか?重複
-
[解決済み] ssh / リモートbashコマンドでシングルクォート文字をエスケープするにはどうすればよいですか?
-
[解決済み] 構文エラー:オペランドが期待される(エラーメッセージは "+")。
-
[解決済み] bashでjsonファイルを解析するためにjqの出力からダブルクオートを削除する方法は?
-
[解決済み] bashスクリプトで変数の束縛を解除
-
[解決済み] IPアドレスのまとめ方
-
[解決済み] Bashスクリプトのset -o pipefailの意味を教えてください。