Déplacer le fichier vers la corbeille sur Snow Leopard depuis le terminal

13

Snow Leopard permet aux utilisateurs de "remettre" les fichiers qui ont été déplacés vers la corbeille à partir du Finder. Cependant, lorsque je le fais à mv <file> ~/.Trashpartir de la ligne de commande, je n'obtiens pas l'option "Remettre".

Existe-t-il une commande native dans Snow Leopard qui déplace un fichier dans la corbeille tout en me permettant de nous "remettre"?

matpie
la source

Réponses:

2

Lorsque vous déplacez un fichier dans la corbeille, OS X met à jour le .DS_Storefichier à l'intérieur ~/.Trashavec les informations "Remettre". (Voir cette question pour plus de détails )

Pour mettre à jour cela, vous devez également mettre à jour le .DS_Storefichier lorsque vous déplacez un fichier vers la corbeille dans le terminal.

Josh K
la source
Merci. Pas ce que j'espérais, mais c'est la vérité.
matpie
9

Je recommande d'installer la ruby ​​gem osx-trash .

Comment?

sudo gem install osx-trash

Usage?

Usage: trash [OPTIONS] <file> [<file> ...]
       trash [-e | --empty]
       trash [-l | --list]
Specific options:
    -e, --empty                      Empty the trash
    -l, --list                       List items in the trash
    -h, --help                       Show this message
    -v, --version                    Show version

Manipulate to the Finder's trash.
Hobodave
la source
2
Agréable! Cependant, lors de la communication avec le Finder, la corbeille des fichiers avec un caractère générique joue le son de la corbeille pour chaque fichier.
Jari Keinänen
1
Je ne pense pas que cela fonctionne toujours. D'après la documentation: osx-trash nécessite Mac OS X 10.5, Leopard. Je l'ai essayé et tout ce que je reçois estbash: trash: command not found
yourfriendzak
Ne fonctionne pas sur OS X 10.9 a posé une nouvelle question sur la façon de le réparer ici superuser.com/questions/694433/…
simbo1905
2

Dans le SDK MacOSX, il y a les fonctions FSPathMoveObjectToTrashSyncet associées. Il devrait être facile d'écrire un script Python (ou autre) autour de lui.

Edit : Je l'ai juste codé. Peut être trouvé ici: rm-trash.py .

Albert
la source
FYI - FSPathMoveObjectToTrashSync est obsolète en 10.8 et selon le document, vous devrez utiliser trashItemAtURL: resultItemURL: error: à la place.
Lester Cheung
2

Vous voulez le programme rmtrash .

Vous pouvez l'utiliser pour ajouter des éléments à la corbeille comme si cela avait été fait dans le Finder.

Edit: je viens d'essayer d'utiliser rmtrash pour supprimer et récupérer. Cela fonctionne exactement comme la suppression du Finder. Les fichiers apparaissent dans la corbeille, peuvent être glissés et vidés exactement de la même manière. Je l'utilise depuis 2006 environ.

sal
la source
D'après le code de rmtrash, il semble qu'il soit juste équivalent à mv file ~/.Trash/. Êtes-vous sûr de pouvoir récupérer les fichiers à partir de cet outil?
Albert
0

Après avoir examiné les alternatives, j'ai découvert que:

  • Le programme rmtrash déplace les fichiers vers le répertoire de la corbeille sans utiliser l'API système, de sorte que le fichier .DS_Store ne sera pas mis à jour . De plus, ne déclenche pas le son de recyclage.
  • Le script python invoque une méthode obsolète sur Mountain Lion qui ne déclenche pas non plus le son de recyclage.
  • Le script ruby ​​fonctionne, mais il est lent (comme celui de python).

J'ai donc écrit ma propre commande de corbeille implémentée dans le langage de programmation Nimrod, donc c'est rapide et cela déclenche le son de la corbeille en arrière-plan. Cela signifie que la saisie de la commande et son exécution se terminent immédiatement car il n'est pas nécessaire d'attendre la lecture du son. Le con est que vous devez compiler nimrod puis ce programme (pas de binaire désolé!).

PS: Pour être honnête, la meilleure implémentation serait celle de rmtrash en utilisant l'API officielle que j'utilise de Nimrod, qui est tout simplement objective-c .

Grzegorz Adam Hankiewicz
la source
0

Découvrez trash-cli. Il fonctionne sur plusieurs plates-formes, sans son poubelle et prend en charge Put Back.

Vous pouvez l'installer avec (nécessite Node.js ) :

$ npm install --global trash-cli

Alternativement, si vous ne souhaitez pas utiliser Node.js, vous pouvez installer le binaire natif osx-trashmanuellement.

Sindre Sorhus
la source
-1

J'ai eu le même problème aujourd'hui et j'ai également vérifié le programme rmtrash donné ci-dessus. Malheureusement, toutes les solutions vues jusqu'ici déplacent les fichiers vers le .Trash du répertoire personnel.

Le Finder d'autre part le déplace vers différents dossiers -Trash, en fonction du point de montage du système de fichiers du fichier.

Donc, la solution la plus simple que je peux trouver (créée le 10.5.8. Pour être testée sur les nouvelles versions d'OS X) est la suivante:

osascript -e 'tell application "Finder" to delete POSIX file "'FULL FILENAME HERE'"'

Voici le script shell que j'ai créé pour cela:

#!/bin/bash
declare -a files
for f in "$@" ; do
    if [ -r "$f" ] ; then
        case "$f" in
        /*) ;;
        *) f="$( pwd )/$f" ;;
        esac
        files=("${files[@]}" "$f")
    else
        echo "Can't find '$f'" >&2
    fi
done
if [ ${#files[@]} -gt 0 ] ; then
    osascript -e '
    on run argv
        repeat with f in argv
            set x to (POSIX file f) as string
            tell application "Finder" to delete x
        end
    end
    ' "${files[@]}" > /dev/null
fi
Skeeve
la source