Ranger LE navigateur de fichiers en mode terminal sur un serveur

Ranger est un navigateur de fichiers en mode terminal (curses), il ne nécessite donc pas d’environnement graphique ce qui est donc idéal sur un serveur sans interface graphique.

Comme une vidéo est plus parlante qu’un long texte voici de quoi on parle. Une petite vidéo réalisée par Fred de chez memo-linux.

Alors quel est l’intérêt et pourquoi je vous en parle :
– Ranger est extrêmement puissant, simple, rapide. Il est publié en GPLv3, disponible sur les distributions majeures (Arch Linux, Debian, Ubuntu, etc.) et activement maintenu (version 1.7.1 parue le 04/05/2015)
– Si vous saturez de naviguer à longueur de journées à coup de cd sur votre machine/serveur, arrêtez de courir quelques minutes
– Prévisualisation des fichiers et ouverture du fichier avec **juste** un appui sur la flèche droite
– Et parce que je vais vous en parler sur un serveur

J’ai découvert Ranger sur un article de matutine, comme on dit il m’a tout appris :). C’est à ce moment-là que vous ouvrez le lien précédent et que vous lisez son article car je ne compte pas le recopier et c’est là où se situe le plus d’informations sur ce programme.

Quand j’ai lu son article j’ai su que je devais revenir sur ce programme plus tard. Comme je trouve que la commande du est totalement dépassée par rapport à ncdu, je trouve que cd est un outil dépassé par rapport à ranger. Je ne sais pas comment font les autres (Cabernet je veux bien ton retour) mais moi cd je sature. Oui, j’ai installé ranger sur tous mes postes/serveurs pro et perso (oh my god !) et je vais vous donner les bases pour faire le test vous-même et y réfléchir sérieusement.

La majorité du temps votre serveur sera sous Debian ou Ubuntu LTS, évidemment il existe un paquet ranger pour ces deux distribs et c’est la même version 1.6.1. Dans la suite des explications, je considérerai que nous sommes sur une Debian Jessie (vous connaissez ma faiblesse pour Debian).

aptitude install ranger # En root ou précédé de sudo sur Ubuntu
ranger --copy-config=all # On copie les fichiers de configuration dans le répertoire de l'utilisateur, c'est ce qui est recommandé par l'auteur

Si tu es connecté en root lecteur alors tu auras le fichier rc.conf (le fichier le plus important et le seul dont je vais parler) dans /root/.config/ranger/rc.conf. La copie est effectuée depuis /etc/ranger/config/rc.conf (lui-même étant un lien vers /usr/share/pyshared/ranger/config/rc.conf).

Je t’invite donc lecteur à éditer le fichier /root/.config/ranger/rc.conf avec les valeurs suivantes :
set column_ratios 1,2,7 (ou set column_ratios 2,7) : On détermine combien nous désirons de colonnes dans ranger. Si je fais 1,1,1,1, j’aurai donc 4 colonnes de taille identique. En ce qui me concerne, ma première colonne est la plus petite (taille 1) car elle concerne le répertoire parent de là où se trouve notre curseur. La seconde colonne (taille 2) est la colonne centrale qui permet de ne pas perdre mon regard et où on se déplace dans l’arborescence du serveur. La dernière colonne (taille 7) concerne la prévisualisation des fichiers (donc son contenu), je lui laisse une très large place pour un certain confort de lecture
set show_hidden true : Étant sur un serveur tous les fichiers t’intéressent lecteur, tu seras donc intéressé par l’affichage des fichiers cachés
set colorscheme snow : Il s’agit là d’un goût personnel, je vois mieux ce qu’il se passe avec ce thème. Je vous conseille de laisser default et de voir ce que ça donne rapidement avec snow
set collapse_preview false : Afin de ne pas perdre mon regard, je force la taille des colonnes à rester identique. En effet quand ranger ne peut pas prévisualiser un fichier alors il étire l’avant dernière colonne jusqu’au bout du terminal afin de donner un plus grand confort de lecture. En ce qui me concerne ça attire mon regard et je trouve ça pénible
set mouse_enabled false : Je désactive l’utilisation de la souris car vous pouvez cliquer sur un dossier dans ranger, je ne vois aucun intérêt à l’utiliser et ça m’évite une mauvaise manipulation
set show_cursor true : Afficher le curseur. Ça peut paraître anodin mais ça change tout, on sait plus rapidement où on est, notre regard est accroché
alias find scout -aet : Un paramètre totalement facultatif (je recopie d’ailleurs le paramètre par défaut), j’attire votre attention dessus pour paramétrer finement comment vous souhaitez que les fonctions find/filter/search/travel dans ranger fonctionnent

