comment rendre un fichier executable possible à l'écriture ?

johny12

Membre actif
10 Mars 2008
150
3
Je m'explique:

J'ai fais un script et au moment de l'enregistrement, inatention je l'enregistre comme fichier executable ...

Mais maintenant je voudrais le modifier ... Est-ce possible ou je vais devoir à nouveau passer quelques semaines a le refaire ?

Cordialement johny
 
Si c'est un fichier texte, alors tu peux passer par le Terminal (dans Utilitaire, mais cherche avec Spotlight c'est plus cool ^^).

Dans le Terminal, tu te positionnes dans le répertoire où se trouve le fichier :
cd Desktop/mon_dossier_ou_se_trouve_mon_fichier/

Ensuite tu fais
ls -la
pour vérifier les droits sur le fichier. Dans la colonne de gauche tu devrais voir un truc du genre
-rwxr-xr-x
Le ou les x signifient que le fichier est exécutable. Mais le ou les r signifient que le fichier est accessible en lecture. Donc n'importe quel éditeur de texte peut l'ouvrir. Si tu sais te servir d'emacs, tu tappes :
emacs mon_script
et ton fichier s'ouvrira et tu pourras le modifier. Si tu ne connais pas emacs, alors tu n'as qu'à faire :
more mon_script > mon_nouveau_script
Cette commande va recopier le contenu de ton script dans un autre fichier, et normalement il n'aura pas de droit d'exécution, donc tes éditeurs de texte habituels l'ouvriront sans problème.

Sinon, pour enlever les droits d'exécution :
chmod ugo-x mon_script

Pour ajouter les droits d'exécution sur un script :
chmod ugo+x mon_script

De même avec -r, +r, -w, +w pour les droits de lecture et d'écriture.
ugo signifie "user, group, other", et correspondent aux 3 colonnes dans rw- r-- r--
Donc si tu mets seulement "u" au lieu de "ugo" ça va changer uniquement la première colonne, si tu mets seulement "g" ça va changer la deuxième etc.
En principe il vaut mieux ne donner des droits d'écriture qu'au user.

Voilà, j'espère que cette initiation aux commandes Unix te sera utile ^^.
 
merci beaucoup

Mais je m'y perd un peu ^^ c'est un script enregistré comme fichier executable, son nom est "final" et il est enregistré sur le bureau
Donc pourrais-tu me dire quel est exactement la commande à rentrer dans le terminal pour que je puisse copier les données présentes dedans, merci :)

/(en fait je suis vraiment pas à l'aise avec le termibal c'et pou ça)/
 
Le plus simple c'est de faire :
cd Desktop/
more final > final.txt

Et le tour est joué, ton script se retrouve dans un beau fichier texte nommé final.txt.

Si tu fais des scripts, je te conseille d'apprendre les rudiments du Terminal, parce que c'est souvent bien utile. Je pense qu'il y a pas mal de sites qui expliquent les bases. Il faut au moins savoir se promener dans l'arborescence de fichiers, créer/copier/consulter des fichiers/répertoires, et savoir changer les droits.

Au fait je viens de penser à un truc. Toujours dans l'hypothèse où ton script "final" est un fichier texte, alors il te suffit certainement de cliquer dessus avec le bouton droit, et de l'ouvrir avec ton éditeur de script préféré (TextEdit par exemple). S'il n'est pas dans la liste, tu peux le rechercher.
 
:heu:J'effectue donc l'opération et la:" sh: line 1: final.txt: Permission denied"
J'ai fais faux ou ?

