Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

nombre réponses : 25

#0 Re : -1 »  [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...) » Le 22/01/2013, à 17:02

Bousky
Réponses : 1740

Je copie les fichiers plutôt que de les déplacer, par sécurité (et je n'ai pas testé).


Pour que les fichiers gardent leurs noms actuels :

for fichier in dossier/contenant/les/fichiers/* ; do cp "$fichier" "dossier/contenant/les/dossiers/$(basename "$fichier")/" ; done

Pour renommer les fichiers avec tous le même nom (nom.ext) :

for fichier in dossier/contenant/les/fichiers/* ; do cp "$fichier" "dossier/contenant/les/dossiers/$(basename "$fichier")/nom.ext" ; done

#1 Re : -1 »  [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...) » Le 31/01/2013, à 16:30

Bousky
Réponses : 1740
gusano a écrit :

je veux copier le fichier aaa_bbb_ccc.mp4 dans le répertoire aaa/bbb/ccc
                   et le fichier ddd_eee_fff.mp4 dans le répertoire ddd/eee/fff

Supposons que le nom du fichier est dans la variable fichier (par exemple à mettre dans un « for fichier in ... ») :

dossier=${fichier%.*}       # supprime l'extension
dossier=${dossier//_//}     # remplace les _ par des /
mkdir -p "$dossier"         # crée le dossier si besoin
cp "dossier/source/$fichier" "$dossier"

je voudrait faire un traitement sur les fichiers dont l'extension est renseignée dans mon fichier texte.

Supposons que tu ai bien une seule extension par ligne (en pas d'espaces avant ou après, ni de lignes vides) :

while read ext ; do
        for fichier in *."$ext" ; do
                # faire un truc sur $fichier
        done
done < ficher/contenant/les/extensions

#2 Re : -1 »  [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...) » Le 24/03/2013, à 10:26

Bousky
Réponses : 1740

Elle est très loin d'être complète…


Pour ceux que ça peut inspirer, voici mon prompt (bash) :

#!/bin/bash

function bsk_prompt {
	case "$1" in
		1|2|3) ;;
		*) return 1 ;;
	esac

	# définition des couleurs
	local usr_root="\[\e[1;31m\]"  # utilisateur root (uid = 0)
	local usr_sys="\[\e[1;32m\]"   # utilisateurs système (uid < 1000)
	local usr_std="\[\e[1;33m\]"   # utilisateurs standards (uid >= 1000)
	local host="\[\e[1;35m\]"      # hostname
	local pwd="\[\e[1;36m\]"       # répertoire
	local pwd_clear="\[\e[1;34m\]" # répertoire (meilleure visibilité sur fond clair)
	local git="\[\e[1;31m\]"       # branche git
	local git_info="\[\e[31m\]"    # état du dépôt git
	local prompt="\[\e[31m\]"      # PS2 et fin de PS1 multi-ligne
	local null="\[\e[0m\]"         # réinitialisation des attributs graphiques
	local return="\E[1;31m⏎\e[0m"  # retour à la ligne avant le prompt

	# messages git
	local git_ahead="push"
	local git_behind="pull"
	local git_commit="commit"
	local git_untracked="untracked"
	
	local bw
	case "$2" in
		clear) pwd="$pwd_clear" ;;
		bw) bw="1" ;;
		"") ;;
		*) return 1 ;;
	esac
	
	[ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null || bw=1
	if [ "$bw" ] ; then
		usr_root=
		usr_sys=
		usr_std=
		host=
		pwd=
		git=
		git_info=
		prompt=
		null=
		return="⏎"
	fi

	local git_cmd='$(
		if git status &>/dev/null ; then
			echo -n ">'$git'"$(git branch | sed '\''/^\*/!d;s/^* //'\'')"'$null'"
			[ "$(git status -s | grep ^??)" ] && echo -n "-'$git_info$git_untracked$null'"
			[ "$(git status -s | grep -v ^??)" ] && echo -n "-'$git_info$git_commit$null'"
			git status | grep "^# Your branch is behind" &>/dev/null && echo -n "-'$git_info$git_behind$null'"
			git status | grep "^# Your branch is ahead" &>/dev/null && echo -n "-'$git_info$git_ahead$null'"
		fi
	)'

	# retour à la ligne si la dernière commande ne l'a pas fait
	PROMPT_COMMAND='echo -en "\E[6n";read -sdR PRMPTCURPOS;[ ${PRMPTCURPOS#*;} -eq 1 ]||echo -e "'$return'";unset PRMPTCURPOS'
	# rectangle de couleur en fonction de la valeur d'erreur de la dernière commande
	if [ "$bw" ] ; then
		PS1=
	else
		PS1='\[\e[0;$(
			case $? in
				0  |130|147|148) echo "42" ;;
				137|143        ) echo "44" ;;
				*              )
					if [ $? -ge 126 ] ; then
				                 echo "41"
					else
				                 echo "43"
					fi
			esac
		)m\] \[\e[0m\] '
	fi
	# ligne du dossier pour un prompt à trois lignes
	case "$1" in
		1|2) ;;
		3) PS1="${PS1}${pwd}\w${null}${git_cmd}:\n${prompt}|${null} " ;;
	esac
	# choix de la couleur de l'utilisateur
	if [ `id -u` -eq 0 ] ; then
		PS1="${PS1}${usr_root}"
	elif [ `id -u` -ge 1000 ] ; then
		PS1="${PS1}${usr_sys}"
	else
		PS1="${PS1}${usr_std}"
	fi
	# user@host
	PS1="${PS1}\u${null}@${host}\h${null}"
	# dossier pour un prompt à une ou deux lignes
	case "$1" in
		1|2) PS1="${PS1}:${pwd}\w${null}${git_cmd}\$" ;;
		3)   PS1="${PS1}\$";;
	esac
	case "$1" in
		1)   PS1="${PS1} " ;;
		2|3) PS1="${PS1}\n${prompt}|${null} " ;;
	esac

	# PS2
	case "$1" in
		1)   PS2="${prompt}>${null} " ;;
		2|3) PS2="${prompt}|${null} " ;;
	esac
	
	# If this is an xterm set the title to user@host:dir
	case "$TERM" in
	xterm*|rxvt*)
			PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;;
	*)
	esac
}

