Как мне создать постоянный псевдоним 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.

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

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

gedit ~/.bashrc

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

alt text

Теперь выполняйте . ~/.bashrc в вашем терминале (между . и ~/.bashrc.

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

alt text

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

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

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

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

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

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

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

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

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

    alias cs='cd;ls'

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

source ~/.bashrc

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

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

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

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

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

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
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

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

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

Я написал эту полезную функцию, чтобы быстро создать новый псевдоним, а затем записать определение псевдонима в ~/.bash_aliases (если он существует) или ~/.bashrc.

совет: Обеспечить ~/.bash_aliases существует и выполняется в ~/.bashrc.

# -----------------------------------#  Create a new permanent bash alias##  @param $1 - name#  @param $2 - definition# -----------------------------------new-alias () {   if [ -z "$1" ]; then    echo "alias name:" && read NAME  else    NAME=$1  fi  if alias $NAME 2 > /dev/null > /dev/null; then    echo "alias $NAME already exists - continue [y/n]?" && read YN    case $YN in      [Yy]* ) echo "okay, let's proceed.";;      [Nn]* ) return;;      * ) echo "invalid response." && return;;    esac  fi  if [ -z "$2" ]; then    echo "alias definition:" && read DEFINTION  else    DEFINTION="$2"  fi  if [ -f ~/.bash_aliases ]; then    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bash_aliases  else    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bashrc  fi  alias $NAME="$DEFINTION"}

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

gem install aka2

использование

aka generate hello="echo helloworld" #add an aliasaka g hello="echo helloworld"  #add alias for lazy peopleaka destroy hello #remove aliasaka d hello #remove alias for lazy people

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

Я бы с удовольствием развил эту идею подробнее!

Ты хочешь alias команда в соответствии с вашим вопросом:

echo "alias wolfr='cd /home/wolf'">>./~bashrc

Теперь вы можете ввести wolfr чтобы перейти в домашний каталог wolf.

Это очень похоже и очень круто, то export команда:

echo "export ngse=/etc/nginx/sites-enabled"./~bashrc

Теперь вы можете ввести cp $ngse/my_file /destination_directory/destination_filename чтобы скопировать файл из каталога с поддержкой сайтов в пункт назначения.

Ничто из этого не сработает, пока вы не сделаете что-то подобное:

exec bash

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

Насколько я помню, bashrc имеет или имела строку, предлагающую не использовать ее напрямую для псевдонимов. То решение заключается в использовании внешнего файла (файлов). То foo и bar псевдонимы были добавлены, но для добавления baz то bashrc файл должен быть "исходным" (или просто откройте новый терминал). Пример как:

thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ cat .bash_aliases alias foo='echo foo'alias bar='echo foo'alias baz='echo baz'thufir@dur:~$ thufir@dur:~$ source .bashrc thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias baz='echo baz'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ bazbazthufir@dur:~$ 

теперь, когда baz псевдоним работает. Я только сейчас понял, что предыдущий ответ имел упомянутый эта техника, но они похоронили леде.

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

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

alias ok="ping google.com"

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

ОТВЕТHow to find out where alias (in the bash sense) is defined when running Terminal in Mac OS X - Stack Overflow

`псевдоним rm='rm -i" не решает проблему случайного использования rm

а как насчет Ubuntu в WSL, ребята?