릴리스 정보 파일에서 내 시스템의 "PRETTY_NAME"을 가져오고 싶습니다. bash 파일에서 다음 명령을 사용하여 가져옵니다.
SYS_VERSION=$(cat /etc/*-release | egrep "^PRETTY_NAME=(.*[a-zA-Z]+.*)$")
전체 행을 반환합니다.
PRETTY_NAME="Ubuntu 16.04.3 LTS"
하지만 저는 큰따옴표 안의 문자만 원합니다.
답변1
사용 lsb_release
:
$ lsb_release -ds
Ubuntu 17.04
또는 스크립트에서
sys_descr=$( lsb_release -ds )
printf 'This is a "%s" system\n' "$sys_descr"
lsb_release
파일을 분석합니다 /etc/os-release
. 이 -d
플래그는 시스템에 대한 "설명"을 제공하며, 이는 정확히 제공 PRETTY_NAME
되는 것 입니다 /etc/os-release
. 이 -s
플래그는 헤더 없이 출력을 제공합니다.
lsb_release
및 에 대한 설명서를 참조하세요 os-release
.
답변2
사용 sed
:
sed '/^PRETTY_NAME=/!d;s///;s/"//g' /etc/*-release
첫 번째 명령은 으로 시작하지 않는 모든 줄을 제거하고 PRETTY_NAME=
, 두 번째 명령은 해당 패턴을 제거하고(빈 패턴은 마지막 패턴이 사용됨을 의미함), 세 번째 명령은 따옴표를 제거합니다.
답변3
싱글로sed표현하다:
sed -n 's/PRETTY_NAME="\(.*\)"/\1/p' /etc/*release
산출:
Ubuntu 16.04.3 LTS
귀하의 경우에는 다음과 같습니다.
SYS_VERSION=$(sed -n 's/PRETTY_NAME="\(.*\)"/\1/p' /etc/*release)
답변4
명령을 파이프로 연결할 수 있습니다.cut -d '"' -f2
:
SYS_VERSION=$(cat /etc/*-release | egrep "^PRETTY_NAME=(.*[a-zA-Z]+.*)$" | cut -d '"' -f2)