ทางลัดสำหรับการสลับไปยังไดเรกทอรีที่กำหนด


12

ในเทอร์มินัลของ Ubuntu ฉันพบว่าตัวเองใช้เวลาพอสมควรในการเปลี่ยนไปใช้ไดเรกทอรีเฉพาะทุกครั้งที่คอมพิวเตอร์เริ่มทำงาน มีวิธีที่ฉันสามารถทำให้กระบวนการนี้ง่ายขึ้นหรือไม่ มีฮอตคีย์หรือการเปลี่ยนไดเรกทอรีอย่างรวดเร็วที่ฉันสามารถใช้ได้ (เช่นโทรด่วนบนโทรศัพท์) หรือไม่

 eg:
    cd 1:Changes to saved directory one

สี่ปีนับตั้งแต่คำถามนี้ถูกถามและไม่มีใครพูดถึง CDPATH จนกระทั่งวันนี้ :(
kojiro

ฉันคิดว่าสิ่งนี้อาจขึ้นอยู่กับคอนโซลของคุณ แต่ในเทอร์มินัล Kubuntu มีเมนูที่คั่นหน้าซึ่งฉันสามารถทำบุ๊กมาร์กไดเรกทอรีและข้ามไปที่นั้นได้!
Pixel

คำตอบ:


12

มีสองตัวเลือก:

  1. หากคุณต้องการที่จะอยู่ในเวลาที่เฉพาะเจาะจงไดเรกทอรี everyt ที่คุณเปิด terminal ทุบตีคุณแก้ไข~/.bashrcไฟล์และเพียงแค่เพิ่มบรรทัดตัวอย่างเช่นcd Directorycd ~/Desktop

  2. หากคุณต้องการที่จะมีหลายตัดสั้นคุณก็สามารถใช้ตัวแปรทั่วโลกซึ่งคุณสามารถตั้งค่าของคุณใน~/.bashrcไฟล์ดังต่อไปนี้export a=/tmpและจากนั้นคุณจะสามารถที่จะทำซึ่งจะนำคุณไปยังcd $a/tmp

จำไว้ว่าหลังจากแก้ไข.bashrcไฟล์แล้วคุณต้องรีสตาร์ทเครื่องหรือเปิดเครื่องใหม่


3
เพื่อหลีกเลี่ยงการรีสตาร์ทขั้วคุณสามารถใช้หรือสั้นsource ~/.bashrc . ~/.bashrc
แกร์ฮาร์ดเบอร์เกอร์

18

ดูที่autojumpมันสร้างฐานข้อมูลพร้อมกับไดเรกทอรีที่เคยเยี่ยมชมก่อนหน้านี้แล้วคุณสามารถข้ามไปยังมันได้ ตัวอย่างเช่นคุณมี

/home/user/this/long/and/annoyingly/deep/directory/workstuff

ถ้าคุณเคยไปแล้วคุณสามารถข้ามไปได้

j workstuff

หรือแม้กระทั่ง

j stuff

เพราะมันใช้ได้กับการแข่งขันบางส่วนด้วย หากมีมากกว่าหนึ่งไดเรกทอรีที่ตรงกับคุณข้ามไปยังไดเรกทอรีที่มีผู้เยี่ยมชมมากที่สุดหากนี่ไม่ใช่ไดเรกทอรีที่คุณต้องการให้ทำซ้ำคำสั่งเพื่อไปยังไดเรกทอรีที่สอง

อย่างไรก็ตามมันจะดีขึ้น! หากคุณยังมีไดเรกทอรี

/home/user/stuff

และคุณทำ

j stuff 

แล้วTabTabTabคุณจะได้รับ (ตามลำดับของการเยี่ยมชมมากที่สุด)

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

จากนั้นคุณสามารถกดหมายเลขไดเรคทอรีที่คุณต้องการได้!

ในการติดตั้งคุณสามารถใช้sudo apt-get install autojumpและจากนั้นคุณต้องเพิ่ม

source /usr/share/autojump/autojump.bash

~/.bashrcที่คุณ

ข้อมูลเพิ่มเติมที่นี่: https://github.com/wting/autojump (เช่นคำแนะนำวิธีการติดตั้งจาก src ซึ่งทำให้คุณได้รับเวอร์ชันล่าสุด)


1
crtl + r ในเทอร์มินัลยังมองหา "การจับคู่บางส่วน" ในคำสั่งก่อนหน้า มีประโยชน์จริง ๆ เช่นกัน
Dan

6

ชื่อแทนทุบตีมีประโยชน์สำหรับการสร้างทางลัดเพื่อเรียกใช้คำสั่งทั่วไป

  • ใน~/.bashrcเพิ่มบรรทัดที่คล้ายกับข้อความต่อไปนี้เพื่อสร้างนามแฝง:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • source ~/.bashrcปิดและเปิดสถานีอีกครั้งหรือวิ่ง

  • จากนี้ไปคุณสามารถjump1รันcdคำสั่งยาวๆ

ดูสิ่งนี้ด้วย:


4

แม้ว่าจะมีคำตอบที่ดีอยู่บ้าง แต่ฉันคิดว่าฉันจะพูดถึงความสมบูรณ์แบบของตัวเก่าpushdและตัวpopdแบชที่มีให้คุณสามารถย้ายได้อย่างรวดเร็วระหว่างไดเรกทอรีในพา ธ ลึกในระบบไฟล์ของคุณ ตรงกันข้ามกับautojumpบุ๊กมาร์กที่กล่าวถึงโดยburger.gaสแต็กไดเรกทอรีที่สร้างขึ้นโดยใช้pushdเป็นเพียงชั่วคราว

ในฐานะที่เป็น GNU บันทึกคู่มือ , pushdและpopdจะ builtins ทุบตีใช้ในการสร้างสแต็คไดเรกทอรีชั่วคราวที่เป็น

รายการไดเรกทอรีที่เพิ่งเยี่ยมชม pushd builtin เพิ่มไดเร็กทอรีลงในสแต็กเมื่อเปลี่ยนแปลงไดเร็กทอรีปัจจุบันและ popd builtin ลบไดเร็กทอรีที่ระบุออกจากสแต็กและเปลี่ยนไดเร็กทอรีปัจจุบันเป็นไดเร็กทอรีที่ถูกลบทิ้ง dirs builtin แสดงเนื้อหาของไดเรกทอรีสแต็ก

ใช้เวลาทำความคุ้นเคยเล็กน้อย แต่มีตัวอย่างบทเรียนที่เป็นประโยชน์มากมายที่บล็อกนี้และเว็บไซต์นี้เป็นตัวอย่าง ไม่มี manpages แยกต่างหากสำหรับคำสั่งที่เป็นเช่นที่พวกเขาจะรวมอยู่ใน manpage ทุบตี แต่สำหรับการอ้างอิงอย่างรวดเร็วคุณสามารถดูGNU ทุบตีหน้า

คำอธิบายที่ชัดเจนที่สุดอยู่ในบทความที่มีประโยชน์มากนี้และเป็นวิธีที่ฉันใช้pushdและpopd:

ประการแรกใช้dirsหรือdirs -lเพื่อแสดงรายการไดเรกทอรีในสแต็กและdirs -cเพื่อล้างสแต็ก

ในแง่ที่คุณคั่นตำแหน่งที่คุณต้องการกลับโดยการป้อน

pushd /home/mike/Pictures/Canon/2012_07_01

และจากนั้นคุณสามารถเพิ่มไดเรกทอรีเพิ่มเติมลงในสแต็กเพื่อให้คุณได้รับรายชื่อ dirs ดังด้านล่างซึ่งรวม 3 โฟลเดอร์ที่กำหนดและโฟลเดอร์หลักของคุณ~:

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

จริงๆแล้วคุณไม่จำเป็นต้องใช้popdทันทีเนื่องจากมันจะลบไดเรกทอรีออกจากสแต็ก สิ่งที่ดีที่สุดที่ต้องทำคือใช้pushdเพื่อหมุนสแต็กเพื่อให้คุณสามารถสลับไปมาระหว่างไดเรกทอรีและสั่งซื้อได้ตามที่คุณต้องการ สำหรับข้อมูลเพิ่มเติมเกี่ยวหมุนสแต็คที่มีประโยชน์ดูmanpage ทุบตี

หากคุณมีการจัดเรียงสแต็คตามที่dirsแสดงรายการข้างต้นให้pushd +3สลับไปยังโฟลเดอร์รูปภาพและสถานที่ที่อยู่ด้านบนสุดของสแต็ก (เป็น +3 และไม่ใช่ +4 ตามที่คุณไม่ได้นับ~ในสแต็กไดเรกทอรี):

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

ดังนั้นพรอมต์จะอ่าน

~/Pictures/Canon/2012_07_01$

คุณสามารถทำเช่นนี้ได้โดยไม่ต้องลบมันออกจากสแต็กแม้ว่าโฟลเดอร์ใด ๆ ที่คุณcdเพิ่มนอกเหนือไปจากโฟลเดอร์ที่เพิ่มไปยังสแต็กไดเรกทอรีpushdจะเปลี่ยนสแต็กไดเรกทอรีของคุณ

เมื่อคุณจัดเรียงไดเรกทอรีสแต็กตามลำดับที่คุณต้องการคุณสามารถใช้popdเพื่อวนรอบไดเรกทอรีต่างๆอย่างรวดเร็วจากนั้นกลับสู่โฟลเดอร์หลัก ตัวอย่างเช่นจากPicturesเราสามารถกลับไปที่Downloads:

popd
~/Downloads/folder/interest ~/Music/artist/album ~

และการอ่านที่รวดเร็ว

~/Downloads/folder/interest$

โดยทั่วไปความสวยงามของสิ่งนี้คือคุณสามารถตั้งค่าไดเรกทอรีสแต็คและลำดับของรายการภายในด้วยpushdและจากนั้นสมมติว่าคุณมีสามไฟล์ที่จะแก้ไขในแต่ละไดเรกทอรีเหล่านั้นคุณสามารถกลับไปที่แต่ละรายการได้ทันทีpopdในขณะที่ลบ จากไดเรกทอรีสแต็ก แล้วกับครั้งสุดท้ายของคุณคุณจะกลับไปpopd ~มันจะมีประโยชน์อย่างยิ่งเมื่อคุณมีไดเร็กทอรีที่มีความลึกเป็นพิเศษและสามารถใช้เพื่อตั้งค่าไดเรกทอรีสแต็กเพื่อย้ายระหว่างไดเรกทอรีเหล่านั้นได้อย่างรวดเร็ว

นอกจากนี้คำถามนี้มีเคล็ดลับที่คุณอาจพบว่ามีประโยชน์เมื่อทำงานกับบรรทัดคำสั่ง:


2

ถึงแม้ว่าจะมีอยู่บางวิธีบรรทัดคำสั่งที่จะทำมันได้เร็วขึ้นผมจะ personnally recommand ใช้นามสกุล Nautilus nautilus-open-terminalเรียกว่า

ก่อนติดตั้งแพ็คเกจnautilus-open-terminalและทำบุ๊คมาร์คโฟลเดอร์โปรดของคุณด้วย Nautilus ใน Nautilus 3.6. * คุณจะต้องเข้าไปที่เมนูรูปเฟืองแล้วเลือกคั่นตำแหน่งนี้

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นใช้บุ๊ก Nautilus จะไปได้เร็วขึ้นในไดเรกทอรีที่คุณชื่นชอบและเพียงแค่คลิกขวาบนพื้นที่ว่างและเลือกเปิดในเทอร์มิ

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้คุณสามารถมีทั้งบรรทัดคำสั่งและตัวจัดการไฟล์เข้าถึงไดเรกทอรีโปรดของคุณได้อย่างรวดเร็ว


โปสเตอร์ต้นฉบับพยายามทำงานจากเครื่องเทอร์มินัลและบ่อยครั้งที่สามารถทำงานได้จากเครื่องเทอร์มินัล
haziz

1
@haziz: ใช่ แต่ AskUbuntu คำถามและคำตอบควรเป็นประโยชน์ไม่เพียง แต่สำหรับ OP แต่เป็นพิเศษสำหรับทุกคนที่พบสิ่งนี้ในเว็บ นี่คือคำตอบที่มีค่าสำหรับฉัน
Javier Rivera

2

anc ได้รับการออกแบบมาอย่างแม่นยำสำหรับกรณีการใช้งานนั้น

https://github.com/tobimensch/anc

นี่คือข้อความที่ตัดตอนมาจาก README.md:

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

การเปิดเผยอย่างสมบูรณ์: ฉันเป็นผู้แต่ง


1

คุณสามารถวางนามแฝงในไฟล์. bashrc ของคุณ (หรือไฟล์ปรับแต่งสำหรับเชลล์ที่คุณชื่นชอบซึ่งมักจะอยู่ในโฮมไดเร็กตอรี่ของคุณ):

alias cd1="cd directory/directory/my_destination/"

การเชื่อมโยงข้อมูลที่เป็นประโยชน์เกี่ยวกับการใช้นามแฝงในทุบตีเป็นที่นี่


1

ฉันสร้างชุดของฟังก์ชันทุบตีสำหรับสิ่งนี้และเพิ่มลงใน. bash_profile ของฉัน

ต้นฉบับ

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

การใช้

GetFolders

การใช้ getFolders คุณจะเห็นรายการชวเลขคำอธิบายและตำแหน่งสำหรับแต่ละโฟลเดอร์ เมื่อคุณใช้ getFolders ด้วยการจดชวเลขมันจะเอาท์พุทตำแหน่งโฟลเดอร์ คุณสามารถรับรายการของโฟลเดอร์ที่มีอยู่และคำอธิบายโดยการเรียกใช้ getFolders โดยไม่มีพารามิเตอร์

ตัวอย่างการหาเส้นทางโฟลเดอร์

getFolders alias

เอาท์พุท

/path/to/alias/folder

ตัวอย่างการรับโฟลเดอร์ที่มี

getFolders

เอาท์พุท

alias
- Description of alias
alias2
- Description of alias2

GF

gf เป็นทางลัดสำหรับ getFolders

gf alias2

เอาท์พุท

/path/to/alias2/folder

ไปที่

goto เป็นวิธีง่ายๆในการ cd ไปยังโฟลเดอร์ที่เลือก

goto alias

เอาท์พุต

cd ทำงานบน / path / to / alias / folder

/ เส้นทาง / เพื่อ / นามแฝง / โฟลเดอร์>

ทำไมมีหลายฟังก์ชั่น

หัวใจสำคัญของ Unix และ Linux คือคุณมีฟังก์ชั่นที่สามารถนำกลับมาใช้ใหม่ได้อย่างง่ายดาย ฉันชอบวิธีนี้เพราะมันไม่เพียง แต่จะย้ายคุณไปยังตำแหน่งที่เลือก แต่เป็นฟังก์ชั่นที่นามแฝงส่งคืนพา ธ คุณสามารถใช้ฟังก์ชั่นนี้เพื่อทำอะไรก็ได้จากจุดนั้นเช่นซีดีไปยังเส้นทางนั้น


0

พิจารณาตั้งค่าCDPATHตัวแปรสภาพแวดล้อมใน. bashrc หรือ. bash_profile ของคุณ CDPATH ใช้รูปแบบที่มีการคั่นด้วยโคลอนเดียวกับที่PATHตัวแปรอื่น ๆใช้และให้cdใช้ทางลัดในการค้นหาไดเรกทอรีของคุณ ตัวอย่างเช่น:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz

0

คุณสามารถตั้งค่าทางลัดของคุณเองไปยังไดเรกทอรีเฉพาะ ตัวอย่างเช่นคุณต้องการไปที่ไดเรกทอรีที่ซ้อนกันโดยทั่วไปคุณทำ

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

คุณมักจะใช้คำสั่ง cd แล้วพิมพ์ชื่อไดเรกทอรีทั้งหมดหรืออาจข้ามการพิมพ์ (ใช้ปุ่ม TAB) แต่ก็ใช้เวลาไม่กี่นาที

ดังนั้นเพื่อประหยัดเวลาของคุณคุณสามารถสร้างนามแฝงในเทอร์มินัล ภารกิจครั้งเดียวในการตั้งค่านามแฝง

นามแฝง dir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

ตอนนี้คุณต้องใช้ชื่อนามแฝง ( dir-target ) เพื่อย้ายไปยังไดเรกทอรีเป้าหมายของคุณ


0

วิธีที่เร็วที่สุดที่ฉันพบคือxdโปรแกรม "eXchange Directories" ที่เขียนโดยชาวดัตช์ชื่อ Frank B. Brokken

มันทำงานได้โดยการค้นหาเส้นทางทั้งหมดบนระบบไฟล์ของคุณที่สามารถแก้ไขตัวย่อที่คุณพิมพ์เช่นulbสามารถยืนหยัดได้/usr/local/binหากโฟลเดอร์ดังกล่าวมีระบบของคุณ:

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

เมื่อวันที่ 2 /usr/local/binกดคุณอยู่ใน

มันเป็นซอฟต์แวร์ที่เก่าแก่จริงๆและไม่สามารถหาได้ในตำแหน่งเดิมอีกต่อไปไม่มีการติดต่อกับผู้แต่งดังนั้นเพื่อป้องกันการสูญหายฉันใส่มันลงใน repo Github:

https://github.com/mrkafk/exchange_directories


-1

ฉันใช้ DirB (บุ๊กมาร์กไดเรกทอรี) เพื่อทำสิ่งนี้ ดีมาก! http://www.linuxjournal.com/article/10585

ฉันได้ดัดแปลงของฉันให้เหมาะกับรสนิยมของฉันและใช้งานง่ายกว่าและชัดเจนกว่า


ยินดีต้อนรับสู่ถาม Ubuntu! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
fossfreedom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.