ある出力が別のコマンドの入力になるようにコマンドを接続するには?
basename | dirname /dev/null
予想出力:
dev
実際の出力:
usage: basename string [suffix]
basename [-a] [-s suffix] string [...]
/dev
また、以下を試しましたが、そのうちの1つも機能しませんでした。
dirname /dev/null | basename
答え1
それが必要です:
basename "$(dirname /dev/null)"
任意ファイルパスの場合、パスコンポーネントがで始まらないという保証はありませんが、オプションの終わりを表示するにはいくつか追加する必要があります-
。--
basename -- "$(dirname -- "$file")"
$(...)
コマンドを実行して出力を収集し、他のプログラムのコマンドライン引数として使用できます。
$(...)
削除されましたので参考にしてくださいみんなコマンド出力の末尾の改行は、上記の例で名前が改行で終わるディレクトリに対してはまだ機能しません。この問題を解決することは可能ですが、苦しみすぎて問題が無視されることがよくあります。
zshシェルでは、cshスタイルの修飾子を使用して、t
問題のないファイルのail(basename)またはead(dirname)を取得できます。h
tail_of_head=$file:h:t
これらの修飾子は使用できますが、cshやzshなどのパラメータ拡張ではなく、履歴拡張にのみvim
使用できます。bash