Выполните команду в другом терминале и закрытие его, не уничтожая команду

Вместо того, чтобы продолжить комментировать …


complete -f -X '!*.@(zip|udp)' unzip

должно добавить завершение для

-f -X '!*.@(zip|udp)'
 |  |  | |||________|
 |  |  | ||     |
 |  |  | ||     +- filterpat: zip or udp
 |  |  | |+-------------  @ : Matches one of the given patterns
 |  |  | +-------------- *. : Anything+
 |  |  +----------------  ! : Negate
 |  +------------------- -X : Filter out matches in "filterpat"
 +---------------------- -f : files

Другими словами: Полные файлы и удаляют все не заканчивающиеся в .zip или .udp.


Отдельно оплачиваемые предметы

Если Вы добавляете -o default завершение будет завершать/соответствовать все файлы и каталоги, если не будет никаких файлов, заканчивающихся в .zip или .udp.

Если Вы добавляете -o plusdirs завершение добавит любые каталоги в дополнение к любым соответствиям файлов, заканчивающихся в .zip или .udp.

Текущий

Когда Вы используете complete -p unzip Вы получаете текущий шаблон.

Из Ваших комментариев это главным образом кажется, что Вы отсутствуете также + или @ в шаблоне, как в:

# Err:
complete -f -X '!*.(zip|udp)' unzip
                   |
                   +---- Missing + or @

который означал бы, соответствуют любому файлу, буквально заканчивающемуся в .(zip|udp). Например.

touch 'file_test.(zip|udp)'

Также взгляните на этот раздел руководства:

это возможно, например. extglob не включен. Включите:

shopt -s extglob

Проверьте текущий статус всех shopt настройки путем ввода:

shopt

Функция

Если это -F something это означает, что это использует функцию, названную чем-то для генерации списка завершений.

_filedir_xspec обычно функция Debian. У Вас могло бы быть что-то вроде этого:

$ cat /etc/bash_completion
. /usr/share/bash-completion/bash_completion

Что означает /usr/share/bash-completion/bash_completion быть полученным. Здесь Вы найдете рассматриваемую функцию. Несколько строк далее вниз, Вы видите, что эта функция / завершение добавляется названной функцией _install_xspec например:

_install_xspec '!*.@(zip|[ejsw]ar|exe|pk3|wsz|zargo|xpi|s[tx][cdiw]|sx[gm]|o[dt][tspgfc]|od[bm]|oxt|epub|apk|do[ct][xm]|p[op]t[mx]|xl[st][xm])' unzip zipinfo

Ручные записи:


Обновление комментариев 1:

– Никакое соответствие из-за недопустимых архивов или полномочий файла.

Это не должно влиять на результат. complete только файлы соответствий, данные правилами и, не делают никакой обработки файлов. Если можно перечислить их с ls, они должны соответствовать.

Как примечание стороны можно было добавить такую функциональность при помощи полной функции:

function _unzip_validated() {
    # 1. Generate list of files ending in e.g. .zip and .udp
    # 2. Validate each file and remove invalid ones from file list.
}

complete -F _unzip_validated unzip

– Цвета. Почему делает ls различать test.zip от test.upd?

Это не влияет complete. Цвета ls обеспечивают $LS_COLORS. Попытка:

echo "$LS_COLORS" | tr : '\n' | sort

Необходимо видеть что-то как *.zip=01;31 что означает:

*.zip=01;31
|____| |  |
   |   |  +--- Red
   |   +------ Bold
   +---------- Files with .zip extension

*.udp с другой стороны, не имеет никакой записи, связанной с ним, таким образом, никакая окраска.


Следующий шаг (должно было быть первым),

  1. Откройте терминал и перейдите к каталогу с тестовыми файлами. И .zip и .udp
  2. Войти bash --norc
  3. Войти complete -f -X '!*.@(zip|udp)' unzip
  4. Войти shopt -s extglob
  5. Войти unzip

Результат?

Кроме того, нажмите редактирование ниже своего вопроса и добавьте вывод:

bind -V
shopt
env

могло бы быть полезным.

2
11.01.2015, 11:07
3 ответа

Объединение NOHUP & Экран , AL Последнее я достиг того, что я хочу.

By Kirill-A , команда: Renome-Terminal --e «Nohup Bash Gedit» .

Однако, используя вышеуказанную команду, я могу запустить команду и может закрыть новую открытую Gnome-Terminal без убийства под управлением команды , но Я, чтобы вручную закрыть новый открытый Гном-терминал окно. И я хочу, чтобы он был закрыт автоматически после запуска команды.

Экран Dimitar Dimitrov предлагается команда .

AT-LAST I использовал экран с NOHUP и My окончательная команда становится:

  • GNOME-Terminal-E 'Screen NOHUP GEDIT'

  • GNOME- Terminal -x Bash -c 'Screen NOHUP GEDIT'

, используя либо из вышеуказанных команд, которые я получаю: команда, запущенная в новом окне терминала и после запуска команды запуска, новый открытый терминал замкнут без убийства команд.

0
27.01.2020, 22:00

Можно использовать команду nohup - она отключает процесс от терминала, поэтому даже если закрыть окно gnome-терминала, он будет продолжать работать.

Пример: gnome-terminal -e "nohup bash gedit"

3
27.01.2020, 22:00

Вы можете использовать утилиту экрана пользователя. Screen представляет собой полноэкранный оконный менеджер, который мультиплексирует физический терминал между несколькими процессами (обычно интерактивные оболочки - для более подробной информации выполните man screen.

После выполнения экранной команды в оболочке будет создано новое окно с оболочкой. Вы можете выполнить любую команду/скрипт/демон. Вы можете легко отсоединиться от окна, используя сочетание клавиш: Ctrl+A+D.

Для того, чтобы перечислить все начатые сеансы, можно использовать экранный список . Вы можете прикрепить к последнему отсоединенному сеансу, используя screen -r, или если вы хотите прикрепить к конкретному сеансу, используйте screen -r .

Example:

[root@dns-ldap ~]# screen -list
There are screens on:
        5708.pts-0.dns-ldap     (Detached)
        5648.pts-0.dns-ldap     (Detached)
        5725.pts-0.dns-ldap     (Detached)
3 Sockets in /var/run/screen/S-root.

[root@dns-ldap ~]# screen -r 5708.pts-0.dns-ldap #this will attach you to terminal 5708.pts-0.dns-lda. I have detached from the terminal usinc Ctrl+A+D
[detached]
[root@dns-ldap ~]# screen -r 5648.pts-0.dns-ldap
[detached]
[root@dns-ldap ~]#
1
27.01.2020, 22:00

Теги

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