
アイテムリストにアイテムを追加する必要があります。この用語が正しいかどうかはわかりません。
例:
私が2つのファイル「a」と「b」を含むディレクトリにあるとしましょう。これをリストls
にパイプすると、less
「a」と「b」という2つの項目があります。ls | less
lsをlessにパイプしたいのですが、lessコマンドに到達する前にリストにエントリを追加したいと思います。たとえば、
ls -->unknow shell feature<-- less
lessによってリストされている内容は「a」、「b」、および「c」です(「c」ファイルは存在しません)。
可能ですか?
答え1
最も簡単なこと
(ls;echo c) | less
答え2
はい、可能です。以下は2つの例です。
パイプを2回使用してください。
ls | (cat;echo fuzz) | less
入力リダイレクトを使用します。
ls | less < <(cat;echo fuzz)
存在するzshシェル以下も使用できます。
ls | <<<"buzz" | less
#or
ls | < <(echo fuzz) | less
答え3
現在のディレクトリに表示されているすべての名前を一覧表示するには、その名前をリストの最後に追加し、次のc
結果を確認しますless
。
printf '%s\n' * c | less
この回答の残りの部分には、別々のファイル名のリストを作成し、そのリストにエントリを追加してからそれを引数として使用するか(質問の解釈方法に従って)リストを表示することが含まれless
ます。less
配列を使用して、現在のディレクトリに表示されているすべてのファイルの名前を保存できます。
names=( * )
配列の末尾にコンテンツを追加できます。
names+=( c )
...または配列の初期値を設定するときに1回:
names=( * c )
配列の要素をパラメータとして使用できますless
。
less -- "${names[@]}"
(引数をオプションではなくファイル名として解釈するために使用されます--
。less
ファイル名がダッシュで始まる場合は重要です。)
names
または、次を使用して配列要素を一覧表示できますless
。
printf '%s\n' "${names[@]}" | less
同じことを行いますが、名前付き配列の代わりに位置引数のリストを使用します。
set -- *
set -- "$@" c
...または、
set -- * c
次に、less
次の要素をパラメータとして呼び出します。
less -- "$@"
または、以下を使用して位置引数をリストしますless
。
printf '%s\n' "$@" | less
上記のすべてのコマンドでは、引用符が重要です。"$@"
このような引用符を使用すると、"${names[@]}"
シェルはそれらを個別に引用した要素のリストに展開します。