Mac OS X et Unix !

Jimmy MAIZEROI

Membre actif
26 Novembre 2001
450
0
48
Saint-Denis, 93
perso.wanadoo.fr
Bonjour tout le monde,

Je commence tout juste dans le monde UNIX parce que un : je suis sur Mac OS X et deux : je suis sur un UNIX en cours MAIS il semblerait que ça ne soit pas vraiment pareil...
En fait, à l'école j'apprend à programmer en ADA avec Gnat via le terminal (je ne sais pas lequel) et j'ai la possibilité de travailler mes productionns à la maison et même à distance mais je constate quand je rentre que c'est un peu plus dur qu'en cours... parce que je n'arrive pas à utiliser le terminal d'Apple.

Quelqu'un a des infos ?

Merci,

iMacalement,

Jimmy.
 
Bienvenue dans le monde merveilleux du terminal
smile.gif


Je suis un switcher relativement récent du monde x86/NetBSD donc unix et c'est justement le squelette BSD qui m'a fait venir à mac.

L'ennui est que tout n'est pas encore aussi "lisse" que sous GNU/Linux ou sous les différents BSD, au fur et à mesure de ton apprentissage tu verras que OSX a encore quelques lacunes de jeunesses (rapidement dépassées nous l'espérons).

Il te faudra absolument, pour commencer les Outils de développement Apple (Dev Tools) et je te recommande:FINK

Sinon le Terminal est un terminal comme un autre (au fait il est dans /Applications/Utilities et il s'appelle Terminal.app )tu as bash zsh et tcsh dispo et les outils UNIX ou GNU habituels man ci ; apropos ça pour la suite.

Pour ADA et Gnat ce n'est pas ma spécialité tu dois avoir des posts qui traînent ...

Par contre en attendant que tout soit plus complet sur OSX je te recommande de t'installer sur une partition un GNU/Linux ou un BSD ( OpenBSD ou NetBSD) pour passer de la théorie à la pratique sans soucis et sans perdre trop de temps quand ça coince.

Rem: pour une Debian -----> *

Bon courage !

PS: je cherche une bonne recette de bonbons piments, je me souviens qu'il faut des pois du Cap mais pas de la suite
wink.gif
 
Merci de ta réponse, mais juste une question : Comment puis-je me déplacer dans un dossier autrement dit quelle ligne de commande dois-je taper sous le terminal pour me situer dans un répertoire ? Il me semble que par défaut je suis juste pile poil au niveau de mon user ([Ordinateur-de-Jimmy-MAIZEROI:~] jim%).
Moi, ce que je veux, c'est "sortir" de ce niveau pour un autre plus bas. En plus, je crois que pour ça, je dois avoir certains droits malgré que ce soit moi le "maitre" ("Permission denied")... :-)

En bref, comment disposer des droits pour passer d'un niveau à l'autre et comment passer ces niveaux ?


Merci,

iMacalement,

Jimmy.
 
Par default tu es dans le dossier de ton user. En tapant ls pour obtenir la liste des sous-dossiers tu verras Desktop Library Music Public, etc...

Pour te déplacer dans l'un de ces dossiers tape par ex. cd Music. Pour revenir à ton point de départ cd tout court. (cd = Change Directory)

Pour aller dans le dossier Utilisateurs cd /Users

Pour aller dans un dossier placé sur une autre partition cd /Volumes/Partition/Dossier

On peut aussi taper cd -un espace- et carrement glisser le dossier à atteindre dans la fenêtre du Terminal, son chemin d'accès sera écrit automatiquement.
 
su [enter]
Password: *********[enter]
mais il faut que tu aies d'abord activer l'utilisateur root avec netInfo Manager.
ensuite tu peux te déplacer avec cd , en sachant que le répertoire au-desus est représenté par ..
donc pour aller dans le dossier User tu fait
cd ..
j'espèr que ca répond à peu pres a ta question
++
 
Quelques remarques :

Essayes d'utiliser la complétion du shell avec la touche <TAB>
exemple :
tu veux aller dans /Users mais au lieu de taper cd /Users tu tape :
cd /U et touche <TAB> et hop le shell te complète la chose.

encore mieux si tu utilises le Bash.
ouvre un Terminal et tape : bash <Entrée>
puis cd / <Tab>
le shell bash vas te proposer des choix possibles : tu tapes la première lettre du répertoire vers lequel tu veux aller puis <Tab> et hop le shell complète...ainsi de suite.

Pour savoir où tu es dans l'arborescence du disque essaye :
pwd

Autre commande pratique: ls -a va t'afficher les répertoires et fichiers (comme ls) mais avec en plus tous les fichiers ou répertoires cachés (commençant par un .

etc...
 
Bon la commande cd maintenant.

si tu es dans /Users/Ego/Desktop et que tu veux aller dans /Users/Ego il faut taper: cd ..

Et pense à la commande man si tu veux connaitre le mode de fonctionnement d'un programme (ex. man ls ou man cd en appuyant sur la barre espace pour faire défiler les infos)

Bonne chance
smile.gif
 
Pour les autorisations..

Si tu n'as pas l'habitude du terminal fais trés attention ROOT a tous les droits et si tu fais une erreur en étant ROOT ça peut faire mal.

Donc je ne vais pas te recommander de passer ROOT ( commande su puis mot de passe) mais plutôt sudo devant la commande à executer.

Par exemple : sudo /usr/libexec/locate.updatedb
Une fois le mot de passe validé cette commande va mettre à jour la base de donnée de locate.
Grace à cette commande tu pourras ensuite chercher trés rapidement des fichiers (beaucoup plus vite que Sherlock)

ainsi locate french va afficher tous les fichiers (avec leur emplacement) dont le nom contient "french"

Pour les permissions : man chown et man chmod sinon pense qu'en faisant un Pomme-I sur un fichier ou répertoire tu verras ses permissions...

 
Salut, je vois que vous etes plusieurs a utiliser divers systèmes unix.
Je suis en cours de devenir développeur. J'utilise donc VIM sur OSX, vi sur debian et visual C++ (à mon IUT).
Le pbm, quand je passe d'une machine à l'autre, notamment de debian à OSX, je n'arrive pas à récupérer correctement mon code. Les retours charriots sont remplacé par des ^M et autres trucs du genre. Sans compter les tabulations qui partent complètement en vrille.
J'ai déja posté un thread, mais, y'a marqué "copier-coller" en titre, donc chuppose que vous êtes meme pas allé voir...
Je sais qu'il y a une solution, et c obligé que quelqun ici l'ait... A moins que personne ne fasse de dev...

Et sinon, vous ne connaitriez pas un autre forum dédié au monde unix ?
 
bon 2 choses...

1) mais pourquoi utiliser VI ou VIM ou je sais pas quoi qd on dispose d'EMacs? hein?

2) le changement de format des fin de ligne c'est normal: les OS on tous un bidouille differente a ce sujet.
du coup un code ecrit sous OSX se retrouvera avec des ^M sur windaube ou sur un Unix quelquonque.