À appeler sous cette forme :

source <fichier>
bsk_prompt <nb_de_lignes> [<couleurs>]

<nb_de_lignes> = 1, 2 ou 3
<couleurs> = rien, "clear" (les couleurs sont plus visibles sur fond clair) ou "bw" (noir et blanc).
« bsk_prompt 1 bw » donne le prompt classique.

  • Retour à la ligne même si la commande précédente n'en a pas mis un à la fin

  • Rectangle de couleur en ponction de la valeur de retour de la commande précédente :

    • vert : tout c'est bien passé

    • bleu : processus tué (kill, killall, …)

    • orange : le processus c'est terminé avec une erreur (grep n'a rien trouvé, …)

    • rouge : erreur système (erreur de segmentation, commande non trouvée,…)

  • username en couleur :

    • vert : utilisateur normal

    • rouge : root

    • orange : autre utilisateur système

  • Quand on est dans un dépôt git, affichage de la branche et de l'état (commit, push ou pull à faire, fichier non suivi)

#3 Re : -1 »  Ubuntu-fr: signaler des erreurs et aider à améliorer le site » Le 20/03/2013, à 17:44

Bousky
Réponses : 1404
sucarno a écrit :

J'ai vu que Na Kraion a pu modifier le titre d'un topic pour ne plus le voir dans ces "mes messages".
J'aimerai bien que ça soit généralisé pour tous le monde.

Tu parles du topic « Sexisme et société » ?
Il a fermé le topic (privilège de modo, celui-ci était de toute façon assez long) et en a créé un nouveau dans lequel il n'a pas posté.

#4 Re : -1 »  helly est mort ! :o » Le 20/01/2013, à 16:35

Bousky
Réponses : 1807

C'est quand-même mieux en chaussettes.

#5 Re : -1 »  [Résolu] Comment modifier un fichier en bash par un script ".sh"? » Le 23/04/2013, à 09:02

Bousky
Réponses : 29

Une manière de modifier sudoers en vérifiant la syntaxe :

./modif_sudoers.sh /etc/sudoers /etc/sudoers.tmp
if visudo -csf /etc/sudoers.tmp ; then
        mv -f /etc/sudoers.tmp /etc/sudoers
fi

Mais pour les tests, mieux vaut faire ça sur un fichier à part…

#7 Re : -1 »  DuckDuckGo » Le 15/03/2013, à 17:37

Bousky
Réponses : 63
billou a écrit :

Juste une question, déjà que sur google, depuis que la recherche sur le web en Français est désactivée par défaut, ça me gonfle à mort, y'a pas moyen de configurer ça sur DDG ?

