Как сделать алфавитно-цифровую проверку для конкретного столбца (скажите что 2$) файла с помощью awk?

-H/-hold опция состоит в том, чтобы сохранить Окно эмулятора терминала открытым, после того как приложения, запущенные в нем (оболочка или другой), вышли. В том состоянии ничего больше не может произойти.

Если Вы хотите запустить команду как задание интерактивной оболочки в xfce4-терминальном эмуляторе терминала и поддерживать оболочку в рабочем состоянии и использовать его в интерактивном режиме после того, как приложение вышло, с bash, можно использовать $PROMPT_COMMAND переменная среды, чтобы иметь xfce-terminal запустите интерактивную оболочку, которая запускает данную команду непосредственно перед первой подсказкой.

xfce4-terminal \
  -T eclipse \
  --working-directory=/home/stefan/oximity \
  -e 'env PROMPT_COMMAND="unset PROMPT_COMMAND; /opt/eclipse/eclipse" bash' \
  \
  --tab -T arandr \
  --working-directory=/home/stefan/oximity \
  -e 'env PROMPT_COMMAND="unset PROMPT_COMMAND; arandr /home/stefan/.screenlayout/oximity.sh" bash' \
  \
  --tab -T bash \
  --working-directory=/home/stefan/oximity \
  ...

Тем путем команды являются заданиями той оболочки, что означает, что можно приостановить их с Ctrl-Z и возобновить их позже с fg/bg как будто Вы ввели их при подсказке той интерактивной оболочки.

Это принимает, хотя это Вы не устанавливаете $PROMPT_COMMAND в Вашем ~/.bashrc. Также обратите внимание, что статус выхода команды не будет доступен в $?.

Для создания это еще больше как команда вводилось в приглашение оболочки, можно даже добавить его к списку предыстории. Как:

xfce4-terminal -T /etc/motd -e 'env PROMPT_COMMAND="
  unset PROMPT_COMMAND
  history -s vi\ /etc/motd
  vi /etc/motd" bash'

Тот путь, после того как Вы выходите vi, можно нажать клавишу Up для вспоминания того же самого vi команда.

Более легкий способ записать это:

PROMPT_COMMAND='unset PROMPT_COMMAND; history -s "$CMD"; eval "$CMD"' \
  xfce4-terminal --disable-server \
          -T /etc/motd -e 'env CMD="vi /etc/motd" bash' \
    --tab -T       top -e 'env CMD=top bash'

:

xfce4-terminal -e 'sh -c "cmd; exec bash"'

решение, как дали в других работах ответов, но имеет некоторые недостатки:

  1. Если Вы нажимаете Ctrl-C в то время как cmd работает, который уничтожает внешнее sh с тех пор существует только одна группа процесса для обоих sh и cmd.
  2. Вы не можете использовать Ctrl-Z для приостановки cmd
  3. Как в $PROMPT_COMMAND подход, статус выхода команды не будет доступен в $?.

Можно работать приблизительно 1 выше путем выполнения:

xfce4-terminal -e 'sh -c "trap : INT; cmd; exec bash"'

Или:

xfce4-terminal -e 'sh -ic "cmd; exec bash"'

С тем последним Вы также сможете приостановить процесс с Ctrl-Z, но Вы не сможете использовать fg/bg на нем. Вы сможете продолжить его в фоне хотя путем выполнения a kill -s CONT на pid cmd.

5
08.04.2014, 16:29
2 ответа
[1128279]Что-то вроде этого должно работать:[12227]
6
27.01.2020, 20:35
[1128281]Вы можете сделать:[12228]Это также работает со мной: проверить от [1128769]0[1128770] до [1128771]z[1128772], будучи всеми числами и буквами в диапазоне. [12229]Идея состоит в том, чтобы проверить, основано ли данное поле ([1128773]$10[1128774] в вашем случае) только на наборе буквенно-цифровых символов. Это выполняется с помощью [1128775]^[1128776] и [1128777]$[1128778] для указания начала и конца поля.[1128286].
3
27.01.2020, 20:35

Теги

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