#126 Le 14/06/2009, à 12:03
- BorX
Re : Partagez vos alias et function (fichier .bashrc)
Salut,
@Bladadator :
Intéresse-toi à la commande tee qui permet d'afficher l'entrée standard sur la sortie standard tout en la redirigeant vers un fichier.
ls -l | tee ls.log | wc -l
Affiche le résultat du ls dans le fichier ls.log, puis compte le nombre de lignes. Le fichier contient donc le résultat du ls et le nombre de lignes est affiché sur la sortie standard.
Pour la sortie d'erreur, tu peux la rediriger sur la sortie standard, afin, notamment, de la faire passer dans un tube :
rm fichier 2>&1 | tee /home/leo/error.log
Si tu veux en faire un alias, fais plutôt une fonction :
rm() { rm $* 2>&1 | tee /home/leo/error.log; }
Par contre, pour rediriger la sortie standard dans un tube et la sortie d'erreur dans un autre, le tout en une seule fois, je sais pas faire
Hors ligne
#127 Le 14/06/2009, à 22:00
- Totor
Re : Partagez vos alias et function (fichier .bashrc)
Bonsoir,
Ceci devrait répondre à ton besoin sans avoir à créer d'alias.
Ajoute ceci dans ton fichier ~/.bashrc :
exec 2> >(tee -a fichier.log)
Je n'ai pas testé mais il ne devrait pas y avoir d'erreur.
EDIT :
Avec ceci, normalement TOUTES tes erreurs seront redirigées vers ton fichier et vers la sortie standard.
Dernière modification par Totor (Le 14/06/2009, à 22:03)
-- Lucid Lynx --
Hors ligne
#128 Le 15/06/2009, à 12:08
- Bladadator
Re : Partagez vos alias et function (fichier .bashrc)
Bonsoir,
Ceci devrait répondre à ton besoin sans avoir à créer d'alias.Ajoute ceci dans ton fichier ~/.bashrc :
exec 2> >(tee -a fichier.log)
Je n'ai pas testé mais il ne devrait pas y avoir d'erreur.
EDIT :
Avec ceci, normalement TOUTES tes erreurs seront redirigées vers ton fichier et vers la sortie standard.
Super ça marche !!! Merci Beaucoup !
Dernière modification par Bladadator (Le 15/06/2009, à 12:09)
Hors ligne
#129 Le 17/09/2009, à 12:08
- deax_one
Re : Partagez vos alias et function (fichier .bashrc)
Salut,
quelques unes de mes fonctions les plus utiles :
Lister sauf :
function sl()s
{
# Cette fonction nécessite l'activation des motifs étendus
# c-Ã -d de mettre "shopt -s extglob" dans son bashrc
for i in "$@"
do
liste_excep="$liste_excep""$i""|"
done
liste_excep=$(echo "$liste_excep" | rev | cut -b 2- | rev)
liste_excep="!(""$liste_excep"")"
liste_excep=$(echo "$liste_excep" | sed "s/-/*/g")
ls -d $liste_excep
}
Permet de lister le contenu (comme ls) moins les arguments; s'utilise comme ça:
sls -aaa- toto- -log
Pour lister tous sauf les fichiers :
- contenant "aaa"
- ou commençant par "toto"
- ou finissant par "log"
En effet, le "-" sert de joker comme le fait le "*" dans un ls classique
Nota : nécessite d'avoir mis "shopt -s extglob" dans son .bashrc
Changer le titre du terminal :
function titre()
{
if [ "$#" = "0" ]
then
echo -e "\033]0;$(pwd) - Terminal\007"
else
if [ "$#" = 1 ]
then
if [ "$1" = "" ]
then
echo -e "\033]0;Terminal\007"
elif [ "$1" = "H" ]
then
echo -e "\033]0;$(date +%T) - Terminal\007"
else
echo -e "\033]0;$1 - Terminal\007"
fi
else
titre_tmp=""
for i in $(seq 1 $#)
do
titre_tmp="$titre_tmp $1"
shift
done
echo -e "\033]0;$titre_tmp - Terminal\007"
fi
fi
}
Permet de changer le titre du terminal (pratique quand on en a plusieurs d'ouvert et qu'on les consacre à une utilisation précise).
Si l'argument est une chaine de caractère, le titre du terminal sera "chaine de caractère - Terminal".
Si l'argument est "", le titre du terminal sera réinitialisé à "Terminal".
S'il n'y a pas d'argument, le titre du terminal sera "chemin du dossier courant - Terminal".
Afficher le chemin complet d'un fichier:
function chemin() # Affichier le chemin complet de l'argument
{
chemin="$(pwd)"
chemin="$chemin/$1"
echo "$chemin" | tr -d " "
}
Faire un petit bilan de l'espace sur la machine:
function esp_occ_serveur()
{
# Récupération nom serveur et matricule utilisateur
hote=`hostname`
utilisateur=`whoami`
# Test existence répertoire perso sur machine, si non, sortir
if [[ ! ( -d "/$hote/$utilisateur" ) ]]
then
return
fi
###---###---###---###---###---###---###---###
# Variable de quantification d'occupation #
###---###---###---###---###---###---###---###
lim_serveur=90 # seuil de remplissage serveur en % pour avertissement
lim_utilisateur=10 # seuil d'espace utilisateur en % pour avertissement
# Récupération des infos du serveur et de l'utilisateur
hote=`hostname`
utilisateur=`whoami`
esp_perso_occ=`du -h /"$hote"/"$utilisateur" | egrep "($utilisateur)$" | cut -f1`
esp_total=`df -h | grep /"$hote" | awk {'print $2'}`
esp_occ=`df -h | grep /"$hote" | awk {'print $3'}`
esp_libre=`df -h | grep /"$hote" | awk {'print $4'}`
pourc_occ=`df -h | grep /"$hote" | awk {'print $5'}`
pourc_occ_ss_signe=`echo "$pourc_occ" | rev | cut -b 2- | rev`
# valeur en ko pour le calcul du pourcentage perso
esp_total_ko=`df -k | grep /"$hote" | awk {'print $2'}`
esp_perso_occ_ko=`du -k /"$hote"/"$utilisateur" | egrep "($utilisateur)$" | cut -f1`
pourc_occ_perso=$((100*$esp_perso_occ_ko/$esp_total_ko))
# Affichage des infos
echo " -----> Connecté sur : \"$hote\" en tant que : $utilisateur."
echo " -----> Etat d'occupation de \"$hote\" :"
echo " --> Espace total de \"$hote\" : $esp_total."
echo " --> Espace occupé total sur \"$hote\" : $esp_occ."
echo " --> Espace libre sur \"$hote\" : $esp_libre."
echo -e " --> Pourcentage d'occupation de \"$hote\" : $pourc_occ."
echo -e " --> Espace perso sur \"$hote\" : $esp_perso_occ, soit "$pourc_occ_perso %"."
# Affichage d'un avertissement si serveur trop rempli et utilisateur trop gourmand
if [ "$pourc_occ_ss_signe" -gt "$lim_serveur" ] && [ "$pourc_occ_perso" -gt "$lim_utilisateur" ]
then
echo ""
echo "ATTENTION : le pourcentage d'occupation de \"$hote\" dépasse $lim_serveur %"
echo "et vous en occupez actuellement $pourc_occ_perso%."
echo ""
fi
}
Jabber : mat@jabber.lutix.org
[img]http://lutix.org/images/mini_lutix.png[/img]
Hors ligne
#130 Le 07/10/2009, à 11:19
- Vassili611
Re : Partagez vos alias et function (fichier .bashrc)
Salut alicia63,
Ca dépend où sont déclarés tes alias, cron ne source pas ton .bashrc à part si tu demandes explicitement de le faire genre une commande du type
/bin/bash /chemin/vers/mon/script > /dev/null
Soit tu déclares le chargement dans ton .profile (sourcé en cas de connexion non-interactive). Comme dans l'exemple suivant.
Contenu de $USER/.profileif [ "$BASH" ]; then if [ -f ~/.bashrc ]; then . ~/.bashrc fi fi
Ceci fait en sorte que les tâches cron qui ne s'executent pas dans un terminal chargent quand même le .bashrc s'il existe donc tes alias leur sont accessibles.
Ceci dit, ce n'est pas un bonne idée en terme de réutilisation. Un script ne devrait jamais n'appuyer sur l'environnement d'un utilisateur particulier pour fonctionner mais bon ceci est surtout valable dans un cadre multi-utilisateur ou professionnel ce qui n'est peut être pas ton cas...
Je fais un peu remonter ce post, vu que j'ai un souci avec les alias et cron...
Je suis sous Ubuntu serveur, et j'utilise donc bash. J'ai créé des alias qui fonctionnent, et que je peux lancer sans problème, par contre quand je les utilise dans une tache cron, il me dit "/bin/bash : monalias: command not found"
J'ai bien changé la variable SHELL=/bin/bash, et j'ai collé le code indiqué ci-dessous dans le ficier .profile de l'utilisateur concerné :
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
Quelqu'un aurat-il déjà rencontré ce problème, ou aurait une idée de ce qu'il faut corriger ???
Cimer d'avance !
Dernière modification par Vassili611 (Le 07/10/2009, à 11:21)
Hors ligne
#131 Le 29/10/2009, à 08:42
- Seth_
Re : Partagez vos alias et function (fichier .bashrc)
Une petit résolveur d'URLs raccourcies :
resolve-tiny-url () {
wget $1 -O /dev/null 2>&1 | grep --color=always Emplacement | cut -d\ -f 2
}
Et quelques fonctions de recherche dans des fichiers.
Syntaxe :
find_in <répertoire> <chaîne_à_trouver>
ffind_in <rep1> <rep_si_pas_trouvé_dans_rep1> <chaîne_à_trouver>
La sortie donne la ligne, le numéro de ligne et le fichier où la chaîne a été trouvée et en couleurs !
function rpt {
if [ $# -ne 2 ]
then
echo "Usage: rpt N STRING"
return 1
else
local i=0
local str
while [ $i -lt $1 ]
do
str="$2$str"
i=$[$i+1]
done
echo -n $str
fi
}
function find_in {
rc=1
echo "Looking for '$2' in '$1'"
for f in $(find $1 -type f)
do
if ( grep --color=always -n "$2" "$f" )
then
printf "^%s{ %s\n" $(rpt $[$COLUMNS - $(echo $f|wc -m) - 3] "-") $f
rc=0
fi
done
return $rc
}
function ffind_in {
( find_in $1 $3 || find_in $2 $3 ) && return 0 || return 1
}
Dernière modification par Seth_ (Le 29/10/2009, à 08:42)
Hors ligne
#132 Le 09/11/2009, à 17:41
- Vergeylen
Re : Partagez vos alias et function (fichier .bashrc)
Bonjour,
j'avoue ne pas avoir lu les 6pages d'astuces, mais j'ai une petite question de configuration. Dans le terminal, j'aimerais bien que ne s'affichent que le dossier courant et non le pwd complet.
j'avais trouvé l'astuce il y a quelques années mais je n'arrive plus à retomber dessus . Si quelqu'un sait comment faire, ça me changerait la vie!
Si mes souvenirs sont bons, il faut modifier quelques chiffres dans la ligne:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Daniel.
Dernière modification par Vergeylen (Le 09/11/2009, à 17:42)
Hors ligne
#133 Le 09/11/2009, à 18:50
- Ferod
Re : Partagez vos alias et function (fichier .bashrc)
Bonjour,
Il suffit de changer le w en "W". Donc ta ligne deviens :
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '
C'est vrai que sinon c'est lourdingue !
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#134 Le 11/11/2009, à 13:04
- Vergeylen
Re : Partagez vos alias et function (fichier .bashrc)
Merci! je teste ça dès que je rentre!
Hors ligne
#135 Le 05/10/2010, à 09:17
- chapodepay
Re : Partagez vos alias et function (fichier .bashrc)
function reload(){
/etc/init.d/$1 reload
}
function restart(){
/etc/init.d/$1 restart
}
[root@chapodepay.com:~]$ reload apache2
* Reloading web server config apache2 [ OK ]
[root@chapodepay.com:~]$ restart apache2
* Restarting web server apache2
... waiting [ OK ]
[root@chapodepay.com:~]$
Dernière modification par chapodepay (Le 05/10/2010, à 09:18)
PC1: MSI P35 Platinum, DD: 72Go 10.000rpm, Q6600 @3.15Ghz, 4Go ddr2 corsair, 8800GTS... CPU + GPU sous watercooling zalman, DD: 4.5To
Serveur : Intel Bi-Xeon i7 2x2.93Ghz, mémoire vive : 24Go DDR3
Hors ligne
#136 Le 05/10/2010, à 09:20
- beware
Re : Partagez vos alias et function (fichier .bashrc)
ah oui intéressant comme fonction je n'y avais pas pensé. Merci
Hors ligne
#137 Le 05/10/2010, à 09:34
- BorX
Re : Partagez vos alias et function (fichier .bashrc)
Vive le bash_completion !
[root ~]# invo[TAB] [TAB] [TAB]
acpid dbus keyboard-setup portmap stop-bootlogd
acpi-support dhcdbd killprocs procps stop-bootlogd-single
alsa-utils --disclose-deny loadcpufreq --query sudo
amule-daemon exim4 module-init-tools --quiet system-tools-backends
anacron --force mountoverflowtmp rc --try-anyway
apache2 gdm mysql rc.local udev
apmd hal mysql-ndb rcS udev-mtab
atd halt mysql-ndb-mgm reboot umountfs
avahi-daemon hdparm networking rmnologin umountroot
bluetooth --help network-manager rsyslog urandom
bootlogd hibernate network-manager-dispatcher screen-cleanup vbesave
console-setup ifupdown nfs-common sendsigs wpa-ifupdown
cpufrequtils ifupdown-clean --no-fallback single x11-common
cron iptablesInit_BorX openbsd-inetd skeleton
cups kerneloops pcmciautils ssh
[root ~]# invoke-rc.d apa[TAB] [TAB] [TAB]
force-reload restart start-htcacheclean stop
reload start status stop-htcacheclean
[root ~]# invoke-rc.d apache2 rest[TAB]
Dernière modification par BorX (Le 05/10/2010, à 09:36)
Hors ligne
#138 Le 16/11/2010, à 16:21
- KujakuChan
Re : Partagez vos alias et function (fichier .bashrc)
Je viens de voir ce topic et ça me fait pensé que j'avais des fonctions dans mon bashrc que j'ai oublié de sauvegardé (mais bon c'est pas la mort). L'idée est sympa pour garder une trace d'alias ou de fonctions sympa ou utiles mais je vois plus une page de documentation pour ça parce que sur un forum certains peuvent poster x fois si ils ont de nouvelles choses à proposer et de toute façon le nombre de personnes qui peuvent potentiellement poster est tel qu'on va forcément finir par avoir x pages ce qui risque de réduire de beaucoup l'ergonomie du topic.
Bref l'idée est vraiment superbe mais le média lui n'est à mon sens pas le plus adapté. Pour moi il faudrait proposer une page dans la documentation et classer les éléments de manière à ce que les scripts puissent être retrouvés le plus simplement possible.
Bon je m'en vais réécrire mes petites fonctions y'en a pas beaucoup.
自分の考え:ウィンドウズがライナックスに対するのはデルフィがC++に対するようなものである。
Just a thought : Windows is to Linux as Delphi is to C++ . Juste une pensée : Windows est à Linux ce que Delphi est à C++.
Hors ligne
#139 Le 17/11/2010, à 19:27
- ferreol
Re : Partagez vos alias et function (fichier .bashrc)
bonne idée Kujakuchan
je trouve au fait ou et comment rentre ton les functions moi je n'ai qu'un fichier bash_alias qui contient que des alias
alias xxx="sudo blabla"
peut on y glisser à la fin vos fonctions?
Hors ligne
#140 Le 17/11/2010, à 20:34
- beware
Re : Partagez vos alias et function (fichier .bashrc)
Bien sur.
Soit tu peut séparer encore plus les deux.
Crée un fichier .bash_functions, y écrite tes fonctions, et le sourcer dans le .bashrc comme l'est fait le .bash_aliases
Hors ligne
#141 Le 17/11/2010, à 21:08
- Uggy
Re : Partagez vos alias et function (fichier .bashrc)
je vois plus une page de documentation pour ça parce que sur un forum certains peuvent poster x fois si ils ont de nouvelles choses à proposer et de toute façon le nombre de personnes qui peuvent potentiellement poster est tel qu'on va forcément finir par avoir x pages ce qui risque de réduire de beaucoup l'ergonomie du topic.
J'ai créé ce topic il y a 5 ans.. et il fait 6 pages... c'est disons .. calme
Bref l'idée est vraiment superbe mais le média lui n'est à mon sens pas le plus adapté. Pour moi il faudrait proposer une page dans la documentation et classer les éléments de manière à ce que les scripts puissent être retrouvés le plus simplement possible.
Je ne suis pas contre l'idée d'avoir également une page dans le wiki.
Je suggère qu'il y ai juste une minimum de personne "pour".. et.. une personne motivée pour la créer et mettre les premières lignes
Hors ligne
#142 Le 24/01/2011, à 15:06
- Bousky
Re : Partagez vos alias et function (fichier .bashrc)
ps faux, c'est long :
alias pl='ps faux | less'
Ouverture de fichier :
function open {
while [ "$1" ] ; do
sh -c "cd `dirname $1`;xdg-open `basename $1` &> /dev/null"
shift
done
}
Pour profiter des modèles de documents de nautilus
new.sh :
#!/bin/bash
separateur='"'
repertoire=~/Modèles/
files=`find $repertoire -name "$1*" | while read file ; do if [ ! -d $file ] ; then echo -n $file $separateur; fi ; done`
if file=`echo ${files%$separateur} | grep -v $separateur` ; then
if [ "$file" ] ; then
echo $file
while [ "$2" ] ; do
cp "$file" "$2"
shift
done
else
echo "Aucun modèle trouvé"
exit 1
fi
else
echo "Plusieurs modèles trouvés :"
echo $files | sed "s/$separateur/\n/g"
exit 1
fi
$ new.sh bash script.sh
/home/nicolas/Modèles/script/bash.sh
$ cat script.sh
#!/bin/bash
$ ls -l script.sh
-rwxr-xr-x 1 nicolas nicolas 14 2011-01-24 15:04 script.sh
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#143 Le 02/12/2012, à 20:47
- mydjey
Re : Partagez vos alias et function (fichier .bashrc)
Plop, je fais revivre un peu ce topic !
Rien d'extraordinaire mais, voici quelques-uns de mes alias :
alias sagi='sudo apt-get install'
alias sagyi='sudo apt-get -y install'
alias ping='ping -c 4'
alias resolution='xrandr -q | grep "*" | cut -d " " -f 4'
alias search='apt-cache search'
alias policy='apt-cache policy'
Mon site : http://mydjey.eu/
Hors ligne
#144 Le 21/05/2013, à 02:57
- Vaykadji
Re : Partagez vos alias et function (fichier .bashrc)
#Télécharge le MP3 de la vidéo ou la playlist sélectionnée
#nécessite les paquets youtube-dl et ffmpeg
#max-quality=35 est pour du 480p. 22=720p et 37=1080p.
alias youtube='youtube-dl --extract-audio --audio-format mp3 --max-quality=35 --output="$HOME/Musique/Youtube/%(title)s.%(ext)s"'
####
alias reboot='sudo reboot'
alias update='sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade'
alias cd..='cd ..'
alias help='echo Utilisez - man.'
alias ram='echo Lisez la ligne -/+ buffers/cache : && free -h'
alias agu='sudo apt-get update'
alias ppa='sudo add-apt-repository'
alias agi='sudo apt-get install'
Hors ligne
#145 Le 21/05/2013, à 11:02
- mydjey
Re : Partagez vos alias et function (fichier .bashrc)
Puisque on parle d'alias un projet récent :
http://alias.sh/
Mon site : http://mydjey.eu/
Hors ligne
#146 Le 19/05/2018, à 21:46
- JujuLand
Re : Partagez vos alias et function (fichier .bashrc)
un petit rapide, pour ceux qui ont des netbook sans gnome et qui veulent faire l'éconmie de gksu:
alias gksu='su-to-root -X -c'
Malheureusement, avec 18.04, cet alias est de nouveau d'actualité ... on n'arrête pas le progrès.
Maintenant, il faut passer par un terminal qui reste ouvert pour lancer une appli graphique.
Quel est le con qui a fait çà ???
Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)
Hors ligne
#147 Le 02/06/2018, à 19:36
- lynn
Re : Partagez vos alias et function (fichier .bashrc)
J'ajoute une fonction que je trouve bien pratique pour savoir si un paquet est installé ou pas ou alors si il n'existe pas; Le tout en couleur.
isinstall(){
noinst=$(tput setaf 1) # red
inst=$(tput setaf 2) # green
noexist=$(tput setaf 7) # white
package=$(tput setaf 3) # yellow
for i in "$@";
do
case $(apt-cache policy "$i"|awk '/Installé/{print $2}') in
"(aucun)" ) echo "${package}$i ${noinst}n'est pas installé";;
[0-9]* ) echo "${package}$i ${inst}est installé";;
* ) echo "${noexist}Impossible de trouver le paquet ${package}$i";;
esac;
done
}
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne