Nowe posty

xx System pakietów jest uszkodzony (Linux Ubuntu 20.04 LTS) (3)
Wczoraj o 15:44:17
xx Otoczenie najkrótszej frazy (2)
2022-09-25, 12:18:46
xx Skrypt do otwarcia i zamknięcia plików (2)
2022-09-19, 21:18:41
xx potrzebuje by ktoś mi wytłumaczył jedną żecz (4)
2022-09-16, 23:14:22
clip Zmiana ustawień punktu montowania (2)
2022-09-07, 23:20:08
xx Czarny ekran na start - linux mint (2)
2022-09-07, 14:46:31
xx Przydatne Linki (12)
2022-09-07, 14:33:34
xx Czy jest to potrzebne w domu ? (1)
2022-09-07, 08:26:40
xx Lupa. (5)
2022-09-04, 00:47:38
xx problem z wyburzaniem dell inspirion 15 3552 (1)
2022-09-03, 19:47:29

Autor Wątek: Bash i znaki specjalne  (Przeczytany 1101 razy)

Offline p.nowak

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Bash i znaki specjalne
« dnia: 2020-01-13, 20:22:44 »
Witam,
jak to jest z wyświetlaniem znaków specjalnych w terminalu? Znalazłem sobie w sieci ebooka sprzed kilku lat i w jednym z przykładów podano iż komenda echo nie wyświetli znaku wykrzyknika ! i wyrzuci błąd "bash: !: event not found error" gdy w napiszemy polecenie
$ echo "cannot include exclamation - ! within double quotes". Uruchomiłem to polecenie pod centosem 8 i działa bez problemu. Coś się zmieniło w tej kwestii?
Z góry dziękuje za wyjaśnienie.
 

parana

  • Gość
Odp: Bash i znaki specjalne
« Odpowiedź #1 dnia: 2020-01-13, 22:12:34 »
Napisz sobie:
echo !10
co Ci wyszło? Rozumiesz co się dzieje? Teraz inne cyfry po !? Co działa?

a napisz
echo \!10
jaki wynik?

I jeszcze jedno do pomyślenia:
 echo "Ala ma kota !!"

oraz
echo "!-"
« Ostatnia zmiana: 2020-01-13, 22:26:19 wysłana przez parana »

beaker

  • Gość
Odp: Bash i znaki specjalne
« Odpowiedź #2 dnia: 2020-01-14, 08:57:40 »
Autor pytał o coś zupełnie innego.
Wg poradnika nie można użyć wykrzyknika pomiędzy cudzysłowami gdyż zwróci to błąd "bash: !: event not found error".
U autora jednak ten błąd się nie pojawia.
U mnie zresztą też:
$ echo "cannot include exclamation - ! within double quotes"
cannot include exclamation - ! within double quotes

Zapewne chodzi o ten poradnik: https://books.google.pl/books?id=yHc5DwAAQBAJ&pg=PA11&lpg=PA11&dq=echo+%22cannot+include+exclamation+-+!+within+double+quotes&source=bl&ots=BZjIy9p8ZC&sig=ACfU3U2rb-YhnI9bXsehnPgLQX_NbrYZKg&hl=pl&sa=X&ved=2ahUKEwilt5G8x4LnAhWwlYsKHXcJAs0Q6AEwBHoECAkQAQ#v=onepage&q=echo%20%22cannot%20include%20exclamation%20-%20!%20within%20double%20quotes&f=false

Prawdopodobnie jest błąd w tym przykładzie i miał on brzmieć tak:
$ echo "cannot include exclamation !- within double quotes"
« Ostatnia zmiana: 2020-01-14, 09:03:38 wysłana przez arecki »

Offline p.nowak

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Bash i znaki specjalne
« Odpowiedź #3 dnia: 2020-01-14, 20:44:41 »
Dziękuję wszystkim za cenne spostrzeżenia. Nie znałem zastosowania ! w bashu. Teraz już wiem że stanowi znak specjalny w połączeniu z innymi znakami i można go zniwelować backslashem. W przykładzie z ebooka nie rozumiałem dlaczego nie wywala mi błędu. Jeszcze muszę doczytać czym różni wyświetlanie się ciągów wyrażeń z użyciem cudzysłowów i bez :)

parana

  • Gość
Odp: Bash i znaki specjalne
« Odpowiedź #4 dnia: 2020-01-14, 21:05:19 »
No i nie zrobiłeś o to co porosiłem a tak byś wiedział że:

! - to desygnator zdarzeń a zostosowanie go w poleceniu w Bash umożliwia rozwinięcie desygnatora zdarzeń z historii.
Wpisz
history
otrzymasz listę z numerami do zdarzeń

Więc w moich przykładach podanych wyżej:
!  rozpoczyna podstawianie historii
!!  poprzednie polecenie
!n  polecenie nr n z historii
!-n n-te polecenie wstecz od bierzącego
!tekst  ostatnie polecenie zaczynające się od tekst

więc faktycznie ! nie ma żadnego zastosowania w bash i tylko możesz wstawiasz go po ty by następnie go  skasować - ot taki znak do zabawy
« Ostatnia zmiana: 2020-01-14, 21:17:39 wysłana przez parana »

Offline p.nowak

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Odp: Bash i znaki specjalne
« Odpowiedź #5 dnia: 2020-01-14, 22:08:24 »
Kiepski ze mnie uczeń . Dotarłem dopiero na początek manuala basha. Tam jest mowa o "history expansion character". Po odpaleniu Twoich komend domyśliłem się ich znaczenia ale nie wpadłem jak działa
echo "!-"
:)