Как проверить, не изменяет ли псевдоним фактическую команду? [Дубликат]

Альтернатива - я архивирую всю корневую почту в некоторые файлы, а затем удаляю исходную почту.

Я создаю скрипт (вот ключевая часть) -

#!/bin/bash
if `/usr/bin/mail -e`; then
   /usr/bin/mail --print 2>&1 > /tmp/email_${date +"%Y-%m-%d_%H.%M").log
   echo ‘d *’ | /usr/bin/mail -N > /dev/null
fi
exit 0
[d2 ] Это держит вещи в порядке, и я могу следить за ней. Я могу отправить ежедневный почтовый файл на внешний идентификатор электронной почты и т. Д. ...

1
задан 21 February 2014 в 08:27

2 ответа

Предупреждение: этот метод требует, чтобы вы действительно выполняли команду, в отличие от других ответов, которые «сообщают» о состоянии оболочки.

В вашей оболочке введите

set -x

Вы увидите + ... строки по мере выполнения оболочки. Например, когда я запускаю ls, который обычно накладывается на ls --color=auto на Ubuntu, я получаю следующее:

$ ls ~
+ ls --color=auto /home/rctay
bin         ext    foo.py      Music     shared     tmp-www                tmux-client-32280.log
...

Чтобы отключить его, запустите set +x.

3
ответ дан 24 May 2018 в 11:33

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

type fn

Если команды нет этого имени, type вернется not found.

После того, как вы определили псевдоним, вы можете использовать locate для проверки возможных конфликтов:

locate '*bin/fn'

Это выглядит в любом месте системы для команды с именем fn в каталоге, имя которого указывает, что оно является исполняемым. Обратите внимание, что это не то же самое, что type, потому что locate будет искать в каталогах bin, которые не могут быть на вашем пути по умолчанию.

1
ответ дан 24 May 2018 в 11:33

Другие вопросы по тегам:

Похожие вопросы: