Pro příkaz, pokud používáte -
jako argument místo názvu souboru bude znamenat STDIN nebo STDOUT.
-
Ale v tomto příkladu vytvoří soubor s názvem
-
:echo hello > -
Jak mohu vytvořit
-
v tomto příkladu znamená STDOUT? -
A naopak, jak mohu vytvořit
-
znamená soubor s názvem-
v příkladech jako:cat -
Přijatá odpověď:
Pomocí -
jako název souboru znamená stdin/stdout je konvence, kterou používá mnoho programů. Nejedná se o speciální vlastnost názvu souboru. Jádro nerozpozná -
jako speciální, takže všechna systémová volání odkazující na -
jako název souboru bude použit -
doslova jako název souboru.
S přesměrováním bash, -
není rozpoznán jako speciální název souboru, takže bash jej použije jako doslovný název souboru.
Když cat
vidí řetězec -
jako název souboru s ním zachází jako se synonymem pro stdin. Chcete-li to obejít, musíte změnit řetězec, který cat
vidí takovým způsobem, že stále odkazuje na soubor s názvem -
. Obvyklý způsob, jak toho dosáhnout, je přidat před název souboru cestu – ./-
, nebo /home/Tim/-
. Tato technika se také používá k překonání podobných problémů, kdy se možnosti příkazového řádku střetávají s názvy souborů, takže soubor označovaný jako ./-e
nezobrazí se jako -e
například možnost příkazového řádku programu.