パイプラインプロジェクトリストにプロジェクトを追加する

パイプラインプロジェクトリストにプロジェクトを追加する

アイテムリストにアイテムを追加する必要があります。この用語が正しいかどうかはわかりません。

例:

私が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[@]}"シェルはそれらを個別に引用した要素のリストに展開します。

関連情報