Jak tymczasowo ominąć alias w tcsh?

17

Używam tcsh. bash, zsh i inne sugestie tutaj nie pomogą.

Mam kilka aliasów, które są nazwane tak samo jak inne polecenie, więc jeśli to zrobiłem, wpisanie tego samego zrobiłoby teraz coś innego.

Przez większość czasu chcę aliasu polecenia, dlatego je mam. Czasami jednak chcę niezmienne polecenie.

Czy bez prostego rozdzielania i redefiniowania polecenia istnieje prosty sposób, aby powiedzieć tcsh, aby zamiast tego używał polecenia niezmienionego?

Na przykład vi jest aliasowany do vima, ale czasami chcę po prostu używać vi. cd jest aliasowany, aby zmienić tytuł okna, ale czasem chcę go zostawić w spokoju.

Oczywiście mógłbym wpisać / usr / bin / vi, ale ponieważ cd jest wbudowanym poleceniem powłoki, nie ma odpowiednika. Czy istnieje ogólne rozwiązanie?

piCookie
źródło

Odpowiedzi:

29

Możesz użyć ukośnika odwrotnego:

% alias ls ls -a
% ls
# ls -a output here
% \ls
# plain ls output here

W przypadku wbudowanych powłok, okazuje się, że jest to gotcha: wiodący odwrotny ukośnik zapobiega używaniu zarówno aliasów, jak i wbudowanych, ale wewnętrzny odwrotny ukośnik eliminuje tylko aliasing.

% alias cd pushd
% cd /tmp
/tmp /tmp 
% c\d
% dirs
~ /tmp

(Kusi mnie, by nazwać to kolejnym argumentem przeciwko używaniu cshrodziny powłok).

geekozaur
źródło
Ciągle pojawia się komunikat „polecenie: Nie znaleziono polecenia”. dla polecenia i „cd: Nie znaleziono polecenia” dla \ cd. Czy „polecenie” jest wbudowane w tcsh?
piCookie
westchnienie dziwne POSIX ... tu są podróbki /usr/bin. Ale instrukcja potwierdza, że ​​ukośnik odwrotny powinien działać ... i okazuje się, że działa, ale musisz zacytować wewnętrzny charakter, aby zapobiec aliasingowi, jednocześnie obsługując wbudowane funkcje. BTW Jeśli próbujesz coś zrobić po cd, przyjrzeć alias cwdcmdsię tcsh(1); oszczędza to również konieczności radzenia sobie z pushd/ popditd.
geekozaur
commandjest zwykle wbudowany w powłoki POSIX i musi być przeznaczony command -[Vv]. Użycie odwrotnego ukośnika w celu ominięcia aliasu działa tylko dla zwykłych poleceń, a nie dla wbudowanych (ponieważ wbudowanych nie można cytować w (t) csh bardziej niż aliasy).
Gilles „SO- przestań być zły”
Wydaje się, że polecenie nie jest dostępne w moim systemie (na bok: jak sformatowałeś to, aby się wyróżnić?), Ale wewnętrzny odwrotny ukośnik działa dla mnie. Dzięki!
piCookie
Pozdrawiam @geekosaur - Nie wiedziałem o tym \ zachowaniu i myślę, że będzie to przydatne, gdy zacznę coraz częściej używać aliasów. :)
boehj
1

poprzedź swoje polecenie słowem „polecenie”. Dawny.

command ls
Weston Ganger
źródło
1
Czy to działa w tcsh, jak wymaga tego pytanie? Czy to działa z wbudowanymi poleceniami?
dhag
0

Nie twórz aliasów, które są wbudowane w powłokę Clobbera. Twoje życie będzie znacznie łatwiejsze . Pozostało wiele kombinacji klawiszy, spróbuj cwzmienić alias tytułu okna :)

Edycja: Dwustopniowe rozwiązanie do naprawy aliasów, które nie są twoje:

  1. Znajdź małpę, która dokonała aliasu cddo czegoś innego niż polecenie zmiany katalogu i poproś o jej przeniesienie do wybranej kolumny lokalnej gazety. Nie powinien wykonywać pracy, w której mógłby wymuszać takie pomysły na skorupy innych ludzi!
  2. echo unalias cd >> ~/.bashrc
Caleb
źródło
Niektóre aliasy, które mam, nie są moje. Doceniam twoją radę i dołożę wszelkich starań, aby ją zastosować w miarę możliwości. Teraz, gdy istnieją aliasy, które chciałbym ominąć, jak to zrobić?
piCookie
Pewnie. unalias cd.
Caleb
Najwyraźniej Caleb wcale nie był jasny, przepraszam. Nazwijmy przypadek „cd” rozwiązany. Próbowałem dowiedzieć się, jak to zrobić dla innych pseudonimów, bez odwzajemnienia. Przepraszam, że tego nie zrozumiałem. Wygląda na to, że wewnętrzny odwrotny ukośnik jest dokładnie tym, czego szukałem.
piCookie
cdAlias może być ustawienie tytuł i zmienia katalog. To dość powszechna praktyka sprzed precmdi PROMPT_COMMAND.
Mikel