ස්ථිර Bash අන්වර්ථයක් නිර්මාණය කරන්නේ කෙසේද?


414

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.

සැබෑ ගැටළුව කුමක්ද සහ එය විසඳන්නේ කෙසේද?



alias rm='rm -i'rm
අන්තරාදායක

Answers:


474

අන්වර්ථයක් නිර්මාණය කිරීම සඳහා ඔබේ .bashrcගොනුවට අන්වර්ථය ස්ථිරවම එක් කරන්න

gedit ~/.bashrc

ඉන්පසු ඔබේ අන්වර්ථය පතුලේ එක් කරන්න.

alt පෙළ

දැන් . ~/.bashrcඔබේ පර්යන්තය තුළ ක්‍රියාත්මක කරන්න ( .සහ අතර ඉඩක් තිබිය යුතුය ~/.bashrc.

දැන් ඔබට ඔබේ අන්වර්ථය පරීක්ෂා කළ හැකිය.

alt පෙළ


5
ter karthick87 ඔබ ලියා ඇත්තේ "දැන් ක්‍රියාත්මක කරන්න. ter / .bashrc ඔබේ පර්යන්තය තුළ (සහ ~ / .bashrc අතර පරතරයක් තිබිය යුතුය.". මෙම පියවර අවශ්‍ය වන්නේ ඇයි?
Geek

5
පළමු දේ කරන්නේ කුමක්ද? ඇතුලට යන්න. ~ / .bashrc?
සෙන්

27
Ee ගීක් en සෙන් “ක්‍රියාත්මක කරන්න” යනු නිවැරදි යෙදුම නොවේ. තිත සමාන වේ source. සමඟ . ~/.bashrc, ඔබ ඔබේ බාෂ් මූලාශ්‍රය. ගොනුව ක්‍රියාත්මක කිරීමෙන් ළමා ක්‍රියාවලියක් ආරම්භ වනු ඇත, මෙම ක්‍රියාවලියේදී විධාන ක්‍රියාත්මක කර නැවත පැමිණේ. ළමා ක්‍රියාවලිය තුළ සිදුකරන සියල්ල මව් ක්‍රියාවලියට කිසිදු බලපෑමක් ඇති නොකරයි (ඔබ ක්‍රියාත්මක කළ කඩඉම). ඒ වෙනුවට, මූලාශ්‍රය (තිත සමඟ) හරියටම ක්‍රියා කරන්නේ ඔබ ගොනුවේ අන්තර්ගතය පර්යන්තයේ ලියා ඇති ආකාරයට ය. ඔබට අවශ්‍ය වන්නේ මෙයයි. .bashrcඔබ බාෂ් ආරම්භ කරන සෑම අවස්ථාවකම ලබා ගනී. ඔබ වෙනස්කම් කරන්නේ නම්, ඔබ අතින් නව මූලාශ්‍රයක් හෝ ප්‍රභවයක් ආරම්භ කරන තුරු ඒවා අදාළ නොවේ.
ගෞතියර්

UtButtleButkus - සමස්ත පද්ධතියට වඩා එක් පරිශීලකයෙකුගේ මනාපයන් වෙනස් කිරීමට අවශ්‍ය විය හැකිය. උබුන්ටු හි පද්ධතිය පුරා .bashrc ගොනුව /etc/bash.bashrc
WillC

1
H සුභාමා. OSX හැසිරීම සඳහා මෙම ප්‍රශ්නය බලන්න
jandersen

265

අන්වර්ථයක් නිර්මාණය කිරීමට බොහෝ ක්‍රම තිබේ. වැඩිපුරම භාවිතා කරන ක්‍රම:

  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'

78
භාවිතා කිරීම සඳහා +1 ~/.bash_aliases.
ndndrük

ඔව්, අන්වර්ථ නාම සඳහා වෙනත් ගොනුවක් භාවිතා කිරීම වඩා පිරිසිදු වන අතර ඩිස්ට්‍රෝස් අතර අතේ ගෙන යා හැකිය. සමහර අන්වර්ථයන් ප්‍රමාණවත් නොවන නිසාත් ශ්‍රිතයක් අවශ්‍ය නිසාත් මම එම ගොනුව භාවිතා කරමි. එබැවින් ඔබ ඒ වෙනුවට ගොනුවක් භාවිතා කරන්නේ නම් එය වඩාත් පිරිසිදු වේ. මට තවත් අන්වර්ථයක් ඇත -> alias aliases="xdg-open ~/.bash_aliases && source ~/.bash_aliases", එබැවින් අන්වර්ථය සුරැකීමේ ප්‍රයෝජනය ලබා ගත් අතර ඔබ යම් වැරැද්දක් කළහොත් එය ඔබට ප්‍රචාරය කරනු ඇත.
m3nda

කෙසේ හෝ මම අන්වර්ථය එකතු කළ පසු alias ls='ls -althr', ලබා දුන් සමහර ධජ ක්‍රියාත්මක නොවනු ඇත, මේ අවස්ථාවේ දී -t ධජය ක්‍රියාත්මක නොවීය. ඔය දන්නවද ඇයි කියලා?
සජුක්

5
පෙරනිමියෙන් ~/.bashrcඇතුළත් කිරීම අඩංගු වේ ~/.bash_aliases, එය සංස්කරණය කිරීමට අවශ්‍ය නොවේ.
ජාකෝ

1
සෑම විටම ~ / .bashrc හි b / .bash_aliases සඳහා ඇතුළත් කිරීම් අඩංගු නොවන අතර උබුන්ටු පර්යන්තය වින්ඩෝස් 10 සමඟ මගේ නඩුවේදී මෙන් මෙම විසඳුම ඉතා ප්‍රයෝජනවත් විය.
ජෝස්

20

ඔබේ එකම ගැටලුව වන්නේ .bashrc ක්‍රියාත්මක කළ නොහැකි විට එය ක්‍රියාත්මක කිරීමට උත්සාහ කිරීමයි. නමුත් මෙය කිරීමට නිවැරදි ක්‍රමය නොවේ; ඔබ මෙම ගොනුවේ වෙනසක් සිදු කරන සෑම විටම, ඔබ එය විධානය මඟින් "ක්‍රියාත්මක කළ යුතුය":

source ~/.bashrc

එසේ නොවුවහොත්, එය හුදෙක් නව කවචයක් නිර්මාණය කර, නව කවචයේ පරිසරය තුළ ගොනුව ක්‍රියාත්මක කර, පිටවන විට එම පරිසරය ඉවතලනු ඇත, එමඟින් ඔබේ වෙනස නැති වේ. ස්ක්‍රිප්ට් එක උපුටා ගැනීමෙන්, එය වත්මන් කවචය තුළ ක්‍රියාත්මක වන බැවින් එය ක්‍රියාත්මක වේ.

මම හිතන්නේ දෙවන දෝෂය වූයේ bash_aliases නොපවතින බැවිනි. එය අවශ්‍ය නොවේ, ඔබගේ වෙනස්කම් වෙනම හා සංවිධානාත්මකව තබා ගැනීමට නිර්දේශ කරනු ලැබේ. එය භාවිතා කරන්නේ එය පවතින්නේ නම් පමණක් වන අතර, ඒ සඳහා වන පරීක්ෂණය ඔබට .bashrc හි දැකිය හැකිය:

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

මෙයින් කියැවෙන්නේ file / .bash_aliases ගොනුව තිබේ නම් එය ක්‍රියාත්මක කරන්න.


~/.bash_aliasesවඩා හොඳයි. askubuntu.com/questions/194111/…
tomByrer

1
sourceවිධානය භාවිතා කිරීමෙන් මගේ අන්වර්ථයන් ක්‍රියාත්මක විය. +1
dspacejs

4
සම්පූර්ණත්වය සඳහා පමණි: රේඛාවේ ආරම්භක තිතට . ~/.bash_aliasesෂෙල් බිල්ට් විධානයට සමාන අර්ථයක් ඇත source. සිදුවන්නේ කුමක්ද යන්න පැහැදිලි කරමින් මෙය නිවැරදි පිළිතුර ලෙස මම දකිමි.
මෙලෙබියස්

17

ගැටළුව වන්නේ ඔබ ක්‍රියාත්මක කළ නොහැකි ගොනුවක් ක්‍රියාත්මක කිරීමට උත්සාහ කිරීමයි: ඔබට මෙය පරීක්ෂා කළ හැක්කේ:

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

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

මෙය මා සොයමින් සිටි උදාහරණයකි, ටර්මිනලයේ අකුරු කිහිපයක් ("වීපීඑස්") ටයිප් කර සේවාදායකයකට දුරස්ථව ලොග් වී X11 ඉදිරියට යැවීම සක්‍රීය කිරීමේ ක්‍රමයක් වන අතර එමඟින් ජාලය හරහා "ගෙඩිට්" වැනි ගයි යෙදුම් ධාවනය කළ හැකිය.

විධානය / අන්වර්ථ විධානය කුමක් වුවත්, මේ ආකාරයට echo ප්‍රකාශය, උද්ධෘත ලකුණු සහ විධානයක ප්‍රතිදානය ගොනුවකට (>>) එකතු කිරීම සඳහා වන සංකේතය සමඟ මට වැඩ කරයි. ඔබට අවශ්‍ය අන්වර්ථ විධානය සඳහා මගේ විධානය ප්‍රතිස්ථාපනය කර එය ඔබේ පර්යන්තයට ඇතුළත් කරන්න.


මෙහි උපුටා දැක්වීම තරමක් උපක්‍රමශීලී ය. මෙම උදාහරණයේ දී, ද්විත්ව උපුටා දැක්වීම් භාවිතා කිරීම ගැටළු සහගත නොවේ, නමුත් උපුටා දැක්වීම් තුළ ඇති පෙළෙහි ඩොලර් සං signs ා, බැක්ස්ලෑෂ් යනාදිය තිබේ නම්, කවචය ද්විත්ව උපුටා දැක්වීම් තුළ ඒවා සකසන ආකාරය ඔබ තේරුම් ගත යුතුය. ඔබට පිටතින් තනි උපුටා දැක්වීම් සහ ඇතුළත ද්විත්ව උපුටා දැක්වීම් වෙත මාරු විය හැකිය, නමුත් අන්වර්ථ අර්ථ දැක්වීමේදී බාෂ් ද්විත්ව උපුටා දැක්වීම් සකසන ආකාරය ඔබ තවමත් තේරුම් ගත යුතුය.
ත්‍රිත්ව

5

ඔබ රුබී භාවිතා කරන්නේ නම්, ඔබට රුබීජම් භාවිතයෙන් අකා ස්ථාපනය කළ හැකිය.

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

රුබිජම් ඔබට අවශ්‍ය නොවන පරිදි ඔබේ තිත ගොනුව ස්වයංක්‍රීයව ලබා ගනී. එය පරික්ෂා කරන්න.


4

නව අන්වර්ථ නාමයක් ඉක්මනින් නිර්මාණය කිරීම සඳහා මම මෙම ප්‍රයෝජනවත් කාර්යය ලියා, පසුව අන්වර්ථ අර්ථ දැක්වීම ~/.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"
}

