J'ai récemment commencé à utiliser Linux et je souhaite créer un script qui effectuera les opérations suivantes:
Comment puis-je écrire un script qui fera cela et que je pourrai appeler depuis n’importe quel terminal sans avoir à sortir de son chemin complet? C’est-à-dire que je veux simplement taper, par exemple, gen-work-plan et non pas/usr/home/document/gen-work-plan ...
Est-ce que quelqu'un sait comment je peux faire ça?
Impossible de résister à poster une réponse ...
Pour créer un fichier, avec la date actuelle comme titre et comme en-tête, il faudrait une ou deux lignes. Cependant, si vous voulez:
... il faudra quelques lignes de plus que cela.
Le script ci-dessous va:
ajoutez la date actuelle au fichier, comme:
Workplan 12-12-12
ouvrez le fichier avec gedit
, attendez que la fenêtre apparaisse (!), déplacez la fenêtre en haut à gauche, redimensionnez-la à 50% (largeur), 100% (hauteur)
#!/usr/bin/env python3
import time
import subprocess
import os
import time
# --- add the absolute path to the directory where you'd like to store the Workplans
filedir = "/home/jacob"
# ---
curr = "Workplan "+time.strftime("%d-%m-%Y"); out = curr+".txt"
file = os.path.join(filedir, out)
# check for the file to exist (you wouldn't overwrite it)
if not os.path.exists(file):
# write "Workplan" + date to the file
open(file, "wt").write(curr)
# open the file with gedit
subprocess.Popen(["gedit", file])
# wait for the window to appear, move/resize it
t = 0
while t < 20:
t += 1; time.sleep(1)
wlist = subprocess.check_output(["wmctrl", "-l"]).decode("utf-8")
if out in wlist:
w = [l.split()[0] for l in wlist.splitlines() if out in l][0]
for cmd in [["xdotool", "windowmove", w, "0", "0"],
["xdotool", "windowsize", w, "47%", "100%"]]:
subprocess.call(cmd)
break
Le script nécessite à la fois xdotool
et wmctrl
:
Sudo apt-get install xdotool wmctrl
workplan
(sans extension!) Dans ~/bin
. Créez ~/bin
s'il n'existe pas encore. Rendre le script exécutable.Dans la tête du script, définissez le chemin (absolu!) Sur lequel vous souhaitez stocker vos plans de travail:
# --- set the abs. path to where you'd like to store the "Workplans"
filedir = "/home/jacob/Bureaublad"
# ---
Déconnectez-vous et reconnectez-vous, exécutez la commande simplement en:
workplan
Pour créer un fichier en python, nous pouvons simplement utiliser:
open("file", "wt").write("sometext")
pour le moving et redimensionner, nous devons toutefois attendre que la fenêtre apparaisse en vérifiant si la fenêtre apparaît dans le résultat de la commande:
wmctrl -l
dans le script:
while t < 20:
t += 1; time.sleep(1)
wlist = subprocess.check_output(["wmctrl", "-l"]).decode("utf-8")
if out in wlist:
Puis, une fois que la fenêtre est apparue, nous avons scindé l'identifiant de la fenêtre (la première chaîne dans les lignes de la sortie de wmctrl -l
), avons déplacé la fenêtre en haut à gauche et redimensionnée:
w = [l.split()[0] for l in wlist.splitlines() if curr in l][0]
for cmd in [["xdotool", "windowmove", w, "0", "0"],
["xdotool", "windowsize", w, "47%", "100%"]]:
subprocess.call(cmd)
break
Quelque chose comme:
#!/bin/bash
today=$(date "+%Y-%m-%d")
echo "Work Plan $today" > work_plan_"$today"
gedit work_plan_"$today"
N'oubliez pas de le rendre exécutable avec chmod +x gen-work-plan
.
Pour l'exécuter sans chemin, ajoutez le répertoire contenant le script à votre $PATH
dans ~/.bashrc
(recommandé pour la sécurité):
export PATH=$PATH:_Location_of_the_file_
Ou faites un lien symbolique dans /usr/bin
:
ln -s _location_/gen-work-plan /usr/bin/gen-work-plan
Voici un script bash simple que je voudrais utiliser
#!/bin/bash
dat=$(date "+%Y-%m-%d")
touch work_plan_$dat
echo "Work Plan $dat" > work_plan_$dat
if [ -f work_plan_$dat ]; then
echo "Successfully created file work_plan_$dat"
fi
gedit work_plan_$dat
Pour exécuter ce script sans son chemin, son emplacement doit être inclus dans la variable d’environnement $PATH
. Vous pouvez le faire avec cette ligne
PATH=/an/example/path:"$PATH"
Vous voudrez peut-être ajouter cette ligne à votre fichier ~/.bashrc
OU
Vous pouvez créer un lien symbolique avec cette commande
Sudo ln -s /full/path/to/your/file /usr/local/bin/name_of_new_command
après cela, assurez-vous que le fichier est exécutable. Si nécessaire, exécutez la commande suivante.
chmod +x /full/path/to/your/file
crédits à c0rp pour cette réponse https://askubuntu.com/users/164083/c0rp
Source, voir le lien ci-dessous