Искать в истории bash уже набранную команду

Вот сценарий оболочки pgrep, который позволяет использовать pgrep и получать всех потомков одновременно.

~ / bin / pgrep_wrapper :

#!/bin/bash

# the delimiter argument must be the first arg, otherwise it is ignored
delim=$'\n'
if [ "$1" == "-d" ]; then
    delim=$2
    shift 2
fi

pids=
newpids=$(pgrep "$@")
status=$?
if [ $status -ne 0 ]; then
    exit $status
fi

while [ "$pids" != "$newpids" ]; do
    pids=$newpids
    newpids=$( { echo "$pids"; pgrep -P "$(echo -n "$pids" | tr -cs '[:digit:]' ',')"; } | sort -u )
done
if [ "$delim" != $'\n' ]; then
    first=1
    for pid in $pids; do
        if [ $first -ne 1 ]; then
            echo -n "$delim"
        else
            first=0
        fi  
        echo -n "$pid"
    done
else
    echo "$pids"
fi

Вызвать так же, как и обычный pgrep, например pgrep_recursive -U $ USER java , чтобы найти все процессы и подпроцессы Java из текущий пользователь.

5
05.03.2016, 03:20
1 ответ

Ответ находится в одном из "Related" вопросов, автоматически перечисленных stackexchange в правой колонке. Для эксперимента введите

bind '"\e[A": history-search-backward'

затем введите свою частичную команду и используйте клавишу со стрелкой вверх (которая должна генерировать escape [ A]) для поиска этого частичного ввода в вашей истории. Подробнее см. в полном ответе.

6
27.01.2020, 20:34

Теги

Похожие вопросы