ඉහළට යාම වෙනුවට පෙර නාමාවලිය වෙත මා වෙනස් වන්නේ කෙසේද?


215

මම දැනට මගේ වැඩ කරන කාලය බොහෝ කාලයක් ගත කරන්නේ ගසෙන් බොහෝ down තින් ඇති මාර්ග දෙකක් අතර ඉදිරියට හා පසුපසටය. cdපරිශීලකයා ඔවුන් සිටි අවසාන නාමාවලිය වෙත ගෙන යාම සඳහා තර්කයක් තිබේ නම් මගේ ජීවිතය වඩාත් පහසු වනු ඇති බව මට හැඟේ .

එනම්, මා සිටින්නේ නම්:

/etc/foo/bar/baz/moo

ඉන්පසු ටයිප් කරන්න:

cd /var/lib/fubarred_app/blargh/logs

සම්පූර්ණ මාර්ගයම නැවත ටයිප් නොකර පළමු ඩිරෙක්ටරියට ආපසු යාමට මම කැමතියි.

සෑම තැනකම ප්‍රමාණවත් විධානයන් භාවිතා කරන බැවින් මතක යතුර එය කපා නොගන්නේ ආපසු ගොස් මට අවශ්‍ය මාර්ගය සොයා ගැනීම මෙන්ම එය මා විසින්ම ටයිප් කිරීම ය.

කලින් විධානයට යාමට මට ඉඩ දෙන කෙටි විධානයක් තිබේද?


8
@ බ්‍රයන් ගේ විශිෂ් answer පිළිතුරට අමතරව, එක් එක් මාර්ගය සඳහා අන්වර්ථ නාම යුගලයක් සෑදීම ගැන සලකා බැලිය හැකිය, එවිට ඔබට " bazmoo" හෝ " blarghlog" වැනි දෙයක් ටයිප් කළ හැකිය :)
වොරන්

4
ඇයි ඔබ GNU තිරය භාවිතා නොකරන්නේ ?
ෂි

2
කුමන කවචයද? එය විශාල වෙනසක් ඇති කරයි.
රැන්ඩල් ෂ්වාට්ස්

@ වොරන් ඩිටෝ. සෑම දෙයක්ම කිරීමට මා කැමතිම ක්‍රමය එයයි. මම මගේ පරිගණකය භාවිතා කරන දෙයින් අඩකටම දැන් අන්වර්ථයක් ඇත ... =)
ixtmixilix

ෆාස්ඩ් නියමයි. එය පරික්ෂා කරන්න.
majkinetor

Answers:


306

විධානය

cd -

ප්‍රධාන ධාරාවේ ෂෙල් වෙඩි බොහොමයක ඔබට අවශ්‍ය හුවමාරුව සිදු කරනු ඇත, පැරණි දිගු ප්‍රභේදය වේ

cd "$OLDPWD"

එය පෙර වැඩ කරන නාමාවලිය අඩංගු පරිසර විචල්‍යය භාවිතා කරයි.


මෙම සඳහා POSIX man පිටුවcd සඳහන්:

විස්තර

ඉහත පියවරයන් ක්‍රියාත්මක කිරීමේදී, PWD පරිසර විචල්‍යය වෙනස් වුවහොත්, OLDPWD පරිසර විචල්‍යය ද පැරණි වැඩ කරන නාමාවලියෙහි වටිනාකමට වෙනස් වේ (එය සීඩී වෙත ඇමතුමට පෙර වහාම ක්‍රියාත්මක වන නාමාවලියයි).

මෙහෙයුම්

  -   හයිපනය ඔපෙරන්ඩ් ලෙස භාවිතා කරන විට, මෙය විධානයට සමාන වේ:

cd "$OLDPWD" && pwd 

එය පෙර වැඩ කරන නාමාවලියට වෙනස් වන අතර පසුව එහි නම ලියයි.


