/ / Metaznaki powłoki Korn: Co znaczy (jakiś tekst)? - unix, ksh

Metaznaki powłoki Korn: Co znaczy (jakiś tekst)? - unix, ksh

Próbuję dowiedzieć się, jak ksh przetwarza konstrukcję! (Tekst). Na przykład,

$ echo! (cześć)

tworzy listę plików w bieżącym katalogu(podobne do wyjścia polecenia ls, z wyjątkiem tego, że jest posortowane w kolumny, a nie w wiersze) .Nie ma znaczenia, jaki tekst znajduje się w parenach, wynik jest taki sam.

Czy ktoś może mnie oświecić, co faktycznie robi to polecenie? Dzięki!

Odpowiedzi:

0 dla odpowiedzi № 1

Powtarza wszystkie pliki oprócz hello. Możesz również użyć symboli wieloznacznych, takich jak echo !(*.java)


0 dla odpowiedzi nr 2

Oto nieco bardziej szczegółowe informacje, aby uzyskać więcej informacji, zajrzyj do sekcji "generowanie nazw plików" na stronie man ksh (bash działa w ten sam sposób). Zobacz tutaj więcej wzorów: 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.

Tak więc dla twojego przykładu, kiedy powłoka widziniecytowany wykrzyknik, po którym następuje nawias, przechodzi w tryb dopasowywania nazw plików, a następnie wyświetla pliki w bieżącym katalogu, które nie pasują do "cześć".