OVH Cloud OVH Cloud

proprietaire d'un fichier ou repertoire

29 réponses
Avatar
Chabala bala
Bonjour

En dehors de la commande ls, quelle commande permet de recuperer dans
une variable le proprietaire (owner) d'un fichier ou repertoire ?

Par exemple
ls -l toto
-rwxrwxrwx NUM owner ...... toto

OWNER=` proprio toto`
echo $OWNER ---> owner

Merci

9 réponses

1 2 3
Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:,
*Stephane Chazelas* tapota sur f.c.o.unix :

À noter que les deux scripts risquent aussi de foutre la pagaille dans
le cas où la commande ls lirait la variable d'environnement LS_OPTIONS
avec des options qui modifieraient le rendu de l'affichage.


Sous quel systeme y a-t'il un ls qui prend en compte une telle
variable d'environnement?


À vrai dire, je ne sais pas. Curieusement, le man de GNU ls indique dans la
partie consacrée aux variables d'environnement :

The variable LS_COLORS is used to specify the colors used. The variable
LS_OPTIONS gives default options.

Mais à l'usage, LS_OPTIONS est ignorée par la commande GNU ls.

--
Sébastien Monbrun aka TiChou


Avatar
Ego

Sous quel systeme y a-t'il un ls qui prend en compte une telle
variable d'environnement?


À vrai dire, je ne sais pas. Curieusement, le man de GNU ls indique dans
la partie consacrée aux variables d'environnement :
The variable LS_COLORS is used to specify the colors used. The variable
LS_OPTIONS gives default options.
Mais à l'usage, LS_OPTIONS est ignorée par la commande GNU ls.


oui, mais GNU is not Unix.


Avatar
Ego

Oui, ou ?, *, [... Une variable sans ces quotes est une sorte
tres particuliere de liste en sh, ksh, bash...


Donc : la solution scripting en shell est à proscrire

Sous quel systeme y a-t'il un ls qui prend en compte une telle
variable d'environnement?


j'aurais plutôt demandé de quelle race
de ls il s'agissait.

La localisation (LC_*, LANG) peut avoir une influence (mais je
pense que les premiers champs seront en general les memes). Il
peut arriver que des champs soient collés, et il peut arriver
que des usernames contiennent des espaces.


effectivement, il y a trop d'aleas.

finalement la solution des appels système stat, lstat ou getpwuid
est la meilleure. quelle soit faite en perl ou autre

Avatar
Stephane Chazelas
2006-12-17, 10:50(+01), Ego:

Oui, ou ?, *, [... Une variable sans ces quotes est une sorte
tres particuliere de liste en sh, ksh, bash...


Donc : la solution scripting en shell est à proscrire


Pas forcement. Il faut juste connaitre la syntaxe.

Sous quel systeme y a-t'il un ls qui prend en compte une telle
variable d'environnement?


j'aurais plutôt demandé de quelle race
de ls il s'agissait.

La localisation (LC_*, LANG) peut avoir une influence (mais je
pense que les premiers champs seront en general les memes). Il
peut arriver que des champs soient collés, et il peut arriver
que des usernames contiennent des espaces.


effectivement, il y a trop d'aleas.

finalement la solution des appels système stat, lstat ou getpwuid
est la meilleure. quelle soit faite en perl ou autre
[...]


Note que getpwuid n'est pas un appel systeme. Le systeme n'a
aucune notion de user name, c'est juste au niveau des
applications. ls fait des lstats et getpwuid. C'est l'interface
shell a stat/lstat comme le stat() de perl est l'interface a
stat(2). Le probleme de ls est que l'info qu'il produit n'est
pas facilement et fiablement post-processable. D'ou des
commandes "stat(1)" ou le -printf de GNU find non-standard qu'on
voit apparaitre sur differents systemes.

--
Stéphane


Avatar
Stephane Chazelas
2006-12-16, 23:08(+01), Sébastien Monbrun aka TiChou:
Dans le message <news:,
*Stephane Chazelas* tapota sur f.c.o.unix :

À noter que les deux scripts risquent aussi de foutre la pagaille dans
le cas où la commande ls lirait la variable d'environnement LS_OPTIONS
avec des options qui modifieraient le rendu de l'affichage.


Sous quel systeme y a-t'il un ls qui prend en compte une telle
variable d'environnement?


À vrai dire, je ne sais pas. Curieusement, le man de GNU ls indique dans la
partie consacrée aux variables d'environnement :

The variable LS_COLORS is used to specify the colors used. The variable
LS_OPTIONS gives default options.

Mais à l'usage, LS_OPTIONS est ignorée par la commande GNU ls.


Rien de tel dans ma page de man de GNU ls ni dans les sources de
GNU ls.

Peut-etre c'est ta distribution qui ajoute un
alias ls='ls "${LS_OPTIONS[@]}"' dans /etc/zshrc, /etc/bashrc...

--
Stéphane



Avatar
Nicolas George
Stephane Chazelas wrote in message
:
Mais ce n'est pas correct

owner=`
ls -ld -- "$foo" |
head -n 1 |
cut -d ' ' -f4
`

printf '%s is the owner of %sn' "$owner" "$foo"


Chez moi, ça donne le groupe.

Avatar
John Doe
On 2006-12-17, Nicolas George <nicolas$ wrote:


Chez moi, ça donne le groupe.


mauvais groupe, changer de groupe :)

Avatar
Benoit Izac
Bonjour,

le 17/12/2006 à 13:03, Nicolas George a écrit dans le message
<4585321d$0$27947$ :

owner=`
ls -ld -- "$foo" |
head -n 1 |
cut -d ' ' -f4
`

printf '%s is the owner of %sn' "$owner" "$foo"


Chez moi, ça donne le groupe.


Ici, ça marchouille sauf si je fais un
ls -ld -- /dir/* | cut -d ' ' -f4
là c'est la loterie...

C'est du bon boulot pour awk il me semble.

% ls -ld -- /dev
dr-xr-xr-x 6 root wheel 512 Jan 1 1970 /dev
% ls -ld -- /dev | cut -d ' ' -f4
root
% ls -ld -- /* | grep /dev | cut -d ' ' -f4
6
% ls -ld -- /dev | awk '{print $3}'
root
% ls -ld -- /* | grep /dev | awk '{print $3}'
root

--
Benoit Izac


Avatar
Stephane Chazelas
2006-12-17, 17:17(+01), Benoit Izac:
Bonjour,

le 17/12/2006 à 13:03, Nicolas George a écrit dans le message
<4585321d$0$27947$ :

owner=`
ls -ld -- "$foo" |
head -n 1 |
cut -d ' ' -f4
`

printf '%s is the owner of %sn' "$owner" "$foo"


Chez moi, ça donne le groupe.


Ici, ça marchouille sauf si je fais un
ls -ld -- /dir/* | cut -d ' ' -f4
là c'est la loterie...

C'est du bon boulot pour awk il me semble.
[..]


Oui, ou alors il faut squeezer les espaces:

ls -ld -- /dir/* | tr -s '[:blank:]' '[ *]' | cut -d ' ' -f3

--
Stéphane



1 2 3