7
මෙය සැබවින්ම රඳා පවතින්නේ ඔබ භාවිතා කරන කවචය මත වන අතර ඔබ සඳහන් නොකළ බැවින් නොපවතින “අතේ ගෙන යා හැකි” පිළිතුර ලබා දීම දුෂ්කර වනු ඇත.
රැන්ඩල් ෂ්වාට්ස්

16
And රැන්ඩල්, සමහර විට ඔබට ඔබගේ සියලුම ෂෙල් අදහස් එක් වෝල්ට්‍රෝන්-ෂෙල් පිළිතුරකට ඒකාබද්ධ කළ හැකිය.
හයිපර්ස්ලග්

And රැන්ඩල්. මම පාවිච්චි කළා. එය ksh සහ zsh වලද ක්‍රියා කරයි. මාර්ගය වන විට, මම මුලින්ම ඉගෙනීමට ඉගෙන ගත්තේ 1994 ඉගෙනුම් පර්ල් සංස්කරණයෙනි . :)
යිට්ෂැක්

හ්ම්, මම cd $OLDPWDමේ සඳහා භාවිතා කළෙමි . ප්‍රධාන ධාරාවේ ෂෙල් වෙඩි කෙටි ආකාරයක් ලබා දීම සතුටක්.
ulidtko

2
@sinni සමහර රස කරන්න ඇති pushd, හා අවම වශයෙන් එය තුළ builtin තියෙන්නේ bash.
slhck

105

බ්රයන් පිළිතුර අමතරව, එය වටිනා ද තියෙනවා සඳහන් pushdසහ popd, ගොඩනැඟිය තොගයක් වැනි බහලුම. මෙය වින්ඩෝස් එන්ටී වෙතින් ද ලබා ගත හැකිය; කෙසේ වෙතත්, එය සියලුම ෂෙල් වෙඩි වල නොමැත.

උදාහරණයක් ලෙස, අපට විවිධ නාමාවලි තුනකට යා හැකි අතර, ඔබ අමතන විට ඔබේ තොගය ඔබට සැමවිටම පෙනෙනු ඇත pushd:

charon:~ werner$ pushd Documents/
~/Documents ~

charon:Documents werner$ pushd ../Movies/
~/Movies ~/Documents ~

charon:Movies werner$ pushd ../Downloads/
~/Downloads ~/Movies ~/Documents ~

ඔබ popdපේලියට තුන් වතාවක් ඇමතූ විට , ඔබ එම නාමාවලි වෙත ආපසු හරවා යවනු ලැබේ. ඒ සමඟම, තොගය නැවත හිස් වනු ඇත.

charon:Downloads werner$ popd
~/Movies ~/Documents ~

charon:Movies werner$ popd
~/Documents ~

charon:Documents werner$ popd
~

charon:~ werner$ popd
-bash: popd: directory stack empty

ඔබ Zsh භාවිතා කරන්නේ නම්; එයට AUTO_PUSHD විකල්පයක් ඇත, එය ස්වයංක්‍රීයව තොගයට තල්ලු cdකරයි.


pushd සහ popd සියලුම කවච වල නොමැත.
රැන්ඩල් ෂ්වාට්ස්

5
@ වයිස්වා: ඇත්තද? මම bash බව තිබුනා නම් හොදයි ... ඇත්ත වශයෙන්ම, මට හැකි හෙවත් cdකිරීමට pushd, සහ එය බොහෝ දුරට සමාන විය කැමතියි.
ක්‍රිස් චරබාරුක්

3
නැතහොත් අන්වර්ථ පීඩී තල්ලු කිරීමට සහ දෙකම තිබිය යුතුය. BTW pushd (හෝ pd, ඔබ අන්වර්ථ නම්) වත්මන් ඩිරෙක්ටරිය සහ අවසන් වරට තල්ලු කළ නාමාවලිය මාරු කරයි.
ජේ රොබට්

මම සංකල්පයට කැමතියි නමුත් කිසි විටෙකත් ඒවාට හුරුවී නැත.
Thorbj Rrn Ravn Andersen

13

