find
подход:
find. -maxdepth 1 -type f -regextype posix-egrep \
-regex ".*/201703(0[7-9]|1[0-4]):[0-5][0-9]\.out\.gz$" -exec gunzip {} \;
Если у вас оболочка bash[1], вы можете попробовать:
exec 3>&2 2>firefoxFile; firefox & exec 2>&3-
Это ваша оболочка (например. bash ), который печатает уведомление о фоновом задании [jobnum] pid
в stderr , а не в firefox. Этот кладж временно перенаправляет stderr в файл firefoxFile
, записывая в него это уведомление и все, что Firefox запишет в stderr за время своего существования.
Он НЕ будет захватывать [jobnum] Done firefox
bash, который будет печатать после завершения фонового задания.
Ваш firefox & > file
будет проанализирован как две команды 1. firefox &
(, которая будет запускать firefox
в фоновом режиме )и 2. > file
(, которая будет усекать file
без записи что-нибудь к этому ). Это, безусловно, не то, что вы имели в виду.
[1] вы можете прочитать здесь почему этот трюк не работает в других оболочках; в то время как можно перенаправить stderr в zsh
, zsh
не записывает свои подсказки и уведомления о заданиях в stderr, а в другой fd, указывающий на текущий терминал, открытый специально для этой цели.
Это не точно, но близко. Вам просто нужно добавить немного sed
.
firefox &
jobs -l | grep -E "\[[0-9]+\]\+" > firefoxFile
В своих комментариях вы пишете, что
I want to find the pid and the number of process in background
Как насчет этого
firefox &
pid=$!
echo "The PID for the background process is $pid" >&2
Получив PID, вы, конечно же, можете записать его значение в любой файл по вашему выбору.