私のスクリプトでは、作業中のファイルのディレクトリが必要です。たとえば、file= "stuff/backup/file.Zip"。変数$file
から文字列 "stuff/backup /"を取得する方法が必要です。
dirname $file
あなたが探しているものです
dirname $file
出力します
stuff/backup
これはbasename
の反対です:
basename $file
出力します
file.Zip
directorypath
からfilepath
を取得するには:
file="stuff/backup/file.Zip"
dirPath=${file%/*}/
echo ${dirPath}
外部コマンドに依存しないため、Urvin/LuFFyが提案する${file%/*}
の使用は技術的に優れています。同じ方法でベース名を取得するには、${file##*/}
を実行します。必要な場合を除き、外部コマンドを使用する必要はありません。
file="/stuff/backup/file.Zip"
filename=${1##*/} # file.Zip
directory=${1%/*} # /stuff/backup
この方法でもPOSIXに完全に準拠します。それが役に立てば幸い! :-)
単に$ dirname /home/~username/stuff/backup/file.Zip
を使用します
/home/~username/stuff/backup/
を返します