Заменить ack ack-grep на предварительно созданном VM?

Я использую предварительно созданную Ubuntu VM и там, кажется, ack команда уже установила, но я хочу установить ack-grep и переименуйте это к ack вместо этого.

Как я могу удалить это ack команда? Это ack команда является каким-то преобразователем Кандзи. Я хочу удалить его полностью, если это возможно.

screenshot showing ack and ack-grep as separate executables in <code>/usr/bin</code>, with different sizes, neither of which is a symbolic link

Сделайте я просто переименовываю файлы в /usr/bin и это будет просто работать?

1
задан 4 October 2014 в 16:04

2 ответа

У Вас есть несколько опций, в зависимости от Ваших определенных потребностей и предпочтений.

В этой ситуации лучше не вручную удалить и переименовать эти файлы, потому что:

  • Чему-то, возможно, понадобились бы они.

  • Ваши изменения могли бы быть частично или полностью отменены при обновлении системы.

    (Вы могли сказать диспетчеру пакетов не делать так, но это вряд ли будет самым легким способом достигнуть Вашей цели.)

  • И, согласовывающиеся с первыми двумя соображениями, Вы выразили предпочтение для завершенного удаления существующего ack, какое просто удаление, которое не будет обычно делать один файл.

Таким образом, лучше проверить если /usr/bin/ack кажется необходимым и, в противном случае удалите его с диспетчером пакетов. Но Вы, вероятно, не должны удалять его вообще, как детализировано ниже.

Поиск Пакетов Ubuntu показывает это в Ubuntu 12.04, /usr/bin/ack обеспечивается ack пакет.

Удаление ack, после проверки безопасно сделать так.

Вы не должны удалять ack: если Вы используете псевдоним путь или вставляете символьную ссылку /usr/local/bin, или в Вашем частном ~/bin, это будет выполнено даже если /usr/bin/ack остается установленным. Таким образом это является на самом деле дополнительным.

Выполненный apt-get -s remove ack моделировать демонтаж ack. Это покажет то, от чего другие пакеты, если таковые имеются, зависят достаточно сильно ack то, что они были бы удалены наряду с ним.

Не стесняйтесь разворачивать свой вопрос с выводом этого apt-get -s команда, если Вы хотите справку или подтверждение в определении при удалении ack также удалил бы что-либо возможно важное.

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

sudo apt-get remove ack

Таким образом, для реальной вещи опустить -s (и выполненный это как корень с sudo).


Псевдоним путь

Как Brian Z предлагает, делая псевдоним оболочки так ack выполнения ack-grep может быть достаточным для Ваших потребностей. Это будет:

  • влияйте просто на свою учетную запись пользователя.
  • не обычно работают в сценариях (поэтому, если причина Вам нужен он, чтобы быть ack Вы, имеют сценарии тот вызов ack, это не будет достаточно).
  • не работают на команды как sudo ack ....

Но это быстро, легко, просто, и часто достаточно.

Если Вы хотите создать что-то, что может использоваться всеми способами "установленный" ack команда может использоваться, можно пропустить следующий раздел (и продолжить в "Символьных ссылках, хороши...").

Создание псевдонима к ack-grep названный ack

Если Вы решаете, что псевдоним оболочки - то, что Вы хотите, лучший способ сделать, он должен, вероятно, вставить его .bash_aliases в Вашей домашней папке.

Тот файл, вероятно, еще не существует, но если он будет существовать при запуске оболочки (например, при открытии нового Окна терминала или вкладки) то он будет использоваться. Это вызвано тем, что .bashrc выполнения, когда оболочка удара запускается, и тот файл проверки если .bash_aliases существует и выполняет то, что находится в нем, если это делает.

Выполненный gedit ~/.bash_aliases. В текстовом редакторе записать alias ack='ack-grep' и сохраните файл. Псевдоним должен работать на все оболочки, запущенные после этого.


Символьные ссылки хороши для выполнения команд под альтернативными названиями.

Если бы Вы не хотите делать псевдоним (или выполнение так не дало бы Вам, в чем Вы нуждаетесь), символьная ссылка, вероятно, в чем Вы нуждаетесь.

Когда Вы создаете Ваш ack команда, для него лучше быть символьной ссылкой на ack-grep вместо копии, потому что затем, когда ack-grep изменения (например, если это обновлено до более новой версии), ack выполнит новую версию автоматически.

Программы мест могут пойти

