# Mac OS X et Unix !



## Jimmy MAIZEROI (14 Novembre 2002)

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.


----------



## hegemonikon (14 Novembre 2002)

Bienvenue dans le monde merveilleux du terminal 
	

	
	
		
		

		
			





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 -----&gt;  * 

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


----------



## Jimmy MAIZEROI (21 Novembre 2002)

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.


----------



## minime (21 Novembre 2002)

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.


----------



## KreAtiK (21 Novembre 2002)

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
++


----------



## KreAtiK (21 Novembre 2002)

oups, je n'avais pas vu qu'il y avait deja une réponse. dsl. mais comme ca tu as des infos en plus ;-)


----------



## hegemonikon (22 Novembre 2002)

Quelques remarques :

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

encore mieux si tu utilises le Bash.
ouvre un Terminal et tape : *bash* &lt;Entrée&gt;
puis *cd /* &lt;Tab&gt;
le shell bash vas te proposer des choix possibles : tu tapes la première lettre du répertoire vers lequel tu veux aller puis &lt;Tab&gt; 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...


----------



## hegemonikon (22 Novembre 2002)

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


----------



## hegemonikon (22 Novembre 2002)

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...


----------



## Membre supprimé 2 (26 Novembre 2002)

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 ?


----------



## tehem (26 Novembre 2002)

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


----------



## Membre supprimé 2 (26 Novembre 2002)

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 : 
stephane@shanghai.fr

ciao et merci !!


----------



## benR (26 Novembre 2002)

<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


----------



## tehem (26 Novembre 2002)

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)


----------



## tehem (26 Novembre 2002)

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


----------



## Membre supprimé 2 (26 Novembre 2002)

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 
	

	
	
		
		

		
		
	


	



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...


----------



## Membre supprimé 2 (26 Novembre 2002)

oublie ma question sur sed. 

Tu as été plus vite que moi 
	

	
	
		
		

		
		
	


	




Merci honrable maitre


----------



## Membre supprimé 2 (27 Novembre 2002)

bon, j'ai comprit comment utiliser sed. C déja un pas en avant... 
	

	
	
		
		

		
		
	


	




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...


----------



## tehem (27 Novembre 2002)

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...


----------



## Membre supprimé 2 (27 Novembre 2002)

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...


----------



## tehem (27 Novembre 2002)

essaye sans le point...
vu que j'ai pas d'unix sous la main en ce moment, je peux pas trop tester ce que je te dis...

sed s/\$// nom_fichier


----------



## Membre supprimé 2 (27 Novembre 2002)

nan, là il ne supprime rien du tout...

mais j'me demande un truc...

Quand je fais ça : 
sed "s+$+\n\n+g" test.c

il ne me colle pas le caractère de retour charriot (2 en l'occurence), mais 2 n accolés à la fin de la ligne...

ce qui m'amène à me demander si sed peut agir sur les caractère spéciaux ??


----------



## tehem (27 Novembre 2002)

ou alors ca:

sed s/^\(.*\)\$/\1/ nom_fichier

qui ne concerve que ce qui se trouve entre le debut et la fin de la ligne


----------

