2 votos

Encontrar el punto de montaje de un dispositivo en shell scripts

Buscando un correcto y una forma sencilla de encontrar un punto de montaje en un shell script.

Esto funciona como se esperaba

tmp=$(mktemp /tmp/my.XXXXXX)
mpoint=$(diskutil info -plist disk1s1 >"$tmp" ; /usr/libexec/PlistBuddy -c 'Print MountPoint' "$tmp")
rm -f "$tmp"

pero necesita un archivo temporal.

Aunque no es un gran problema, pero aún así sería más bonito hacerlo sin de la tempfile .

Lamentablemente, el

/usr/libexec/PlistBuddy -c 'Print MountPoint' <(diskutil info -plist disk1s1)

no funciona.

Es un error del PlistBuddy ¿o me he perdido algo?

Utilizando zsh en fresco Big Sur instalación.

2voto

Michael Zhou Puntos 167

Utilice un here string para pasar la salida de diskutil a la norma en.

/usr/libexec/PlistBuddy -c "Print :MountPoint" /dev/stdin <<< "$(diskutil info -plist disk1s1)"

1voto

staffan Puntos 3299

Es una limitación de PlistBuddy que sólo puede leer de un archivo, no de una tubería. Construcciones como … | /usr/libexec/PlistBuddy /dev/stdin y /usr/libexec/PlistBuddy /dev/stdin <(…) utilizar una tubería para conectar la salida de en la entrada de PlistBuddy . Es necesario utilizar un archivo temporal. Pero puedes hacer que el shell lo haga por ti. Aquí-documentos y aquí-cuerdas utilizan un archivo temporal, al igual que la función de zsh =(…) sustitución de procesos :

/usr/libexec/PlistBuddy -c 'Print MountPoint' <<EOF
$(diskutil info -plist disk1s1)
EOF
/usr/libexec/PlistBuddy -c 'Print MountPoint' <<<$(diskutil info -plist disk1s1)
/usr/libexec/PlistBuddy -c 'Print MountPoint' =(diskutil info -plist disk1s1)

Dependiendo de lo que esté haciendo, puede obtener información sobre el punto de montaje en df en su lugar.

df -P |awk '$1 == "/dev/disk1s1" {print $6}'

(Tenga en cuenta que esta versión simple no maneja correctamente las rutas de los puntos de montaje que contienen espacios).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X