Saya melakukan banyak pekerjaan terminal, dan hari ini memiliki pengalaman mengetik
rm fileInQuestion.txt
Sebelum mengetahui bahwa saya benar-benar membutuhkan fileInQuestion.txt. Jika saya menghapus di GUI maka saya akan mengeluarkannya dari Sampah. Saya ingin tahu apakah mungkin untuk membebani 'rm' di Terminal sedemikian rupa sehingga mengirimkan file / file ke Sampah di jalan keluar.
macos
command-line
Joe
sumber
sumber
Jawaban:
Saya tidak akan menyarankan aliasing
rm
untukmv
Anda mungkin mendapatkan dalam kebiasaanrm
tidak menghapus secara permanen file dan kemudian mengalami masalah pada komputer lain atau di bawah account pengguna lain ketika tidak menghapus secara permanen.Aku menulis satu set
bash
script yang menambahkan lebih banyak Mac OS X alat-seperti baris perintah (di samping sejumlah yang built-in sepertiopen
,pbcopy
,pbpaste
, dll), yang paling pentingtrash
. Versi sayatrash
akan melakukan semua hal yang benar yangrm
tidak akan dilakukan aliasing (dan semoga tidak ada yang buruk, tapi saya telah menggunakannya di Mac saya sendiri selama beberapa tahun sekarang tanpa kehilangan data), termasuk: mengganti nama file seperti Finder jika file dengan nama yang sama sudah ada, letakkan file di folder Sampah yang benar pada volume eksternal; ia juga memiliki beberapa fitur tambahan, seperti: mencoba menggunakan AppleScript saat tersedia sehingga Anda mendapatkan suara sampah yang bagus dan semacamnya (tetapi tidak memerlukannya sehingga Anda masih dapat menggunakannya melalui SSH ketika tidak ada pengguna yang login), ia dapat memberi Anda ukuran Sampah di semua volume.Anda dapat mengambil suite tools-osx saya dari situs saya atau versi terbaru dan terhebat dari repositori GitHub .
Ada juga sebuah
trash
perintah yang dikembangkan oleh Ali Rantakari , tapi saya belum diuji yang satu diri.sumber
trash
oleh Rantakari cukup lama dan benar-benar dapat menjaminnya. Ia dikompilasi Objective-C dan secara cerdik menggunakan API sistem file standar dan, jika gagal (mis. Pengguna tidak memiliki hak yang memadai), ia memanggil Finder untuk membuang file (secara efektif meminta otentikasi). Anda dapat membaca info lebih lanjuttrash
dari hasseg.org/blog .brew install trash
.trash
perintah yang tersedia melalui Homebrew adalah perintah Alai Rantakari (lihatbrew
formula ).brew remove trash
lalubrew install trash
.The sampah tool baris perintah dapat diinstal melalui
brew install trash
.Ini memungkinkan Anda untuk mengembalikan file yang dihancurkan melalui baris perintah atau Finder.
sumber
port install trash
brew install trash
, saya mendapatkan ini: pastebin.com/N92cM7d8brew update
pertama kali? Bekerja dengan baik pada saya.Saya memiliki executable yang dipanggil
rem
di suatu tempat di saya$PATH
dengan konten berikut:EDIT: kode di bawah ini adalah versi yang direvisi dan diperbaiki bekerja sama dengan Dave Abrahams :
Berperilaku dengan cara yang persis sama dengan menghapus dari Finder. (Lihat posting blog di sini .)
sumber
~/bin
, menamainyatrash
, dan berhasil pertama kali — memungkinkan saya untuk membuang banyak file dengan cara yang lebih efisien daripada jika saya harus mengekliknya di jendela Finder. Banyak terima kasih. Saya harap Anda akan mengirim lebih banyak jawaban!osascript
ketika file tidak ada tidak indah sehingga Anda mungkin ingin menyempurnakan bagian itu.rm
sebanyak mungkin dalam hal menampilkan pesan ketika file tidak ada, dan (2) menyusun semuanya menjadi satuosascript
panggilan.Saya menemukan kode yang cukup bagus yang dapat ditambahkan di akhir profil kumpulan pengguna dan menyebabkan
rm
untuk memindahkan file ke tempat sampah setiap kali dijalankan.nano ~ / .bash_profile
sumber: http://hints.macworld.com/article.php?story=20080224175659423
sumber
local dst=${path##*/}
denganlocal dst=${mindtrailingslash##*/}
dan menyisipkan baris lain tepat sebelum itu yang mengatakanlocal mindtrailingslash=${path%/}
. ② Saya menggunakan namanyafunction rr
. Seperti ini, itu tidak mengganggu dengan polosrm
, tetapi nama itu sama pendek dan cepat untuk mengetik (nama lain akan melakukannya).rm()
menjadirmt()
- Dengan cara ini Anda masih dapat menggunakanrm
perintah saat Anda inginkan. Saya memikirkan rmt di kepala saya sebagairemove to trash
: DGunakan perintah terminal osascript, juru bahasa AppleScript.
Ini memberitahu Apple untuk memberitahu Finder agar mengirim file ke tempat sampah.
PWD diperlukan untuk jalur file relatif, karena AppleScript tidak mengatasinya dengan baik.
sumber
pendekatan modern menggunakan swift
https://github.com/reklis/recycle
sumber
Meskipun dimungkinkan untuk
rm
memindahkan file ke Sampah alih-alih menghapusnya, saya menyarankan agar Anda tidak membawa pola pikir jaring pengaman antarmuka pengguna grafis ke UNIX shell. Ada banyak cara untuk melakukan kerusakan serius menggunakan terminal. Saran IMHO terbaik adalah dengan hanya berpikir dua kali sebelum menekan enterkunci di jendela shell.Jika Anda ingin
rm
mengingatkan Anda bahwa Anda akan menghapus file, pertimbangkan untuk menggunakan alias berikut (untuk/bin/bash
memasukkan baris ini di.bashrc
direktori home Anda):Ini akan membuat
rm
konfirmasi permintaan sebelum mencoba menghapus setiap file.Jika Anda menjalankan TimeMachine (saya harap begitu!), Anda selalu dapat memperoleh file dari cadangan. Dengan cara ini Anda bisa kehilangan paling banyak satu jam kerja. Tentu saja itu cukup buruk. Jadi pikirkan lagi sebelum menekan entertombol itu!
sumber
rm
dan menggantung dengan aliasrm -i
..bashrc
hanya dijalankan jika shell bersifat interaktif. Periksa halaman manual !rm
lebih aman daripada yang akan membuat masalah Anda pada sistem lain. Juga, jika Anda gunakan-f
,-i
sepenuhnya diabaikan. Yang mengatakan, ini adalah jaring pengaman yang baik. Sebuah satu yang lebih baik adalah untuk tidak pernah menggunakanrm
demi sebuahrmi
alias (alias rmi="rm -i"
) atau sangat baiktrash
utilitas. Juga, saya akan menambahkan bahwa setiap orang harus telah menempatkan[ -f ~/.bashrc ] && source ~/.bashrc
di mereka.bash_profile
sekarang.Ada dua utilitas yang dapat diinstal melalui Homebrew yang dapat melakukan ini:
sampah
Ini adalah program baris perintah kecil untuk OS X yang memindahkan file atau folder ke tempat sampah. USP dari perintah ini adalah yang memungkinkan untuk dengan mudah mengembalikan file. Perintah untuk membuang file / folder tidak berguna jika Anda tidak dapat mengembalikan file / folder setelah membuangnya. Dari situs web perintah:
Untuk menginstal,
trash
jalankan yang berikut di Terminal:brew install trash
.rmtrash
Alat baris perintah yang memindahkan file ke tempat sampah. Dari halaman manual perintah:
Untuk menginstal,
rmtrash
jalankan yang berikut di Terminal:brew install rmtrash
.sumber
Inilah solusi satu-baris yang cukup sepele untuk ditambahkan ke profil bash Anda. Perhatikan bahwa itu akan menimpa sesuatu dengan nama yang sama di tempat sampah.
Pemakaian:
sumber
Benar mencemari hal-hal (sehingga sudah pasti dipulihkan) adalah rumit dari sekedar
mv
untuk~/.Trash
.osx-trash mungkin yang Anda cari. ( Caveat emptor - Saya belum mencobanya, dan tidak bisa menjamin seberapa aman itu.)
sumber
Lihat
trash-cli
. Ini bekerja lintas platform, tidak ada suara sampah, dan mendukung Put Back.Anda dapat menginstalnya dengan (memerlukan Node.js ) :
Atau, jika Anda tidak ingin menggunakan Node.js, Anda dapat menginstal biner asli
osx-trash
secara manual.sumber
Di .bashrc Anda (atau di mana pun Anda menyimpan parameter untuk shell Anda), coba tambahkan alias yang mengubah perilaku rm untuk memindahkan barang ke ~ / .Trash, seperti pada:
Alias ini jika jauh dari sepele untuk diterapkan (setidaknya untuk saya), karena penggunaan mv (kandidat utama untuk digunakan untuk pekerjaan ini) adalah
jadi memiliki alias yang menempatkan bagian 'di mana' di depan file yang akan dipindahkan mungkin cukup samar. Saya akan memeriksanya dan mungkin mendapatkan saran yang lebih substansial.
EDIT: Saya baru saja mencoba menambahkan yang berikut ini ke .bashrc saya, dan berfungsi:
Ini jauh lebih primitif daripada saran lain, tetapi Anda menghindari menginstal barang baru.
sumber
rm
ke apa pun berbahaya karena dapat merusak skrip penginstal. Saya belajar dengan cara yang sulit ketika saya aliasrm
untukrm -i
dan memiliki menginstal menggantung..bashrc
hanya digunakan untuk shell interaktif . Jika Anda menjalankan./install.sh
proses baru dimulai dan alias tidak akan aktif. Namun, jika Anda menjalankan. install.sh
proses Anda saat ini akan menjalankan installer dan alias aktif. RTFM ...rm
perintah, seperti morgant kata, karena Anda akan menjadi nyaman denganrm
tidak benar-benar menghapus file dan kemudian mungkin tidak sengaja menghapus sesuatu pada sistem di mana tidak ada alias seperti telah ditambahkan. Juga, memindahkan file ke tempat sampah tidak sesederhana hanyamv {} ~/.Trash
. Jika file berada pada volume yang terpisah, misalnya, ini akan menyalin file ke direktori home Anda dan menghapus yang asli.Saya hanya menempatkan skrip ini
di
~/bin/trash
, membuatnya excutablechmod +x ~/bin/trash
, dan menambahkan baris berikut ke~/.bash_profile
Maka seseorang dapat menggunakannya sebagai
sumber
Fungsi sederhana bisa membuat Anda membuang file dengan memindahkannya ke folder .Trash pengguna:
sumber
$*
alih-alih$1
, tetapi kemudian Anda akan berakhir dengan jawaban yang sama denganmv "$@" ~/.Trash
. Mengapa orang memberikan suara negatif, periksa komentar dari jawaban lainnya.