कमांड लाइन से ट्रैश में फ़ाइलों को कैसे स्थानांतरित करें?


129

मैं बहुत सारे टर्मिनल का काम करता हूं, और आज मुझे टाइपिंग का अनुभव था

rm fileInQuestion.txt

यह पता लगाने से पहले कि मुझे वास्तव में fileInQuestion.txt की जरूरत है। अगर मैंने GUI में डिलीट कर दिया है, तो मैं इसे कूड़ेदान से निकाल दूंगा। मैं जानना चाहूंगा कि क्या टर्मिनल में 'rm' को इस तरह से ओवरलोड करना संभव है कि वह फ़ाइल / फ़ाइलों को बाहर जाने वाले ट्रैश पर भेजता है।


1
ऐसे प्रोग्राम हैं जो हटाए गए फ़ाइलों को पुनर्प्राप्त कर सकते हैं (जब तक कि हार्ड ड्राइव पर उन क्षेत्रों को माध्य समय में अधिलेखित नहीं किया जाता है)। जब ऐसा होता है, तो आपको उनमें से एक का उपयोग करना चाहिए ...
iconoclast

Ubuntu / debian / linux फ़ाइल को ढूंढने वाले googlers के लिए askubuntu.com/q/468721/250556 भी देखें ।
थोरसुमोनर

जवाबों:


100

मैं अलियासिंग rmकरने की सलाह नहीं दूंगा mvक्योंकि आपको rmस्थायी रूप से फ़ाइलों को हटाने की आदत नहीं हो सकती है और फिर स्थायी रूप से हटाने पर अन्य कंप्यूटरों या अन्य उपयोगकर्ता खातों के तहत मुद्दों में चला सकता है

मैं का एक सेट लिखा था bashकि (जैसे निर्मित लोगों के एक नंबर के अलावा अधिक मैक ओएस एक्स की तरह कमांड लाइन उपकरण जोड़ने लिपियों open, pbcopy, pbpasteसबसे महत्वपूर्ण बात, आदि), trash। मेरा संस्करण trashउन सभी सही कामों को rmकरेगा जो अलियासिंग नहीं करेंगे (और उम्मीद है कि कुछ भी बुरा न हो, लेकिन मैं इसे अपने मैक पर कुछ वर्षों से बिना किसी खोए डेटा के लिए उपयोग कर रहा हूं), सहित: फाइंडर जैसी फाइल का नाम बदलना यदि समान नाम वाली कोई फ़ाइल पहले से मौजूद है, तो बाह्य संस्करणों पर सही ट्रैश फ़ोल्डर में फ़ाइलें डालना; इसमें कुछ जोड़े हुए उपनाम भी हैं, जैसे: यह उपलब्ध होने पर AppleScript का उपयोग करने का प्रयास करता है ताकि आपको अच्छी ट्रैश साउंड मिले और ऐसे (लेकिन इसकी आवश्यकता नहीं है इसलिए आप अभी भी SSH के माध्यम से इसका उपयोग कर सकते हैं जब कोई उपयोगकर्ता लॉग इन नहीं करता है), यह कर सकता है आप सभी संस्करणों में ट्रैश आकार दें।

आप मेरी साइट से मेरे उपकरण-ओएक्सएक्स सूट या गिटहब रिपॉजिटरी से नवीनतम और सबसे बड़ा संस्करण ले सकते हैं ।

अली रंतकारी द्वारा विकसित एक trashकमांड भी है , लेकिन मैंने खुद उस परीक्षण नहीं किया है।


4
उत्कृष्ट उत्तर, मेरी तुलना में बहुत बेहतर!
user1256923

24
मैंने trashकाफी समय से रेंटकारी का उपयोग किया है और वास्तव में इसके लिए वाउच कर सकता हूं। यह ऑब्जेक्टिव-सी संकलित है और चतुराई से मानक फाइलसिस्टम एपीआई का उपयोग करता है और, क्या यह विफल होना चाहिए (यानी उपयोगकर्ता के पास पर्याप्त अधिकार नहीं है), यह फाइंडर को फाइलों को रद्दी करने के लिए कहता है (प्रभावी रूप से प्रमाणीकरण के लिए संकेत दे रहा है)। आप hasseg.org/blogtrash से अधिक जानकारी पढ़ सकते हैं ।
जरी कीनेलेन