une commande qui te permet de transorfmer tes fichier correctement c'est sed (fait un man sed)

il doit exister des utilitaire qui permettent de passer tes fichiers textes d'un OS a l'autre (genre dos2unix ou unix2dos).

pour ma part, vu que j'utilise EMacs (franchement pourquoi s'en passer) j'ai ecrit 2 macros:
a mettre dans mes .emacs
<pre><font class="small">code:</font><hr>
(defun dos-unix ()
(interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))

(defun unix-dos ()
(interactive)
(goto-char (point-min))
(while (search-forward "\n" nil t) (replace-match "\r\n")))
</pre><hr>

du coup a chaque fois que j'ouvre un fichier problematique, zou avec un petit raccourcis clavier mon fichier se met a jour...

bon au cas ou ce que je te dis t'interresse, si tu veux plus d'info, fait moi signe
zen.gif

 
ah ben vi, ça m'intéresse carrément !!

emacs en fait, j'en ai juste entendu parler...
Si tu veux, chui tout seul à mon IUT à avoir un unix, qui plus est mac OSX. Donc quand il a fallut avoir un compilateur à la maison, j'me suis débrouillé tout seul à trouver mes solutions alors que les autres n'avaient qu'à installer du windaube visual C++ sur leur machine.
J'ai commencé avec vi simple (j'ai galéré sec au début), puis j'ai découvert vim. Et jusque là, à part pour récupérer mes fichiers sur un autre OS, ça me convenait parfaitement.
C'est quoi l'avantage d'emacs par rapport à vim ? Si tu me dis que c mieux, je suis preneur!

Sinon, je viens de regarder le manuel de sed, mais je ne trouve pas mon bonheur dedans. Ce serait quoi la commande à utiliser ?
A la limite, j'te file mon mail, paske ché pas si c la peine de continuer sur ce thread :
[email protected]

ciao et merci !!
 
<blockquote><font class="small">Post&eacute; &agrave; l'origine par _littleboy:</font><hr />
ché pas si c la peine de continuer sur ce thread :
<hr /></blockquote>

c'est le principe d'un forum : ca peut intéresser d'autres personnes, votre discussion
smile.gif
 
ok alors donc les avantages d'Emacs:

