Невозможно отменить rm и сделать его функцией в Zsh

StackOverflow https://stackoverflow.com/questions/800657

  •  03-07-2019
  •  | 
  •  

Вопрос

Я безуспешно запускаю свой файл .zshrc

unalias rm  
rm() { mv $* /tmp/wastebasket }

Я добираюсь до стартапа

/Users/Masi/.zshrc:unalias:34: no such hash table element: rm

Я заметил, что проблема с хэш-таблицей была неразрешенной ошибкой в Убунту для запуска-справка.Я не уверен, относится ли эта ошибка к Mac и к rm -командовать тоже.

Как вы можете отключить уведомление при запуске?

Это было полезно?

Решение

Все остальные правы в том, что у вас просто не было псевдонима.Что еще более важно:

НЕ НАДО сделай это.Когда-нибудь вы окажетесь на другой машине POSIX, которая соответствует стандартам POSIX (удаление без "переработки"), и вы случайно удалите что-то и у вас не будет возможности отменить это.Изучайте твердую дисциплину прямо сейчас.

Другие советы

Это сообщение об ошибке вызвано тем, что вы пытаетесь отменить rm и такого псевдонима не существует.

Поскольку вы можете использовать псевдонимы более одного раза без ошибок, я бы изменил ваш код на:

alias rm=x
unalias rm  
rm() { mv $* /tmp/wastebasket }

Это гарантирует, что rm существует как псевдоним до того, как вы попытаетесь его отменить.

Я не очень знаком с zsh, но, возможно, это потому, что rm - это не псевдоним, а фактически стандартная утилита, находящаяся в /bin .

Вы могли бы просто присвоить ему псевдоним, не пытаясь сначала отменить его, переопределив любой предыдущий псевдоним.

Вам следует попытаться удалить только существующий псевдоним.Создание псевдонима, который сразу не является псевдонимным, кажется мне уродливым.Моя рекомендация состоит в том, чтобы проверить, является ли rm псевдонимом и не является ли он сглаживающим, если это так.

 case $(type rm) in
     (*alias*) unalias rm;;
 esac

Или используйте грубую силу и игнорируйте stderr с помощью

 unalias rm 2>/dev/null
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top