Il est aussi possible d'ajouter « r:fr » (ou un autre code de pays) à une requête.

#8 Re : -1 »  DuckDuckGo » Le 11/05/2013, à 09:16

Bousky
Réponses : 63
faucon50 a écrit :

@ buzz1824: Dans ddg y'a qu'a mettre g! devant les mots clef et il passe à google en https.

« !gfr » pour google en français.

#9 Re : -1 »  Macro » Le 10/05/2013, à 20:38

Bousky
Réponses : 9
Vysserk3 a écrit :

Regarde du côté de xdotool wink

Avec wmctrl pour gérer les fenêtres.

Par contre pour « enregistrer » les macro il faut faire des scripts à la mimine.

#10 Re : -1 »  Macro » Le 13/05/2013, à 22:06

Bousky
Réponses : 9

C'est un script shell, donc tu peux le lancer en ligne de commande sous la forme « ./script.sh » ou « chemin/script.sh » ou créer un lanceur sur le bureau ou dans le dock qui lance la commande « /chemin/absolu/script.sh ».

#11 Re : -1 »  Variable $ps1 » Le 10/05/2013, à 20:35

Bousky
Réponses : 6
SpleenX a écrit :

Le seul soucis que tu va avoir uboops c'est quand tu va faire une auto-complétion dans le terminal.
Puisque dès le début d'une commande ça va supprimer "\h" et mettre que "@pc0". Je ne pourrai pas te l'expliquer (si qqun sait pourquoi...)
J'ai repris ton idée pour faire

    PROMPT_COLOR=`RET=$(whoami); if [[ $RET = "compte_utilisateur_a_renseigner" ]]; then echo -ne "\033[0;32m$RET\033[0m"; else echo -ne "\033[0;31m$RET\033[0m"; fi; echo -n ""`
    PS1='${debian_chroot:+($debian_chroot)}'$PROMPT_COLOR'@\h:\w\$ '

En fait "PROMPT_COMMAND" n'est exécuté que quand une commande se termine et revient au prompt. Il est possible de mettre des commandes directement dans le prompt avec « $(...) » :

PS1='${debian_chroot:+($debian_chroot)}\[\e[0;3$(if [ `id -u` -eq 0 ] ; then echo 1 ; else echo 3 ; fi)m\]\h\[\e[0m\]@\h:\w\$ '

#12 Re : -1 »  Install : ext3 ou ext4 ? » Le 22/04/2013, à 12:49

Bousky
Réponses : 4
BrunoL a écrit :

il n'existe pas d'outils pour faire un resize de partition ext4.

Gparted sait très bien le faire depuis plusieurs années.

#13 Re : -1 »  [Résolu] Comment modifier les couleurs du prompt via un fichier .sh ? » Le 23/04/2013, à 09:13

Bousky
Réponses : 3