Maintenant vous lancez ranger et vous passez deux minutes dessus pour vous faire un premier avis. Si ça vous plaît on continue sinon passez à autre chose, vous avez lu l’article Pourquoi Facebook et Instagram font-ils de nous des losers ?

Chez moi la prévisualisation des fichiers ne fonctionnaient pas (c’est d’ailleurs une des raisons pour laquelle je n’ai pas adopté ranger sur Debian Wheezy). Une commande fort intéressante à connaître sur ranger est 3? (l’aide étant ? évidemment), cela vous affiche la valeur de tous les paramètres de ranger ce qui est fort utile pour déboguer. Normalement vous devriez voir preview_files = True si tout se passe bien. Dans mon cas alors que partout j’avais set use_preview_script true, je constatais qu’en faisant 3? j’avais toujours preview_files = False. J’y reviens juste après.

Nous voici arrivé au + de ce billet. Vous avez dû remarquer que si vous lanciez ranger à partir de /root par exemple et que vous alliez dans /etc/apache2 puis que vous ressortiez de ranger (avec la touche q) alors vous êtes toujours dans le dossier /root. C’est un comportement qui ne me plaît pas du tout, en fait je le trouve même illogique (chacun son point de vue). Je souhaite que lorsque je quitte ranger je me trouve dans le dossier où était placé mon curseur dans ranger c’est-à-dire que quand je presse q je me retrouve dans /etc/apache2.

On va pour cela ajouter une fonction à notre .bashrc qui aura 3 utilités :
– Pour appeler ranger je ne tape pas ranger, trop long, trop compliqué, on est des Linuxiens bordel et on se la pète avec des alias nous donc pour lancer ranger ça sera r
– On va forcer la prévisualisation des fichiers en mettant le paramètre directement dans la ligne de commande qui appelle ranger (–cmd=’set preview_files true’)
– Enfin on va gérer la sortie de ranger dans le dossier en cours

Voici ce qu’il faut ajouter à la fin de votre /root/.bashrc. Je n’ai rien inventé voir le fichier /usr/share/doc/ranger/examples/bash_automatic_cd.sh et le lien suivant.

### Permet de sauter vers le dernier dossier visité lorsqu'on quitte ranger ###

r()
{
tempfile='/tmp/chosendir'
/usr/bin/ranger --choosedir="$tempfile" "${@:-$(pwd)}" --cmd='set preview_files true'
test -f "$tempfile" &&
if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
cd -- "$(cat "$tempfile")"
fi
rm -f -- "$tempfile"
}

Je vous rappelle que pour recharger votre fichier .bashrc, il suffit de faire source ~/.bashrc. Après quoi taper r puis Entrée dans votre terminal. Ça vous plaît ou pas ?

Si vous voulez flinguer votre configuration ranger et la remettre au propre.

rm -r /root/.config/ranger
ranger --copy-config=all

Je ne peux que vous invitez à tester. Ranger est extrêmement puissant, c’est le genre d’outil qu’il faut tester pour voir son potentiel. En ce qui me concerne :
– J’adore les raccourcis (ge = /etc/, gu = /usr/, j’ai crée le mien gw = /var/www/)
– Ouvrir un fichier avec son éditeur préféré, modifier, enregistrer, quitter l’éditeur et toujours être dans son navigateur de fichiers, merci seigneur
– Vous pouvez évidemment faire r /etc/apache2/sites-enabled directement pour sauter dans un dossier
– J’utilise toujours cd bien sûr (réflexes, mémoire, toussa) mais je dirais à 25%, ranger ayant les 75%
– Vous pouvez utilisez un shell directement dedans (et enchaîner sur un ncdu)
– Affichage des droits, du poids, du propriétaire/groupe directement dedans
– Tout n’est pas rose pour autant avec ranger, j’ai quelques bugs (très rares) qui me force à faire des Ctrl+z. C’est tellement puissant qu’on se sent perdu avec des outils comme celui-ci. Je ne navigue pas parfaitement dans les dossiers contenant beaucoup de dossiers/fichiers (par exemple /etc/). Idéalement je voudrais qu’il me trouve les premières lettres d’un dossier (c’est pour cela que j’ai parlé de find/filter/search/travel), il me trouve les lettres n’importe où dans le nom du dossier. C’est réellement ce seul point là qui me chagrine encore

