쉘을 사용하여 파일 위치에서 경로를 추출하는 방법

쉘을 사용하여 파일 위치에서 경로를 추출하는 방법

아래 주어진 문자열에서 경로 위치를 추출하는 방법.

/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr

예상 출력.

/opt/oracle/app/oracle/product/12.1.0/bin

(또는)

/opt/oracle/app/oracle/product/12.1.0/bin/

답변1

쉘의 접미사 제거 기능 사용

str=/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr
path=${str%/*}
echo "$path"

일반적 으로 ${parameter%word}. 우리의 경우 마지막 슬래시와 다음 문자를 모두 제거하려고 합니다: .wordparameter/*

위의 결과는 다음과 같습니다.

/opt/oracle/app/oracle/product/12.1.0/bin

디렉터리 이름 사용

디렉토리 이름경로에서 마지막 구성 요소를 제거하는 데 사용할 수 있습니다.

$ dirname -- "$str"
/opt/oracle/app/oracle/product/12.1.0/bin

답변2

start cmd:> dirname "/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr"
/opt/oracle/app/oracle/product/12.1.0/bin

file_path="/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr"
dir_path_woslash="${file_path%/*}"
echo "$dir_path_woslash"
/opt/oracle/app/oracle/product/12.1.0/bin

shopt -s extglob
dir_path_wslash="${file_path%%+([^/])}"
echo "$dir_path_wslash"
/opt/oracle/app/oracle/product/12.1.0/bin/

관련 정보