alias last-download='ls -d /home/robert/downloads/* --sort=time | head -n 1'
alias move-last-download='mv --verbose "$(last-download)" .'
alias last-screenshot='ls -d /home/robert/pictures/screenshots/* --sort=time | head -n 1'
alias copy-last-screenshot='cp --verbose "$(last-screenshot)" .'
Pour en voir plus, allez voir mon bash_aliases dans mon repo nonpython !
test
#bash #organization
~$ cd test
~/today$ . today
Thursday-01-Mar-2018
~/today/Thursday-01-Mar-2018$
Remarquez que . today
peut aussi être écrit source today
ou . today
ou . ./today
.
Ensuite, voici le contenu du fichier today
:
#!/bin/bash
d=$(LC_ALL=en date +%a-%d-%b-%Y)
echo "$d"
if [ -d "$d" ]; then
echo "Existing dir"
else
mkdir -p "$d"
fi
cd "$d"
Le LC_ALL=en
est pour forcer que le jour soit en anglais, mais vous pouvez mettre fr aussi.
Le -p
donné à mkdir
fait que la commande ne se plaindra pas si le dossier existe déjà.
En gérant le cas du dossier existant par un warning explicite, plus besoin du -p
:
#!/bin/bash
d=$(LC_ALL=en date +%a-%d-%b-%Y)
echo "$d"
if [ -d "$d" ]; then
echo "Existing dir"
else
mkdir "$d"
fi
cd "$d"
Finalement, il est très pratique que ce dossier soit accessible via ~/test/todaydir/
, typiquement dans les applications graphiques :
#!/bin/bash
# d=$(LC_ALL=en date +%a-%b-%d-%Y_%Hh%Mm%Ss)
d=$(LC_ALL=en date +%a-%d-%b-%Y)
echo "$d"
if [ -d "$d" ]; then
echo "Existing dir"
else
mkdir "$d"
rm -f ~/test/todaydir
ln -s "$d" ~/test/todaydir
fi
cd "$d"
Ce fichier est disponible sur mon github dans le repo nonpython.
Quand tu as une variable en bash et que tu veux la transformer en un tout petit code python.
VAR=Hello
VAR=$(python3 -c ' # in bash, it is easy to go next line
import sys # sys.argv[0] est le nom du programme, ensuite on a les paramètres donnés
var = sys.argv[1] # en python, les noms de variables sont en minuscules
print(var.lower()) # code python arbitraire qui print le résultat
' "$VAR") # on donne un seul paramètre, attention aux guillemets !
On peut envoyer plusieurs paramètres et les récupérer via sys.argv[1:]
VAR=Hello
PARAM=World
VAR=$(python3 -c '
import sys
var, param = sys.argv[1:] # using list slicing argv[1:] syntax
print(var + " " + param) # must use double quotes for strings
' "$VAR" "$PARAM")
Plus tard, si le traitement devient intéressant, on peut créer un fichier python dans le path et l'appeler simplement comme ceci :
VAR=$(python3 -m funny_transformation "$VAR" "$PARAM")
Ou s'il est dans le path bash et qu'il commence par un #!
comme #!/usr/bin/env/python3
:
VAR=$(funny_transformation.py "$VAR" "$PARAM")
>>> set([1, 2, 4, 1, 0, 2, 1, 0])
{0, 1, 2, 4}
>>> from collections import Counter
>>> Counter([1, 2, 4, 1, 0, 2, 1, 0])
{0:2, 1:3, 2:2, 4:1}
More in the offical doc.