Вместо того, чтобы продолжить комментировать …
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
– Никакое соответствие из-за недопустимых архивов или полномочий файла.
Это не должно влиять на результат. 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
с другой стороны, не имеет никакой записи, связанной с ним, таким образом, никакая окраска.
bash --norc
complete -f -X '!*.@(zip|udp)' unzip
shopt -s extglob
unzip
Результат?
Кроме того, нажмите редактирование ниже своего вопроса и добавьте вывод:
bind -V
shopt
env
могло бы быть полезным.
Объединение 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'
, используя либо из вышеуказанных команд, которые я получаю: команда, запущенная в новом окне терминала и после запуска команды запуска, новый открытый терминал замкнут без убийства команд.
Можно использовать команду nohup
- она отключает процесс от терминала, поэтому даже если закрыть окно gnome-терминала, он будет продолжать работать.
Пример: gnome-terminal -e "nohup bash gedit"
Вы можете использовать утилиту экрана пользователя. 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 ~]#