echo * | xargs -n1 echo 1行ずつリストを作成するより短くてエレガントな方法はありますか?

echo * | xargs -n1 echo 1行ずつリストを作成するより短くてエレガントな方法はありますか?

これを行うと、ls出力は列に表示されますが、出力は1列、行単位、行ごとに1つの項目にのみ存在する必要があります。

だから私が考えることができる唯一の方法は次のとおりです。

echo * | xargs -n1 echo

これがそれを実装する標準的な方法ですか、それとも悪いスタイルですか?

ベストアンサー1

xargsに関する一般的なアドバイスは、xargsを使用しないことですxargs。対応する入力形式は一般的なツールではサポートされていません。

xargs 使用法の次のレベルは use でxargs -0、ここで入力はヌルで区切られます。しかし、あなたの場合、xargsはとにかく意味がありません。

ls1行に1つのファイルしか持たないようにするには、を使用しますls -1lsこのコマンドは、出力がパイプまたはファイルに転送されると、常に1行に1つのファイルを配置します。 plainは、出力が端末に渡されると列のlsファイル名をソートしますが、ls -1そうではありません。

これは、単語リストがあり、1行に1単語ずつ印刷したい場合に機能しますprintf '%s\n'echoスペースの代わりに各要素の後に改行を印刷し、バックスラッシュやダッシュ処理のリスクがないことを除いて、同様に機能します。

printf '%s\n' *          # prints the names of the files in the current directory
printf '%s\n' "$@"       # prints the positional arguments
printf '%s\n' "${a[@]}"  # prints the element of the array `a`

おすすめ記事