Que signifie% 1 dans «tuer% 1»?

12

Je sais que $!stocke le pid du dernier processus (en arrière-plan), mais qu'est-ce que cela %1signifie? Je le vois souvent avec killet ça a le même effet que kill $!. Quelqu'un peut-il me donner un indice? (Ces petits termes sont si difficiles à google: - /)

Zardoz
la source
Pas vraiment ... google.com/search?q=percent+1+bash (voir troisième résultat)
Hello71

Réponses:

10

Le %désignateur fait référence aux travaux dans la liste des travaux du shell actuel et renvoie le PID. Essayez help jobs.

Ignacio Vazquez-Abrams
la source
1
Ce qui m'a dérouté, c'est que man killla page de manuel d'un exécutable kill externe ne dit rien %. Mais bash a également une fonction intégrée killqui, en tant que fonction intégrée, a priorité sur l'externe kill, et help killnous dit que nous pouvons utiliser les spécifications de travail avec la fonction intégrée kill, et que le fait de pouvoir utiliser les spécifications de travail est l'une des raisons pour lesquelles il s'agit d'un intégré.
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
8

Ce que vous voulez pour Google man bash

Il existe plusieurs façons de faire référence à un travail dans le shell. Le caractère% introduit un nom de travail. Le numéro de tâche n peut être appelé% n. Un travail peut également être référencé en utilisant un préfixe du nom utilisé pour le démarrer, ou en utilisant une sous-chaîne qui apparaît dans sa ligne de commande. Par exemple,% ce fait référence à un travail de CE arrêté. Si un préfixe correspond à plusieurs travaux, bash signale une erreur. L'utilisation de%? Ce, d'autre part, fait référence à tout travail contenant la chaîne ce dans sa ligne de commande. Si la sous-chaîne correspond à plusieurs travaux, bash signale une erreur. Les symboles %% et% + font référence à la notion du shell du travail en cours, qui est le dernier travail arrêté alors qu'il était au premier plan ou démarré en arrière-plan. Le travail précédent peut être référencé à l'aide de% -. Lorsqu'il n'y a que le travail en cours,% - fait référence à la notion du shell du travail en cours. Dans la sortie relative aux tâches (par exemple, la sortie de la commande de tâches), la tâche actuelle est toujours signalée par un + et la tâche précédente par un -. Un seul% (sans spécification de travail associée) fait également référence au travail en cours.

Le simple fait de nommer un travail peut être utilisé pour le mettre au premier plan:% 1 est un synonyme de '' fg% 1 '', mettant le travail 1 de l'arrière-plan au premier plan. De même, ''% 1 & '' reprend le travail 1 en arrière-plan, équivalent à '' bg% 1 ''.

TL; DR: %1 est le numéro de tâche 1.

Orbling
la source
5
Je pensais que la qualité était le travail numéro 1 ...
Ignacio Vazquez-Abrams
1
@Ignacio Vazquez-Abrams: Oui, cela et les exigences de la nature.