Co to jest monit o znak procentu w powłoce?

16

Podczas oglądania wideo zobaczyłem:

% more tinyUF.txt
10
4 3
3 8
6 5

Co to za %znak przed morepoleceniem?

Maxim Koretskyi
źródło
2
export PS1=%??
Roman Gräf
@ RomanGräf, co to jest?
Maxim Koretskyi
1
Możesz zmienić normalny $znak, używając export PS1=...gdzie ...jest zamiennik.
Roman Gräf
@ RomanGräf, rozumiem, dziękuję za sugestię
Maxim Koretskyi
@Roman Gräf: Za pomocą monitu możesz zrobić znacznie więcej niż tylko zmienić postać. Mój zawiera nazwę komputera (ponieważ często mam okna xterm na inne maszyny) i kilka ostatnich katalogów na bieżącej ścieżce. A jeśli jestem rootem, staje się jasnoczerwony.
jamesqf

Odpowiedzi:

29

To jest monit powłoki, a dokładniej, to główny monit powłoki ( jest ich kilka ). Powłoka mówi: „ śmiało, jestem gotowy na dane wejściowe ”.

%Szybka jest powszechne w cshType powłoki podczas sh-shells (na przykład bashi ksh93) zwykle wykorzystuje $jako szybka.

Monit zwykle zmienia się na #dla użytkownika root, ponieważ wystarczająco mocnemu użytkownikowi należy przypomnieć o tej mocy poprzez alternatywne monity (jak to określa standard POSIX).

Podstawowy monit w shpowłokach typu zależy od wartości zmiennej powłoki PS1.


Podsumowanie poniższych komentarzy z dodatkami:

#Postaci korzenia szybkiej (wykorzystywany zarówno przez shi cshpowłok), pokrywa się z komentarzem postaci wspólnej obudowy. Kopiowanie i wklejanie polecenia jako root sprawi, że wklejone polecenie nie będzie działać, jeśli zostanie również skopiowane zapytanie powłoki. Zauważ, że #został przyjęty jako monit root, zanim powłoka miała konwencję komentowania (odnośnik: email od Douga McIlroya ).

esI rcmuszle Planu 9 używa ;znaku jako domyślną wiersza. Konsekwencją tego jest to, że kopiowanie i wklejanie polecenia, w tym monitu, będzie nadal oznaczać, że wklejone polecenie jest prawidłowe (i zostanie wykonane).

Sposobem na umożliwienie posiadania niestandardowego, ale wciąż kopiowalnego monitu powłoki, byłoby użycie : something ;, gdzie somethingmoże być na przykład bieżący katalog, nazwa hosta lub godzina.

Kusalananda
źródło
2
Również w zsh(powłoka w stylu Bourne'a, ale z wieloma funkcjami od tcsh). Zauważ, że podobne do Bourne'a i csh-podobne powłoki zwykle używają #użytkowników UID 0.
Stéphane Chazelas
1
Zauważ też, że rcużywają ;tam podobnych powłok (można skopiować i wkleić pełny wiersz, a to jest poprawny kod powłoki, taki sam pomysł jak #podpowiedź roota jako komentarz).
Stéphane Chazelas
2
bardzo ważnym wyborem # dla roota jest to, że jeśli skopiujesz polecenie łącznie z nim, nie spowoduje to szkód (ponieważ # rozpoczyna komentarz, więc skomentujesz twoje polecenie (cóż, jego pierwszy wiersz)). Niektóre osoby używają „>”, a jeśli go również skopiujesz, może on zablokować (całkowicie opróżnić) pliki binarne, jeśli polecenie ma pełną lub względną ścieżkę lub jeśli znajdujesz się we właściwym katalogu (i masz wystarczające uprawnienia, na przykład jeśli masz korzeń). Widziałem, jak to się dzieje.
Olivier Dulac
1
@ StéphaneChazelas: Czy konwencja #for-root nie powstała długo, zanim terminale, w których łatwo można wycinać i wklejać całą linię, stały się powszechne?
Hmakholm pozostawił Monikę
@HenningMakholm, tak. Powstał jeszcze zanim csh wprowadził # jako lidera komentarzy. Jednak prawdą jest, że #...wiersze są komentarzami po wklejeniu, nawet jeśli nie było to zamierzone. Nie wiem, czy to było intencją ;w rcobaj, choć obserwujemy to wygodne konsekwencją.
Stéphane Chazelas