いくつかのコマンド(例rsync
:)はリストを引数として使用します。このファイルにUnixのコメントを含めることはできますか#
?
答え1
コマンドのドキュメントにコメントを含めることができると明示的に言及しない限り、コメントを含めることはできないと見なされます。
答え2
この場合、私が一般的にすることは、パラメータ配列を構築し(注釈を付けることができる)、それをrsyncなどに渡すことです。
#!/bin/bash
rsync_args=(
# Show me what you're doing
--itemize-changes
# All HTML and resources
*.html *.css *.js
# All PHP source code
*.php
# To the live server
live:
)
rsync "${rsync_args[@]}";
答え3
私が正しく理解した場合は、ファイルのリストにファイルの説明を追加したいと思います。シェルが#文字を検出すると、コマンドラインに残っているすべての文字を無視するため、これは不可能です。これを達成する1つの方法は、--files-from = filelistパラメータでrsyncを使用することです。ファイルリストファイルには説明を含めることができます。
一方、ファイル名に#文字を含めたい場合は、この方法が機能します。たとえば、bashを使用すると、次のようになります。
touch a#b
touch 'a #b'
touch "a #b"
答え4
イグナシオ・バスケス・アブラムス# comments
答えは最も安全ですが、本当にそうしたい場合(場合によってはそうでしたように)、行全体を占める問題を処理することで、少なくとも部分的に簡単な解決策を簡単に得ることができます。
実際のリストのデータ行の後ろにあるコメントを処理したい場合は、データ行に含まれる#
文字が含まれていないことがわからない場合は、状況が少し難しくなる可能性があります。
あなたはそれを使用することができますプロセスの交換そして簡単なヘルパースクリプト。
ここにいくつかの例があります。カラー出力をgrc
生成する前に。私はbash機能を使用しましたが、確かにスクリプトファイルに保存できます。diff
# nocom handles comment-only lines (ie. no dat)
# it ignores any # chars embedded in your data lines.
#
nocom() { sed -e '/^[[:space:]]*#/d' "$1"; }
# NOCOM handles handles comments which occurr after your data
# as well as comment-only lines.
# Do not use NOCM unless you are CERTAIN that your data
# lines contain no # chars.
#
NOCOM() { sed -n '/^[[:space:]]*#/d; s/^\([^#][^#]*[^[:space:]]\)[[:space:]]*#.*/\1/; p' "$1"; }
printf '# a bit of hokus-pokus
# you see the coments here,
# but the calling program will not.
$HOME/bin/abra
$HOME/bin/kadabra # comment after data
$HOME/bin/sim# another comment after data
' >file
echo == nocom ==
cat <(nocom "file")
echo == NOCOM ==
cat <(NOCOM "file")
echo == diff ==
grc diff "file" <(NOCOM "file")
出力は次のとおりです。
== nocom ==
$HOME/bin/abra
$HOME/bin/kadabra # comment after data
$HOME/bin/sim# another comment after data
== NOCOM ==
$HOME/bin/abra
$HOME/bin/kadabra
$HOME/bin/sim
== diff ==
1,3d0
< # a bit of hokus-pokus
< # you see the coments here,
< # but the calling program won't.
5,6c2,3
< $HOME/bin/kadabra # comment after data
< $HOME/bin/sim# another comment after data
---
> $HOME/bin/kadabra
> $HOME/bin/sim