J'ai écrit un script. Lorsqu'il démarre, il ne s'arrête pas et il continue de recevoir des données d'Internet. Je peux l'appeler ainsi:
cd /User/Desktop/project/internetScanner/
python3 main.py start
Mais je voudrais l'appeler directement depuis le terminal comme celui-ci, dans la destination:
internetScanner start
Comment faire?
linux
bash
python
shell-script
Ted Wong
la source
la source
Réponses:
Vous devriez probablement renommer votre fichier
main.py
eninternetScanner
. Les extensions sur * nix sont purement optionnelles. Cela ne devrait pas avoir d'importance ici.Ensuite, ajoutez la ligne suivante à ce fichier, dès le début:
Cela garantira que lorsque le shell exécute le fichier, il saura utiliser
python3
pour interpréter le contenu. Ceci est connu comme le Shebang . Maintenant, rendez le fichier exécutable:Vous pouvez maintenant exécuter votre programme à partir de
/User/Desktop/project/internetScanner/
:Votre programme s'exécutera au premier plan et continuera de s'exécuter jusqu'à ce que vous appuyiez sur Ctrl- C. Si vous ne le souhaitez pas, vous pouvez également démarrer le programme en arrière-plan, en ajoutant une esperluette après la commande:
Cela laissera votre programme s'exécuter, mais vous pourrez continuer à utiliser votre shell. C'est ce qu'on appelle le contrôle des travaux, et il y a un tutoriel simple à ce sujet ici .
Si vous voulez maintenant pouvoir exécuter le programme depuis n'importe où sur le système, vous devez ajouter le
internetScanner
répertoire à votrePATH
: Que sont les variables PATH et autres variables d'environnement, et comment puis-je les définir ou les utiliser?la source
X &
ne détache pas le processus du shell de contrôle, il ne fait que créer un arrière-plan du processus, ce qui signifie que si ce shell se ferme, le signal TERM lui sera envoyé; donc si vous ne voulez pas que vous devez utiliser Détacher ,detach ./internetScanner start
.nohup
,disown
ouat
, et cetera. Comment détacher un processus de Terminal, entièrement?main.py
tant qu'il est lié àinternetScanner
quelque part dans $ PATH.En supposant qu'aucun autre fichier
/User/Desktop/project/internetScanner/
ne soit nécessaire, si vous souhaitez installer pour un seul utilisateur, liez (ln -s
)main.py
à$HOME/bin/internetScanner
. Vous devrez probablement mkdir en$HOME/bin
premier.La prochaine fois que vous vous connecterez, il
$HOME/bin
sera probablement ajouté à votre CHEMIN. Si vous souhaitez qu'il soit disponible pour tous les utilisateurs, copiez-le dans/usr/local/bin
.S'il doit s'exécuter
/User/Desktop/project/internetScanner/
, commencez par importeros
et appelerou créez un script de lancement dans
$HOME/bin
ou/usr/local/bin
qui change/User/Desktop/project/internetScanner/
et exécute le script.la source
Mettez le
alias internetScanner "python /User/Desktop/project/internetScanner/main.py"
fichier .aliases (pour csh). Pour bash,alias internetScanner="python /User/Desktop/project/internetScanner/main.py"
entrez .bashrc. Après cela, vous pouvez utiliser internetScanner start de n'importe où.la source
.aliases
dossier. Est-ce quelque chose de standard pour Bash? ou devez-vous le trouver explicitement dans votre.bashrc
?