私はここでガイドを読んでいます http://mywiki.wooledge.org/BashFAQ/030 このリンクでいくつかの例が与えられています 私はそれらを理解しようとしています 1つの例のコードは言う
# Bash
# Replace all spaces with underscores
for f in *\ *; do mv -- "$f" "${f// /_}"; done
私が今まで知っていたのは、検索と置換の例の場合、または上記の例のシェルスクリプトでスラッシュを使用した場合に、〜や # などのスペースのような特殊文字にバックスラッシュを使用することでし
た
。 ${f// /_}
許可された?
同じページの別の例では、スペースを削除してアンダースコアに置き換える例を示しています
find . -depth -name "* *" -exec bash -c 'dir=${1%/*} base=${1##*/};
mv "$1" "$dir/${base// /_}"' _ {} \;
上記の例では、次の1) dir=${1%/*}
2) base=${1##*/}
3) で明確ではありませんmv "$1"
。上記のステートメントで $1 が意味するものを言うと、
4) 最後に、find コマンドが閉じられ-exec <something> _ {} \;
、アンダースコア _ ,curly の使用は何ですか?中かっこ {} とバックスラッシュの後に \;? の上のコロン
3番目の例では、彼らは言います
# tolower - convert file names to lower case
# POSIX
for file in "$@"do
[ -f "$file" ] || continue # ignore non-existing names
newname=$(echo "$file" | tr '[:upper:]' '[:lower:]') # lower case
[ "$file" = "$newname" ] && continue # nothing to do
[ -f "$newname" ] && continue # don't overwrite existing files
mv -- "$file" "$newname"done
私は次の行で明確では
あり[ -f "$file" ] || continue # ignore non-existing names
ません here と continue ステートメント
6)[ -f "$newname" ] && continue # don't overwrite existing files
ポイント 5 と同じ疑問