元のファイルを出力に自動的に置き換える方法は? [コピー]

元のファイルを出力に自動的に置き換える方法は? [コピー]

.scssコマンドを使用してsass()ファイルをフォーマットするWebサイトがありますsass-convert。構文は次のとおりです。

$> sass-convert original.scss formatted.scss

私はgitリポジトリにあるので、別々の出力ファイルを持つことは完全に冗長です。私の次のステップはですmv formatted.scss original.scss。 2番目のステップを避けるために何かをしたいと思います。それはまるで

$> sass-convert original.scss %^&

%^&私が望むことを行う魔法のシェル/bash構文はありますか?

bash(または他のシェル)構文を使用して、1行で出力ファイルを入力ファイルに自動的に置き換える方法はありますか?

私の問題は次のように異なります。この問題iconv出力ファイルが最初に作成され、入力ファイルが空になるため、以下にリストされている解決策のどれも機能しません。これら2つの質問に対する回答を見ると、互いに異なることがわかります。この質問に対する答えは、すぐに出力ファイルを生成しないすべてのコマンドに適用されます。

ベストアンサー1

Unixプログラムには-i inplaceスイッチがあるかもしれません(たとえば、以前のバージョンsedにはありませんでしたが、ほとんどの人はからフラグを盗みますperl)。man詳しくはページをご覧ください。これは通常、プログラムが出力を一時ファイルに書き込んでから、元の名前にrename(2)新しい出力を書き込むための呼び出しを実行します(この名前を変更すると、selinuxコンテキストやプロセスの他の素晴らしいACLが破損する可能性があります。使用します)。

write-to-tmp-file-and-モードrename(2)の別の解決策はsponge次のとおりですmoreutils

$ echo hi > file
$ tr h b < file | sponge file
$ cat file
bi
$ 

おすすめ記事