26
ट्रैशेज काढ़ा पैकेज मैनेजर के माध्यम से भी उपलब्ध है। बस का उपयोग करें: brew install trash
लैंडन कुह्न

8
@ landon9720 अच्छा बिंदु। और, दूसरों के लिए स्पष्ट करने के लिए, Homebrew केtrash माध्यम से उपलब्ध कमांड अलाइ रेंटकारी ( सूत्र देखें ) है। brew
मुर्दाघर 24:13

3
मैं चलाकर brew remove trashऔर फिर त्रुटि को ठीक करने में सक्षम था brew install trash
इलायस ज़मरिया

99

कचरा कमांड लाइन टूल के माध्यम से स्थापित किया जा सकता brew install trash

यह आपको कमांड लाइन या फाइंडर के माध्यम से ट्रैश किए गए फ़ाइलों को पुनर्स्थापित करने की अनुमति देता है।


2
क्या एक सुंदर समाधान!
मिस्टर पेई

6
port install trash
मैकपोर्ट्स

हर बार जब मैं कोशिश करता हूं brew install trash, मुझे यह मिलता है: pastebin.com/N92cM7d8
बेन लेग्गीरो

@ BenC.R.Leggiero मैं उस मुद्दे को github.com/ali-rantakari/trash/issues पर ले जाऊंगा । आपने brew updateपहले किया था? मेरे अंत पर अच्छा काम करता है।
पॉल वेनजेल

@PaulWenzel हाँ, और यह ठीक अद्यतन करने के लिए लगता है। मैं एक मुद्दा पोस्ट करूँगा।
बेन लेगिएरियो

21

मेरे पास निम्नलिखित सामग्रियों के साथ remकहीं न कहीं एक निष्पादन योग्य है $PATH:

EDIT: नीचे दिए गए कोड डेव अब्राहम के सहयोग से एक संशोधित और बेहतर संस्करण है :

#!/usr/bin/env python
import os
import sys
import subprocess

if len(sys.argv) > 1:
    files = []
    for arg in sys.argv[1:]:
        if os.path.exists(arg):
            p = os.path.abspath(arg).replace('\\', '\\\\').replace('"', '\\"')
            files.append('the POSIX file "' + p + '"')
        else:
            sys.stderr.write(
                "%s: %s: No such file or directory\n" % (sys.argv[0], arg))
    if len(files) > 0:
        cmd = ['osascript', '-e',
               'tell app "Finder" to move {' + ', '.join(files) + '} to trash']
        r = subprocess.call(cmd, stdout=open(os.devnull, 'w'))
        sys.exit(r if len(files) == len(sys.argv[1:]) else 1)
else:
    sys.stderr.write(
        'usage: %s file(s)\n'
        '       move file(s) to Trash\n' % os.path.basename(sys.argv[0]))
    sys.exit(64) # matches what rm does on my system

यह ठीक उसी तरह से व्यवहार करता है जैसे कि फाइंडर से डिलीट होता है। (ब्लॉग पोस्ट यहाँ देखें )


4
इसके अधिक अंक होने चाहिए IMO। क्योंकि यह AppleScript है, यह फ़ाइल को ट्रैश में स्थानांतरित करने के लिए वास्तविक ट्रैश प्रक्रिया का उपयोग करता है, जिसका अर्थ है कि यह बिल्कुल वैसा ही व्यवहार करेगा। शर्म की बात है एक लाइनर हालांकि प्रदान नहीं किया गया था।
18x पर mxcl

