OVH Cloud OVH Cloud

trouver le nom du Volume par défaut

8 réponses
Avatar
pere.noel
bon si je fais :

~%> ls -al /Volumes
[...]
drwxrwxr-t 26 yvon yvon 986 Jun 24 16:48 CDX
lrwxr-xr-x 1 root admin 1 Jun 28 10:08 HDX -> /

donc, je prends le symlink comme volume par défaut.

y aurait-il un moyen plus direct et peut-être plus sûr ???

(j'en ai besoin pour un script ruby qui appelle des scripts applescript
lesquels utilisent les pathes à la Apple)
--
une bévue

8 réponses

Avatar
Nicolas.MICHEL
Une bévue wrote:

bon si je fais :

~%> ls -al /Volumes
[...]
drwxrwxr-t 26 yvon yvon 986 Jun 24 16:48 CDX
lrwxr-xr-x 1 root admin 1 Jun 28 10:08 HDX -> /

donc, je prends le symlink comme volume par défaut.

y aurait-il un moyen plus direct et peut-être plus sûr ???

(j'en ai besoin pour un script ruby qui appelle des scripts applescript
lesquels utilisent les pathes à la Apple)


Le problème avec ta commande, c'est que rien ne te dis que quelqu'un ou
quelque chose n'a pas créé un symlink dans /Volumes.
Mais tu peux tester l'origine du symlink avec readlink pour vérifier que
c'est bien / (pour le volume système).

Sinon pour voir le nom de la partition système autrement, tu peux faire
un truc genre :

i=$(df / |awk ' /dev/ {print $1}'|cut -c 6-)
diskutil list |awk "/$i/ {print $3}"

Plus compliqué, mais pas forcément plus sûr amha.
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas

Avatar
pere.noel
Nicolas MICHEL wrote:

Le problème avec ta commande, c'est que rien ne te dis que quelqu'un ou
quelque chose n'a pas créé un symlink dans /Volumes.


bonne remarque

Mais tu peux tester l'origine du symlink avec readlink pour vérifier que
c'est bien / (pour le volume système).


OK, merci.

Sinon pour voir le nom de la partition système autrement, tu peux faire
un truc genre :

i=$(df / |awk ' /dev/ {print $1}'|cut -c 6-)
diskutil list |awk "/$i/ {print $3}"

Plus compliqué, mais pas forcément plus sûr amha.


c'est plus joli et ésotérique en tout cas ;-)

--
une bévue

Avatar
Nicolas.MICHEL
Une bévue wrote:

i=$(df / |awk ' /dev/ {print $1}'|cut -c 6-)
diskutil list |awk "/$i/ {print $3}"

Plus compliqué, mais pas forcément plus sûr amha.


c'est plus joli et ésotérique en tout cas ;-)


Attends, ça fait du ruby et ça traite le shell d'ésotérique ?
Je ne connais pas ruby, mais ça donne envie :)

--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas


Avatar
pere.noel
Nicolas MICHEL wrote:

Attends, ça fait du ruby et ça traite le shell d'ésotérique ?
Je ne connais pas ruby, mais ça donne envie :)


euh ruby c'est lisible...

d'ailleurs wrappé dans du ruby ça ne marche pas ta deuxième solution...
mais bon je ne sais trop quel shell utilise ruby, un shell par défaut
(bash sur Tiger ?) perso j'utilise zsh.

donc :
~%> i=$(df / |awk ' /dev/ {print $1}'|cut -c 6-)
~%> diskutil list |awk "/$i/ {print $3}"

me donne bien :
HDX

tandis que wrappé en ruby :

p `i=$(df / |awk ' /dev/ {print $1}'|cut -c 6-);diskutil list |awk "/$i/
{print $3}"`.chomp

ça me donne :

" 2: Apple_HFS HDX 57.2 GB disk0s3"

