Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/04/2013, à 12:17

Otyugh

Customiser des actions de bases ; créer un lien, renommer un fichier.

Bonjour,
je souhaiterais modifier le comportement de commandes de bases telles que "ln -s" et de "mv". Pour cela il me faudrait la source du programme, et j'ignore comment l'obtenir pour ma version du système.

Deuxième point, j'ignore si le système emploie les commandes "ln" et "mv" quand je crée un alias en mode graphique, ou quand je renomme un fichier. En fait c'est assez important que ce soit le cas, ou ma tentative est assez compromise d'avance.

Si ce n'est pas le cas, comment puis-je accéder au code gérant ce genre de commandes, et y-a-t-il une manière d'y accéder, et de le modifier facilement ?

(par exemple, imaginons que je veuille ouvrir un nouvel "xterm" à chaque fois que je fais une de ces deux actions en mode graphique -à titre d'exemple, hein-)

Dernière modification par Otyugh (Le 14/04/2013, à 12:18)

Hors ligne

#2 Le 14/04/2013, à 13:28

pingouinux

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Bonjour,
À ta place, j'écrirais une fonction qui fait exactement ce que je veux, en créant éventuellement un alias qui pointe dessus.

Hors ligne

#3 Le 14/04/2013, à 15:06

Otyugh

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Le vrai problème c'est vraiment de trouver "où modifier", pas vraiment de faire un alias de la chose que je cherche à modifier tongue

L'open source devrait signifier qu'il y a des sources, mais où qu'il faut regarder ? x)

Dernière modification par Otyugh (Le 14/04/2013, à 16:08)

Hors ligne

#4 Le 15/04/2013, à 08:13

tiramiseb

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Salut,

Alors, plusieurs réponses à ta requête :

1/ quel est ton objectif final ? on dirait que tu es en train d'essayer d'élaborer une solution à un problème et que l'approche que tu demandes (très complexe voire infaisable selon moi) en serait une partie : peut-être qu'on peut avoir d'autres idées pour résoudre ton "vrai" problème.

2/ les logiciels graphiques comme Nautilus ou Thunar n'appellent pas les commandes "ln", "mv" et autres : ils font directement les bons appels systèmes afin d'obtenir les informations (les mêmes appels que ces commandes font quand on les utilise). Donc ce que tu évoques comme modification ne changera rien au comportement des interfaces graphiques, et "ta tentative est compromise d'avance".

3/ pour installer la source d'un paquet, tu peux faire :

apt-get source nom_du_paquet

Hors ligne

#5 Le 15/04/2013, à 13:16

serged

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Et surtout, ne pas oublier qu'une bonne partie du système et des applications utilisent les "commandes de base" (mv, ln etc.) En les modifiant directement, tu risques que le reste ne marche plus.

Donc, si tu customises une commande en la recompilant n'oublie pas de la renommer !


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#6 Le 20/04/2013, à 18:17

Otyugh

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Bonjour, merci pour les réponses.

L'objectif pratique est de réussir la migration d'un parent qui utilisait beaucoup les alias dans son architecture de fichiers, sous mac.
J'ai donc fait un petit script qui permettait de remplacer tous les "alias" mac (qui ne sont pas de standard reconnu, quelle surprise !) par des liens symboliques linux (les liens physiques étant impossibles sur les dossiers)...

Mais voilà, ça ne satisfait pas vraiment ses besoins. Son architecture de fichiers est très très très grande, et, dès qu'on modifie un nom de dossier, tous les "liens" qui passaient par là sont à refaire parce que leur chemins deviennent obsolète. Ce n'est pas assez souple.
"ln -s" n'est donc pas satisfaisant. Je pensais donc re-bricoler sous linux ce qui se fait sous mac. Soit dit, rendre les liens symboliques un peu moins bêtes yikes


Vous en dites quoi ? ^^ (j'aurais dû commencer par là, mais bah !)

Dernière modification par Otyugh (Le 20/04/2013, à 18:23)

Hors ligne

#7 Le 20/04/2013, à 19:02

pingouinux

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Pour clarifier la demande, un exemple ne serait pas de refus…

Hors ligne

#8 Le 20/04/2013, à 20:20

tiramiseb

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

et pourquoi ne pas faire... Des alias ?

Hors ligne

#9 Le 21/04/2013, à 00:56

Otyugh

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

@tiramiseb : Quelle commande bash pour un "alias", comme tu dis ?

Sinon : j'ai le dossier /d1/toto/
J'ai mon "alias idéal" dans /aliastoto qui m'envoie directement sur toto.
Si je renomme d1 en d2, /aliastoto renvoie toujours sur toto/.

Cet alias de la providence, je le veux, mais je doute le trouver en natif, j'ai raison ou pas ? x)

Dernière modification par Otyugh (Le 21/04/2013, à 02:18)

Hors ligne

#10 Le 21/04/2013, à 06:22

pingouinux

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

SI tu ne veux pas modifier ton alias, tu peux éventuellement faire un lien sur le répertoire au lieu de le renommer

ln -s d1 d2

ou bien renommer le répertoire et faire le lien dans l'autre sens

mv d1 d2
ln -s d2 d1

et ton alias pointera toujours sur toto, mais j'ai quand même l'impression que tu te compliques bien la vie…

Hors ligne

#11 Le 21/04/2013, à 07:51

nesthib

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Quand tu dis que tu cherches à faire des « alias », qu'est-ce que ça veut vraiment dire ? Tu peux essayer d'expliquer chaque action basique que tu fais/souhaites faire et le résultat attendu (ex. cliquer sur… ouvrir un terminal… lancer… souhaiter l'action…). Pour résumer je crois que personne n'est sûr de savoir ce que tu veux faire exactement.

Pour info, en bash, tu as l'option autocd :

user@host:~ $ Documents
Documents : commande introuvable
user@host:~ $ shopt -s autocd
user@host:~ $ Documents
user@host:~/Documents $

ainsi que la variable d'environnement CDPATH :

user@host:/tmp $ cd Documents
bash: cd: Documents: Aucun fichier ou dossier de ce type
user@host:/tmp $ CDPATH="~"
user@host:/tmp $ cd Documents
user@host:~/Documents $ Documents

Tu as la même chose pour zsh, imaginons le dossier /dir/subdir :

user@host:~ $ setopt autocd
user@host:~ $ export CDPATH="/dir"
user@host:~ $ subdir
user@host:/dir/subdir $

Toujours en zsh (un comportement similaire peut être obtenu en bash avec l'option cdable_vars) :

user@host:~ $ setopt autocd
user@host:~ $ hash -d dir=/path/to/random/dir
user@host:~ $ ~dir
user@host:~dir $ pwd
/path/to/random/dir

En espérant que ces exemples parlent d'eux-même…

NB. bien entendu, les options, ici lancées dans le terminal, peuvent être mise dans les fichier de configurations de ton shell pour être prises en compte automatiquement au lancement.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#12 Le 21/04/2013, à 09:09

tiramiseb

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Otyugh a écrit :

@tiramiseb : Quelle commande bash pour un "alias", comme tu dis ?

La commande "alias"...

Otyugh a écrit :

Sinon : j'ai le dossier /d1/toto/
J'ai mon "alias idéal" dans /aliastoto qui m'envoie directement sur toto.
Si je renomme d1 en d2, /aliastoto renvoie toujours sur toto/


Euh là tu parles d'alias ou de point de montage ? Ce n'est pas pareil.

Un alias c'est une manière de définir une nouvelle pseudo-commande permettant d'exécuter une autre commande d'une manière particulière (par exemple, "ll" est un alias pour "ls -l").


Ce que tu sembles décrire là, c'est plutôt un montage plus ou moins dynamique. Surtout que tu parles de liens symboliques : au début je ne comprenais pas pourquoi tu parlais de liens symboliques, avec ce message-là j'ai vraiment l'impression que tu ne parles pas d'alias de commandes.

J'ai ensuite cherché "os x alias" sur Google et je me suis rendu compte qu'en  effet, chez Apple ils utilisent le nom "alias" dans un contexte qui ne correspond pas du tout aux alias des shell UNIX. Merci Apple pour la confusion !


Donc, si j'ai bien compris, ce que tu veux c'est un lien symbolique qui "suit" le fichier d'origine lorsqu'on le déplace.

Si c'est un lien vers un fichier et non un répertoire et si ça doit être dans le même filesystem, tu peux utiliser les liens "durs" (commande "ln" sans l'argument "-s") : de cette manière, tu auras le même contenu qui sera pointé par deux noms de fichiers différents, et tu peux déplacer les fichiers où tu veux.

Mais d'une manière plus générale, je n'ai jamais entendu parler d'une fonctionnalité comme celle-ci...


Après (là je vais juste donner mon avis personnel, chacun fait comme il le veut), je pense qu'une approche consistant à utiliser de manière intensive ces "alias" est une mauvaise habitude : autant avoir une arborescence bien définie et pas des liens dans tous les sens...


Quoi qu'il en soit, ça doit pouvoir être implémentable en faisant un logiciel qui conserve une table des liens symboliques à surveiller, qui utilise un mécanisme comme inotify pour surveiller les cibles des liens et qui change le lien symbolique dès qu'il y a une modification au niveau de la cible du lien.

Hors ligne

#13 Le 21/04/2013, à 12:14

Otyugh

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Olalala.
En effet, on nage un peu, là. (mais tu est arrivé à la bonne conclusion,tiramiseb !)

Le souci de "ln tout court" comme je le disais plus haut, c'est que ça ne marche pas sur les dossiers.
Le second effet de bord indésirable des liens physiques, tu le pointes bien aussi. S'il veut supprimer le fichier de base, il devra partir à la chasse de tout autre lien physique existant, sous peine de ne jamais parvenir à supprimer les fichiers en question ^^


___(re tentative d’explication quand j'avais pas encore lu tiramiseb - obsolète sans doute ^^)___

1) Mon père fait une migration de son système de fichiers.
2) Il utilisait des "alias" dans le sens "mac du terme".
Un alias était un lien "symbolique dynamique" dans le sens qu'il pointe toujours sur le bon fichier même si on déplace/renomme ce fichier cible (à contrario d'un lien symbolique standard qui va bêtement juste dire "le chemin exact n'est plus le même, je suis perdu".

Le lien symbolique standard, c'est ce que vous obtenez en faisant "ln -s dest_cible pointe_sur_cible".
(et mon père ne peut pas sortir les lignes de commandes à chaque fois (personne ne le veut yikes), surtout si c'est une histoire d'opération courante.)


Voici un exemple 100% vrai, histoire de. Donc là c'est juste un lien symbolique, et je vais dire pourquoi ça me va pas, en pratique.

otyugh@ponymint ~ $ cd ~/Bureau/
otyugh@ponymint ~/Bureau $ mkdir faraway
otyugh@ponymint ~/Bureau $ echo "pointe sur moi" > faraway/ici

otyugh@ponymint ~/Bureau $ ln -s faraway/ici la
otyugh@ponymint ~/Bureau $ more la
>pointe sur moi

otyugh@ponymint ~/Bureau $ mv faraway/ closehere/
otyugh@ponymint ~/Bureau $ more la
la: No such file or directory

#j'aurais voulu que ça me réponde "pointe sur moi".

Dernière modification par Otyugh (Le 21/04/2013, à 12:21)

Hors ligne

#14 Le 21/04/2013, à 12:35

tiramiseb

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

J'ai donc bien compris la chose. Ça ne me dit rien, je ne pense pas que quelque chose comme ça ait été créé. Mais je peux me tromper bien sûr, je ne suis pas omniscient.


J'aimerais aussi souligner que si tu faisais ça sur OS X ça ne marcherait pas, vu que les aliases d'OS X ne fonctionnent pas en ligne de commande, ce n'est pas un concept global au système. Un alias c'est un fichier avec un contenu vide et des attributs spéciaux, c'est le Finder (ou autre logiciel) qui l'interprète de manière à suivre le comportement que tu as décrit.


Par ailleurs le fonctionnement de ce truc est plutôt complexe, je cite notamment la page suivante : http://en.wikipedia.org/wiki/Alias_%28Mac_OS%29 :
« The question can arise of how an alias should work if a file is moved, and then a file is created with the same name as the original moved file, since the alias can be used to locate both the original name and the new location of the original file. With symbolic links the reference is unambiguous and refers to the new file. Before Mac OS 10.2, however, such an ambiguous alias would consistently find the original moved file, rather than the recreated file. From Mac OS 10.2, the new file is found, matching the behaviour of symbolic links. OS X applications can programmatically use the old behavior if required. »
Donc jusqu'à la version 10.1 il y avait un comportement, depuis 10.2 il y a un autre comportement...

Dernière modification par tiramiseb (Le 21/04/2013, à 12:39)

Hors ligne

#15 Le 21/04/2013, à 13:13

Otyugh

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

(apparté mais)
C'est quand même fou qu'une chose aussi "évidente" d'utilisation soit aussi peu gérée ^^
Après je suppose que les base de données de milliers de fichiers avec des liens qui pointent partout entre-eux n'est pas forcément l’utilisation de tout le monde.

Le bricolage que j'avais en tête était vraiment simple, je vais sans doute essayer de prendre le source de nautilus et voir à quoi ça peut bien ressembler ^^

Hors ligne

#16 Le 21/04/2013, à 13:24

tiramiseb

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Otyugh a écrit :

C'est quand même fou qu'une chose aussi "évidente" d'utilisation soit aussi peu gérée ^^

Évidente pour toi peut-être, moi en 23 ans d'informatique je n'ai jamais envisagé une telle chose, ça ne me paraît pas évident du tout.

Otyugh a écrit :

je vais sans doute essayer de prendre le source de nautilus et voir à quoi ça peut bien ressembler ^^

Dans ce cas, une seule chose à dire : Bon courage ! big_smile

Dernière modification par tiramiseb (Le 21/04/2013, à 13:26)

Hors ligne

#17 Le 21/04/2013, à 17:28

nesthib

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Houla… tu as bien fait de préciser… non ça n'était pas évident du tout tongue

Le comportement de ces alias me paraît peut reproductible « Since any of these properties can change without the computer's knowledge, as a result of user activity, various search algorithms are used to find the most plausible target. » (source)

Par curiosité, pourquoi as-tu besoin de ce comportement ? Il est quand même rare de devoir bouger des dossiers régulièrement non ?


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#18 Le 22/04/2013, à 10:07

Otyugh

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Ce n'est pas que bouger. C'est aussi supprimer, renommer.
Tâche quelque peu courante.
Il le fait peut, mais si renommer un fichier dans la base invalide les 300 alias du tas, aïe.

Mais encore une fois, moi-même je n'ai pas ce genre de souci ; je n'ai pas une grosse organisation de fichiers ; rare sont les personnes qui en ont.

Hors ligne

#19 Le 22/04/2013, à 10:13

tiramiseb

Re : Customiser des actions de bases ; créer un lien, renommer un fichier.

Ça dépend de ce qu'on appelle "gros".
Et même quand elle est grosse, elle peut être bien foutue, sans besoin d'alias, cette organisation.

Il fait comment dans la vraie vie ce parent ?
Il a des classeurs pleins de post-its qui disent "pour ce document, aller voir tel autre classer à telle page" (liens symboliques) ? et il fouine dans tous ses classeurs quand il déplace une page pour réécrire ces post-its (alias MacOS) ?
lol

Hors ligne