Neexistuje způsob, jak zcela neprůstřelný systém. A dodal:"Jste si jistý?" nabádání k věcem je kontraproduktivní a vede k "Samozřejmě jsem si jistý." trhavé reakce.
Trik, který jsem pochytil z knihy v minulých letech, je nejprve udělat ls -R blah* pak proveďte rm -fr blah* pokud a jen tehdy, když se objevil výpis trefil to, co jsem chtěl.
Je dost snadné provést ls nejprve příkaz, potom ↑ , odstraňte ls -R a nahradit rm -fr .
Poslední otázka zní:„Pokud pro vás byly informace cenné, kde je vaše záloha?“
A DEBUG trap by mohl být napsán ke zrušení příkazů, které vypadají podezřele. Následující nebo jemu podobný kód lze přidat do vašeho ~/.bashrc :
shopt -s extdebug
checkcommand() {
if [[ $BASH_COMMAND = 'rm -r'*' *' ]]; then
echo "Suppressing rm -r command ending in a wildcard" >&2
return 1
fi
# check for other commands here, if you like
return 0
}
trap checkcommand DEBUG
Upravte si logiku podle chuti.
(Ve skutečnosti neočekávám, že tento přístup bude užitečný – příliš mnoho způsobů, jak destruktivně pokazit příkazy, než je najít, aby testovaly jeden po druhém – ale poskytuje doslovnou odpověď na otázku).
Dokážete se naučit používat, řekněme, rmrf místo rm -rf ?
Pokud ano, tato funkce bash vám poskytne možnost vidět, co by se skutečně stalo, než příkaz potvrdíte:
rmrf() { echo rm -rf "example@unixlinux.online"; read -p "Proceed (y/N)? "; [ "${REPLY,,}" = y ] && rm -rf "example@unixlinux.online"; }
Chcete-li, aby tato funkce byla trvalá, přidejte tento řádek do ~/.bashrc soubor na každém počítači, který používáte.
Porovnání s běžným rm alias
Je běžné definovat alias:
alias rm='rm -i'
To má dvě omezení:
-
Pokud na tomto aliasu začnete záviset, budete v šoku, když budete na stroji nebo v prostředí, které ho nemá. Naproti tomu pokus o spuštění
rmrfna počítači bez této funkce vrátí neškodnécommand not found. -
Tento alias ve vašem případě nepomůže, protože
-fmožnost, kterou zadáte na příkazovém řádku, přepíše parametr-imožnost v aliasu.