W bash mogę przejść do mojego katalogu domowego za pomocą cd ~
i faktycznie odwołać się do mojego katalogu domowego za pomocą dowolnego polecenia za pomocą ~
.
Czy mogę utworzyć nowe, niestandardowe „aliasy katalogów” (?) W celu odniesienia do innych katalogów? Hipotetyczny przykład:
make_alias "~~" /mnt/photon/work/foo_project/
cp ~/home.png ~~/set_8/home_4.png
Jak można to zrobić, jeśli tak? Jeśli nie, czy jest to zgodne z projektem i dlaczego?
Miło mieć: gdzie i jak ~
jest ustawiony i związany z tym „~”?
n=/mnt/photon/work/foo_project
i wtedycp foo ~n/bar
. (Uwaga dla OP: ograniczona również do zsh).@
lub_
), co nie jest możliwe w bash, podczas gdy na~~
pewno jest (hacky, ale możliwe). Ponadto nie odpowiada, w jaki sposób odbywa się to mapowanie.Odpowiedzi:
Tylda nie jest aliasem, jest częścią rozszerzenia powłoki bash (podobnie jak
*.txt
lub$((1 + 2))
).Rozszerzenie tylda Bash obsługuje następujące przedrostki tyldy:
dirs
używa stosu katalogów. Możesz użyć,pushd
aby dodać do niego katalog.Aby odpowiedzieć na konkretne pytanie dotyczące
~~
, tak, można zmapować do niego katalog. Wystarczy utworzyć użytkownika o nazwie~
i ustawić/mnt/photon/work/foo_project/
jako jego katalog domowy:Oczywiście dużo bardziej „rozsądnym” podejściem jest po prostu definiowanie zmiennej powłoki, która wskazuje na twój katalog w twoim
~/.bashrc
poleceniudo którego można uzyskać
$foo
jak zwykle dostęp.źródło