Zmieniłem nazwę kilku plików w jednym skrypcie wsadowym. Czy istnieje sposób, aby cofnąć zmiany bez konieczności zmiany nazwy?
Czy Linux zapewnia jakiś natywny sposób undo
programowania?
command-line
Lazer
źródło
źródło
Odpowiedzi:
Linux (podobnie jak inne jednorożce) nie ma wbudowanej funkcji cofania. Filozofia jest taka, że jeśli zniknie, zniknie. Jeśli było to ważne, powinno zostać zarchiwizowane.
Istnieje system plików bezpieczników, który automatycznie przechowuje kopie starych wersji: copyfs , dostępnych we wszystkich dobrych dystrybucjach. Oczywiście może to zużywać wiele zasobów.
Najlepszym sposobem ochrony przed takimi wypadkami jest użycie systemu kontroli wersji (cvs, bazar, darcs, git, mercurial, subversion, ...). Nauka zajmuje trochę czasu, ale w średniej i długiej perspektywie bardzo się opłaca.
źródło
Niestety nie.
źródło
-i
opcjarm
domyślnie włączona. Moje systemy uniksowe nie powinny trzymać mnie za rękę.Nie, nie ma magicznego cofnięcia w żadnym Uniksie. Unix zakłada, że wiesz, co robisz. Do obsługi cofania użyj VCS (twój edytor tekstowy prawdopodobnie też go ma wbudowany).
Większość systemów plików nie ma możliwości robienia tego transparentnie.
Wehikuł czasu i przywracanie systemu odpowiednio w systemie Mac i Windows są po prostu systemami kontroli tworzenia kopii zapasowych / zmian.
źródło
W wierszu poleceń nie ma cofania. Możesz jednak uruchamiać polecenia jako
rm -i
imv -i
. Pojawi się monit „jesteś pewien?” pytanie przed wykonaniem polecenia.Możliwe jest również dodanie aliasu do skryptu uruchamiania (np.
~/.bashrc
Lub/etc/bash.bashrc
):Edycja: zgodnie z poniższymi sugestiami usunąłem moją radę aliasu domyślnych poleceń. Zamiast tego wprowadza teraz nowe polecenia).
źródło
mv -i
pyta tylko wtedy, gdy zastąpi plik (co czyni go użytecznym i nie wstrętnym). W tym samym duchualias cp='cp -i'
.Powód, dla którego systemy Linux / Unix nie mają cofniętego usunięcia, wynika ze sposobu, w jaki większość systemów plików przechowuje swoje informacje. Meta-informacje pliku są przechowywane z przodu dysku z odniesieniami do i-węzłów na pozostałej części dysku. Zazwyczaj większość systemów plików przydziela 10 bloków do pliku w tym obszarze meta. Pierwsze 7 odnosi się do pierwszych 7 i-węzłów. Ósmy i dziewiąty to listy i-węzłów (podwójnie połączone bloki), a dziesiąte - lista list (potrójne połączone bloki). Różni się to w zależności od systemu plików (ext4, jfs, xfs itp.), Ale te listy bloków mogą zwykle dotyczyć plików o wielkości od 2 GB do kilku TB.
Ponieważ jednak wszystkie te informacje są przechowywane z przodu dysku, po usunięciu pliku nie ma sposobu, aby odwoływać się do i-węzłów na dysku, do jakich metadanych, do których należą. W przeciwieństwie do FAT32 i NTFS przechowują pewne informacje nagłówkowe w samych plikach, co ułatwia identyfikację, do którego pliku należy zestaw bloków (o ile to miejsce nie zostało jeszcze odzyskane przez nowsze pliki). W pracy z Linuksem, kiedy coś usuwasz, prawie zawsze pierwszą rzeczą jest natychmiastowe zastąpienie przez nowe dane w celu zwiększenia wydajności.
źródło
Jeśli naprawdę chcesz cofnąć operację, użyj kontroli źródła. Subversion faktycznie działa bardzo dobrze na maszynie jednego użytkownika. Używam go do kontrolowania wszystkich moich osobistych plików w moim systemie domowym. Wydaje się, że to przesada, aż do katastrofy, nieuczciwego skryptu lub literówki w wierszu poleceń.
źródło
rm -r .
Jednak to cię nie ochroni . ;)rm -r project.git
. Na szczęście, jeśli trzymasz inną wersję na zdalnym serwerze, co jest mało prawdopodobnerm -r .
. Naprawdę głupie z mojej strony.Jedną z rzeczy, które lubię dodawać do mojego .bashrc, jest funkcja kopiowania i usuwania. Coś jak:
Ale musisz nabrać nawyku pisania cprm, a nie rm.
Oczywiście musisz zachować kontrolę nad usuniętym obszarem, jeśli masz ograniczone miejsce na dysku.
źródło
"$1"
.GitFS to oparty na bezpiecznikach system plików, który automatycznie oblicza
diff
s między wersjami i umożliwia przywracanie / przeglądanie ich.Strona internetowa: https://www.presslabs.com/gitfs
Dokumenty: https://www.presslabs.com/gitfs/docs/usage/
źródło