notes que ce n'est pas très important pour moi, vu que la première
solution marche très bien, elle donne en ruby :
def findDefaultVolume
Dir.open("#{VOLUMES}") do |dir|
dir.each do |file|
if File.symlink? "#{VOLUMES}/#{file}" and `readlink -n
"#{VOLUMES}/#{file}"`.chomp == "/"
return @defaultVolumeName=file
end
end
end
return false
end

--
une bévue

Avatar
Patrick Stadelmann
In article <1hhqlzn.1i5elgj1khrgv1N%,
(Une bévue) wrote:

bon si je fais :

~%> ls -al /Volumes
[...]
drwxrwxr-t 26 yvon yvon 986 Jun 24 16:48 CDX
lrwxr-xr-x 1 root admin 1 Jun 28 10:08 HDX -> /

donc, je prends le symlink comme volume par défaut.

y aurait-il un moyen plus direct et peut-être plus sûr ???


En AppleScript on obtient une référence sur le volume système avec :

posix file "/"

Attention cependant si cette référence est convertie et utilisée sous
forme de chemin : les chemins HFS ne sont pas uniques, et s'il y a un
second volume avec le même nom, on ne sait pas sur lequel le chemin va
pointer. Il faut éviter de travailler avec ces chemins, et préférer
l'utilisation de référence (classe "file") ou alias (classe "alias").

Patrick
--
Patrick Stadelmann

Avatar
pere.noel
Patrick Stadelmann wrote:


En AppleScript on obtient une référence sur le volume système avec :

posix file "/"

Attention cependant si cette référence est convertie et utilisée sous
forme de chemin : les chemins HFS ne sont pas uniques, et s'il y a un
second volume avec le même nom, on ne sait pas sur lequel le chemin va
pointer. Il faut éviter de travailler avec ces chemins, et préférer
l'utilisation de référence (classe "file") ou alias (classe "alias").


ok merci bien.
--
une bévue

Avatar
Nicolas.MICHEL
Une bévue wrote:

Nicolas MICHEL wrote:

Attends, ça fait du ruby et ça traite le shell d'ésotérique ?
Je ne connais pas ruby, mais ça donne envie :)


euh ruby c'est lisible...


tout code est lisible pour qui sait le lire :)
Dans mon code c'est sans-doutes awk qui te semble complexe.
Le problème c'est que sans awk et autre sed, on ne peux pas faire grand
chose avec le shell...

tandis que wrappé en ruby :

p `i=$(df / |awk ' /dev/ {print $1}'|cut -c 6-);diskutil list |awk "/$i/
{print $3}"`.chomp

ça me donne :

" 2: Apple_HFS HDX 57.2 GB disk0s3"


OK, donc tu n'est pas très loin de compte.
Ne serais-ce pas une question de protection ?
C'est {print $3} qui ne passe pas.
awk retourne la bonne ligne mais n'extrait pas le nom.

Donc soit tu débug awk, soit tu extrait avec ruby le 3ème champ...
ça doit être faisable facilement.


notes que ce n'est pas très important pour moi, vu que la première
solution marche très bien


oki

elle donne en ruby :
def findDefaultVolume
Dir.open("#{VOLUMES}") do |dir|
dir.each do |file|
if File.symlink? "#{VOLUMES}/#{file}" and `readlink -n
"#{VOLUMES}/#{file}"`.chomp == "/"
return @defaultVolumeName=file
end
end
end
return false
end


C'est vrais que ça a l'air verbeux mais faisable ce ruby :)
Bon, je ne crois pas que je vais m'y mettre, je ne fais quasi que de
l'administration système. Or le shell est un langage dans lequel sont
écris bon nombre d'éléments systèmes, donc c'est l'outil le plus logique
et "rentable" pour moi.

Et toi, que fais tu avec ruby ?
Pourquoi ce choix ?

--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas


Avatar
pere.noel
Nicolas MICHEL wrote:

Et toi, que fais tu avec ruby ?


de petites applications autonomes

Pourquoi ce choix ?


pour avoir un ui Cocoa, en réalité je fais une sorte de RubyCocoa avec
du shell et de l'applescript.
--
une bévue