Nous connaissons les alias et c'est généralement pas trop mal. Mais il est aussi possible de faire beaucoup plus : personnaliser les commandes existantes ! Tout simplement en changeant ou créant de nouvelles options à celles existantes. En d'autres termes on place l'alias à l'intérieur de la commande Attention ceci peux être dangereux si l'on ne sait pas trop ce que l'on fait
Puisque nous sommes sous Manjaro, je pense en premier lieu à "pacman", ajouter une option "-maj" ou une commande "maj" et cerise sur le gâteau plus de sudo à taper :
pacman --maj pacman maj
il suffit de créer un alias "pacman" qui va pointer vers notre propre fonction "_pacman"
function _pacman(){ if [[ "$1" == "maj" || "$1" == "-maj" || "$1" == "upgrade" ]]; then (($EUID != 0)) && csudo='sudo' || csudo='' $csudo /usr/bin/pacman -Syu else /usr/bin/pacman $@ fi } alias pacman="_pacman"
code à placer dans votre ~/.bashrc (ou ~.zshrc)
Et il est possible de l'étendre à l'infini ( ), par exemple, on ajoute "info" , "lister" et "éxécutable ":
function _pacman(){ if [[ "$1" =~ maj$ || "$1" == "upgrade" ]]; then (($EUID != 0)) && csudo='sudo' || csudo='' echo "Mise à jour de ma distribution" $csudo /usr/bin/pacman -Syu || yaourt -Sua elif [[ "$1" == "-aur" ]]; then yaourt -Syua && yaourt -Sua --devel elif [[ "$1" == "-info" ]]; then /usr/bin/pacman -Qi "$2" elif [[ "$1" == "-lister" ]]; then echo "liste des fichiers dans le paquet $2" /usr/bin/pacman -Ql "$2" elif [[ "$1" == "-éxécutable" ]]; then echo "liste des exécutables (sans 2é) présents dans ce paquet" /usr/bin/pacman -Ql "$2" | grep -v "/$" | grep "/usr/bin/" else /usr/bin/pacman $@ if [[ "$1" == "-h" ]]; then echo "-- options personnelles:" echo -e "\t-aur : mise à jour des paquets aur" echo -e "\t upgrade : mise à jour de la distribution" echo -e "\t -éxécutable : rechercher les exécutables dans le paquet" #echo -e "\t -papa : rechercher le paquet qui a installé ce fichier (-Qo)" fi fi } alias pacman="_pacman"
note: $1 c'est le premier paramètre passé à la commande et $2 c'est le second. et avec l'option -h nous avons même nos propres commandes/options ps: case is better than elseif
------------------------------------------------ personnellement je n'ajoute pas ce code à .bashrc mais un autre fichier ~/.config/bash.plugins et ajoute uniquement une ligne dans mon ~/.bashrc (pour les alias aussi)
------------------------------------------------ cadeau, un 2ème "plugin" qui ne sert à rien mais qui nous montre qu'il est aussi possible d'agrémenter la sortie standard avec un réaménagement et de la couleur.
function _alias(){ if [ -n "$1" ]; then alias $@ else alias | awk -F'=' '{print " \033[33m" $1 "\033[0m = " $2}' fi } alias 'alias'="_alias"
------------------------------------------------ il ne reste plus que journalctl à faire ... vous avez la recette, maintenant c'est une question d'imagination
c'est marrant comme on utilise tous notre terminal de façon différente... perso je n'utilise aucun alias et je préfère taper les options de mes commandes; en revanche, je me sers beaucoup de l’auto-complétion (toujours un doigt sur TAB) et je joue pas mal avec l'historique, et le glisser déposer de Thunar vers le terminal (pour éviter de saisir les chemins longs).
Asus AIO - AMD E2 - Radeon HD 7340 - Manjaro 64 + Kf5 + Linux 3.14
@Loubrix je te rassure je connais toutes ces options (de pacman) par cœur. j'ai presque poussé à l'absurde d'extension de pacman , il faut juste retenir qu'il est aussi possible d'insérer ces alias à l'intérieur de la commande "difficile" .
De plus, l'exemple de alias montre que l'on peut aussi n'ajouter aucune commande mais simplement modifier la sortie pour quelle soit plus agréable pour nous.
autre exemple (si l'on passe aucun paramètre, il m'aide):
function _ln(){ if [ -n "$1" ]; then ln $@ else echo -n "Nom du dossier/fichier source existant: "; read source if [[ -f "$source" || -d "$source" ]]; then echo -n "Nom du lien vers ce fichier: ";read lien echo "ln -s $source $lien" # pour que ca rentre ;) ln -s $source $lien else echo "erreur fichier inexistant !" fi fi } alias ln="_ln"
Il installe les derniers paquets stables de E intégrés qui marchent comme un charme (j'sais pas ce qu'ils attendent chez Arch pour les envoyer, ils sont déjà chez opensuze & gentoo !) & déclare le dépôt local pour que pacman les voit. & comme j'en ai mis tellement plein d'autres + courants, je les ai sorti de bashrc (qui me semblait devenir un brin poussif) avec ça à la place (que j'ai trouvé chez pcilnuxOs):
if [ -f ~/.alias/bash-alias ]; then . ~/.alias/bash-alias fi
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
fassil a écrit :avec ça à la place (que j'ai trouvé chez pcilnuxOs):
if [ -f ~/.alias/bash-alias ]; then . ~/.alias/bash-alias fi
c'est presque bon le problème c'est le choix du dossier .alias, ce n'est pas standard et pas logique; nous avons un dossier .config qui est fait pour cela (ou utiliser a la limite ~/.bash-alias si qu'un seul fichier). si plusieurs c'est alors ~/.config/alias/
papajoke a écrit :personnellement je n'ajoute pas ce code à .bashrc mais un autre fichier ~/.config/bash.plugins et ajoute uniquement une ligne dans mon ~/.bashrc (pour les alias aussi)
je fais exactement comme toi mais en une ligne ( en bash "source" est égal à '.' )
------------------ pour ton lastE, je ne comprend pas le pourquoi d'un alias (mais je sais que tu les )... l'utilisateur va faire cette commande qu'une seule fois ! faire un alias à usage unique Rien ne t’empêche de créer un bash et de le sauvegarder dans ...[local]/bin/ en exécutable fichier .../local/bin/lastE
# il s'auto supprime uniquement si tout est ok... ?(je sais que tu fais la chasse aux octects ) et ça évite la grosse cata si il est relancé dans 3 mois!, reste le rm -rf /var/cache/pacman/custom qui peut sans doute être ajouté.
De plus je crois comprendre que c'est uniquement pour installer les paquets aur juste après installation. Il n'existe pas dans E un dossier ~/.config/autostart/ ? qui lancerait la super console E avec en paramètre terminology "bin/lastE". Ce bash qui pourrait à la fin supprimer aussi le lanceur dans ~/.config/autostart/
Ouaip, alors l'argument standart/logique dans le merveilleux monde du libre avec "trouzemille" déclinaisons de tout sur un noyau commun à la base, tuwoa ! + séieusement, je comprends moyen le milieu de ta réponse (relue trois fois mais je suis nul en bash ) & pour la fin: Les alias "one-shot" sont documentés en tant que tels dans le bashrc & dans un fichier/todo annexe + clair (genre à supprimer après usage) que l'on peut consulter avec un alias.. Les derniers paquets de E (qu'ils définissent chez E comme stables) ne sont pas dans AUR, mais compilés par mes soins, & optionnels bien que pour terminology en particulier, cela résolve un/deux p'tits bugs de prompt invisible à l'ouverture & de copier/coller fluctuant (mais ils n'ont pas du s'en apercevoir encore chez la maison-mère !).
"Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher"
Antoine de Saint-Exupéry
fassil a écrit :Ouaip, alors l'argument standart/logique dans le merveilleux monde du libre avec "trouzemille" déclinaisons de tout sur un noyau commun à la base, tuwoa !
Libre ne veut pas dire bordel surtout qu'un problème de linux est que nous avons déjà beaucoup trop de répertoires. Perso j'ai .bashrc,.zshrc, .conky dans ~/config et fait des liens vers ~/ ; cela me permet d'avoir une seule entrée pour pouvoir sauvegarder ma config.
fassil a écrit :Les alias "one-shot" sont documentés en tant que tels dans le bashrc & dans un fichier/todo annexe + clair (genre à supprimer après usage) que l'on peut consulter avec un alias..
je me répète, tu détournes les alias, Les alias "one-shot" n'existent pas tu fais un script !
Pour transformer un alias en script : juste ajouter une ligne au début: #!/usr/bin/env bash et sauvegarder le fichier avec des droits exécutable(chmod) /usr/local/bin/ pour mettre tes propres scripts; $HOME/bin ou $HOME/.local/bin en fonction de ce que tu as défini dans ton .bashrc (perso c'est ~/.local/bin car un dossier de moins dans mon home)
fassil a écrit :je comprends moyen le milieu de ta réponse (relue trois fois mais je suis nul en bash )
Il me semble que tu n'es pas nul en console ... et programmer en bash c'est simplement le shell (la console) en plus on utilise des variables spécifiques en plus de celles d'environnement (ici tu comprends mon rm "$0" ) pas de quoi avoir mal à la tête. Et plus compliqué, faire une condition if et savoir faire des tests .Point final, cela est suffisant dans 70% des cas. Le plus dur en programmation bash c'est connaitre les commandes externes au shell (donc maîtriser la console)!
Et rien ne t’empêche d'ouvrir un sujet dans un forum.
fassil a écrit :Les derniers paquets de E (qu'ils définissent chez E comme stables) ne sont pas dans AUR, mais compilés par mes soins, & optionnels bien que pour terminology en particulier, cela résolve un/deux p'tits bugs de prompt invisible à l'ouverture & de copier/coller fluctuant (mais ils n'ont pas du s'en apercevoir encore chez la maison-mère !).
Donc la bonne solution c'est bien le bash, il faut absolument tester si le paquet made in fassil n'as pas été déjà installé (pacman -Qi ...) et si non alors proposer l'installation et si oui des rm a tout va (en bash c'est juste un if avec un test) c'est presque ce que fait manjaro-system ! par exemple :
version=pacman -Q terminology | cut -d' ' -f 2 | sed -e 's/\.//g' | sed -e 's/\-//g' echo "terminology $version" if (( $version < 4278 )); then pacman --noconfirm -U ***** rm "$0" # nettoyer ton bach-alias avec sed (sed est un éditeur de texte, c'est pas du shell) else if (( $version == 4299 )); then echo "vous avez la version fassil d'installée" else echo "la version de terminology est suppérieure, donc on ne fait rien (E a déjà corrigé le problème)" fi fi
tu pourrais te faire un fassil-system dans aur qui reprend exactement la même utilité que manjaro-system donc les maj/patch seraient faits par aur et donc ce que ne fait pas calamare , fassil-system le fait et ca te donne un moyen en plus que faire de la maintenance "E" sur tes distributions déjà installées.