Mám soubor s názvem my_file.txt
jehož obsahem je pouze řetězec Hello
. Jak bych mohl přesměrovat jeho obsah na příkaz echo
?
Vím, že mám příkazy less
, cat
, more
… ale musím to udělat pomocí echo
.
Zkoušel jsem toto:
$ cat my_file.txt | echo
a také toto:
$ echo < my_file.txt
Ale v obou případech se v stdout objeví pouze prázdné místo, nikoli obsah souboru my_file.txt.
Jak jsem to mohl udělat?
Přijatá odpověď:
Vše, co chcete, můžete přesměrovat na echo
ale nic s tím neudělá. echo
nečte svůj standardní vstup. Jediné, co dělá, je zapsat na standardní výstup své argumenty oddělené mezerou a ukončené znakem nového řádku (a s trochou echo
implementace s některými sekvencemi escape v nich rozšířenými a/nebo argumenty začínajícími -
případně považovány za možnosti).
Pokud chcete echo
pro zobrazení obsahu souboru musíte tento obsah předat jako argument do echo
. Něco jako:
echo "$(cat my_file.txt)"
Všimněte si, že $(...)
odstraní znak nového řádku na konci s z výstupu této cat
příkaz a echo
přidá jeden zpět.
Všimněte si také, že kromě zsh
, nemůžete předat znaky NUL v argumentech příkazu, takže výše uvedené obvykle nebude fungovat s binárními soubory. yash
také odstraní bajty, které netvoří součást platných znaků.
Pokud to chcete udělat proto, že chcete echo
rozbalte n
, b
,