fdisk -l
에서 실행 되고 /dev/sdbn
실행 되는 쉘 스크립트를 작성하고 싶습니다 fdisk -l
.
추출된 단어를 이용해서 에 설치하고 싶습니다 /mnt
.
예를 들어:
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 493 3956672 6 FAT16
문자열만 추출하려면 어떻게 해야 합니까 /dev/sdb1
?
답변1
노력하다:
fdisk -l | grep -o '^/dev/sdb[0-9]'
이 -o
옵션을 사용하면 grep
일치하는 패턴만 인쇄됩니다.
고쳐 쓰다
빼고 다 원하신다 /dev/sdaX
면
fdisk -l | grep -o '^/dev/sd[b-z][0-9]'
답변2
다음 명령을 사용하십시오.
fdisk -l | awk '/\/dev\/sdb[0-9]/ {print $1}'
답변3
당신은 그것을 사용할 수 있습니다 sed
...
디렉토리 경로에 가 포함되어 있으므로 sed 명령을 다음과 같이 구분하기 /
로 결정했습니다 _
(일반적으로 /
,어느기호를 구분 기호로 사용할 수 있습니다.)
fdisk -l | sed -n 's_^\(/dev/[^ ]*\) .*$_\1_p'
답변4
루트 액세스 권한이 없는 사용자는 간단한 방법을 사용할 수 있습니다 ls
.
ls /dev/sd* | grep -o '/dev/sd[a-z][1-9]'
필요에 따라 정규식을 편집합니다.
고쳐 쓰다:@StéphaneChazelas가 언급했듯이 장치 파일이 있다고 해서 기본 장치의 존재가 확인되는 것은 아닙니다. 대신 쿼리하는 것이 더 안전합니다 /proc/partitions
.
awk '$NF ~ /^sd[a-z][0-9]+/ {print "/dev/" $NF}' < /proc/partitions