Petite remarque : tu mets bien « \[ » avant les séquences d'échappement dans le prompt, mais il faut aussi mettre « \] » après :

export PS1="\[\033[01;31m\]\u@\h:\w\$ "
                         ^^

PS1 ne sert qu'à l'invite de commande, ne la modifie pas pour autre chose. Si tu veux colorier ce que renvoie un script, utilise echo comme ça pour bash :

echo -e "\E[31mTexte en rouge\E[0m"

et comme ça pour sh :

echo "\033[31mTexte en rouge\033[0m"

#14 Re : -1 »  [Résolu] Flash rame. » Le 23/04/2013, à 09:21

Bousky
Réponses : 6

Tu utilise le flash de Adobe ? Tu peux le mettre à jour en (ré)installant le paquet « flashplugin-installer ».
Sinon tu peux passer par chrome.

#15 Re : -1 »  Recherche d'une imprimante scanner compatible J'EN PEUX PLUS !!! » Le 05/04/2013, à 11:54

Bousky
Réponses : 9

Je ne connais pas les Lexmark, mais si tu veux changer d'imprimante, tu peux regarder du côté de HP.

#16 Re : -1 »  [R-É-S-O-L-U] Shell GNU/Linux ( Unix ?) par coeur. » Le 31/01/2013, à 19:28

Bousky
Réponses : 27

Sur un clavier AZERTY, c'est AltGr + 6 (le dessin a souvent un vide au milieu).

#17 Re : -1 »  [Résolu] Modifier un logiciel contenu dans User / Share » Le 17/01/2013, à 10:38

Bousky
Réponses : 3
  1. C'est « /usr/share ».

  2. Les utilisateurs n'ont pas le droit de modifier les fichiers systèmes (heureusement). Pour pouvoir le faire, il faut « demander la permission » au système, c'est alors un utilisateur nommé « root » qui est utilisé. Il faut pour ça utiliser la commande sudo (gksudo pour les programmes ayant une interface graphique).
    Il y a deux possibilités :

    • En ligne de commande :

      sudo cp chemin/vers/le/premier/fichier chemin/vers/le/deuxième/fichier ... /usr/share/dossier/exact
    • Avec l'explorateur de fichier : Il faut lancer nautilus en root (gksudo nautilus) puis copier les fichiers

    Dans les deux cas, fais attention à ce que tu fais : tu peux tuer ton système si tu fais une mauvaise manip. À mon avis on fais moins attention quand on passe par l'interface graphique, mais c'est comme tu le sens.

#18 Re : -1 »  Interface SCP pour terminal » Le 11/01/2013, à 11:34

Bousky
Réponses : 17

Je ne suis pas sûr d'avoir compris : tu n'as pas d'interface graphique mais tu ne veux pas utiliser la ligne de commande ? Comment se sert-on de la machine ? hmm

Tu peux peut-être regarder du côté de sshfs.

#19 Re : -1 »  débutant .bashrc » Le 11/01/2013, à 11:45

Bousky
Réponses : 7

Déjà, il faut savoir où se trouve la bibliothèque. Donne-nous le résultat de :

locate libdrmaa.so

Si la commande ne trouve rien, exécute « sudo updatedb » avant.

#20 Re : -1 »  débutant .bashrc » Le 11/01/2013, à 14:02

Bousky
Réponses : 7

Juste une question : tu as essayé de lancer le logiciel sans t'occuper d'ajouter ce chemin ? Là où elle est, le programme devrait trouver la bibliothèque tout seul…

#21 Re : -1 »  LA SOURIE QUI DORT. Quel combinaisons de touche remplace la sourie ? » Le 30/12/2012, à 22:40

Bousky
Réponses : 4

Tu as essayé de débrancher et rebrancher la souris (ou le récepteur si elle est sans fil) ? Ça peut forcer la détection.

#22 Re : -1 »  [RESOLU]Personaliser son terminal avec un logo en art ascii » Le 26/12/2012, à 18:07

Bousky
Réponses : 10

Tu veux mettre quoi exactement ? Du texte, un dessin, les deux ? Il y a deux outils pratiques pour faire ce genre de choses : cowsay et figlet (il me semble que les deux paquets sont dans les dépôts).
figlet fait la même chose que le lien que tu as indiqué (il l'utilise sans aucun doute), et cowsay fait ce genre de trucs :

$ cowsay -f tux 'Coucou !'
 __________
< Coucou ! >
 ----------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

Un conseil, évite de dépasser les 80×20 caractères : la taille standard d'un terminal est de 80×24, ça permet de tout voir tout en ayant quelques lignes pour la ligne de commande.

Pour ce qui est des fichiers :
- Si tu veux que ce soit affiché quand tu te connecte via ssh ou les consoles virtuelles avant l'authentification, mets-le dans « /etc/motd.tail ».
- Si tu veux que ce soit affiché quand tu ouvres une session bash, affiche-le à la fin de « ~/.bashrc » (« cat ~/.motd » par exemple).
- Mettre ça dans « /etc/issue » n'est pas très propre. Ce fichier est parfois utilisé pour déterminer la version ou la distro.

Pour ce qui est des dessins en ascii-art, Google est ton ami, que ce soit pour en trouver déjà fait ou pour apprendre à faire de l'ascii-art. Si tu veux de la couleur, c'est plus compliqué, il faut utiliser des séquences d'échappement.

#23 Re : -1 »  [RESOLU]Personaliser son terminal avec un logo en art ascii » Le 26/12/2012, à 21:13

Bousky
Réponses : 10

Bien entendu, à condition d'avoir le fichier texte (ou de le retaper). Si j'étais toi, je le mettrais dans un fichier nommé « ~/.motd » et j'ajouterais ça à la fin de « .bashrc » (ça affiche le fichier si il existe) :

[ -f ~/.motd ] && cat ~/.motd

#24 Re : -1 »  Question de cryptographie » Le 24/12/2012, à 19:41

Bousky
Réponses : 6

À mon avis ça dépend de l'algorithme utilisé.