GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit soubor, který se jmenuje jako argument příkazového řádku?

Zavolejte příkaz takto:

mkdir -- -a

-- znamená, že možnosti poté končí, takže -a se interpretuje doslovně a ne jako možnost mkdir . Tuto syntaxi najdete nejen v mkdir , ale jakýkoli nástroj kompatibilní s POSIX kromě echo a test . Ze specifikace:

Argument -- by měl být přijat jako oddělovač označující konec možností. Všechny následující argumenty by měly být považovány za operandy, i když začínají znakem '-'. Argument -- by neměl být používán jako volba nebo jako operand.

Pomocí -- jako ochrana se doporučuje pro téměř každou akci, kde se zabýváte názvy souborů a chcete se ujistit, že neporuší příkaz, např. při přesouvání souborů ve smyčce můžete chtít volat následující, takže soubor nazvaný -i není (in?) správně analyzován jako možnost:

mv -- "$f" new-"$f"

Nejjednodušší způsob, který by měl fungovat s jakýmkoli rozumným programem, je použít relativní název cesty před - , např. mkdir ./-a vytvoří adresář s názvem -a v aktuálním pracovním adresáři.

Nejběžnějším příkladem použití tohoto „triku“ je, když chcete odstranit soubor, který začíná pomlčkou, takže můžete udělat rm ./-a .


Důvod, proč mkdir '-a' nebo mkdir \-a nefunguje, protože obě tyto metody (pomocí uvozovek nebo zpětných lomítek) se používají k zabránění vaší shell (pravděpodobně bash ), aby jim nedával nějaký zvláštní význam. Od -a stejně to pro shell neznamená nic zvláštního, nemají žádný vliv na to, jak se to předá do mkdir .

Až po mkdir je znepokojen, obdrží seznam argumentů z shellu a nemůže zjistit, zda jste je vložili do uvozovek nebo ne, nebo zda tam bylo zpětné lomítko. Vidí pouze jeden argument -a . Proto potřebujete -- jak je vysvětleno v ostatních odpovědích.


Linux
  1. Jak analyzovat každý řádek textového souboru jako argument příkazu?

  2. Jak vytvořit řídké soubory v Linuxu pomocí příkazu „dd“.

  3. Jak nahradit soubor v jar příkazovým řádkem v linuxu?

  1. Jak změnit oprávnění a vlastníky pomocí příkazového řádku

  2. Jak vytvořit databázi v MySQL pomocí příkazového řádku

  3. Jak skrýt heslo předané jako argument příkazového řádku?

  1. Jak extrahovat soubor tar.gz v Linuxu pomocí příkazového řádku

  2. Jak předat argument příkazového řádku do skriptu Shell?

  3. Jak mohu vytvořit soubor s určitou velikostí z příkazového řádku?