d'abord on peut tout faire avec EMacs:
edition de code,
compilation,
versionning,
ftp,
telnet,
manager son system (cp, mv, rm, chmod, chown)

de plus emacs interface completement ton OS: find, grep, which, tar.

tu peux lancer un shell ou executer n'importe quelle commande unix.

tu peux aussi naviguer sur le web(en mode texte), lire ton courrier, recuperer les newsgroup, avoir un dictionnaire, un correcteur orthographique

emacs reconnais presque tout les langages courrant (Lisp, C, C++, perl, java, shell, cobol, fortrant, python, ruby, ada, php...) mais aussi tout les formateur de text (html, tex, latex, xml, css)

tu peux meme executer de l'AppleScript(ce qui signifie entre autre que tu piloter iTunes par exemple)

sans compter la puissance d'edition (gestion des rectangles, des abbreviations, bookmarks, folding-edition, completion automatique, recherche pleine ou incrementale, search-replace en mode litteral ou avec des regexp)

emacs est bien sur autodocumente, entierement configurable.

tu peux editer et creer des macros, qui fonctionnent soit par enregistrement de tes sequence de frappe, soit par edition de code.

et j'en passe et des meilleurs....

quelques adresses:
http://www.april.org/groupes/doc/emacs_il_le_fait/emacs_il_le_fait.html

http://www.culte.org/projets/doc/emacs/

pour faire du java:
http://www.iro.umontreal.ca/~duranlef/java/jde-doc/

mais Emacs n'est pas un clicodrome: son interface est austere et peu paraitre deroutante. mais si tu a deja utiliser VI, on peut dire que tu a connu pire

enfin pour le telecharger:

EMacs pour osX 2.2

EMacs on Aqua (mais il n'est pas a jours, je te conseille plutot le premier)

 
sinon pour sed

ca doit etre quelque chose comme

sed s/caractere$// nom_fichier &gt; nouveau_fichier

avec caractere qui est le caractere que tu veux virer (si je ne m'abuse tu dois avoir des ^M dans ton fichier mais ce n'est pas ^M qu'il faut virer ca doit plutot etre \r mais c'est a verifier)

$ signifie qu'il faut que le caractere soit en fin de ligne pour etre retire

et je te conseille fortement le &gt; nouveau_fichier tant que tu n'est pas sur a 100% de ta ligne de commande. en suite tu pourra remplacer &gt; nouveau_fichier par &gt; nom_fichier ce qui ecrira le resultat du sed dans ton fichier d'origine
 
Merci bcp pour tous ces renseignements !!
je sais quelles taches affectées à ma boite cranienne ce soir --&gt; télécharger emacs et lire de la doc.
Et donc pour mon truc de caractères qui sautent, j'aurai plus qu'à récupérer ton petit script que t'as mis dans ton post plus haut.
Sinon, pour le fait que ce soit pas un clicodrome, c pas un souci. Je préfère presque tout faire au clavier. Et si au début vi m'a un peu dérouté, maintenant j'apprécie carrément. Je dois pas être net au fond
crazy.gif

Pour sed, tu connaitrais pas un site où j'peux trouver de la doc (en français si c possible) ? Paske le manuel du terminal m'aide pas des masses...
 
bon, j'ai comprit comment utiliser sed. C déja un pas en avant...
laugh.gif


Maintenant, il me faudrait la liste des caractères spéciaux selon les plate-formes, paske les tabulations partent aussi en vrille. Et je n'ai pas trouvé la correspondance du retour-chariot sur mac... Avec \r, apriori, ça marche pas...
 
ouai je sais c'est galere ce truc... a une epoque j'avais trouver... mais malheureusement c'etait il y a longtemps, dans une galaxie loint... non la je m'egare...
enfin bref m'en souviens plus...

une autre solution, mais pas vraiment propre c'est:
sed "s/.$//" nom_fichier

qui virera le dernier caractere de chaque ligne...
mais bon ne le fait pas 2 fois de suite... hein!

ha oui, j'oubliais, l'expression rationnelle doit etre entre " pour que $ ne soit pas interprété par le shell
sinon tu dois ecrire
sed s/.\$// nom_fichier
avec un \ devant l $ pour le despecialiser...

quoiqu'il en soit ce n'est pas une solution super propre, mais en faisant attention...
 
ouai, j'avais déja remarqué le coup des "".
g vu que tu peux aussi remplacer les / par des +, genre si tu veux virer les commentaires et les remplacer par toto
sed "s+//+toto/" nom_fichier

J'viens d'essayer le coup du .$. Ca vire effectivement le dernier caractère de chaque ligne. mais pas le dernier caractère "spécial"...
EX :
int main() {
donne
int main()

Pas top ça...
crazy.gif