Метасимволы оболочки Korn: Что означает (некоторый текст)?

unix ksh

110 просмотра

2 ответа

1 Репутация автора

Попытка выяснить, как ksh обрабатывает конструкцию! (Текст). Например,

$ echo! (привет)

создает список файлов в текущем каталоге (аналогично выводу команды ls, за исключением того, что она отсортирована по столбцам, а не по строкам). Неважно, какой текст в паренсе, вывод тот же.

Может ли кто-нибудь просветить меня относительно того, что на самом деле делает команда? Спасибо!

Автор: Leor Zolman Источник Размещён: 18.07.2016 04:29

Ответы (2)


0 плюса

6796 Репутация автора

Это повторяет все файлы, кроме привет. Вы также можете использовать подстановочные знаки, такие какecho !(*.java)

Автор: Ingo Leonhardt Размещён: 18.07.2016 04:54

0 плюса

7538 Репутация автора

Вот более подробная информация. Для получения дополнительной информации обратитесь к разделу «генерация имени файла» справочной страницы ksh (bash работает так же). Смотрите здесь для получения более подробной информации: https://www.mkssoftware.com/docs/man1/sh.1.asp

A sub-pattern begins with a ?, *, +, @, or ! character followed by a pattern-list 
enclosed in parentheses. Pattern-lists themselves can contain sub-patterns. 
The following list describes valid sub-patterns.

?(pattern-list) 
        Matches exactly zero or exactly one occurrence of the specified pattern-list.

*(pattern-list) 
        Matches zero or more occurrences of the specified pattern-list.

+(pattern-list) 
        Matches one or more occurrences of the specified pattern-list.

@(pattern-list) 
        Matches exactly one occurrence of the specified pattern-list.

!(pattern-list) 
        Matches any string that does not match the specified pattern-list.

Так, для вашего примера, когда оболочка видит восклицательный знак без кавычек, за которым следует скобка, она переходит в режим сопоставления имен файлов, а затем отображает в текущем каталоге файлы, которые не соответствуют «привет».

Автор: Gary_W Размещён: 02.08.2016 06:14
Вопросы из категории :
32x32