Forum Astuces.divers [Terminal] Mon environnement shell

Posté par  (site web personnel) .
Étiquettes : aucune
1
10
nov.
2007
Bonsoir,

J'aime bien utiliser mon shell, mais pas seulement. J'aime bien aussi mon interface graphique. Pour moi, le meilleur vient lorsqu'on mélange les deux. Je vous propose donc mes petits scripts et alias que j'ai développé pour cela:

Mais d'abord un résumé :

E — lance mon éditeur favori (kwrite) en arrière plan et le détache du terminal
EE — lance mon éditeur favori au premier plan
EEsudo — équivalent en mieux de sudo -e (copie le fichier lorsqu'il est modifié. Permet donc de tester les modifications sans avoir à quitter son éditeur de texte (car kwrite met du temps à démarrer)
Esudo — pareil que EEsudo mais lance en arrière plan
P — utilise kwrite comme pager
bsudo — équivalent de sudo -b
delbakfile — supprime les fichiers *~ du répertoire courant
fb — lance mon navigateur de fichier (nautilus --browser ou thunar)
fm — lance mon gestionnaire de fichier en mode visuel (nautilus ou thunar)
prename — perl rename [http://www.perlmonks.org/?node_id=303814]
s — (start) lance une commande en arrière plan et la détache du shell. Redirige toutes les sorties dans /dev/null
term — lance mon émulateur de terminal favori (gnome-terminal) en arrière plan (et le détache)

Maintenant mes alias

dfh='df -h'
duh='du --si'
l=ls
la='ls -ha'
ll='ls -lh'
lla='la -lha'
ls='ls --color=auto'
mplayer-fb='mplayer -vo fbdev2 -vf scale=1024:768 -quiet'
rm='rm -i'

Et maintenant le code source pour chacun de mes petits outils:

E
#! /bin/sh
if [ -z "$DISPLAY" ]; then
exec nano "$@"
else
EE "$@" &
disown 2>/dev/null
fi
exit 0

EE
#! /bin/bash
if [ -z "$DISPLAY" ]; then
exec nano "$@"
fi
exec kwrite "$@" >/dev/null 2>&1

EEsudo
#! /bin/sh

if [ -z "$DISPLAY" ]; then
do_sudo(){
sudo "$@"
return "$?"
}
else
do_sudo(){
gksudo -- "$@"
return "$?"
}
fi

#sudo -v

if [ -z "$DISPLAY" ]; then
EDITOR=E exec sudo -e "$@"
else
while [ "$#" -gt 1 ]; do
"$0" "$1" &
shift;
done
orig="$1"
file_pattern="`basename "$orig"`"
file="`mktemp -t "$file_pattern.XXXXXXXXXX"`" || exit 1
file_timestamp="`mktemp -t "$file_pattern.timestamp.XXXXXXXXXX"`" || exit 1
#do_sudo sh -c 'cat "$0" > "$1"' "$orig" "$file"
touch "$file_timestamp"
do_sudo sh "`dirname $0`/EEsudo.root" "$orig" "$file" "$file_timestamp" "$$" &
wait=true
stop(){
wait=false
#echo "Stop sleep"
}
notify(){
echo "EEsudo: Save $file into $orig"
}
trap notify USR1
trap stop HUP
while $wait; do
#echo "Sleep pid=$$"
sleep 0.1s
done
EE "$file" &
eepid="$!"
while ! wait "$eepid"; do true; done
rm "$file_timestamp"
#echo "Wait for saving process to finnish"
wait
rm -f "$file" "$file_timestamp"
fi

Esudo
#! /bin/sh

if [ -z "$DISPLAY" ]; then
EDITOR=E exec sudo -e "$@"
else
EEsudo "$@" >/dev/null 2>&1 &
disown 2>/dev/null
fi

exit 0

P
#! /bin/sh

if [ -z "$DISPLAY" ]; then
exec less
else
kwrite --stdin >/dev/null 2>/dev/null <&0 &
disown 2>/dev/null
fi
exit 0

bsudo
#! /bin/sh

# background sudo

gnome-sudo 'echo -n' 2>/dev/null
/usr/bin/sudo -b "$@" >/dev/null 2>&1
exit $?

delbakfile
#! /bin/bash

filelist="`ls *~`"
#echo $filelist

[ -z "$filelist" ] && exit 0

ls *~

echo -n "Delete these files ? (y/N)"
read -n 1 ans
echo

if [ "$ans" = y -o "$ans" = Y ]; then
rm -f *~
else
echo "Canceled."
fi

fb
#! /bin/sh

fb="nautilus --browser"

# launch filemanager (browser)

$fb ./ >/dev/null 2>&1 &
res=$?
disown 2>/dev/null

exit $res

fm
#! /bin/sh

# launch filemanager

fm=nautilus

dir="./"
if [ -d "$1" ]; then
dir="$1"
fi

$fm "$dir" >/dev/null 2>&1 &
res=$?
disown 2>/dev/null

exit $res

s
#! /bin/sh

# s : start a command line in background
# without annoying me with anything.

"$@" >/dev/null 2>&1 &
res=$?
disown 2>/dev/null

exit $res

term
#! /bin/sh

gnome-terminal "$@" & >/dev/null 2>&1
disown >/dev/null 2>&1



Typiquement, j'utilise énormément E, Esudo, s et fb que je trouve très pratiques. Et vous ?

J'ai aussi beaucoup d'autres scripts qui me servent notament à initialiser ma session (le fichier ~/.xsession). A ce moment là, je définis des variables d'environnement, je lance ssh-agent et d'autres broutilles, et je prompte avec xmessage (je sais que zenety existe mais je prefère xmessage) pour demander sur quelle session je vais démarrer (GNOME, KDE, xfce, ...) ou si je veux stopper la session.

Et encore un script qui me permet de gérer les liens symboliques de tout mes fichiers de config perso (~/.*) vers ~/.local/config/. Je ne met dans ~/.local/config que les fichiers de config importants et je sais que les autres, je peux les détruire. Évidamment, les trucs comme gconf ne fonctionnent pas.

Et vous, comment vous faites ?
  • # delbakfile plus simple :)

    Posté par  (site web personnel) . Évalué à 1.

    plus simple pour delbakfile mais sans la question à la windows "voulez vous vraiment ??" qui ne sert à rien :) :

    find . -name "*~" -exec rm {} \;

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.