Вопрос Как создать постоянный псевдоним Bash?


Я хотел бы создать псевдоним для rm чтобы получить сообщение подтверждения после выполнения этой команды. Поэтому я создаю псевдоним, подобный этому alias rm='rm -i', Но насколько я знаю, это временный псевдоним, и он живет, пока вы не закроете терминал.

Как объясняется Вот чтобы сохранить псевдоним постоянно, мне нужно выполнить ~/.bash_aliases или ~/.bashrc команды в терминале и добавьте мой псевдоним там. Но когда я выполняю ~/.bashrc Я получаю следующее сообщение об ошибке:

bash: /home/bakhtiyor/.bashrc: Permission denied

Когда я бегу ~/.bash_aliases Я получаю следующее сообщение об ошибке:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

Какова фактическая проблема и как я могу ее решить?


308
2017-12-15 07:54


происхождения


Как вы создали псевдоним? - karthick87
@ Karthick87. Я обновил свой вопрос. - Bakhtiyor
ОТВЕТ - stackoverflow.com/a/2622711/1487102 - neaumusic


ответы:


Чтобы создать псевдоним, постоянно добавляйте псевдоним к своему .bashrc файл

gedit ~/.bashrc

А затем добавьте свой псевдоним внизу.

alt text

Теперь выполните . ~/.bashrc в вашем терминале (должно быть пространство между . а также ~/.bashrc,

Теперь вы можете проверить свой псевдоним.

alt text


342
2017-12-15 08:24



@ karthick87 вы написали «Теперь выполняем. ~ / .bashrc в вашем терминале (должен быть пробел между. и ~ / .bashrc.». Зачем нужен этот шаг? - Geek
что делает первый «.» делай. ~ / .bashrc? - Zen
@Geek @Zen «Выполнить» не был правильным термином. Точка эквивалентна source, С . ~/.bashrc, вы источник вашего bash. Выполнение файла запустит дочерний процесс, выполнит команды в этом процессе, а затем вернется. Все, что сделано в дочернем процессе, не влияет на родительский процесс (bash, из которого вы выполнили). Вместо этого поиск (с точкой) действует точно так же, как если бы вы написали содержимое файла в терминале. Это то, что вы хотите. .bashrc вызывается каждый раз, когда вы начинаете bash. Если вы вносите изменения, они не будут применяться до тех пор, пока вы не начнете новый bash или источник вручную. - Gauthier
@ButtleButkus - возможно, захочет изменить только предпочтения пользователя, а не всю систему. В Ubuntu общесистемный .bashrc-файл - /etc/bash.bashrc - WillC
Это работает только частично. Мне нужно выполнить . ~/.bashrc каждый раз, когда я открываю терминал. Использование OS X EI Captian (v10.11.6). - Shubham A.


Существует много способов создания псевдонима. Наиболее часто используемые способы:

  1. Добавьте псевдонимы прямо в свой ~/.bashrc файл

    Например: добавьте эту строку в ~/.bashrc файл

    alias ll='ls -l'
    alias rm='rm -i'
    

    В следующий раз (после того, как вы вышли / вошли или сделали . ~/.bashrc) при вводе rm  rm -i команда будет выполнена.

  2. Второй метод позволяет вам создать отдельный файл псевдонимов, поэтому вам не придется их вводить .bashrc, но в файл по вашему выбору. Сначала отредактируйте ~/.bashrc файл и добавить или раскомментировать следующие строки, если он еще не

    if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
    fi
    

    Сохраните его и закройте файл. После этого все, что вам нужно сделать, это создать ~/.bash_aliases файл и добавьте туда свои псевдонимы с тем же форматом, который указан в первом методе.

    Содержание моего ~/.bash_aliases файл:

    alias cs='cd;ls'
    

205
2017-12-15 08:21



+1 для использования ~/.bash_aliases, - ændrük
Да, использование другого файла для псевдонимов намного чище, также переносится между дистрибутивами. Я использую этот файл, потому что некоторых псевдонимов недостаточно и нужна функция. Таким образом, это намного более чисто, если вместо этого вы используете файл для этой задачи. У меня есть другой псевдоним -> alias aliases="xdg-open ~/.bash_aliases && source ~/.bash_aliases", таким образом, псевдоним стал полезным при сохранении, и если вы допустите ошибку, он объявит вам. - erm3nda
как-то после того, как я добавил псевдоним, такой как alias ls='ls -althr', некоторые из указанных флагов не вступят в силу, в этом случае флаг -t не вступил в силу. ты знаешь почему? - Sajuuk
По умолчанию ~/.bashrc содержит включение для ~/.bash_aliases, нет необходимости редактировать его. - Jaakko
Не всегда ~ / .bashrc содержит включение для ~ / .bash_aliases, как это было в моем случае с терминалом Ubuntu Windows 10, это решение получилось очень удобным. - Jose


Проблема в том, что вы пытаетесь выполнить не исполняемый файл: Вы можете проверить это с помощью:

ls -la ~/.bashrc
-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc

Обратите внимание, что в первом столбце (разрешения файла) нет буквы «x - executable».

Файлы профилей не являются исполняемыми файлами, вместо их выполнения вы загружаете их:

source /home/bakhtiyor/.bashrc

или

. /home/bakhtiyor/.bashrc

17
2017-12-15 10:24





Мне кажется, что ваша единственная проблема - просто пытаться выполнить .bashrc, когда он не является исполняемым. Но это не правильный способ сделать это; всякий раз, когда вы вносите изменения в этот файл, вы должны «выполнить» его командой:

source ~/.bashrc

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

Я предполагаю, что вторая ошибка была связана с тем, что bash_aliases не существует. Это не требуется, просто рекомендуется сохранить ваши изменения отдельно и организовано. Он используется только в том случае, если он существует, и вы можете проверить его в .bashrc:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Это говорит о том, что если файл ~ / .bash_aliases существует, запустите его.


15
2018-01-16 20:29



~/.bash_aliases лучше. askubuntu.com/questions/194111/... - tomByrer
используя source команда заставила мои псевдонимы работать. +1 - dspacejs
Только для полноты: начальная точка на линии . ~/.bash_aliases имеет то же значение, что и встроенная команда оболочки source, Я считаю, что это правильный ответ, объясняя, что происходит. - Melebius


echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

Это пример, который я искал, способ набрать несколько букв на терминале («vps») для удаленного входа на сервер и включить пересылку X11, чтобы я мог запускать GUI-приложения, такие как «gedit» по сети.

Независимо от команды command / aliased, этот способ с помощью оператора echo, кавычек и символа для добавления вывода команды в файл (>>) работает для меня. Просто замените мою команду на команду alias, которая вам нужна, и введите ее в свой терминал.


8
2018-06-15 11:39



Цитата здесь немного сложная. В этом примере использование двойных кавычек является непроблематичным, но если текст в кавычках содержит знаки доллара, обратные косые черты и т. Д., Вам нужно будет понять, как оболочка обрабатывает их внутри двойных кавычек. Вы можете переключиться на одиночные кавычки снаружи и двойные кавычки внутри, но вам все равно нужно понять, как Bash обрабатывает двойные кавычки в определении псевдонима. - tripleee


Я сделал эту небольшую функцию для быстрого написания нового псевдонима для .bashrc

##------------------------------------ ##
 #           -- new-alias --           #
 # creates new alias & writes to file  #
 #          $1 = alias new             #
 #          $2 = alias definition      #
##------------------------------------ ##
new-alias () { 
  if [ -z "$1" ]; then
    echo "alias name:"
    read NAME
  else
    NAME=$1
  fi

  if [ -z "$2" ]; then
    echo "alias definition:"
    read DEFINTION
  else
    if [ "$2" = "-cd" ]; then
      DEFINTION='cd '
    else
      DEFINTION=$2
    fi
  fi

  echo "alias $NAME='$DEFINTION'" >> ~/.bashrc
  . ~/.bashrc
}

5
2017-12-17 20:37



Хорошая идея, но неосторожное использование этой функции может привести к сбою .bashrc с несколькими экземплярами alias команда. Ваша функция, безусловно, должна выполнить некоторые проверки, чтобы избежать такого захламления. - Troublemaker-DV


если вы используете ruby, вы можете установить aka с помощью rubygem.

gem install aka2

Применение

aka generate hello="echo helloworld" #add an alias
aka g hello="echo helloworld"  #add alias for lazy people

aka destroy hello #remove alias
aka d hello #remove alias for lazy people

rubygem автоматически установит ваш точечный файл, чтобы вам не нужно было. Проверьте это.


4
2018-01-21 14:14





Я бы предложил использовать /etc/bash.bashrc

Вы можете добавить строку в конец этого файла.

alias ok="ping google.com"

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


0
2017-08-09 03:36



«Я бы посоветовал ..» и почему ты предлагаешь это? - muru
Вам не следует возиться с системным файлом, если вы специально не хотите устанавливать общесистемные настройки для всех пользователей. В личной системе разница является незначительной, но тогда возиться с системными файлами сложнее в будущем, поэтому вы, вероятно, должны предпочесть свои личные файлы точек для личных предпочтений (и это упрощает копирование настроек в другом месте в будущее тоже). - tripleee
Перезагружать? Это действительно страшный совет, НЕ делай этого, особенно когда source /etc/bash.bashrc делает все, что вам нужно в этом примере. Но следует использовать ~/.bashrc или ~/.bash_aliases вместо - Xen2050
@ Xen2050, я предложил перезагрузить, чтобы показать, что он работает после перезагрузки / переустановки. Кстати, даже другое чистое окно терминала также будет работать. - Fahad Ahammed
Вы можете перейти на новое ядро ​​без перезагрузки, это не старые окна ;-) - Xen2050