Nowe posty

xx Mulenie strony [Tylko informacja] (0)
2020-02-25, 16:36:43
xx Film Hakerzy dla wolności 2018 lektor (0)
2020-02-25, 08:47:38
xx Mageia instalacja (1)
2020-02-24, 14:43:32
xx Zlecę skrypt w bashu (0)
2020-02-19, 14:07:39
xx Nadawanie praw katalogom takich, jak nazwa usera (4)
2020-02-17, 14:15:18
xx Fedora na laptopie HP 15-bs152nw brak wifi (44)
2020-02-16, 12:17:18
xx Komputer do nauki linuxa (10)
2020-02-15, 07:03:28
xx Patronat serwisow internetowych. (1)
2020-02-13, 00:13:24
xx Xfce-terminal v 0.8.7.4 - jak ustawić wklejanie skopiowanego tekstu? (3)
2020-02-12, 18:59:24
xx HD ISO, jak odzyskać starsze pliki (6)
2020-02-12, 10:54:31

Autor Wątek: Bash i znaki specjalne  (Przeczytany 329 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.
 

Offline parana

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 101
    • Zobacz profil
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 »
ASRock A320M-HDV 3.0, ASRock TPM2-S, Athlon 200GE, 2X4GB 2400MHz Ballistix Sport LT, PCIe Gen 3 M2 Silicon 128 GB, 2XSSD Silicon Power A55 256GB, Logic M4, Be quiet! B9 350W, SilentiumPC Zephyr 80mm. GNU/Linux Debian 10
Nauka na VPS - https://mikr.us/?r=a406 (Polecam 5% taniej)

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 :)

Offline parana

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 101
    • Zobacz profil
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 »
ASRock A320M-HDV 3.0, ASRock TPM2-S, Athlon 200GE, 2X4GB 2400MHz Ballistix Sport LT, PCIe Gen 3 M2 Silicon 128 GB, 2XSSD Silicon Power A55 256GB, Logic M4, Be quiet! B9 350W, SilentiumPC Zephyr 80mm. GNU/Linux Debian 10
Nauka na VPS - https://mikr.us/?r=a406 (Polecam 5% taniej)

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 "!-"
:)