6 votes

Les commandes en ligne de commande peuvent-elles être rendues insensibles à l'ordre des noms de fichiers et des options ?

Je suis nouveau dans l'utilisation du Mac. Il semble que la plupart des commandes ne tiennent pas compte des options données après les noms de fichiers. Sous linux, que j'utilise depuis des années, cela n'a pas d'importance. Sur Apple, c'est le cas. Existe-t-il un paramètre quelque part ou une astuce pour que des commandes comme ls se comportent "normalement" ?

dwilson 0====> ls -l p*
-rw-r--r--@ 1 dwilson  owner  184 Jul 29 13:57 poo.c
-rw-r--r--@ 1 dwilson  owner  133 Jul 29 13:57 poo.h

dwilson 0====> ls p* -l
ls: -l: No such file or directory
poo.c        poo.h

dwilson 1====>

0 votes

Avez-vous zsh et un environnement personnalisé sur linux ? Vous pourriez avoir besoin de le configurer pour obtenir un ordre plus permissif des arguments. Cela me ferait mal au cerveau, mais si vous êtes habitué à cela - c'est perturbant de changer sur le Mac.

0 votes

Le Mac utilise tcsh, que je n'utilise pas beaucoup. Peut-être que c'est bash qui est responsable du fait que ls soit si librement réordonnable.

0 votes

La page de manuel de ls montre clairement que tous les arguments doivent précéder le premier fichier. Seul l'interpréteur de commandes pouvait globaliser le caractère générique et trier les arguments en premier. J'espère que vous pourrez identifier les paramètres linux de ce shell et migrer ces fichiers vers Mac.

6voto

Hugo Points 2156

La raison en est que Mac OS X utilise les utils BSD (qui ont un ordre spécifique pour leurs paramètres), alors que Linux utilise les utils GNU, qui peuvent accepter des arguments dans n'importe quel ordre.

Vous pouvez télécharger et compiler le Paquet GNU coreutils Je vous recommande cependant de vous habituer aux utilitaires BSD, sinon vous aurez des problèmes pour passer à d'autres systèmes. La méthode BSD fonctionne bien sur les systèmes GNU, mais la méthode GNU est moins portable.

2 votes

Je recommande d'obtenir Homebrew et installer les GNU coreutils, car ils sont beaucoup plus riches en fonctionnalités que ceux inclus dans Mac OS X. C'est l'une des premières choses que je fais lorsque je configure un nouveau Mac, car je passe beaucoup de temps à la ligne de commande et je veux les meilleurs outils disponibles. Vous aurez besoin de Xcode pour compiler Homebrew et d'autres utilitaires. Sinon, vous pourriez vouloir vérifier Rudix qui offre des binaires pré-compilés de nombreux utilitaires Unix populaires.

1voto

Ramuns Usovs Points 1152

L'exemple que vous avez donné est normal. Je ne connais pas d'environnement *nix qui prenne des drapeaux/options après la liste de fichier pour ls

Certaines commandes sont simplement des versions différentes de l'environnement *nix d'où vous venez. Vous pouvez corriger ce genre de choses en utilisant alias ou d'autres coquillages.

0 votes

Ce n'est pas un problème dans les environnements *nix avec lesquels j'ai été en contact. Un exemple bizarre cependant. tail est plus intéressante, par exemple tail -f file -n 200 ne fonctionne pas comme prévu sous OSX.

0 votes

@frans Le -f sur tail -f signifie "suivre", et non "fichier", donc il ne prend pas un nom de fichier comme second paramètre. Ce comportement est cohérent pour tous les systèmes Unix qui adhèrent à la convention options-before-filenames.

0 votes

Ha ! Oui, je le savais en fait, j'ai juste eu une sorte de fonte de cerveau. Eh bien, après avoir installé coreutils j'obtiens maintenant la même fonctionnalité que sur Ubuntu, où tail -f file -n 200 fonctionne, donc je suis content.

1voto

gozzilli Points 201

Si vous utilisez MacPorts (et en tant que connaisseur de Linux vous l'êtes probablement), vous pouvez installer GNU coreutils avec :

sudo port install coreutils

et ensuite assurez-vous d'ajouter le chemin de coreutils à votre chemin :

export PATH=/opt/local/libexec/gnubin:$PATH

[Sources : Commentaire de TJ Luoma sur la réponse acceptée et <a href="http://www.sgenomics.org/~jtang/blog/posts/Enabling_the_gnu_coreutils_and_findutils_with_macports_on_OSX/" rel="nofollow">este </a>blog post].

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X