1
හොඳ අදහසක්, නමුත් මෙම ශ්‍රිතය නොසැලකිලිමත් ලෙස භාවිතා .bashrcකිරීම aliasවිධාන අවස්ථා කිහිපයකින් කුණු කූඩයට දැමිය හැකිය . එවැනි අවුල් සහගත තත්වයන් මඟහරවා ගැනීම සඳහා ඔබේ කාර්යයට අනිවාර්යයෙන්ම සමහර පරීක්ෂාවන් ක්‍රියාත්මක කළ යුතුය.
දෝශ නිරාකරණ- DV

මෙය වලංගු කරුණකි. ඔබ බෙදා ගැනීමට කැමති යෝජිත ක්‍රියාමාර්ගයක් තිබේද @ දෝශ නිරාකරණ-ඩීවී?
blizzrdof77

පසුව එය තවමත් සත්‍ය 2 1/2 ක් දැයි සැක නැත, නමුත් ... 1 වන විට මම අනුපිටපත් වළක්වා ගැනීම සඳහා මෙම අන්වර්ථය දැනටමත් එහි ඇතුලත් කර ඇත්දැයි පරීක්ෂා කිරීම සඳහා අන්වර්ථ විධානයන් සඳහා RC ලබා ගනිමි. අන්වර්ථ නාමයක් පැවතීම සඳහා ඔබගේ පරීක්ෂාව ප්‍රමාණවත් නොවේ, මන්ද යත්, RC දැනටමත් එකම නමකින් යුත් අන්වර්ථ නාමයන්ගෙන් “දූෂිත” විය හැකි බැවිනි.
දෝශ නිරාකරණ- DV