et quand je change manuellement ( information, je remplace la .app par un .txt) et que je l'ouvre, je vois un très beau:
˛Ì˙Œï8__PAGEZERO__TEXT __text__TEXT(xxÄ__cstring__TEXT-êúê__picsymbol_stub__TEXT.,‘,Ä$å__DATA0 __data__DATA0 __la_symbol_ptr__DATA0 4
__nl_symbol_ptr__DATA0T T__dyld__DATA0d d__common__DATA0Ä<8__LINKEDIT@&#8216;0&#8216;/usr/lib/dyldd<&#710;*¨/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices4<&#305;®L;/usr/lib/libSystem.B.dylibh`/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices¿ü0/usr/lib/libSystem.B.dylib #"$Äç @d®A&#728; °\Ä$ÄÇAÑ&#8747;<&#729;&#339;Ä&#8804;¥Y&#731;&#711;&#711;&#711;&#711;&#711;Ñ8&#63743;&#711;&#733;&#731;&#711;&#711;&#711;&#711;&#63743;Ü¿¯&#8747;&#63743;2fÏ¿Ê2&#8212;M< HD</usr/lib/system/libmathCommon.A.dylibê!à/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore&#730;&#711;&#711;&#711;ld/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation&#730;&#8734;&#729;à/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServicesêà/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CFNetwork.framework/Versions/A/CFNetworkúî/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/WebServicesCore.framework/Versions/A/WebServicesCorep.h/System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryServiceX!P/System/Library/Frameworks/IOKit.framework/Versions/A/IOKitx&#402;X/System/Library/Frameworks/Security.framework/Versions/A/Securityt3l/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration80/usr/lib/libz.1.1.3.dylib0h#2»P2P0
2&#8734;((x|:x8!&#711;¸T!48êî!&#711;¿Äz8ö;cW{:|§&#8260;H &#8225;|¶øÅ&#711;&#63743;êî!&#711;&#8224;Bü˶||x|û#x|&#937;+xH&#960;=?ìâ@=?ì&#8230;D=?ì©H=?Å)úÅ), AÇ},Kx}(¶NÄ!=?Å)òÅ), AÇ},Kx}(¶NÄ!HI=?Å)TÄ ,AÇ},Kx}(¶NÄ!HÌ=?Å)PÄ ,AÇ},Kx}(¶NÄ!<8c&#8216;8Å@H]Äa@,AÇH¡8=?Å)îê Å~}i[x,AÇX99@à,AÇ(| PÆ,/@¢}
J9JÅ>| PÆ,@Ç&#711;&#8225;,AÇ8HÄ=?ê L¶ÎxÄ,AÇÑ,@Ç&#711;¯É&#8222;x&#402;Ûx&#8226;Îx8&#8710;HH&#305;|¶ì·&#711;¸êî!&#711;&#8224;Bü˶<8c\8Å@H}Ä@|x|¶NÄ!Äh8!`|¶É·&#711;¸NÄ =`Åk0d,ãAÜNÄ 8&#8224;N8Ä`Ñ-&#8249;8`8D8`;8D&#8225;=ÄÄ0d| ¶=ÄaåNÄ =`Åk0h}i¶NÄ |¶ø°&#711;Ùêî!&#711;&#8224;|>xê~xêû|8`8Ä(HÖ|`xê@Å>@Äxê Å>@Ä|ê Å>@8(ê Éæ@8`-H)ê}8`-Äû@H&#305;Ä!Ä|¶ª°&#711;ÙNÄ |¶ø¡&#711;¯êî!&#711;&#8224;|>xê~xêû|8êH8`-H&#376;ê~@8@êDÅ>DÄ ,@ÇHxÅ>DÅ)Å)Äx| @ÇLÅ>DÅ)Å)Ä|| @Ç4Å>DÄ êHÅ~DÅ>HÄ êÅ>HÄ ,(AÇHÅ>DÅ)8 êDK&#711;&#711;|8`-Äû@HÄH,AÇ4Å>HÄ ,AÇÅ>HÄ Ä~H|x|¶NÄ!Ä~HHëÄ!Ä|¶ª¡&#711;¯NÄ |¶ø¡&#711;¯êî!&#711;&#8224;|>xBü˶H9=?Å)ºÄ ê@Ä@,AÇÅ>@&#8224; T>(@ÅH=?ÄixH&#8217;=?ÄitH&#8226;Ä!Ä|¶ª¡&#711;¯NÄ |¶9 ê8î!&#711;&#8224;êaD8a@&#8734;Bô!Aô!@H©Äh8!`|¶NÄ <`ap<Äsc|¶`Ñptê`cltî!&#711;&#8734;HU,8AÇK&#711;&#711;ô8|xÄX8!P|¶NÄ __dyld_mod_term_funcs__dyld_make_delayed_module_initializer_callsThe kernel support for the dynamic linker is not present to run this program.
|¶Bü}h¶=k|¶ÅãÏ}â¶9kÏNÄ |¶Bü}h¶=k|¶ÅãÃ}â¶9kÃNÄ |¶Bü}h¶=k|¶Åã¨}â¶9k¨NÄ |¶Bü}h¶=k|¶Åãå}â¶9kåNÄ |¶Bü}h¶=k|¶Åãl}â¶9klNÄ |¶Bü}h¶=k|¶ÅãL}â¶9kLNÄ |¶Bü}h¶=k|¶Åã,}â¶9k,NÄ |¶Bü}h¶=k|¶Åã}â¶9kNÄ |¶Bü}h¶=k|¶ÅãÏ}â¶9kÏNÄ |¶Bü}h¶=k|¶ÅãÃ}â¶9kÃNÄ |¶Bü}h¶=k|¶Åã¨}â¶9k¨NÄ |¶Bü}h¶=k|¶Åãå}â¶9kåNÄ |¶Bü}h¶=k|¶Åãl}â¶9klNÄ -ê0Ñ,å+p*ÏêI êó&#8225;êÅ&#8225;êó`êÇ@êã&#8224;ê+Äê(êï&#8224;êã`êÖ`ê&låê$z&#402;&#8224;&#8211;¿&#8224;\&#8224;ò&#8224;|*&#402;©0(*&#402;©0$*&#402;©0 *&#402;©0H*&#402;©0D*&#402;©0@*&#402;©0<*&#402;©08*&#402;©04*&#402;©00*&#402;©0,*&#402;©0P*&#402;©0L*&#402;000 40àK0åh0êé0î°0òª0ú÷0&#8224;Û0§
0®.0¨P0&#8734;t0¥ï0û0&#8719;Ø
ê$z&#402;&#8710;
ê&lå&#8249;
êÅ&#8225;&#711;
&#8224;|
&#8224;\'
êÇ@J
êó`p
êã&#8224;~
êã`§
êï&#8224;Ã
ê(&#8221;
êó&#8225;&#8364;
êÖ`&#8222;
&#8224;&#8211;¿Í
êI &#63743;
ê+Ä&#710;
&#8224;ò`&#8805;låéòôùQmëJ&#8706; ! !"_NXArgc_NXArgv___progname__mh_execute_header_catch_exception_raise_catch_exception_raise_state_catch_exception_raise_state_identity_clock_alarm_reply_do_mach_notify_dead_name_do_mach_notify_no_senders_do_mach_notify_port_deleted_do_mach_notify_send_once_do_seqnos_mach_notify_dead_name_do_seqnos_mach_notify_no_senders_do_seqnos_mach_notify_port_deleted_do_seqnos_mach_notify_send_once_environ_receive_samples_CallComponentDispatch_OpenDefaultComponent___keymgr_dwarf2_register_sections___keymgr_global__cthread_init_routine__dyld_register_func_for_add_image__dyld_register_func_for_remove_image__init_keymgr__keymgr_get_and_lock_processwide_ptr__keymgr_set_and_unlock_processwide_ptr_abort_atexit_calloc_errno_exit_free_mach_init_routine

ps: dsl pour la déformation
 
J'imagine que tu parlais d'un AppleScript compilé, mais comme tu ne l'as pas précisé, ça tombe pas sous le sens, quand on parle de script sans préciser, on est nombreux à comprendre script shell, donc un bête fichier texte, qu'il soit exécutable ou non.
 
Ouais en effet il soit s'agir d'un AppleScript, et comme je ne connais pas, je n'ai pas la réponse. Désolé de t'avoir induit en erreur, je pensais que tu parlais d'un script shell.
 
Arf, désolé j'avais pas pensé a préciser ^^

Bon, si quelqu'un a une idée, je suis prenneur :)
Bonsoir

Un AppleScript compilé en Exécutable uniquement peut être exécuté mais le code source ne peut être lue.

Quand tu écrit un script toujours garder le code source en mode texte pour les modifications si nécessaire avec le fauve suivant en archive (DD externe).

Si tu compile en faisant qu'une seule version, un problème de DD et tu perd ton script.

La seule solution que je voie, c'est de le réécrire.

Quand tu écrit un AppleScript, avant de le tester tu fait une sauvegarde car si obligé d'utiliser Forcer à quitter pour reprendre la main tu auras toujours le code.

Bon courage.

@+
 
Autre conseil complémentaire

garder le master en .app SANS cocher executable
ca restera copiable et surtout editable directement dans Editeur !

(conseil qui est dans l'aide Applescript)

- Exécutable uniquement : enregistre l'application sous un format non modifiable.

IMPORTANT Si vous choisissez "Exécutable uniquement", vous ne pourrez plus modifier ce script par la suite.
..../.........
ASTUCE : pour pouvoir modifier ultérieurement ce script, veillez à enregistrer la version exécutable uniquement comme copie et conservez l'original sous un format modifiable.