Ukryj bieżący katalog roboczy w terminalu

133

Domyślnie monit terminalu pokazuje coś takiego:

user@system:/folder1/folder2/folder3/folder4$

im głębiej wchodzisz w system plików, tym mniej miejsca pozostawia na wpisywanie poleceń. Czy mogę to zmienić, aby wyświetlać tylko coś takiego:

>

Mam na myśli, że mogę po prostu pisać, pwdaby pokazać, gdzie jestem. ;)

Teodor
źródło
1
To powinien być komentarz, ale nie mogę komentować, przepraszam. Oprócz ukrywania bieżącego katalogu, następująca wartość PS1 wizualnie oddziela twoje polecenia bash:export PS1="\n___"
Hello World
eksperymentował z rozwiązaniami Oli. Czcionki kolorów działają dobrze w terminalu: eksport PS1 = '[\ 033 [0; 35m] \ h [\ 033 [0; 33m] \ w [\ 033 [00m]:'
linbianxiaocao

Odpowiedzi:

153
export PS1='\u@\h: '

To powoduje oli@bert:moje pytanie.

Jeśli naprawdę chcesz czegoś tak minimalistycznego, jak prosisz, spróbuj tego:

export PS1='> '

Możesz dołączyć to na końcu ~/.bashrcpliku, aby utrzymywał się między logowaniami.

Możesz także wykazać się kreatywnością dzięki niektórym kolorom. Oto, czego używam na moich serwerach:

export PS1='\[\033[0;35m\]\h\[\033[0;33m\] \w\[\033[00m\]: '

Dawanie (łatwiej jest zobaczyć na pełnym czarnym tle):

Moje terminale

Glosariusz dopuszczalnych postaci w PS1

Oli
źródło
2
Możesz również wstawić znaki nowej linii (\ n) jako część monitu, dzięki czemu możesz umieścić wszystkie informacje i „>” w osobnych wierszach.
ak2
Po raz pierwszy spotkałem się z tego rodzaju „ekstremalnymi” dostosowaniami powłoki w msysGit, wierzcie lub nie. Natychmiast zostałem nawrócony na świat bash. Mając wszystkie informacje (mój bieżący katalog, bieżący oddział wyewidencjonowany z repozytorium Git, stan indeksu Git ...) było tak niesamowite. Planuję zrobić coś podobnego z instalacją Ubuntu, którą niedawno zainstalowałem na starym laptopie (wraz z Windows XP).
dgw
3
jaki jest format używany do ustawiania kolorów?
Rakib
1
@SyedRakibAlHasan Spróbuj echo -e "\e[31mHello World\e[0m"lub echo -e "\033[31mHello\e[0m World"w terminalu, który powinien dać ci wskazówkę. źródło
daka
103

Aby rozwinąć odpowiedź Oli (i tak, że mam zakładkę do tych skrótów):

Bash prompt ( stefano@linux:~$) to tylko pierwszy z kilku monitów, które możesz zobaczyć:

  • PS1 : domyślny monit wyświetlany po otwarciu powłoki

    Jego wartość jest przechowywana w zmiennej środowiskowej o nazwie PS1. Aby zobaczyć jego wartość, wpisz

    echo $PS1

    To da ci coś takiego

    \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

    Aby to zmienić, możesz ustawić nową wartość dla zmiennej:

    export PS1="\u > "

    Spowoduje to wyświetlenie następującego monitu:

    stefano > 
  • PS2 : to twój dodatkowy monit. Zostanie to pokazane, gdy polecenie nie zostanie zakończone. Wpisz echo "asdi naciśnij Enter, dodatkowe pytanie pozwoli ci wprowadzić więcej linii, dopóki nie zamkniesz odwróconych przecinków.

  • PS3 jest monitem używanym do select(2)

  • PS4 jest szybka wykorzystywane do alternatywny tekst śledzenia stosu (domyślnie +)

Aby zmiany były trwałe, dołączasz je na końcu .bash_profile(lub .bashrczobacz to pytanie ) w swoim katalogu domowym.

Oto mniej lub bardziej kompletna lista skrótów, których możesz użyć podczas ich tworzenia:

  • \a     Znak „dzwonka”
  • \A     24 godziny
  • \d     Data (np. Wtorek 21 grudnia)
  • \e     Postać „ucieczki”
  • \h     Nazwa hosta (do pierwszego „.”)
  • \H     Nazwa hosta
  • \j     Liczba aktualnie uruchomionych zadań (ps)
  • \l     Obecny tty
  • \n     Linia przesuwania
  • \t     Czas (gg: mm: ss)
  • \T     Czas (gg: mm: ss, format 12h)
  • \r     Zwrot karetki
  • \s     Shell (tj. Bash, zsh, ksh ..)
  • \u     Nazwa Użytkownika
  • \v     Wersja Bash
  • \V     Pełny ciąg wydania Bash
  • \w     Aktualny katalog roboczy
  • \W     Ostatnia część bieżącego katalogu roboczego
  • \!     Aktualny indeks w historii
  • \#     Indeks poleceń
  • \$     „#”, Jeśli jesteś rootem, w przeciwnym razie „$”
  • \\     Dosłowny ukośnik odwrotny
  • \@     Czas (format 12h z am / pm)

