Jakiś czas temu błędnie usunąłem folder domowy, ponieważ uruchomiłem rm -rf *
niewłaściwy terminal, którego katalogiem roboczym był folder domowy!
Chciałbym mieć pseudonim dla rm
polecenia, ale tak nie było.
Teraz planuję stworzyć skrypt jako alias rm
.
Czy masz jakieś najlepsze praktyki do zasugerowania?
Dzięki.
rm
jest to niebezpieczne polecenie wymagające aliasu dla bezpieczeństwa. Korzystając z opcjir
if
, mówisz powłoce, że wiem, że jest to niebezpieczne, a ja dokładnie się nad tym zastanowiłem i naprawdę chcę to zrobić . Jeśli nie skorzystasz z tych opcji, nie możesz usunąć całego folderu domowego.rm
, przyzwyczaisz się do tego aliasu. Pewnego dnia będziesz w systemie, w którym alias nie istnieje, i zrobisz coś złego, gdy najmniej się tego spodziewasz. I prawdopodobnie nie będzie to twój system.rm
dorm -i
.Odpowiedzi:
Jeśli chcesz dostosować
rm
, nie nazywaj go,rm
ale swoim imieniemmyrm
,delete
czy jakkolwiek.rm='rm -i'
Alias jest horror, ponieważ po pewnym czasie używania, można spodziewaćrm
się monit domyślnie przed usunięciem plików. Oczywiście, pewnego dnia uruchomisz go z kontem, na którym nie ma ustawionego aliasu, a zanim zrozumiesz, co się dzieje, jest już za późno.W każdym razie dobrym sposobem na przygotowanie się na utratę lub uszkodzenie pliku jest tworzenie kopii zapasowych.
Szybką alternatywą, która ochroni Cię przed przypadkowym usunięciem lub zastąpieniem pliku, jest użycie systemu plików obsługującego nieograniczoną liczbę migawek, takich jak ZFS. Jeśli częste migawki są wykonywane automatycznie, możesz odzyskać pliki w stanie, w jakim były podczas ostatniej migawki przed zdarzeniem.
źródło
Jeśli chcesz zapisać aliasy, ale nie chcesz ryzykować przyzwyczajenia się do poleceń działających w systemie inaczej niż na innych, możesz wyłączyć w
rm
ten sposóbNastępnie możesz utworzyć własny bezpieczny alias, np
lub użyj
trash
zamiast tego.źródło
remove
jakoecho "rm is disabled, use trash or /bin/rm instead." -irv
. I, dla zachowania zdrowego rozsądku, czy nie chciałbyś, aby wiadomośćrm
odsyła do twojego bezpiecznegoremove
polecenia?Możesz spróbować użyć
trash
zamiast tego. Pamiętaj tylko, aby raz na jakiś czas go opróżniać ...źródło
Bez konieczności zmiany profilu wszystkich, możesz umieścić plik o nazwie -i w katalogu.
źródło
.* *
raczej niż* .*
(co uważam za bardziej powszechne) lub* . *
(co powiedziałeś). …………………………………………………………………… Aby ta technika była prawdziwie globalna, musisz to zrobić w każdym katalogu, w którym masz uprawnienia do zapisu . Ale zgadzam się, to fajna sztuczka.Używam następującego skryptu.
Jeśli przypadkowo usuniesz plik, odzyskaj go z
$HOME/tmp
.Skrypt przenosi usunięte pliki do
tmp
katalogu i usuwa je przy następnym uruchomieniu skryptu usuwania, jeśli czas dostępu upłynie 7 dni później (półautomatyczne czyszczenie$HOME/tmp
katalogu).źródło
W Twoim profilu,
źródło
rm -I
daje to, co najlepsze z obu światów, @jlliagre.Wywołany skrypt
d
z zawartościąmv $* /tmp
.edycja: To zły pomysł; patrz poniżej. Obecnie mam
alias d='mv -t /tmp'
w sobie.profile
zamiast tego.źródło
d "foo bar"
usunie plikifoo
ibar
). Prawdopodobnie jest coś bezpieczniejszego#!/bin/bash TRASH="$( mktemp -d -t trashed.XXX )"; echo "Moving to trash $TRASH"; mv -v -- "$@" "$TRASH"
(mktemp
amv
składnia zależy od systemu, ten działa w systemie Linux).d
poleceniealias d='mv -t /tmp'
w swoim.profile
; Myślę, że to było proste rozwiązanie, którego szukałem.Ten kod bash dodaje funkcję
rm
do~/.bash_profile
pliku konfiguracyjnego. Po uruchomieniu tego, jeśli napiszeszrm file
, przeniesiesz ten plik do/tmp
źródło
rm
do~/.bash_profile
pliku konfiguracyjnego. Po uruchomieniu tego pliku, jeśli napiszeszrm file
, przeniesiesz ten plik do/tmp
.