0

භාවිතා කිරීමට මම යෝජනා කරමි /etc/bash.bashrc

එම ගොනුවේ අවසානයේ ඔබට පේළියක් එක් කළ හැකිය.

alias ok="ping google.com"

එක් පේළියකට අන්වර්ථ නාමයක් තැබීමෙන් පසු ඔබට නැවත පණගැන්වීම හෝ නැවත සකස් කිරීම කළ යුතුය.


7
"මම යෝජනා කරමි .." සහ ඔබ එය යෝජනා කරන්නේ ඇයි?
මුරු

2
සියලුම පරිශීලකයින් සඳහා පද්ධතිමය සැකසුමක් ස්ථාපනය කිරීමට ඔබට අවශ්‍ය නම් මිස ඔබ පද්ධති ගොනුව සමඟ පටලවා නොගත යුතුය. පුද්ගලික පද්ධතියක, වෙනස ආන්තිකය, නමුත් පසුව පද්ධති ලිපිගොනු සමඟ පටලවා ගැනීම පාරට වඩා සංකීර්ණ වේ, එබැවින් ඔබ තවමත් පුද්ගලික මනාපයන් සඳහා ඔබේම පෞද්ගලික තිත් ලිපිගොනු වලට වැඩි කැමැත්තක් දැක්විය යුතුය (එමඟින් වෙනත් තැනක සිටුවම් පිටපත් කිරීම පහසු කරයි. අනාගතය ද).
ත්‍රිත්ව

