コマンドをリンクする方法

コマンドをリンクする方法

ある出力が別のコマンドの入力になるようにコマンドを接続するには?

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

おすすめ記事