web-dev-qa-db-ja.com

Bashのインラインコメント?

1行のコマンドで単一のフラグをコメントアウトできるようにしたいと思います。 Bashにはfrom # till end-of-lineコメントしかないようです。私は次のようなトリックを見ています:

ls -l $([ ] && -F is turned off) -a /etc

Ugいですが、何もないよりはましです。もっと良い方法はありますか?

次のように動作するようですが、移植性があるかどうかはわかりません:

ls -l `# -F is turned off` -a /etc
132
Lajos Nagy

私が好むのは:

Bashスクリプトでのコメント

これにはいくらかのオーバーヘッドがありますが、技術的にはあなたの質問に答えます

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

複数行コマンドの行コメントの入力方法

95
Rafareino

行をコピーして元のバージョンをコメントアウトするのが最も簡単(そして最も読みやすい)であることがわかります。

#Old version of ls:
#ls -l $([ ] && -F is turned off) -a /etc
ls -l -a /etc
57
Dan

$(: ...)は少しlessいですが、まだ良くありません。

変数に保存するのはどうですか?

#extraargs=-F
ls -l $extraargs -a /etc
4
Karoly Horvath

複数のパイプコマンドの間にあるインラインコメントに対する私のソリューションを次に示します。

コメント解除されたコードの例:

    #!/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
2
KylePDavis

ほとんどのコマンドでは、引数を任意の順序で指定できます。コメントされたフラグを行の最後に移動するだけです:

ls -l -a /etc # -F is turned off

次に、再び有効にするには、コメントを外してテキストを削除します。

ls -l -a /etc -F
2
leedm777

変数が空であることがわかっている場合は、コメントとして使用できます。もちろん、空でない場合はコマンドが台無しになります。

 ls -l $ {1#-Fはオフになっています} -a /etc

§10.2。パラメーターの置換

1
Steven Penny

コメントを作成する価値がある場合は、おそらく行の終わりに移動することも、単独の行に移動することもできます。どの言語でも、コメントの前後にコードを含む行内コメントが必要になることはほとんどありません。

ああ、例外が1つあります。これは、私が通常使用するSQLの方言で、 '{comments}'を使用しています。時折、私は次のように書きます:

CREATE UNIQUE INDEX u1_table ON Table(...);
CREATE {DUPS} INDEX d1_table ON Table(...);

しかし、それでもストレッチです。

0

a && bなどのコマンドの一部を無効にするために、パス上にある空のスクリプトxを作成したため、次のようなことができます。

mvn install && runProject

構築する必要があるとき

x mvn install && runProject

そうでない場合(使用 Ctrl + A そして Ctrl + E 最初と最後に移動します)。

コメントで述べたように、それを行う別の方法は、xの代わりにBash組み込み:です。

$  : Hello world, how are you? && echo "Fine."
Fine.
0
Ondra Žižka