1
නැවත ආරම්භ කරන්න? එය ඇත්තෙන්ම භයානක උපදෙසකි, එසේ නොකරන්න, විශේෂයෙන් source /etc/bash.bashrcමෙම උදාහරණයේ ඔබට අවශ්‍ය සියල්ල අවශ්‍ය වන්නේ කවදාද ? නමුත් භාවිතා කළ යුතුය ~/.bashrcහෝ ~/.bash_aliasesඒ වෙනුවට භාවිතා කළ යුතුය
Xen2050

En Xen2050, නැවත පණගැන්වීම / නැවත ආරම්භ කිරීමෙන් පසුව එය ක්‍රියාත්මක වන බව පෙන්වීමට නැවත පණගැන්වීමට මම යෝජනා කළෙමි. මාර්ගය වන විට, තවත් පිරිසිදු පර්යන්ත කවුළුවක් පවා ක්රියා කරනු ඇත.
ෆහාඩ් අහමඩ්


0

මට මතක් වන පරිදි, 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

මෙම අදහස පුළුල් කිරීමට මම කැමතියි!

aliasඔබේ ප්‍රශ්නයට අනුව විධානයක් කිරීමට ඔබට අවශ්‍යය :

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

දැන් ඔබට wolfrවෘකයාගේ නිවාස නාමාවලිය වෙත යාමට ටයිප් කළ හැකිය .

මෙය ඉතා සමාන හා ඉතා සිසිල් ය, exportවිධානය:

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

cp $ngse/my_file /destination_directory/destination_filenameඅඩවි සක්‍රීය කළ නාමාවලියෙන් ගමනාන්තයකට ගොනුවක් පිටපත් කිරීමට දැන් ඔබට ටයිප් කළ හැකිය .

ඔබ මේ වගේ දෙයක් කරන තුරු මේ කිසිවක් ක්‍රියාත්මක නොවේ:

exec bash

විකල්පයක් ලෙස, ඔබට නැවත ලොග් විය හැකිය හෝ ඔබට නැවත ආරම්භ කළ හැකිය.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.