このコマンドの実行後に確認メッセージを表示するために、rm
コマンドのエイリアスを作成したいと思います。したがって、このalias rm='rm -i'
のようなエイリアスを作成しています。しかし、私が知る限り、これは一時的なエイリアスであり、ターミナルを閉じるまで存続します。
説明されているように here エイリアスを永続的に保存するには、ターミナルで~/.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
そして、下部にエイリアスを追加します。
ターミナルで. ~/.bashrc
を実行します(.
と~/.bashrc
の間にスペースが必要です。
これで、エイリアスを確認できます。
エイリアスを作成する方法はたくさんあります。最も使用される方法は次のとおりです。
~/.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'
あなたの唯一の問題は、実行可能でないときに単に.bashrcを実行しようとしているように思えます。しかし、これは正しい方法ではありません。このファイルを変更するたびに、次のコマンドで「実行」する必要があります。
source ~/.bashrc
それ以外の場合は、新しいシェルを作成し、新しいシェルの環境でファイルを実行し、終了時にその環境を破棄するため、変更が失われます。スクリプトをソースすることにより、現在のシェル内で実行されるため、スクリプトは引き続き有効です。
2番目のエラーは、bash_aliasesが存在しないためだと思います。必須ではありません。変更を個別に整理しておくことをお勧めします。存在する場合にのみ使用され、.bashrcでテストを確認できます。
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
これは、ファイル〜/ .bash_aliasesが存在する場合、それを実行することを示しています。
問題は、非実行可能ファイルを実行しようとしていることです。これは次の方法で確認できます。
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
echo "alias vps='ssh -X [email protected]'" >> ~/.bashrc
これは私が探していた例です。ターミナルにいくつかの文字(「vps」)を入力してリモートでサーバーにログインし、X11転送を有効にして、「gedit」などのGUIアプリをネットワーク上で実行できるようにします。
コマンド/エイリアスコマンドが何であれ、エコーステートメント、引用符、およびコマンドの出力をファイルに追加するための記号(>>)を使用するこの方法は、私にとってはうまくいきます。必要なエイリアスコマンドのコマンドを置き換えて、ターミナルに入力してください。
rubyを使用している場合は、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はあなたのドットファイルを自動ソースします。見てみな。
新しいエイリアスをすばやく作成し、エイリアス定義を~/.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"
}
/etc/bash.bashrc
を使用することをお勧めします
そのファイルの最後に行を追加できます。
alias ok="ping google.com"
エイリアスを行ごとに入力した後、再起動または再ログインする必要があります。
私が思い出すように、bashrc
にはエイリアスに直接使用しないことを示唆する行があります。 solution は、外部ファイルを使用することです。 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
エイリアスが機能するようになりました。以前の回答には 言及 このテクニックがあったが、彼らは導線を埋めていたことがわかった。