සමහර "ජම්ප්" වැඩසටහන් තිබේ

  • autojump (මූලික අංග සමඟ නඩත්තු කර ඇත)
  • j2 (පෙනෙන විදිහට සමහර දියුණු විශේෂාංග සමඟ නොදැන )
  • z (උසස් විශේෂාංග සහිත "j" හි නඩත්තු කළ අනුවාදය)

මේවා ඕනෑම ආකාරයක නාමාවලි සංචාලනයක් පහසු කරයි. මාර්ගයේ කොටසක් ලබා දීමෙන් ඔබ එය භාවිතා කරන අතර එය ක්‍රියාත්මක වේ.

ඔබේ නඩුවේ

~$ j baz 
/etc/foo/bar/baz/moo$

~$ j bla 
/var/lib/fubarred_app/blargh/logs$

මෙම වැඩසටහන් සඳහා ඔබට අවශ්‍ය ඕනෑම ලිපියක් පැවරිය හැකිය, "j" සම්ප්‍රදායයි :)

j2 සහ z බහු සෙවුම් පද සඳහා සහය දක්වයි, ...

~$ j baz src
/home/me/projects/baz/repository/trunk/src$

... සහ තවත් විකල්ප.

~$ j -l  # list directories by "frecency"(frequency + recency) score
~$ j -r PATTERN # match by rank only, not recency
~$ j -t PATTERN # match by recency only, not rank

2
"j" පැහැදිලිවම ෂෙල් විශේෂිත වේ. ඔයා එහෙම කිව්වේ නැහැ.
රැන්ඩල් ෂ්වාට්ස්

3
And රැන්ඩල්: එය ෂෙල් විශේෂිත වන්නේ කෙසේද? එය වැඩසටහනකි.
Fixee

3
මම මෝඩයෙක්. :) මම දැන් එය දකිමි.
රැන්ඩල් ෂ්වාට්ස්

10

ඊට අමතරව cd -සහcd $OLDPWD

ඔබ මීට පෙර ඇතුළත් CTRL-Rකළ cdවිධානයේ අක්ෂර කිහිපයක් එබීමෙන් හා ටයිප් කිරීමෙන් ඔබට ඉතිහාසය සෙවීම භාවිතා කළ හැකිය . CTRL-Rනැවත නැවත එබීමෙන් පැරණි තරඟ ගෙන එනු ඇත.

ඔබට වෙනස් කිරීමට මාර්ග දෙකකට වඩා තිබේ නම් මෙම ක්‍රමය වඩාත් ප්‍රයෝජනවත් වනු ඇත.


1
CTRL-R අනිවාර්යයෙන්ම උදව් කරන්නේ නැත. ඔබ / සමහර / අපැහැදිලි / නාමාවලියෙහි / ගැඹුරින් සිට "cd evendeeperdir" කර පසුව ~ / somehere / different වෙත ගොස් ඇත.
justintime

1
මහා! එය cdවිශාල උදව්වක් හැර වෙනත් දේ සඳහා ක්‍රියා කරයි !
නිලොක්

9

නාමාවලි සඳහා පහසුවෙන් අන්වර්ථ සෑදීම සඳහා ඔබට මෙය භාවිතා කළ හැකිය:

a() { alias $1=cd\ $PWD; }

a 1

සහ පසුව:

1

1
අන්වර්ථයන් සහ කාර්යයන් තේරුම් ගන්නා කවචයක් මත පමණි. සියල්ලම එසේ නොවේ.
රැන්ඩල් ෂ්වාට්ස්

ඉතින් මෙය alias =කොටස් ටයිප් කිරීම මඟහරිනවාද ? hmmmm
Xen2050

6

bashmarks ඔබ ෆෝල්ඩර සහ ටැබ් අවසන් සමග ඒවා අතර මාලාවක් බුක්මාක් ඉඩ ඇත:

ෆෝල්ඩරයක් පිටු සලකුණු කිරීම සඳහා, එම ෆෝල්ඩරය වෙත ගොස් එය එසේ සලකුණු කරන්න:

bookmark foo

පිටු සලකුණ "foo" ලෙස නම් කෙරේ. ඔබට එම ෆෝල්ඩරය නැවත ලබා ගැනීමට අවශ්‍ය වූ විට:

go foo

පිටු සලකුණු ලැයිස්තුවක් බැලීමට:

bookmarksshow

ටැබ් සම්පුර්ණ කිරීමේ වැඩ, ෂූබි පොත් සලකුණ වෙත යාමට, සරලවම:

go sho[tab]

4

තවත් හැකියාවක් වනුයේ එක් එක් නාමාවලියෙහි ස්ථානගත කර ඇති කවුළු දෙකක් විවෘතව තබා ගැනීමයි.


හවුල් ඉතිහාසයක් නැත, ඔබ පෙර විධාන නිතිපතා භාවිතා කරන්නේ නම් / සංස්කරණය කරන්නේ නම් (සමහර විට යළි පිහිටුවීම මඟින් ඒවා ලැබෙනු ඇත ...?)
Xen2050

@ Xen2050 share_historyzsh හි ෂෙල් විකල්පය බලන්න .
රේඩන් රොස්බරෝ

4

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

ඕනෑම සම්භවයක් ඇති යුනික්ස්- බෑෂ් වලදී ඔබට සීඩී-විධාන සෙවුම් ෆෝල්ඩරය දිගු කිරීමට සීඩීපීඒඑච් භාවිතා කළ හැකිය .

මගේ .bashrc- ගොනුවෙන්:

export CDPATH='.:~/source/'

සීඩී පළමුව ඔබගේ වත්මන් ෆෝල්ඩරයේ සෙවීම, පසුව මගේ කේතීකරණ-ව්‍යාපෘති-නාමාවලියෙහි සෙවීම.

cd myproject

.. මා දැනට සිටගෙන සිටින තැන සිට sources / ප්‍රභවයන් / මගේ ව්‍යාපෘතිය වෙත මා ගෙන යයි .

මගේ ඩිරෙක්ටරි-සංචාලනයට බොහෝ උපකාර කළ සරල කුඩා ලක්ෂණය.


1
+1 මෙය CDPATH ෆෝල්ඩරය cdස්වයං සම්පුර්ණ (TAB) ලැයිස්තුවට එක් කරයි, එය හොඳයි. නමුත් එම නම් .ඇතුළත් නොවේ හා සමග CDPATH ෆෝල්ඩරය තුළ ෆොල්ඩරයක් තියෙනවා නම් එම නම ඔබේ වත්මන් නාමාවලියේ එකක් ලෙස, පසුව cd samenameඑම CDPATH බහලුම වෙත ගොස් ඇත නොහැකි නරක වන වත්මන් බහාළුම, දී එක්. cd ./samenameඩුප් ෆෝල්ඩරයකට ඇතුළු වීමට භාවිතා කළ යුතුය .
Xen2050

ඔව්, හොඳ අදහස් දැක්වීමක්. සෑම විටම පළමු ඇතුළත් කරන්න . , නැතහොත් ඔබට අමුතු දේවල් අත්විඳිය හැකිය.
phareim

3

ඔව්, cd -යා යුතු මාර්ගය නමුත් මම ඔබේ කණුව තුළ ඇති බලය නොමැතිකම ගැන කරදර වෙමි. popdහා pushdහොඳ වන අතර, ඒ jදේ හොඳ වගේ.

මම මගේම උපයෝගීතාව වළල්ලට දමමි ... එය මම පසුගිය අවුරුදු 10 හෝ ඊට වැඩි කාලයක් තිස්සේ මා සමඟ ගොඩනඟා, අභිරුචිකරණය කර සංක්‍රමණය කළ දෙයක් පමණක් වන අතර එය මට අවශ්‍ය දේ සඳහා හොඳින් ක්‍රියාත්මක වේ.

මගේ නාමාවලි කළමනාකරණ උපයෝගීතාව සඳහා බ්ලොග් සටහන

