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 № 1Powtarza 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ść".