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.

#26 Le 23/01/2011, à 19:42

ehmicky

Re : Historique et signets pour la navigation en console

Normalement on peut sortir en tapant toute autre touche que les flèches, entrée, DEL et SUPPR.
Bon, là je suis en train de reprendre tout cds à zéro parce que c'était un peu brouillon smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#27 Le 23/01/2011, à 20:20

TraGiKomiK

Re : Historique et signets pour la navigation en console

re salut,


J'ai bien fait de repasser par la smile Magnifique les signets en plus wink Tres agreable la police en gras aussi, ca apporte pas mal de confort a l'utilisation.


Une petite suggestion pour le premier message contenant le script: mettre un lien qui pointe vers le .sh, ce qui t'eviterai d'editer le code a chaque fois et ce qui eviterai toute manipulation hasardeuse lors du copier/coller (qui a dit que j'avais oublié une ligne roll tongue).


Mes encouragements pour la suite car:
1-> C'est ultra pratique, ca change totalement la navigation en console (en positif evidemment tongue)
2-> Je m'en passerai plus lol


Merci de mettre [RESOLU] dans le titre de votre post une fois le  probleme reglé!

GNU/Linux -> \o/

Hors ligne

#28 Le 24/01/2011, à 00:56

ehmicky

Re : Historique et signets pour la navigation en console

Ok, donc mise à jour :
  - correction du bug cda + chemin relatif.
  - possibilité de renommer les aliases donnés aux signets via la touche Backspace (et de quitter la navigation sans se déplacer avec q)
  - backup des signets et restauration en cas de problèmes
  - suppression de cdp (pas utile je crois :-\)
  - plusieurs petites choses (prise en charge des redimensionnements de fenêtre, non-présence des commande externe, etc.)
Il y a encore des optimisations à faire, mais au test, même les cas étranges du genre : donner comme alias à un signet une simple virgule ou placer un signet pointant vers un répertoire nommé "nom de la mort :éàç⚴.;%" ne buguent pas.

Edit : vous aurez peut-être un message étrange au démarrage si vous avez utilisé auparavant l'ancienne version de cds, parce que le fichier sauvegardant les signets a un nouveau format. Si au-delà de deux démarrages de console, le message persiste (ce qui devrait pas arriver en fait vu la fonction de restauration en cas de problèmes, ce serait un bug smile ), faire :

rm $SignetFichier

Edit 2 : pour le trip (pas pour le script tongue), une commande avec le cd "normal" qui vous téléporte vers un répertoire aléatoiramment, pour ceux qui aiment explorer leur caverne/arborescence et partir à l'aventure big_smile :

teleport()
{
    [[ ! ${1//[^*]} ]]\
        && builtin cd -P "${1-/}"\
        && teleport "$(shuf -n1 -e */)"
}

(à sourcer, et non utiliser dans un script, sinon cela ne marche pas)

Dernière modification par ehmicky (Le 24/01/2011, à 08:03)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#29 Le 24/01/2011, à 13:45

nordinatueur

Re : Historique et signets pour la navigation en console

Mince je venais tout juste de faire un script pour récupérer ton script entre les balises " <code>#!/bin " et " </code> ".
Et ça ne marche plus... :-D On va passer par le navigateur alors...

Je vois que tu as corrigé ce dernier petit bug sur les noms de fichiers accentués :

 #Ancienne version :
| --> /home/nordine/Musique                                           |            |
| /home/nordine/Téléchargements                                     |            |
| /home/nordine/Public/scripts/reinstall-perso                        |            |
+---------------------------------------------------------------------+------------+

Du coup, tout va bien... juste un peu déçu de devoir refaire tous mes signets, mais ...
J'ai un répertoire nommé « 日月 » dans mon dossier perso. D'où ma fonction de signets entre autres choses. Bien que le problème des accents ait disparu, mes sinogrammes bogguent ton interface :

+-----------------------------------------------------------------+------------+
| --> /home/nordine/Images                                        |            |
| /home/nordine/Public                                            |            |
| /home/nordine/日月                                                |            |
| /home/nordine                                                   |            |
| /home/nordine/Téléchargements                                   |            |
| /home/nordine/Documents                                         |            |
| /home/nordine/Images/screenshots                                |            |
+-----------------------------------------------------------------+------------+

C'est surement parce qu'ils sont inscrit sur deux « places ». Ils prennent la place de deux lettres visuellement. Aini chaque sinogramme déplace la barre d'une espace.


Une autre chose, en vue d'une « amélioration future » ( si si ton script est parfait ! ) tu devrais utiliser un format plus « classique » comme par exemple un système de colonnes qui suggère qu'il peut y avoir plus de colonnes, comme par exemple :

champ1:champ2:
c1:c2:<futur champ3:>
champ1=${LIGNE%%*:};
champ2=${LIGNE#*:}; champ2=${champ2%%:*};
#En général Il suffit de répéter cette opération (n-1) fois pour le champ n :
champ5=${LIGNE#*:*:*:*:}; champ5=${champ5%%:*};
#Pour être sûr que champ5 est vide s'il n'existe pas : (tout en n'oubliant pas de terminer chaque champ par un « : » )
champ5=${LIGNE#*:}; champ5=${champ5#*:}; champ5=${champ5#*:}; champ5=${champ5#*:}; champ5=${champ5%%:*};
#Ou plus généralement :
champ[N]="$LIGNE"; for i in $(seq 2 N ); do champ[N]=${champ[N]#*:}; done; champ[N]=${champ[N]%%:*};

Ça m'aide énormément d'utiliser toujours les mêmes séparateurs, quelle que soit la nature du projet, car je peux réutiliser facilement du code déjà tapé et en plus je peux plus facilement rajouter...

EDIT: J'utilise plutôt « :: » ou parfois « ; » pour séparer mes champs. Donc bash est plus adapté que cut...

Dernière modification par nordinatueur (Le 24/01/2011, à 14:01)


Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#30 Le 24/01/2011, à 17:38

ehmicky

Re : Historique et signets pour la navigation en console

Salut,
Je vais regarder pour les sinogrammes ! Cela marchait avec des caractères avec 3 octets tels que   et ⚴, mais je vais regarder ! Oui effectivement, j'ai rep{e,a}ré le bug pour les accents français (cela venait en fait du fait qu'ils sont mal gérés par le builtin printf)
Sinon, pour les séparateurs, je ne suis pas sûr de voir ce dont tu parles : tu parles bien du fichier contenant les signets ?
Si c'est le cas, j'utilise le séparateur tabulation entre les champs, qui est utilisé dans les fichiers .cvs par exemple. Un alias ne peut pas contenir de tabulations, et un chemin contenant une tabulation sera intercepté par cda donc le séparateur est fiable.
Le format du fichier est :
  - première ligne : un # suivi d'un nombre (la dernière position de la flèche) puis de la fin de la ligne immédiatement.
  - autres lignes : alias + tab + chemin associé
Tu aurais dû poster ton ancien fichier de signets, je l'aurais mis à jour avec le nouveau format, ça aurait été l'affaire d'une ligne de sed ! smile

Pas de bol, j'avais une idée pour optimiser cda avec une commande awk, mais il se trouve que j'ai découvert un bug d'awk pile sur la chose que je voulais faire, et propre à Ubuntu !

Edit 3 : hum, ça m'a l'air assez chaud, cette histoire de 日. Le problème : en théorie, il y a deux manières de traiter les caractères :
   - en fonction de leur nombre d'octets (comme le fait printf), ce qui fait que les caractères ayant deux ou trois octets (c'est-à-dire tout caractère non-ASCII) font un décalage.
   - en utilisant les locales pour traiter chaque ensemble d'octets indépendants comme un seul caractère (comme le fait ${#VAR} )
Le problème ici, c'est qu'il faudrait une troisième manière : traiter les octets en fonction de la place qu'ils prennent sur l'écran, car effectivement les sinogrammes prennent toujours la place de deux caractères ASCII. Mais là, j'avoue n'avoir aucune idée de comment faire (pourtant je planche actuellement sur ce genre de sujet, parce que je voudrais faire une version chinoise d'un de mes logiciels). Je peux regarder la valeur hexa du caractère puis voir ainsi s'il fait partie des caractères CJK, mais ça risque de faire beaucoup ralentir le script. Je vais essayer de me creuser la tête. smile

Dernière modification par ehmicky (Le 24/01/2011, à 18:35)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#31 Le 24/01/2011, à 18:57

Levi59

Re : Historique et signets pour la navigation en console

Il n'y a pas d'équivalent à la tabulation ou au "goto" de conky?

Hors ligne

#32 Le 24/01/2011, à 19:33

ehmicky

Re : Historique et signets pour la navigation en console

Hum je ne connais pas ces fonctions de conky :-s


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#33 Le 24/01/2011, à 19:50

nordinatueur

Re : Historique et signets pour la navigation en console

Te prend pas trop la tête, je n'ai que peu de dossiers avec des sinogrammes. Et s'ils sont là, c'est surtout pour ne pas trop oublier la langue quand je ne pratique pas.
Surtout pour un « petit » problème de décalage ...

En revanche, au lieu de tout revoir, peut-être que tu devrais voir comment fais Ubuntu elle-même dans sa version chinoise...
Je ne sais pas du tout de quoi je parle dans ce domaine...
C'est même toi qui m'en as appris pas mal dans le domaine de l'encodage !

En tout cas courage !

Sinon tu ne connais pas des ubunuteros chinois qui doivent forcément mieux s'y connaitre ?

Edit :

ehmicky a écrit :

j'ai rep{e,a}ré le bug

J'aime beaucoup ! :-D

Dernière modification par nordinatueur (Le 24/01/2011, à 19:52)


Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#34 Le 24/01/2011, à 19:57

Levi59

Re : Historique et signets pour la navigation en console

ehmicky a écrit :

Hum je ne connais pas ces fonctions de conky :-s

Par tabulation j'entends comme sous gedit où l'on peux aligner sans pour autant avoir la même longueurs dans la colonne précédente.
Pour goto je parle de ${goto XX} pour dire continuer à XX px du bord...

Mais bon là je lance des idées comme ça parce que je n'y connais pas grand chose.

Hors ligne

#35 Le 24/01/2011, à 21:01

ehmicky

Re : Historique et signets pour la navigation en console

Hum il faudrait que je me plonge dans leurs sources pour savoir comment ils font. C'est sûrement pris en charge par une bibliothèque qu'ils utilisent.
En tout cas, je suis parvenu à corriger le problèmes des 日 en rajoutant ces lignes (CdChemin est le chemin du signet) :

#Corrige un problème d'affichage si le chemin contient des idéogrammes CJK
Char3octets="${CdChemin//[$'\xe2'-$'\xef']}"
Char4octets="${CdChemin//[$'\xf0'-$'\xff']}"
NombreSinogrammes+=( $(( ( ${#Char4octets} - 3 * ${#CdChemin} ) / 2 + ${#Char3octets} )) )

puis je soustrait la largeur requise par $NombreSinogrammes, mais ça ralentit légèrement le script, et c'est valide qu'UTF-8.

Edit : hélas les seuls chinois que je connaisse ne sont pas geeks du tout (ou savent juste utiliser le plugin Tor pour contourner le grand Pare-feu)

Edit 2 : mis à jour, on peut d'ailleurs aussi désormais mettre des sinogrammes comme alias.

Dernière modification par ehmicky (Le 24/01/2011, à 21:22)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#36 Le 25/01/2011, à 05:48

nordinatueur

Re : Historique et signets pour la navigation en console

Merci beaucoup !

Mais puisque tu veux traduire tes applications en chinois, as-tu essayé le forum « http://forum.ubuntu.org.cn » ?
T'y connais-tu un peu en chinois ?

J'étudie à l'université de Jussieu, à Paris. Peut-être que je peux t'avoir quelques contacts, si ça t'intéresse. Il me suffirait de déposer une/quelques annonce(s).

L'étude du chinois m'a intéressé pour des raisons diverses, l'université m'a permis de l'apprendre facilement, et ça me plait énormément.

Dernière modification par nordinatueur (Le 25/01/2011, à 13:17)


Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#37 Le 25/01/2011, à 13:49

ehmicky

Re : Historique et signets pour la navigation en console

Merci !
Je t'envoie la réponse en MP (si cela ne te dérange pas), parce que ça va faire hors sujet smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#38 Le 27/01/2011, à 01:18

nesthib

Re : Historique et signets pour la navigation en console

très sympa ton script smile
je vais tester ça


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

#39 Le 02/02/2011, à 18:59

ehmicky

Re : Historique et signets pour la navigation en console

Correction d'un petit bug : impossibilité de créer un signet dans certains cas où un signet pointant vers un répertoire au nom similaire et avec des caractères spéciaux existe déjà. (oubli de doubles guillemets big_smile big_smile)
Edit : mis à jour d'un autre petit bug, et de l'interface.

Dernière modification par ehmicky (Le 03/02/2011, à 09:33)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#40 Le 05/02/2011, à 05:59

ehmicky

Re : Historique et signets pour la navigation en console

Petite mise à jour :
  - cds plus rapide (et démarrage du terminal plus rapide)
  - changement de l'interface de cdi
Pour ceux qui mettent à jour, cela ne modifiera pas vos signets smile

Dernière modification par ehmicky (Le 05/02/2011, à 06:00)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#41 Le 10/02/2011, à 10:59

Luc Hermitte

Re : Historique et signets pour la navigation en console

Intéressant. On retrouve des principes de dirs/pushd/popd, avec certains aspects plus ergonomiques (*), mais aussi avec une fonctionnalité en moins (le référencement natif aux répertoires de la pile avec ~1, ~2, etc)).

Je regardais, a priori ces commandes internes de bash n'exposent pas de variable. Sinon il eut été possible de rendre ton script facilement compatible avec elles (et donc de profiter des ~1, ~42, ...). (ce n'est pas impossible, mais cela induirait des changements pénibles (i.e. travailler avec des accesseurs beaucoup trop indirects: dirs/popd/pushd) dans la façon de gérer la liste des chemins)

(*) J'aime bien ce que tu as fait avec les "flèches". Je te le piquerai à l'occasion pour ma surcouche à pushd/dirs/popd. ^^'
L'idée de la persistance des listes de chemins est bonne aussi, mais dans mon utilisation, j'ai besoin de la notion de session car j'ai souvent plusieurs terminaux spécialisés avec chacun sa liste propre de 5 à 9  chemins empilés.

Hors ligne

#42 Le 10/02/2011, à 21:31

ehmicky

Re : Historique et signets pour la navigation en console

En fait ça fait des années que j'utilise ce script, et au début j'avais effectivement utilisé dirs/pushd/popd. Mais en fait le problème, c'est qu'à chaque retour en arrière, l'array qui sauvegarde les emplacement est décalé de un. Du coup en fait avoir une array qui ne bougeait jamais permettait de diviser par deux le code. Et d'un autre côté, comme ça, je pouvais en faire un wrapper au-dessus de cd, ce qui permet de profiter des fonctions natives de cd : cd -, les 3/4 options shopt pour cd, la variable CD_DIRS, etc.
Mais sinon, si ce que tu veux, c'est implémenter un : cd ~NOMBRE permet de revenir au répertoire numéro NOMBRE dans l'historique, ça prendra juste 4/5 lignes à faire, je peux m'en occuper mais faut déjà que je ressuscite mon PC qui est dans le coma depuis hier soir big_smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#43 Le 10/02/2011, à 21:37

Luc Hermitte

Re : Historique et signets pour la navigation en console

cd ~{nombre} ne sert à rien avec des scripts comme les nôtres, d'autant qu'une regex/glob-expr sont bien plus appréciables qu'un numéro sorti d'un chapeau.

En revanche, j'utilise tous les jours "ln ~2/toto/le/fichier", "gvim -d ~1/f1.ext f1.ext", etc. En gros, je suis susceptible de m'en servir sur n'importe quelle commande.

Bonne chance pour ton PC -- c'est pénible quand ça arrive.

Hors ligne

#44 Le 10/02/2011, à 21:52

ehmicky

Re : Historique et signets pour la navigation en console

Boh ça m'arrive tous les mois big_smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#45 Le 14/02/2011, à 12:13

ehmicky

Re : Historique et signets pour la navigation en console

Ok, donc j'ai regardé et en fait je comprenais pas tout à fait parce que je connaissais l'expansion ~NOMBRE dont tu parles sous la forme ~+NOMBRE seulement.
D'après ce que je vois ~NOMBRE est substitué par le répertoire NOMBRE fois précédent dans l'historique. Donc après, tu peux évidemment rajouté quelque chose après : "ln ~2/toto/le/fichier", où ~2 est substitué par l'avant-avant-dernier répertoire de l'historique.
En fait, pour pouvoir le faire, il faudrait que j'utilise dirs. Je peux le faire mais ça va compliquer un peu cdz et cdy qui pour l'instant se résument à vraiment quelques lignes, et je suis pas sûr que beaucoup de gens utilisent l'expansion du tilde ainsi, donc en fait je m'interroge.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#46 Le 14/02/2011, à 14:44

Luc Hermitte

Re : Historique et signets pour la navigation en console

Je comprends. Je pense aussi que c'est très peu utilisé. J'ai vraiment l'impression qu'il y a très peu de gens à être au courant de l'existence de pushd/popd (ne serait-ce qu'en alternative à cd -), alors les ~{nombre}, n'en parlons même pas.

Hors ligne

#47 Le 14/02/2011, à 15:14

ehmicky

Re : Historique et signets pour la navigation en console

En fait dans mon script, ~NOMBRE peut être obtenu avec : "${CdHistory[CdHistoryLevel - 1 - NOMBRE]}", mais pour créer une manière simple d'imiter l'expansion du tilde, je vois pas vraiment mis à part ne pas l'imiter et utiliser dirs.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#48 Le 14/02/2011, à 15:28

Luc Hermitte

Re : Historique et signets pour la navigation en console

Le plus "simple" revient à utiliser la pile interne de répertoires et de manipuler les listes via les mutateurs que sont pushd et popd, et l'accesseur qui est dirs.
C'est pas mal de boulot et des risques non négligeables de régression.

Hors ligne

#49 Le 14/02/2011, à 16:17

ehmicky

Re : Historique et signets pour la navigation en console

C'est dommage, $DIRSTACK a l'air de pas vouloir être modifié, sinon il suffirait de rajouter un :

DIRSTACK=( "${CdHistory[@]}" )

après chaque cd pour pouvoir utiliser ~1, etc. sans avoir à modifier tout l'algorithme.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne