skorupa ryby: analog „shopt -s dotglob”

9

Próbuję migrację z bashcelu fish.

Co to fishjest analog shopt? Próbuję naśladować tę linię z mojego .bashrc:

shopt -s dotglob # for mv * see hidden files
Netimen
źródło
Jestem pewien, że nie ma. dokumentacja mówi o tym, że pliki kropek nie są dołączane, nie wspominając o żadnym mechanizmie konfiguracji. Prawdopodobnie będziesz musiał {,.}*ręcznie globować .
glenn jackman
1
Uwaga: możesz zapytać na stackoverflow.com, niektórzy opiekunowie ryb spędzają tam czas.
glenn jackman

Odpowiedzi:

8

To celowe. Przez większość czasu użytkownicy nie chcą przypadkowo dopasować ukrytych plików, które są niewidoczne dla ls(bez -a). Zwykle pliki są ukryte z jakiegoś powodu, nie tylko po to, aby cię trollować. Ponadto, jeśli *pasowałyby do ukrytych plików, dopasowanie nie ukrytych plików byłoby zbyt trudne.

Jednak w przeciwieństwie do bash shopt -s dotglobnie jest konieczne dopasowanie ukrytych plików. W bash shopt -s dotglobjest to jedyny sposób dopasowania każdego pliku w katalogu bez przypadkowego dopasowania .lub ... Jednak skorupa ryb nigdy nie może się równać .lub ..z kulami, dlatego nie stanowi to problemu (jeśli poważnie potrzebujesz dopasować .lub ..z jakiegoś głupiego powodu, po prostu powiedz je wyraźnie). Poza tym ryba stara się unikać opcji według projektu, więc nie ma dotglob.

Aby dopasować każdy pojedynczy plik w katalogu, możesz użyć rozszerzenia nawiasów, aby wykryć pliki zaczynające się od kropek i te, które nie są. {.,}jest rozwinięciem nawiasu, który pasuje do kropki, która może istnieć lub nie. Gwiazda po tym pasuje do wszystkiego. Ponieważ globusy u ryb nie mogą się zgadzać .lub .., poniższy kod pasuje do wszystkiego oprócz tych dwóch katalogów (które niestety pasują do bash, jeśli użyjesz kodu poniżej)

cat {.,}*
Konrad Borowski
źródło