එය ඔබ වෙනුවෙන් වැඩ කරන්නේ නම් නියමයි, නමුත් එය මට පොරොන්දු නොවන්නේ නම් ඔබට වෙනත් දෙයක් ලැබෙනු ඇත :) ඔබට cdතනිවම ජීවත් විය නොහැක .


3

ඔබට ඇත්තේ නාමාවලි 2 ක් පමණක් නම්, පහසුම ක්‍රමය, සඳහන් කළ පරිදි,

cd -

අතීතයේ දී මට එවැනි දේ ඇති විට, මා විසින් කර ඇති උපක්‍රම කිහිපයක් මා සතුව ඇත, එය ප්‍රයෝජනවත් විය හැකිය.

  1. .Cshrc ගොනුවේ අන්වර්ථ විධාන දමන්න, මේ වගේ දෙයක්

    alias moo /etc/foo/bar/baz/moo  
    alias logs cd /var/lib/fubarred_app/blargh/logs
    
  2. මගේ නිවාස නාමාවලියෙන් කැමති මාර්ග වලට කෙටිමං සම්බන්ධ කරන්න. මෙය එක් වරක් කළ යුතු දෙයකි.

    cd ~
    ln -s /var/lib/fubarred_app/blargh/logs blargh
    ln -s /etc/foo/bar/baz/moo
    

මෙය නාමාවලියක් තරම් පහසු ලෙස වෙනස් කිරීමට ඉඩ දෙයි:

   cd ~/moo
   cd ~/blargh

2

Autojump යනු ඔබගේ ක්‍රියාවෙන් මෙම වීඩියෝව බලන්න .

එබැවින් අවසාන ෆෝල්ඩර ඉගෙන ගත් පසු මෙය ඔබව moo වෙත ගෙන යනු ඇත

j moo

2

කදම්භය

මට මගේම මෙවලමක් ඇත, නමුත් ඩෙරෙක්ස් මෙවලම දෙසද බලන්න j.

ඇත්ත වශයෙන්ම පසුපසට පැනීම සඳහා පළමු තේරීම වේ

cd -

මගේ මෙවලම පද්ධතිවල අද්විතීය නම් සහිත නාමාවලි සඳහා අදහස් කෙරේ locate. එය ගැලපෙන නාමාවලි නාමයක් සොයන අතර පළමු තරඟයට පැනේ:

beam () 
{ 
    ldir=$(locate $1 | egrep "$1$" | head -n 1);
    if [[ -d $ldir ]]; then
        echo $ldir;
        cd $ldir;
    else
        echo "no directory "$ldir;
    fi
}

පරායත්තතා:

  • සොයා ගන්න
  • grep
  • හිස

අඩුපාඩු:

  • අවසන් වරට යාවත්කාලීන කළ ධාවනයට වඩා නව නාමාවලි හමු නොවේ
  • බහලුම් එකකට වඩා ගැලපෙන්නේ නම්, එය ඔබගේ වාසනාව මත රඳා පවතී.

වැඩිදියුණු කිරීම් / වෙනස් කිරීම්:

  • පළමු නාමාවලිය තෝරා ගැනීම වෙනුවට, තේරීම් ලැයිස්තුවක් ප්‍රදර්ශනය කිරීම සඳහා කේතය වෙනස් කළ හැකි අතර, පරිශීලකයාට 1,2,3, ... / bin, / usr / bin, / usr / local / bin වෙත යාමට බල කරයි. ...

භාවිතය:

  • එය ඔබට පහසු ආකාරයකින් භාවිතා කිරීමට /etc/bash.bashrc හෝ ~ / .bashprofile තුළට දමන්න.

මගේ විසඳුමේ වාසිය:

  • වැනි ඩිරෙක්ටරි 2 කට සීමා නොවේ cd -
  • කදම්භය භාවිතා කිරීමට පෙර ඔබට එක් වරක් නාමාවලි වෙත යා යුතු නැත.
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.