GNU/Linux >> Znalost Linux >  >> Linux

How To Echo A Bang!?

Pokusil jsem se vytvořit skript pomocí echo vložení obsahu do souboru namísto jeho otevření pomocí editoru

echo -e "#!/bin/bash n /usr/bin/command args"  > .scripts/command

Výstup :

bash:!/bin/bash:událost nenalezena

Toto podivné chování jsem izoloval od třesku.

$ echo !
!  

$ echo "!"
bash: !: event not found

$ echo #!
#!

$ echo #!/bin/bash
bash: !/bin/bash: event not found
  • Proč to způsobuje třesk?
  • Jaké jsou tyto „události“, které bash označuje?
  • Jak mohu překonat tento problém a vytisknout „#!/bin/bash“ na obrazovku nebo do svého souboru?

Přijatá odpověď:

Zkuste použít jednoduché uvozovky.

echo -e '#!/bin/bash n /usr/bin/command args'  > .scripts/command

echo '#!'

echo '#!/bin/bash'

Problém nastává, protože bash hledá ve své historii !/bin/bash. Použití jednoduchých uvozovek zabrání tomuto chování.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Bash =~ Regex A Https://regex101.com/?

  3. Jak způsobit chybu „Příliš dlouhý seznam argumentů“?

  1. Není důvod mít Shebang ukazující na /bin/sh spíše než /bin/bash?

  2. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  3. Nainstalujte binární soubory do /bin, /sbin, /usr/bin a /usr/sbin, interakce s --prefix a DESTDIR

  1. Jaký je rozdíl mezi #!/usr/bin/env bash a #!/usr/bin/bash?

  2. Kdy musím použít #!/bin/bash a kdy #!/bin/sh?

  3. Rozdíl mezi /bin a /usr/bin