2
यह उत्तर चीजों को सही तरीके से करने का एक वस्तु पाठ है। यह शेल वाइल्डकार्ड के साथ काम करता है और यह फाइंडर के माध्यम से काम करता है। यह किसी भी पहिये को मजबूत नहीं करता है, और यह जितना आसान हो सकता है। मैंने इसे अपने ~/binनाम में रखा trash, और इसने पहली बार काम किया- मुझे फाइंडर विंडो में उन पर क्लिक करने की तुलना में अधिक कुशलता से फ़ाइलों की एक पूरी तरह से कचरा करने में सक्षम किया। बहुत आभार। मुझे आशा है कि आप अधिक उत्तर पोस्ट करेंगे!
बेन कोविट्ज़

3
यह संस्करण उद्धरणों को संभालता है। यह व्यवहार को संभालने में त्रुटि को थोड़ा बदल देता है, जो ऊपर दिए गए संस्करण में बहुत ध्यान से काम नहीं करने वाला लगता है (त्रुटियों के बजाय stdout करने के लिए, कोई निकास कोड नहीं है), लेकिन त्रुटि आपको osascriptतब मिलती है जब फ़ाइल मौजूद नहीं होती है सुंदर नहीं है ताकि आप उस हिस्से को ट्यून कर सकें।
डेव अब्राहम

3
अच्छी नौकरी। यह संस्करण उन बदलावों को शामिल करता है, और (1) शेल कमांड की नकल करने की कोशिश करता है, ताकि rmफाइलों के मौजूद न होने पर संदेशों को प्रदर्शित करने के मामले में जितना संभव हो सके, और (2) एक osascriptकॉल में सब कुछ टकरा जाए ।
एंथनी स्मिथ


4

मुझे एक बहुत अच्छा कोड मिला जिसे उपयोगकर्ता के बैच प्रोफ़ाइल के अंत में जोड़ा जा सकता है और rmहर बार इसे चलाने के लिए फ़ाइलों को कूड़े में ले जाने का कारण बनता है।

नैनो ~ / .bash_profile

