Создание псевдонима для корзины
Я новичок. Я установил псевдоним в файле.bashrc следующим образом.
alias myrm='mv /home/user/Trash/*'
Цель состоит в том, чтобы при использовании комментария myrm, например, $myrm foo, файл "foo" необходимо было переместить в папку "Корзина", которая находится в моей домашней папке (/ home / user / Trash).
Тогда я сделал
$source ~/.bashrc
После этого, когда я пытаюсь использовать myrm, набрав $myrm foo, я получаю следующее сообщение об ошибке.
mv: not stat '/home/user/Trash/*': нет такого файла или каталога
Как эта проблема может быть решена?
6 ответов
Прежде всего, вы не используете $ когда вы называете псевдоним. $ предназначен для расширения переменной (и нескольких других вещей, которые не имеют особого отношения к этому вопросу).
Но, во-вторых, псевдонимы работают немного как переменные, в том смысле, что они (рискуя немного упростить) просто расширяются до нескольких слов. Вы говорите, что хотите сделать myrm foo, но это расширилось бы до mv /home/user/Trash/* foo, который не имеет смысла.
Простым решением было бы определить псевдоним, который будет mv -t /home/user/Trash, который будет работать, потому что mv поддерживает
Файл mv -t destination_dir …синтаксис как альтернатива
mv file … destination_dirсинтаксис.
Но вы можете получить большую гибкость с помощью функции оболочки. Они сочетают гибкость сценариев с (низкими) издержками псевдонимов. Например,
myrm() { mv "$@" /home/user/Trash; }
вызовет myrm foo быть интерпретированным как mv foo /home/user/Trash,
Вероятно, более простое решение - использовать trash-cli пакет. Тогда вы можете просто сделать alias myrm=trash а потом trash foo выполнить то, что вы хотите. За исключением того, что Foo теперь пойдет в ~/. local/share/Trash
Проблема в том, mv ты должен использовать это как mv source destination,
С твоим псевдонимом это наоборот mv destination source,
Также вам не нужна звездочка * в конце, потому что это работает с местом назначения как папка. Убедитесь, что ваша папка /home/user/Trash существует с mkdir /home/user/Trash,
Чтобы решить вашу идею псевдонима, я бы порекомендовал вам взглянуть на следующие вопросы:
Это приведет к этому решению; пожалуйста, добавьте это к вашему ~/.bashrc и сделать source ~/.bashrc после добавления:
myrm() {
/bin/mv "$@" /home/user/Trash/
}
Как указано в комментариях, mv синтаксис другой вы можете сделать:
myrm(){ mv "$@" $HOME/Trash/; }
который может обрабатывать несколько файлов в качестве аргумента
Однако этот простой псевдоним не обрабатывает конфликты имен файлов, а также метаданные (откуда они были удалены, ...).
Для более полного решения, вы можете просто использовать пакет trash-cli что довольно хорошо и поставляется с несколькими инструментами (например, пустые файлы, которые находятся в корзине в течение X дней, ...).
Есть еще один полезный псевдоним, который вы могли бы рассмотреть, если у вас есть gvfs-bin пакет установлен на вашем хосте:
alias myrm='gvfs-trash`
Он перемещает ваши файлы в корзину. Кроме того, правильные файлы записываются в вашу папку $TRASH (например, info/, files/...). Так что вам не нужно беспокоиться об этом. Пример: заходим в корзину и нажимаем restore будет отлично работать.
Это избыточно с trash-cli но на вашем хосте может быть установлен только один из них, поэтому, если у вас нет trash-cli, попробуйте.
Вам нужно сделать
mv "$1" /home/user/Trash/ или же mv -t /home/user/Trash/ вместо mv /home/user/Trash/ Manpage здесь