Często używam Tabklucza, gdy używam powłoki (bash).
Ale denerwuje mnie to, że ~
zawsze się rozwija /home/"user"
. Nie sądzę, żeby zawsze tak było; czy jest jakiś sposób na powstrzymanie tego zachowania?
Przykład:
cj@zap:~$ ls ~/
- naciśnij Tab
cj@zap:~$ ls /home/cj/
Chciałbym nadal mieć, ~/
a nie skończyć /home/cj/
.
bash
autocomplete
Johan
źródło
źródło
set expand-tilde off
(domyślne lub ustawione w~/.inputrc
).shopt -p direxpand
.Odpowiedzi:
Wyłączenie rozszerzenia tyldy jest szybkie i bezbolesne. Otwórz
~/.bashrc
i wstaw to:Spowoduje to zastąpienie funkcji rozwijania z
/etc/bash_completion
. Polecam komentowanie tego, co robi nad funkcją, na wypadek, gdybyś chciał w przyszłości wrócić do rozszerzenia. Zmiany zaczną obowiązywać w nowej instancji.źródło
_expand(){ true; }
jest krótszy :)_expand(){ false; }
? @tigtrue
zwraca wynik pomyślny, a wynik pomyślny to 0, więcreturn 0
jest równytrue
statusowi wyjścia ireturn 1
jest równyfalse
. po prostu spróbujtrue; echo $?
ifalse; echo $?
.W przypadku nowszej wersji bash_completion wydaje się, że musisz również zastąpić __expand_tilde_by_ref:
źródło
Jeszcze bardziej kompaktowo:
... ponieważ „:” jest wbudowaną powłoką równoważną „true” :-)
źródło
Bardziej precyzyjne dostosowanie byłoby
źródło