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.

#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 hmm

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)

Totor a écrit :

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)

penkoad a écrit :

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/.profile

if [ "$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 yikes. Si quelqu'un sait comment faire, ça me changerait la vie! tongue

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 ! smile


"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! smilecool

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 ! tongue

[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)

KujakuChan a écrit :

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 smile


KujakuChan a écrit :

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 smile

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'

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/

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. smile

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

En ligne