GNU/Linux >> Znalost Linux >  >> Linux

Proč Bash neukládá příkazy, které začínají mezerami?

Pokud provedu sekvenci příkazů jako:

$ ls
$   grep abc file.txt

a poté pomocí klávesy se šipkou nahoru přejděte na předchozí, terminál zobrazí poslední cmd (což je grep zde)

Ale když udělám něco takového:

$ ls
$   grep abc file.txt

kde grep předchází mezery, stisknutím nahoru získáte ls , nikoli grep .

Proč tomu tak je?

Přijatá odpověď:

echo $HISTCONTROL
ignoreboth

muž bash:

HISTCONTROL

Seznam hodnot oddělených dvojtečkou, který určuje, jak se příkazy ukládají do seznamu historie. Pokud seznam hodnot obsahuje ignorespace , řádky začínající mezerou se neukládají do seznamu historie. Hodnota ignoredups způsobí, že řádky odpovídající předchozímu záznamu historie nebudou uloženy. Hodnota ignoreboth je zkratka pro ignorespace a ignoredups .


Linux
  1. Název souboru se netiskne správně s podtržítkem _ v Bash

  2. základní jméno s mezerami ve skriptu bash?

  3. Proč se bash nezastaví při chybě pro selhání v sekvenci zkratovaných příkazů?

  1. Nahraďte mezery podtržítky pomocí BASH

  2. Proč není hlasování nahrazeno epollem?

  3. proč smazání bash historie nestačí?

  1. Jak Grep linky, které nezačínají "#" nebo ";"?

  2. Příkaz Rm ve skriptu Bash nefunguje s proměnnou?

  3. Proč mi Grep -o -w neposkytuje očekávaný výkon na Mac OS X?