1行のコマンドで単一のフラグをコメントアウトできるようにしたいと思います。 Bashにはfrom # till end-of-line
コメントしかないようです。私は次のようなトリックを見ています:
ls -l $([ ] && -F is turned off) -a /etc
Ugいですが、何もないよりはましです。もっと良い方法はありますか?
次のように動作するようですが、移植性があるかどうかはわかりません:
ls -l `# -F is turned off` -a /etc
私が好むのは:
これにはいくらかのオーバーヘッドがありますが、技術的にはあなたの質問に答えます
echo abc `#put your comment here` \ def `#another chance for a comment` \ xyz etc
特にパイプラインについては、オーバーヘッドのないよりクリーンなソリューションがあります
echo abc | # normal comment OK here tr a-z A-Z | # another normal comment OK here sort | # the pipelines are automatically continued uniq # final comment
行をコピーして元のバージョンをコメントアウトするのが最も簡単(そして最も読みやすい)であることがわかります。
#Old version of ls:
#ls -l $([ ] && -F is turned off) -a /etc
ls -l -a /etc
$(: ...)
は少しlessいですが、まだ良くありません。
変数に保存するのはどうですか?
#extraargs=-F
ls -l $extraargs -a /etc
複数のパイプコマンドの間にあるインラインコメントに対する私のソリューションを次に示します。
コメント解除されたコードの例:
#!/bin/sh
cat input.txt \
| grep something \
| sort -r
パイプコメントのソリューション(ヘルパー関数を使用):
#!/bin/sh
pipe_comment() {
cat -
}
cat input.txt \
| pipe_comment "filter down to lines that contain the Word: something" \
| grep something \
| pipe_comment "reverse sort what is left" \
| sort -r
または、必要に応じて、ヘルパー関数を使用しない同じソリューションを次に示しますが、少し面倒です。
#!/bin/sh
cat input.txt \
| cat - `: filter down to lines that contain the Word: something` \
| grep something \
| cat - `: reverse sort what is left` \
| sort -r
ほとんどのコマンドでは、引数を任意の順序で指定できます。コメントされたフラグを行の最後に移動するだけです:
ls -l -a /etc # -F is turned off
次に、再び有効にするには、コメントを外してテキストを削除します。
ls -l -a /etc -F
変数が空であることがわかっている場合は、コメントとして使用できます。もちろん、空でない場合はコマンドが台無しになります。
ls -l $ {1#-Fはオフになっています} -a /etc
コメントを作成する価値がある場合は、おそらく行の終わりに移動することも、単独の行に移動することもできます。どの言語でも、コメントの前後にコードを含む行内コメントが必要になることはほとんどありません。
ああ、例外が1つあります。これは、私が通常使用するSQLの方言で、 '{comments}'を使用しています。時折、私は次のように書きます:
CREATE UNIQUE INDEX u1_table ON Table(...);
CREATE {DUPS} INDEX d1_table ON Table(...);
しかし、それでもストレッチです。
a && b
などのコマンドの一部を無効にするために、パス上にある空のスクリプトx
を作成したため、次のようなことができます。
mvn install && runProject
構築する必要があるとき
x mvn install && runProject
そうでない場合(使用 Ctrl + A そして Ctrl + E 最初と最後に移動します)。
コメントで述べたように、それを行う別の方法は、x
の代わりにBash組み込み:
です。
$ : Hello world, how are you? && echo "Fine."
Fine.