Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Bash i znaki specjalne  (Przeczytany 1987 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 "!-"
:)