Możesz oczywiście wstawić dowolny literał ciąg i dowolne polecenie:

export PS1="\u \$(pwd) > "

Gdzie $(pwd)zastępuje „wynik” pwd.

  • Jeśli zastąpienie polecenia jest pomijane, jak w \$(pwd), jest oceniane za każdym razem, gdy wyświetlany jest monit, w przeciwnym razie, jak w $(pwd), jest oceniane tylko raz po uruchomieniu bash.

Jeśli chcesz, aby twój monit zawierał kolory, możesz użyć do tego kodów kolorów bash. Kod składa się z trzech części:

40;33;01
  • Pierwsza część przed średnikiem reprezentuje styl tekstu.

    • 00 = brak
    • 01 = pogrubienie
    • 04 = podkreślenie
    • 05 = mrugnięcie
    • 07 = rewers
    • 08 = ukryty
  • Druga i trzecia część to kolor i kolor tła:

    • 30 = czarny
    • 31 = czerwony
    • 32 = zielony
    • 33 = żółty
    • 34 = niebieski
    • 35 = magenta
    • 36 = cyjan
    • 37 = biały

Każdą część można pominąć, zakładając, że zaczyna się od lewej. tzn. „1” oznacza pogrubienie, „1; 31” oznacza pogrubienie i kolor czerwony. A terminal można wydrukować w kolorze, unikając instrukcji \33[i kończąc na m. 33 lub 1B w systemie szesnastkowym to znak ASCII „ESCAPE” (znak specjalny w zestawie znaków ASCII). Przykład:

"\33[1;31mHello World\33[m"

Drukuje „Hello World” w kolorze jasnoczerwonym.

Stefano Palazzo
źródło
Dołączyłem export PS1='\[\033[1;31m\]\w\[\033[00m\] \$> 'się, /etc/bash.bashrcale wydawało się, że nic się nie zmienia ... działa na sesję, ale wydaje mi się, że nie jest to trwałe.
Jared Tritsch
8

Inną alternatywą jest skrócenie ścieżki katalogu roboczego, gdy staje się ona zbyt długa: przyciąć katalog roboczy wiersza poleceń terminalu

Utwórz mały skrypt Pythona, który implementuje pożądaną logikę przycinania.

Przykład: ~ / short.pwd.py

import os
from commands import getoutput
from socket import gethostname
hostname = gethostname()
username = os.environ['USER']
pwd = os.getcwd()
homedir = os.path.expanduser('~')
pwd = pwd.replace(homedir, '~', 1)
if len(pwd) > 30:
    pwd = pwd[:10]+'...'+pwd[-20:] # first 10 chars+last 20 chars
print '[%s@%s:%s] ' % (username, hostname, pwd)

Teraz przetestuj z poziomu terminalu:

export PROMPT_COMMAND='PS1="$(python ~/.short.pwd.py)"'

Jeśli masz wynik, po prostu dodaj polecenie do ~ / .bashrc

Olivier Lalonde
źródło
Exa ... ~ / short.pwd.py, eksport ... ~ / .short.pwd.py Myślę, że oba muszą być takie same. Albo umieścisz dodatkowe polecenie w obu miejscach, albo w ogóle tego nie zrobisz. Ale to doskonała odpowiedź ..
MycrofD
7

Często chcę to zrobić tymczasowo. Oto co robię:

$ export OLD_PS1=$PS1                    # save Long Prompt to OLD_PS1
$ export PS1="\u > "export PS1="\u $ "   # change to PS1 to Short Prompt
$ export PS1=$OLD_PS1                    # restore Long Prompt to PS1

Mam nadzieję, że to komuś pomoże.

Joe Codeswell user601770
źródło
1

dla użytkowników macOS:

open ~/.bash_profile

na końcu pliku dodaj następujący wiersz i zapisz go

export PS1='\u:\w\$ '

wynik w katalogu domowym:

user: ~$

tutaj dla użytkownika w dla bieżącego katalogu roboczego $ jest monit o wyświetlenie

możesz wypróbować następujące style:

export PS1='$ '

po prostu mieć $ jak najszybciej, nic więcej. tak jak:

$ 
Sree
źródło
0

Pomogło mi: eksport PS1 = „$”

Aby mieć to za każdym razem, gdy otwierasz terminal, napisz polecenie na końcu pliku .bashrc, które możesz otworzyć, naciskając „cd”, a następnie „gedit .bashrc”.

Mam nadzieję że to pomoże. Wypracowało się dla mnie.

Arka Mitra
źródło