GNU/Linux >> Linux の 問題 >  >> Linux

bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

realpath を見てください これは GNU/Linux、FreeBSD、および NetBSD で利用できますが、OpenBSD 6.8 では利用できません。私は次のようなものを使用します:

CONTAININGDIR=$(realpath ${FILEPATH%/*})

あなたがやろうとしているように聞こえることをするために。


フルパスを取得するには:

readlink -f relative/path/to/file

ファイルのディレクトリを取得するには:

dirname relative/path/to/file

2 つを組み合わせることもできます:

dirname $(readlink -f relative/path/to/file)

readlink -f の場合 お使いのシステムでは利用できません。これを使用できます:

function myreadlink() {
  (
  cd "$(dirname $1)"         # or  cd "${1%/*}"
  echo "$PWD/$(basename $1)" # or  echo "$PWD/${1##*/}"
  )
}

相対パスとして指定されたファイルのディレクトリに移動するだけでよい場合は、絶対パスを知る必要はありません。相対パスは完全に合法であるため、以下を使用してください:

cd $(dirname relative/path/to/file)

(スクリプトの実行中に) 元のパスに戻りたい場合は、pushd を使用します。 cd の代わりに 、および popd

* myreadlink の間 この質問の文脈では上記で十分ですが、 readlink に比べていくつかの制限があります 上記で提案されたツール。たとえば、 basename が異なるファイルへのリンクを正しくたどらない .


これは、ファイルとフォルダーの両方で機能します:

absPath(){
    if [[ -d "$1" ]]; then
        cd "$1"
        echo "$(pwd -P)"
    else 
        cd "$(dirname "$1")"
        echo "$(pwd -P)/$(basename "$1")"
    fi
}

Linux
  1. 各ファイルとディレクトリのサイズを一覧表示し、Bash で降順で並べ替える方法は?

  2. bashでループの終了ステータスを取得する方法

  3. Bash/Debianでファイル作成日時を取得するには?

  1. ディレクトリツリーで最も古いファイルを見つけるにはどうすればよいですか

  2. 絶対パス経由でbashスクリプトを実行するには?

  3. Linuxでファイルの物理サイズを取得するには?

  1. Linuxのディレクトリツリーで最も古いファイルを見つける方法

  2. バッシュ‘?

  3. Bashが実行されているTtyを取得する方法は?