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

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

471
задан 13 April 2017 в 15:24

11 ответов

Для создания псевдонима постоянно добавьте псевдоним в ваш .bashrc файл

gedit ~/.bashrc

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

alt text

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

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

alt text

496
ответ дан 13 April 2017 в 15:24

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

thufir@dur:~$ 
thufir@dur:~$ alias
alias 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:~$ alias
alias 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:~$ baz
baz
thufir@dur:~$ 

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

0
ответ дан 13 April 2017 в 15:24

если вы используете 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 автоматически загрузит ваш точечный файл, так что вам это не нужно. Проверить это.

5
ответ дан 13 April 2017 в 15:24

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

TIP: Убедитесь, что ~/.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"
}
6
ответ дан 13 April 2017 в 15:24

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

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

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

    псевдоним ll='ls -l'.
    псевдоним rm='rm -i'.
    

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

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

    если [ -f ~/.bash_aliases ]; затем
    . ~/.bash_aliases
    
    

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

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

    псевдоним cs='cd;ls'.
    
286
ответ дан 13 April 2017 в 15:24

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

source ~/.bashrc

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

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

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

Здесь говорится, что если файл ~ / .bash_aliases существует, запустите его.

21
ответ дан 13 April 2017 в 15:24

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

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

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

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

source /home/bakhtiyor/.bashrc

или

. /home/bakhtiyor/.bashrc
17
ответ дан 13 April 2017 в 15:24

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

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

alias ok="ping google.com"

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

0
ответ дан 13 April 2017 в 15:24
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

דאָס איז אַ ביישפּיל איך איז געווען קוקן פֿאַר, אַ וועג צו דרוקן עטלעכע אותיות אין דער וואָקזאַל ("וופּס") צו רימאָוטלי אַרייַנלאָגירן צו אַ סערווער און געבן X11 פאָרווערדינג אַזוי איך קענען לויפן גוי אַפּפּס ווי "געדיט" איבער די נעץ.

וועלכער די באַפֿעל / אַליאַסעד באַפֿעל, דעם וועג מיט די ווידערקאָל ויסזאָגונג, ציטאַט מאַרקס, און דער סימבאָל פֿאַר צוגעבן די רעזולטאַט פון אַ באַפֿעל צו אַ טעקע (>>) אַרבעט פֿאַר מיר. נאָר פאַרבייַטן מיין באַפֿעל פֿאַר די אַליאַס באַפֿעל איר דאַרפֿן און אַרייַן עס אין דיין וואָקזאַל.

9
ответ дан 13 April 2017 в 15:24

Я создал специальный инструмент командной строки для того же самого, используя Python Посмотрите код здесь

0
ответ дан 5 January 2021 в 23:57

Я бы хотел развить эту идею!

] Вы хотите псевдоним команды в соответствии с вашим вопросом:

echo "alias wolfr = 'cd /home/wolf'">>./~bashrc[1215estiveТеперь вы можете ввести wolfr , чтобы перейти в домашний каталог wolf.

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

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

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

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

exec bash

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

3
ответ дан 5 January 2021 в 23:57

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

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