Vous trouverez dans les liens suivants de quoi continuer votre aventure avec Ranger (ne passez pas à côté des articles en anglais ils regorgent de tips et de configurations avancées pour Ranger) :
http://matutine.cmoi.cc/posts/Ranger,-le-navigateur-de-fichiers-ultime.html
http://la-vache-libre.org/ranger-un-gestionnaire-de-fichier-simple-mais-efficace-pour-votre-terminal-2/
http://memo-linux.com/ranger-un-gestionnaire-de-fichier-en-mode-terminal-sous-linux/
https://www.digitalocean.com/community/tutorials/installing-and-using-ranger-a-terminal-file-manager-on-a-ubuntu-vps
http://ranger.nongnu.org/ranger.1.html (voir scout)
https://sites.google.com/site/debianinstallnotes/lxde/ranger
https://wiki.archlinux.org/index.php/Ranger
https://bbs.archlinux.org/viewtopic.php?id=93025&p=75

Je vous embrasse les filles, je retourne à mes cartons !

Déjà 10 avis pertinents dans Ranger LE navigateur de fichiers en mode terminal sur un serveur

  • cabernet138
    (Cabernet je veux bien ton retour) … !!
    Ça me fait tout drôle… j’ai l’impression que tu demandes l’avis du dinosaure gardien du temples des barbus (que je ne suis pas, ni barbu, ni dino, ni gardien)…
    Bah j’ai pas spécialement d’avis.. Ok, ranger a l’air sympa… encore que je pourrais répondre par un seul mot : emacs. :-)
    Il faut se méfier de la recherche (frénétique) d’outils super-plus-cool… Il y en a certainement plein, mais bon… Il n’est pas impossible qu’en maîtrisant très bien quelques outils basiques on soit au moins aussi efficace qu’en expérimentant en permanence des nouveautés…
    Ncdu … mouai…
    PS : j’ai donc installé ranger, ncdu… à voir dans x mois si je m’en souviens ;-)
    PS2 : petite colle, quel est le chmod pour donner tous les droits à tous le monde sur un fichier ?
  • C138
    chmod 777 ??
    Et bingo, tombé dans le piège, comme prévu…
    Il existe depuis longtemps une notation bien plus moderne et mnémotechnique… genre chmod ug+r-xw
    Résumons, d’un côté une notation anté-diluvienne toujours très largement utilisée, de l’autre une notation moderne/efficace qui reste méconnue…

    http://blogduyax.madyanne.fr/deploiement-et-sauvegarde.html (tu dois connaître je suppose)

    PS : j’ai plutôt tendance a me méfier de l’optimisation via des outils spécifiques (certainement très bien), cela crée la situation suivante : très cool sur ta machine perso aux petits oignons mais frustration systématique sur les autres machines non « customisées » …
    Bon, je vais déployer, on verra bien… ;-)

  • C138
    a) Je n’ai aucunement l’intention de te convaincre même si la porte est ouverte, c’est juste pour montrer que ce que chacun considère comme étant progrès ou inversement « has been » est très très subjectif/relatif…

    Que tu en reste à l’ancienne notation, c’est juste simplement ton problème ;-)

    b) Il y a la productivité individuelle et la productivité collective. Une approche moyenne consiste à « verrouiller » et donc à faire remonter toute demande de personnalisation (amélioration / bonnes pratiques) puis à redéployer celle-ci de manière en faire profiter les autres

     » je trouve ça stupide ». C’est simplement que tu n’es pas confronté au problème (récurrent) de devoir dépanner un collègue sans connaître ce qu’il a bien pu imaginer comme personnalisation qui amène au fait que tu ne comprends pas pourquoi il a CE problème (qui « normalement » ne devrait pas être). Oui, c’est du vécu (régulier).

    Quand tu es (véritablement) admin « collectif », tu comprends pourquoi il est nécessaire de figer certaines variables d’un problème complexe.
    Sortie de là, on entre dans le cadre du gars qui se la joue solo, qui veut être autonome, qui « maîtrise » sa bécane, qui… va pleurer chez l’admin quand il perd le fil…

  • C138
    « ma réaction hâtive aux S.I qui préfèrent ne strictement rien faire par peur ou par envie de ne surtout pas lancer ce dialogue, cette organisation. »

    Je ne dis pas ce que cela n’existe pas mais c’est également un procès d’intention.
    Fondamentalement le problème se pose de manière asymétrique. Toi, individu, tu peux te permettre de hacker, tester, bidouiller, ok (je le fais aussi)…
    Par contre, un « service collectif » est en responsabilité du fait que *ça marche*.

    Pour être un peu passé de l’autre côté de la « barrière », je pourrais également décrire le profil de ceux qui ne veulent surtout pas qu’on entrave leur « liberté » (je fais ce que je veux) mais qui n’assument pas en cas de problème…(*)

    Cliché contre cliché / caricature contre caricature. Un partout. Balle au centre.

    (*) j’ai des tas d’exemples où « nous » passons plusieurs heures à rétablir une situation pour un collègue qui n’a pas voulu suivre les recommandations (même pas des obligations hein!).

Les commentaires sont fermés.