Wykonuję wiele prac terminalowych, a dziś miałem doświadczenie w pisaniu
rm fileInQuestion.txt
Zanim dowiedziałem się, że naprawdę potrzebowałem fileInQuestion.txt. Gdybym usunął go z GUI, właśnie wyciągnąłbym go z Kosza. Chciałbym wiedzieć, czy możliwe jest przeciążenie „rm” w terminalu w taki sposób, że wysyła plik / pliki do Kosza po wyjściu.
macos
command-line
Joe
źródło
źródło
Odpowiedzi:
Nie radzę aliasing
rm
domv
jak można dostać w zwyczajurm
plików nie trwałe usunięcie, a następnie uruchomić do problemów na innych komputerach lub na podstawie innych kont użytkowników, jeśli nie na stałe usunąć.Napisałem zestaw
bash
skryptów dodać więcej narzędzi Mac OS X jak wiersz poleceń (oprócz szeregu wbudowanych w nich jakopen
,pbcopy
,pbpaste
, itd.), Co najważniejszetrash
. Moja wersjatrash
zrobi wszystkie prawidłowe rzeczy, których aliasingrm
nie zrobi (i mam nadzieję, że nic złego, ale używam go na moich komputerach Mac od kilku lat bez żadnych utraconych danych), w tym: zmiana nazwy pliku tak, jak robi to Finder jeśli plik o tej samej nazwie już istnieje, umieszczanie plików w odpowiednim folderze Kosz na woluminach zewnętrznych; ma również pewne dodatkowe zalety, takie jak: próbuje użyć AppleScript, gdy jest dostępny, aby uzyskać przyjemny dźwięk śmieci i tak dalej (ale nie wymaga go, więc możesz go używać przez SSH, gdy żaden użytkownik nie jest zalogowany), może daje rozmiar kosza we wszystkich woluminach.Możesz pobrać mój zestaw narzędzi-osx z mojej witryny lub najnowszą i najlepszą wersję z repozytorium GitHub .
Jest też poleceń opracowany przez Ali Rantakari , ale nie testowałem, że jeden siebie.
trash
źródło
trash
przez Rantakari od dłuższego czasu i naprawdę mogę za to ręczyć. Jest skompilowany w Objective-C i sprytnie wykorzystuje standardowe interfejsy API systemu plików, a jeśli zawiedzie (tzn. Użytkownik nie będzie miał wystarczających uprawnień), wywołuje Findera w celu usunięcia plików (skuteczne monitowanie o uwierzytelnienie). Możesz przeczytać więcej informacji otrash
od hasseg.org/blog .brew install trash
.trash
polecenie dostępne przez Homebrew należy do Alai Rantakari (patrzbrew
wzór ).brew remove trash
a następniebrew install trash
.Śmieci narzędzie wiersza polecenia można zainstalować poprzez
brew install trash
.Pozwala przywrócić pliki zepsute za pomocą wiersza polecenia lub Findera.
źródło
port install trash
brew install trash
, dostaję to: pastebin.com/N92cM7d8brew update
pierwszy Działa dobrze na moim końcu.Mam plik wykonywalny wywołany
rem
gdzieś w mojej$PATH
z następującą zawartością:EDYCJA: poniższy kod to poprawiona i ulepszona wersja we współpracy z Dave'em Abrahamsem :
Zachowuje się dokładnie tak samo, jak usuwanie z Findera. (Zobacz post na blogu tutaj .)
źródło
~/bin
, nadałem mu nazwętrash
, i zadziałało po raz pierwszy - umożliwiając mi usuwanie wielu plików znacznie wydajniej niż gdybym musiał je klikać w oknach Findera. Ogromna wdzięczność. Mam nadzieję, że opublikujesz więcej odpowiedzi!osascript
pojawia się, gdy plik nie istnieje nie jest piękny, więc możesz dostroić tę część.rm
jak największym stopniu pod względem wyświetlania komunikatów, gdy pliki nie istnieją, i (2) zestawia wszystko w jednoosascript
wywołanie.Znalazłem całkiem niezły kod, który można dodać na końcu profilu wsadowego użytkownika i powoduje
rm
przenoszenie plików do kosza przy każdym uruchomieniu.nano ~ / .bash_profile
źródło: http://hints.macworld.com/article.php?story=20080224175659423
źródło
local dst=${path##*/}
zlocal dst=${mindtrailingslash##*/}
i wkładając kolejną linię tuż przed tym, który mówilocal mindtrailingslash=${path%/}
. Use Używam nazwyfunction rr
. W ten sposób nie ingeruje w zwykłyrm
, ale nazwa jest podobnie krótka i szybka do wpisania (zrobiłaby to każda inna nazwa).rm()
narmt()
- W ten sposób możesz nadal używaćrm
polecenia, kiedy chcesz. Myślę o rmt w mojej głowie jakoremove to trash
: DUżyj komendy terminalowej osascript, interpretera AppleScript.
Mówi to AppleScript, aby powiedział Finderowi, aby wysłał plik do kosza.
PWD jest potrzebne do względnych ścieżek plików, ponieważ AppleScript nie radzi sobie tak dobrze.
źródło
nowoczesne podejście przy użyciu szybkiego
https://github.com/reklis/recycle
źródło
Chociaż możliwe jest
rm
przenoszenie plików do Kosza zamiast ich usuwania, odradzam przenoszenie sposobu myślenia o sieci bezpieczeństwa graficznych interfejsów użytkownika do powłoki UNIX. Istnieje wiele sposobów wyrządzenia poważnych szkód za pomocą terminala. Najlepszą radą IMHO jest po prostu zastanowienie się dwa razy przed naciśnięciem enterklawisza w oknie powłoki.Jeśli chcesz
rm
przypomnieć, że masz zamiar usunąć plik, rozważ użycie następującego aliasu (aby/bin/bash
umieścić tę linię w.bashrc
katalogu domowym):Spowoduje to
rm
potwierdzenie żądania przed próbą usunięcia każdego pliku.Jeśli masz uruchomiony TimeMachine (mam nadzieję, że tak!), Zawsze możesz pobrać plik z kopii zapasowej. W ten sposób możesz stracić najwyżej godzinę pracy. Co oczywiście jest wystarczająco złe. Pomyśl jeszcze raz przed naciśnięciem tego enterklawisza!
źródło
rm
i zawieszać się z aliasemrm -i
..bashrc
jest wykonywany tylko wtedy, gdy powłoka jest interaktywna. Sprawdź stronę podręcznika man !rm
jest bezpieczniejszy niż to, co wpędzi cię w kłopoty w innych systemach. Ponadto, jeśli używasz-f
,-i
jest całkowicie ignorowany. To powiedziawszy, to dobra siatka bezpieczeństwa. Lepszym rozwiązaniem jest nigdy nie używaćrm
na rzeczrmi
aliasu (alias rmi="rm -i"
) lub doskonałejtrash
użyteczności. Dodam też, że wszyscy powinni już dołożyć[ -f ~/.bashrc ] && source ~/.bashrc
swoje.bash_profile
.Istnieją dwa narzędzia, które można zainstalować za pośrednictwem Homebrew, które mogą to osiągnąć:
śmieci
Jest to mały program wiersza polecenia dla systemu OS X, który przenosi pliki lub foldery do kosza. USP tego polecenia umożliwia łatwe przywracanie plików. Polecenie kosza plików / folderów nie jest przydatne, jeśli nie można przywrócić plików / folderów po ich skasowaniu. Ze strony internetowej polecenia:
Aby zainstalować,
trash
uruchom następujące polecenie w terminalu:brew install trash
.rmtrash
Narzędzie wiersza polecenia, które przenosi pliki do kosza. Na stronie man polecenia:
Aby zainstalować,
rmtrash
uruchom następujące polecenie w terminalu:brew install rmtrash
.źródło
Oto dość trywialne jedno-liniowe rozwiązanie, które można dodać do swojego profilu bash. Pamiętaj, że spowoduje to nadpisanie czegoś o tej samej nazwie w koszu.
Stosowanie:
źródło
Prawidłowo koszu rzeczy (tak, to na pewno do odzyskania) jest trudniejsze niż po prostu
mv
do~/.Trash
.osx-trash może być tym, czego szukasz. ( Zastrzegający emptor - jeszcze go nie próbowałem i nie mogę ręczyć za jego bezpieczeństwo).
źródło
Sprawdź
trash-cli
. Działa na wielu platformach, nie ma dźwięku śmieci i obsługuje funkcję Put Back.Możesz go zainstalować za pomocą (wymaga Node.js ) :
Alternatywnie, jeśli nie chcesz używać Node.js, możesz
osx-trash
ręcznie zainstalować natywny plik binarny .źródło
W swoim .bashrc (lub gdziekolwiek trzymasz parametry swojej powłoki), spróbuj dodać alias, który zmienia zachowanie rm na przenoszenie rzeczy do ~ / .Trash, jak w:
Ten alias jest daleki od implementacji (przynajmniej dla mnie), ponieważ użycie mv (głównego kandydata do użycia w tym zadaniu) jest
więc posiadanie aliasu, który umieszcza część „gdzie” przed przenoszonym plikiem, może być dość szkicowe. Przyjrzę się temu i mogę uzyskać bardziej merytoryczną poradę.
EDYCJA: Właśnie próbowałem dodać następujące do mojego .bashrc i działa:
Jest znacznie bardziej prymitywny niż inne sugestie, ale unikasz instalowania nowych rzeczy.
źródło
rm
z czymkolwiek jest niebezpieczny, ponieważ może uszkodzić skrypty instalatora. Nauczyłem się tego na własnej skórze, kiedy aliasemrm
dorm -i
i miał instaluje powiesić..bashrc
służy tylko do interaktywnych powłok. Jeśli uruchomisz./install.sh
nowy proces, zostanie uruchomiony i alias nie będzie aktywny. Jeśli jednak uruchomisz. install.sh
bieżący proces, uruchomi się instalator, a alias jest aktywny. RTFM ...rm
polecenia, jak morgant powiedział, bo będziesz się komfortoworm
w rzeczywistości nie usuwanie plików, a następnie może przypadkowo usunąć coś w systemie, w którym nie ma takiego alias został dodany. Przeniesienie pliku do kosza nie jest tak proste jak tylkomv {} ~/.Trash
. Jeśli na przykład plik znajduje się na osobnym woluminie, skopiuje go do katalogu domowego i usunie oryginał.Po prostu umieściłem ten skrypt
in
~/bin/trash
, uczynił go możliwym do wyliczeniachmod +x ~/bin/trash
i dodał następujący wiersz do~/.bash_profile
Następnie można go użyć jako
źródło
Prosta funkcja może pozwolić ci na usunięcie plików poprzez przeniesienie ich do folderu .Trash użytkownika:
źródło
$*
zamiast$1
, ale wtedy uzyskasz taką samą odpowiedź jakmv "$@" ~/.Trash
. Dlaczego ludzie głosują to negatywnie, sprawdź komentarze z drugiej odpowiedzi.