#... append at the end
function rm () {
  local path
  for path in "$@"; do
    # ignore any arguments
    if [[ "$path" = -* ]]; then :
    else
      # remove trailing slash
      local mindtrailingslash=${path%/}
      # remove preceding directory path
      local dst=${mindtrailingslash##*/}
      # append the time if necessary
      while [ -e ~/.Trash/"$dst" ]; do
        dst="`expr "$dst" : '\(.*\)\.[^.]*'` `date +%H-%M-%S`.`expr "$dst" : '.*\.\([^.]*\)'`"
      done
      mv "$path" ~/.Trash/"$dst"
    fi
  done
}

स्रोत: http://hints.macworld.com/article.php?story=20080224175659423


2
यह v चतुर है, लेकिन मैं अभी भी इसकी सिफारिश नहीं करूंगा। यह चतुर है क्योंकि इसका उपयोगकर्ता के लिए बैश प्रोफ़ाइल में है और इसलिए केवल उपयोगकर्ता इसे टाइप करके फ़ंक्शन के इस संस्करण को निष्पादित कर सकता है, स्क्रिप्ट जो rm पर भरोसा करते हैं, अभी भी मूल कॉल करेंगे। लेकिन मैं ऐसा करने की सिफारिश नहीं करूंगा क्योंकि उपयोगकर्ता को इस तरह से अभिनय करने की आदत होगी जब वह अन्य मशीनों पर नहीं होता है। मैं इस का उपयोग करने जा रहा हूं, लेकिन फ़ंक्शन का नाम "कचरा"
मैट पार्किंस

मैं दो बदलावों के साथ एक ही फ़ंक्शन का उपयोग कर रहा हूं: ed मैंने फ़ंक्शन में एक बग को ठीक किया, जिसके कारण टाइमस्टैम्प में किसी भी फ़ोल्डर का नाम बदला जा सकता है, यदि यह एक अनुगामी स्लैश को शामिल करने के लिए टैब-पूर्ण किया गया है: इसके लिए निम्न परिवर्तनों की आवश्यकता है: रिप्लेसिंग लाइन के local dst=${path##*/}साथ local dst=${mindtrailingslash##*/}और एक और लाइन डालने से ठीक पहले जो कहता है local mindtrailingslash=${path%/}। Name मैं नाम का उपयोग करता हूं function rr। इस तरह, यह सादे के साथ हस्तक्षेप नहीं करता है rm, लेकिन नाम समान रूप से छोटा और तेजी से टाइप करने के लिए है (कोई अन्य नाम करेगा)।
मच

का नाम बदलें rm()करने के लिए rmt()इस तरह से आप अभी भी उपयोग कर सकते हैं - rmआदेश है जब आप चाहते हैं। मुझे लगता है कि मेरे सिर में rmt है remove to trash: D
James111

4

टर्मिनल कमांड ऑस्क्रिप्‍ट, AppleScript दुभाषिया का उपयोग करें।

osascript -e "tell application \"Finder\" to delete POSIX file \"${PWD}/${InputFile}\""

यह ऐप्पलस्क्रिप्ट को खोजकर्ता को यह बताता है कि फ़ाइल को ट्रैश में भेजें।

पीडब्ल्यूडी को रिश्तेदार फ़ाइल पथों के लिए आवश्यक है, क्योंकि AppleScript उस अच्छी तरह से संभाल नहीं करता है।


1
सरल, प्रभावी और कुछ भी स्थापित करने की आवश्यकता नहीं है! अच्छा लगा।
सिल्वरवुल्फ

2

स्विफ्ट का उपयोग कर एक आधुनिक दृष्टिकोण

https://github.com/reklis/recycle

//
// main.swift
// recycle
//
// usage: recycle <files or directories to throw out>
//

import Foundation
import AppKit

var args = NSProcessInfo.processInfo().arguments
args.removeAtIndex(0) // first item in list is the program itself

var w = NSWorkspace.sharedWorkspace()
var fm = NSFileManager.defaultManager()

for arg in args {
    let path = arg.stringByStandardizingPath;
    let file = path.lastPathComponent
    let source = path.stringByDeletingLastPathComponent

    w.performFileOperation(NSWorkspaceRecycleOperation,
        source:source,
        destination: "",
        files: [file],
        tag: nil)
}

1
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
जेर्रान

रिमाइंडर के लिए @jherran धन्यवाद, मैंने
sl

यह मेरा पसंदीदा उत्तर है क्योंकि यह GUI के समान अंतर्निहित लॉजिक और API का उपयोग करता है।
जेसन आर। कोम्बस

1
अब यदि केवल एक पायथन संस्करण था जो एक सिस्टम कॉल करने के लिए 3MB बाइनरी की आवश्यकता से बचा था।
जेसन आर। कॉम्ब्स

1

हालांकि rm, उन्हें हटाने के बजाय ट्रैश में ले जाना फ़ाइल बनाना संभव है , मैं यूनिसेक्स शेल के लिए ग्राफिकल यूजर इंटरफेस के सुरक्षा जाल की मानसिकता लाने के खिलाफ सलाह दूंगा। टर्मिनल का उपयोग करके गंभीर नुकसान करने के कई तरीके हैं। सबसे अच्छी सलाह IMHO enterएक शेल विंडो में कुंजी को मारने से पहले बस दो बार सोचना है ।

यदि आप rmआपको यह याद दिलाना चाहते हैं कि आप निम्नलिखित उपनाम का उपयोग करके एक फ़ाइल को हटाने के बारे में विचार करने वाले हैं ( /bin/bashइस पंक्ति .bashrcको अपने होम डायरेक्टरी में रखें):

alias rm "rm -i"

यह प्रत्येक फ़ाइल rmको निकालने का प्रयास करने से पहले अनुरोध की पुष्टि करेगा ।

यदि आपके पास TimeMachine चल रहा है (मुझे आशा है!) तो आप हमेशा बैकअप से अपनी फ़ाइल प्राप्त कर सकते हैं। इस तरह आप अधिकतम एक घंटे के काम में खो सकते हैं। जो काफी खराब है, बिल्कुल। तो उस enterकुंजी को दबाने से पहले फिर से सोचें !


1
यह मत करो! इंस्टॉलर स्क्रिप्ट का उपयोग rmऔर उपनाम के साथ लटका हो सकता है rm -i
पुरानी प्रो

3
@OldPro: .bashrcकेवल तभी निष्पादित होता है जब शेल इंटरेक्टिव हो। आदमी पृष्ठ की जाँच करें !
मैके मेसर

मैं सुरक्षा जाल हटाने, या ऐसा करने के लिए दूसरों को सलाह देने के खिलाफ सलाह दूंगा।
the0ther

मैं naysayers के खिलाफ जाऊंगा और कहूंगा कि मैं इस ट्रिक का बहुत प्रभाव डालता हूं, लेकिन यह निश्चित रूप से केवल नुकसान के बारे में जानना चाहिए। दो उल्लेख नहीं किया गया है कि यह आपके मस्तिष्क को प्रशिक्षित rmकरता है जो इससे अधिक सुरक्षित है जो अन्य प्रणालियों पर आपकी परेशानी को प्राप्त करेगा। इसके अलावा, यदि आप उपयोग करते हैं -f, -iतो पूरी तरह से नजरअंदाज कर दिया जाता है। उस ने कहा, यह एक अच्छा सुरक्षा जाल है। एक बेहतर एक उपनाम ( ) या उत्कृष्ट उपयोगिता के rmपक्ष में कभी भी उपयोग नहीं करना है । इसके अलावा, मैं जोड़ देंगे कि हर किसी को करने चाहिए थे उनके में अब तक। rmialias rmi="rm -i"trash[ -f ~/.bashrc ] && source ~/.bashrc.bash_profile
मटका 3

1

Homebrew के माध्यम से दो उपयोगिताओं को स्थापित किया जा सकता है जो इसे पूरा कर सकते हैं:

  1. कचरा

    यह ओएस एक्स के लिए एक छोटा कमांड-लाइन प्रोग्राम है जो फ़ाइलों या फ़ोल्डरों को ट्रैश में ले जाता है। इस कमांड की यूएसपी वह है जो फाइलों को आसानी से बहाल करने में सक्षम बनाता है। यदि आप फ़ाइलों / फ़ोल्डरों को ट्रैश करने के बाद उन्हें पुनर्स्थापित नहीं कर सकते, तो फ़ाइलों / फ़ोल्डरों को रद्दी करने का कोई उपयोग नहीं है। कमांड की वेबसाइट से:

डिफ़ॉल्ट रूप से, ट्रैश फाइंडर को सिस्टम एपीआई को कॉल करने के बजाय निर्दिष्ट फ़ाइलों / फ़ोल्डरों को ट्रैश में ले जाने के लिए कहता है क्योंकि "फाइंड बैक" फीचर के कारण ऐसा होता है जो फाइंडर के माध्यम से फाइलों को ट्रैश करने पर ही काम करता है।


एफ

फाइंडर को सिस्टम एपीआई का उपयोग करने के बजाय कूड़ेदान में ले जाने के लिए कहें। यह धीमा है, लेकिन यह फाइंडर के यूआई (जैसे लगता है) का उपयोग करता है और यह सुनिश्चित करता है कि "पुट बैक" फीचर काम करता है।

-l

वर्तमान में रद्दी में आइटम सूचीबद्ध करें। यदि इस तर्क का उपयोग किया जाता है, तो किसी भी फाइल को निर्दिष्ट करने की आवश्यकता नहीं है।

-इ

कचरा खाली करो। कचरा इस कार्रवाई को करने से पहले पुष्टि के लिए पूछता है। यदि इस तर्क का उपयोग किया जाता है, तो किसी भी फाइल को निर्दिष्ट करने की आवश्यकता नहीं है।

trashटर्मिनल में निम्नलिखित स्थापित करने के लिए :

brew install trash


  1. rmtrash

    एक कमांड लाइन टूल जो फ़ाइलों को ट्रैश में ले जाता है। कमांड के मैन पेज से:

यह कमांड फाइलों को फाइल सिस्टम से पूरी तरह से हटाने के बजाय ट्रैश में ले जाती है। बहुत उपयोगी है अगर आप तय करते हैं कि आप उस फ़ाइल को चाहते हैं ...


-यू USERNAME

एक वैकल्पिक तर्क। यह फ़ाइल को निर्दिष्ट उपयोगकर्ता के ट्रैश में ले जाएगा। ध्यान दें कि इसे पूरा करने के लिए आपको पर्याप्त विशेषाधिकारों की आवश्यकता है।

rmtrashटर्मिनल में निम्नलिखित स्थापित करने के लिए :

brew install rmtrash


1

यहाँ अपने bash प्रोफ़ाइल में जोड़ने के लिए एक बहुत ही मामूली एक-पंक्ति समाधान है। ध्यान दें कि यह पहले से ही कूड़ेदान में उसी नाम के साथ कुछ अधिलेखित करेगा।

trash() { mv -fv "$@" ~/.Trash/ ; }

उपयोग:

 ~/Desktop $$$ touch a b c
 ~/Desktop $$$ ls
a b c
 ~/Desktop $$$ trash a b c
a -> /Users/ryan.tuck/.Trash/a
b -> /Users/ryan.tuck/.Trash/b
c -> /Users/ryan.tuck/.Trash/c
 ~/Desktop $$$ ls
 ~/Desktop $$$

तदनुसार संपादित किया है - इनपुट के लिए धन्यवाद!
रयान टक

0

ठीक तरह से सामान trashing (इतना है कि यह निश्चित रूप से वसूली योग्य है) बस एक से जटिल काम है mvकरने के लिए ~/.Trash

osx- कचरा वह हो सकता है जिसे आप खोज रहे हैं। ( कैवेट एम्प्टर - मैंने इसे आज़माया नहीं है, और यह कितना सुरक्षित है, इसके लिए व्रत नहीं कर सकता।)


0

जांच करें trash-cli। यह क्रॉस-प्लेटफ़ॉर्म, नो ट्रैश साउंड और पुट बैक को सपोर्ट करता है।

आप इसे स्थापित कर सकते हैं ( Node.js की आवश्यकता है ) :

$ npm install --global trash-cli

वैकल्पिक रूप से, यदि आप Node.js का उपयोग नहीं करना चाहते हैं, तो आप मूल बाइनरी को osx-trashमैन्युअल रूप से स्थापित कर सकते हैं ।


-1

अपने .bashrc (या जहाँ भी आप अपने शेल के लिए पैरामीटर रखते हैं) में, एक उपनाम जोड़ने की कोशिश करें जो rm के व्यवहार को बदलकर सामान को ~ / .Trash में बदल देता है, जैसे कि:

alias rm='move/to/.Trash'

यह उर्फ ​​अगर तुच्छ से लागू करने के लिए (कम से कम मेरे लिए) हालांकि, क्योंकि एमवी (इस नौकरी के लिए उपयोग करने के लिए प्रमुख उम्मीदवार) का उपयोग होता है

mv file where

तो एक उपनाम है जो 'जहां' भाग को फाइल के सामने रखता है, ले जाया जा सकता है, यह बहुत ही डरावना है। मैं इसे और अधिक पर्याप्त सलाह मिल सकती है।

संपादित करें: मैंने अभी अपने .bashrc में निम्नलिखित को जोड़ने की कोशिश की है, और यह काम करता है:

function trash { mv "$@" ~/.Trash ; }

यह अन्य सुझावों की तुलना में बहुत अधिक आदिम है, लेकिन आप नए सामान को स्थापित करने से बचते हैं।


3
अलियासिंग rmकुछ भी करने के लिए खतरनाक है क्योंकि यह संस्थापक स्क्रिप्ट टूट सकता है। मैंने इसे कठिन तरीके से सीखा जब मैंने अलियास rmकिया rm -iऔर हैंग स्थापित किया।
ओल्ड प्रो

@ ओल्ड प्रो, वह उपनाम है जिसका उपयोग मैं अपने सभी कंप्यूटरों में rm के लिए करता हूं, 0 दिन से, और मेरे पास इसके कारण कभी भी समस्या नहीं थी। एक उदाहरण देने के लिए देखभाल?
user1256923

3
@ ओल्डप्रो: .bashrcका उपयोग केवल इंटरैक्टिव गोले के लिए किया जाता है । यदि आप चलाते हैं तो ./install.shएक नई प्रक्रिया शुरू की जाती है और अन्य सक्रिय नहीं होगा। हालाँकि, यदि आप . install.shअपनी वर्तमान प्रक्रिया चलाते हैं तो इंस्टॉलर को निष्पादित करेगा और अन्य सक्रिय है। RTFM ...
मैके मेसर

3
तब इंस्टॉलर एक इंटरैक्टिव शेल चला रहा था और इसलिए गंभीर रूप से टूट गया था। सामान्य रूप से शेल उपनामों के खिलाफ सलाह देने के लिए एक टूटा हुआ इंस्टॉलर शायद ही पर्याप्त कारण है। YMMV
मैके मेसर

1
हालांकि, यह है अच्छी सलाह अन्य नाम नहीं करने के लिए rm, कमांड के रूप में morgant कहा, क्योंकि आप के साथ सहज हो जाएगा rmनहीं वास्तव में फ़ाइलों को हटाने और फिर गलती से किसी सिस्टम जहां ऐसा कोई अन्य नाम जोड़ दिया गया है पर कुछ को नष्ट कर सकते हैं। इसके अलावा, फ़ाइल को ट्रैश में ले जाना केवल उतना ही सरल नहीं हैmv {} ~/.Trash । यदि फ़ाइल एक अलग वॉल्यूम पर है, उदाहरण के लिए, यह फ़ाइल को आपके होम निर्देशिका में कॉपी कर देगा और मूल को हटा देगा।
जोश

-1

मैंने बस इस स्क्रिप्ट को रखा है

#!/bin/bash
application=$(basename "$0")
if [ "$#" == 0 ]; then
    echo "Usage: $application path [paths...]"
    exit 1
fi
trashdir="/Users/${USER}/.Trash"
while (( "$#" )); do
    if [ -e "$1" ]; then
        src=$(basename "$1")
        dst=$src
        while [ -e "$trashdir/$dst" ]; do
            dst=$src+`date +%H-%M-%S`
        done
        mv -f "$1" "$trashdir/$dst"
    else
        echo "$1" does not exist.
    fi
    shift
done

में ~/bin/trash, इसे प्रयोग करने योग्य बनाया chmod +x ~/bin/trash, और निम्न पंक्ति को इसमें जोड़ा~/.bash_profile

PATH=$PATH:$HOME/bin

फिर कोई इसका उपयोग कर सकता है

$ trash broken.js olddir cleanup.*

-2

एक साधारण फ़ंक्शन आपको उपयोगकर्ता के पास ले जाकर फ़ाइलों को रद्दी कर सकता है।

trash() {
   mv $1 ~/.Trash
}

? एक नकारात्मक वोट क्यों? यह मेरे विचार के रूप में अच्छी तरह से होगा ..
CousinCocaine

आपको शायद $*इसके बजाय की आवश्यकता है $1, लेकिन फिर आप उसी उत्तर के साथ समाप्त करेंगे mv "$@" ~/.Trash। लोग इसे नकारात्मक रूप से क्यों वोट देते हैं, अन्य उत्तर से टिप्पणियों की जांच करें।
kenorb

इस उपनाम के साथ सावधान रहें; यह काम करता है यदि आपके पास केवल एक विभाजन या ड्राइव है। यदि आप दूसरे वॉल्यूम या नेटवर्क शेयर पर काम कर रहे हैं, तो यह वास्तव में फ़ाइल को आपके होम डाइरेक्टरी के ट्रैश में कॉपी कर देगा , जो शायद आप करना नहीं चाहते थे!
JMK
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.