Вы могли поместить новое ack в /usr/bin, но я рекомендую делать его /usr/local/bin/ack вместо этого. /usr/local/bin уже находится, вероятно, в Вашей переменной окружения PATH, перед /usr/bin. Например, на моей машине:

$ echo $PATH
/home/ek/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

В Ubuntu, /usr/bin одно из нормальных мест для диспетчера пакетов системы для помещения исполняемых файлов. /usr/local/bin одно из нормальных мест для Вас для помещения программного обеспечения, которое Вы устанавливаете сами. Это не совсем, что ситуация, в этом, Вы просто делаете ссылку для выполнения программного обеспечения, это уже установлено. Но это подобно, и что еще более важно, наполните Вас вставленный /usr/local/bin гораздо менее вероятно когда-либо для конфликта с чем-либо созданным или управляемым диспетчером пакетов Ubuntu, чем если бы Вы вставляете его /usr/bin.

Или Вы могли бы предпочесть создавать символьную ссылку в своей домашней папке. Если Вы сделаете это, то это будет работать на Вашу учетную запись пользователя и не влиять на любых других. Если Вы предпочитаете это, пропустите вниз к "Альтернативе: Сделайте Символьную ссылку в ~/bin."


Создание символьной ссылки в /usr/local/bin

Создать символьную ссылку /usr/local/bin/ack, указанный /usr/bin/ack-grep, выполненный:

cd /usr/local/bin
sudo ln -s /usr/bin/ack-grep ack

Если cd управляйте сбоями с bash: cd: /usr/local/bin: No such file or directory, сделайте каталог с sudo mkdir /usr/local/bin и попробуйте еще раз. (Даже если каталог еще не существует, это может быть в Вашем PATH переменная среды, в этом случае Ваш ack команда будет выполнена.)

Если /usr/local/bin Не находится в $PATH

Проверять если программы в /usr/local/bin (включая символьные ссылки на программы в другом месте), будет выполнен - или поиск и устранение неисправностей, если они не будут выполнены - Вы видите если /usr/local/bin находится в Вашем PATH переменная среды. Чтобы сделать это, работать echo $PATH.

Это, вероятно, там, но в противном случае можно отредактировать PATH= строка в /etc/environment и добавьте его. Можно создать резервную копию того файла с sudo cp /etc/environment /etc/environment.old и отредактируйте его с gksudo gedit /etc/environment. Затем выйдите из системы и въезжайте задним ходом.

Я предлагаю переменные изменяющей среды в масштабе всей системы потому что вставление символьной ссылки /usr/local/bin относится к целой системе. И я предлагаю этот путь, потому что Вы, кажется, выражаете предпочтение изменения этих команд для Вашей целой системы. Я не рекомендовал бы изменения в масштабе всей системы в переменных среды, если бы Вы вставляли символьную ссылку ~/bin. Посмотрите ниже, если Вы интересуетесь той опцией.


Альтернатива: сделайте символьную ссылку в ~/bin

В Ubuntu, значении по умолчанию .profile файл, помещенный в домашнюю папку каждого пользователя, содержит:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Можно создать ~/bin (~ означает "Ваш корневой каталог", и можно использовать ту стенографию, когда Вы вводите команды в терминале), и выйдите из системы и въезжайте задним ходом, и это будет добавлено к $PATH. Исполняемые файлы (и символьные ссылки на них) помещенный в ~/bin будет затем работать.

Сделать Ваше частное bin и помещенный ack символьная ссылка на /usr/bin/ack-grep, выполненный:

mkdir ~/bin
cd ~/bin
ln -s /usr/bin/ack-grep ack

На Вашей следующей сессии входа в систему (и все они после этого), можно работать ack для ack-grep.

3
ответ дан 10 November 2019 в 18:43

Более безопасная опция, вместо того, чтобы переименовать файлы, состоит в том, чтобы установить псевдоним. Это, вероятно, означает, что Вы захотите работать sudo gedit ~/.bashrc для редактирования конфигурационного файла оболочки. Добавьте строку alias ack="ack-grep" до конца файла и сохраните его. Можно выполнить ту же самую строку как команда, чтобы сразу установить псевдоним или ожидать, пока Вы не перезапускаете свою систему. См. , Как я создаю постоянный псевдоним Bash? для большего количества информации

Не уверенный, если это будет работать с ack установленный или нет. Если Вы уверены, что не нуждаетесь в нем, просто удаляете его как любой другой пакет: sudo apt-get remove ack.

1
ответ дан 10 November 2019 в 18:43

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

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