this post was submitted on 08 Sep 2026
125 points (99.2% liked)

Ask Lemmy

41358 readers
1893 users here now

A Fediverse community for open-ended, thought provoking questions


Rules: (interactive)


1) Be nice and; have funDoxxing, trolling, sealioning, racism, toxicity and dog-whistling are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them


2) All posts must end with a '?'This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?


3) No spamPlease do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.


4) NSFW is okay, within reasonJust remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either !asklemmyafterdark@lemmy.world or !asklemmynsfw@lemmynsfw.com. NSFW comments should be restricted to posts tagged [NSFW].


5) This is not a support community.
It is not a place for 'how do I?', type questions. If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email info@lemmy.world. For other questions check our partnered communities list, or use the search function.


6) No US Politics.
Please don't post about current US Politics. If you need to do this, try !politicaldiscussion@lemmy.world or !uspolitics@lemmy.world


7) No Hit-and-Run questions.
Please don't delete your post for no apparent reason. If you plan on deleting a question later, say so in the post, or if you feel that you have a good reason to remove it, message a mod beforehand. It's not fair to the ones who took their time to answer, and it's not in the spirit of the community.


8) No Bots.
Posts or comments from bots, LLM's, AIs, Neural Networks, Transformers, or Marvin the Paranoid Android are not welcome in AskLemmy. Real humans only please.


Reminder: The terms of service apply here too.

Partnered Communities:

Tech Support

No Stupid Questions

You Should Know

Reddit

Jokes

Ask Ouija


Logo design credit goes to: tubbadu


founded 3 years ago
MODERATORS
 

Maybe there is a tool that does that? Maybe I'm doing this all wrong and there is a different way I should browse?

top 50 comments
sorted by: hot top controversial new old
[–] ccunning@lemmy.world 118 points 2 days ago (6 children)

You mean something like this?
ls /your/long/path/name
cd !$

[–] valar@lemmy.ca 109 points 2 days ago* (last edited 2 days ago) (7 children)

To add,

!$ gets replaced with the last word from the previous command line

!! Repeats the most recent command

!-N Repeats the Nth previous command

!string Repeats the most recent command that began with 'string'

[–] village604@adultswim.fan 49 points 2 days ago (2 children)

I just learned more about Linux than I did from my whole IT degree.

[–] 4am@lemmy.zip 18 points 2 days ago* (last edited 2 days ago) (1 children)

You learned more about shells than you knew. This stuff works on BSD and some UNIX systems too, you know

[–] GreyEyedGhost@piefed.ca 4 points 2 days ago

Most POSIX-compliant systems?

[–] bluelabel@lemmy.world 1 points 1 day ago

I learned Ubuntu in uni decades ago, and I didn't know those commands exist.

[–] 4am@lemmy.zip 25 points 2 days ago (1 children)

If !$ isn’t pronounced “ba-ching!” I’m quitting Linux

[–] daychilde@lemmy.world 11 points 2 days ago (2 children)

Better than "bang-ching" which sounds racist to me. lol

[–] SkaveRat@discuss.tchncs.de 7 points 2 days ago

Great, now omarchy is going to adopt it

[–] HeyThisIsntTheYMCA@lemmy.world 4 points 1 day ago* (last edited 1 day ago) (1 children)

the (ng) is silent when used in compound punctuation in ba(ng)

[–] daychilde@lemmy.world 5 points 1 day ago (1 children)

okay, but now THAT sounds racist for whole OTHER reasons...... ;-)

it probably is, that professor who taught me it was belgian

[–] mp3@lemmy.ca 35 points 2 days ago (2 children)

!! is the goat when you needed to run the last command using sudo

[–] Hal@piefed.nz 10 points 2 days ago

Hot damn, and here's me thinking thefuck was the way to do this.

[–] ccunning@lemmy.world 10 points 2 days ago
[–] Exec@pawb.social 22 points 2 days ago (1 children)

!!:n where n is the nth word after the command in your last line

cp file1 file2
nano !!:2

Here nano opens file2.

[–] valar@lemmy.ca 6 points 2 days ago
[–] klymilark@herbicide.fallcounty.omg.lol 15 points 2 days ago (1 children)

... How have I used Linux for two decades and not run into this once. Amazing stuff

[–] GreyEyedGhost@piefed.ca 9 points 2 days ago

I've never come across this before, and I am completely unsurprised it exists.

[–] abbadon420@sh.itjust.works 6 points 2 days ago

I'm loving this

load more comments (1 replies)
[–] iturnedintoanewt@lemmy.world 7 points 2 days ago

And there goes my daily new knowledge snippet! Thanks!

[–] Openopenopenopen@lemmy.world 8 points 2 days ago* (last edited 2 days ago)

I think, if your using bash

alt + .

Does the same thing as typing

!$

ls /super/long/path/to/dir

cd alt + .

I believe if you hit it again, it cycles through all previous last words

https://ostechnix.com/list-useful-bash-keyboard-shortcuts/

[–] gothic_lemons@lemmy.world 4 points 2 days ago

Holy fucking shit. I've dabbled in Linux for so long to not know. Thank you!

load more comments (2 replies)
[–] bhamlin@lemmy.world 3 points 1 day ago

Up arrow, ctrl-a, delete, delete, cd, enter

[–] HubertManne@piefed.social 31 points 2 days ago (1 children)

so you have better answers but still going to do mine. up arrow and change ls to cd.

[–] abbadon420@sh.itjust.works 10 points 2 days ago (1 children)

Yeah, thats what I was doing,but I was hoping for something more elegant haha

[–] usernameunnecessary@lemmy.zip 10 points 2 days ago* (last edited 2 days ago)
^ls^cd

will do exactly what you want, replace ls with cd from the previously run command

[–] arbitrary_sarcasm@lemmy.world 6 points 2 days ago* (last edited 2 days ago)

Looks like no one has mentioned this yet. So I'll be the FZF champion in this thread.

The ZSH plugin for FZF gives you a few commands that use the fuzzy search to find files by name, keyword in content etc.

It could be very easy to add something like that for your use case where you can use and you pick the file name from the output and it automatically cd's into the selected file's directory.

I use tab complete a lot to find a file/path. would cd /foo/some<tab>/more<tab>/desti<tab> get you there any easier?

[–] quarrel4you@piefed.social 27 points 2 days ago

You may want to learn about the shell's "history expantion" functions. as an example:

~$ ls ~/Documents/taxes/tax_year_2012/2012-12-01.txt  
/home/tom/Documents/taxes/tax_year_2012/2012-12-01.txt  

~$ cd !!$:h  
cd ~/Documents/taxes/tax_year_2012  

~/Documents/tax_2012$ pwd  
/home/tom/Documents/taxes/tax_year_2012  

Here the string "!!$:h" is basically the last command's [ !! ] last argument [$], stripped of its last path component [:h].

[–] UnfortunateShort@lemmy.world 20 points 2 days ago

You can hit TAB in any decent shell to autocomplete paths. Personally I highly recommend fish

[–] notabot@piefed.social 21 points 2 days ago (1 children)

Type cd then press Alt+. and it'll copy the last argument of the previous command, make sure it's what you want, and press Enter.

[–] sin_free_for_00_days@sopuli.xyz 3 points 2 days ago (1 children)

Nice, I don't remember having seen that before. I'm sure I'll just keep using !$, because muscle memory, but I like seeing new approaches.

[–] notabot@piefed.social 2 points 2 days ago (1 children)

The shell, and lots of other things that take per-line input, use readline to do it. The readline man page is... extensive... to say the least. There are many more useful shortcuts in there, but I doubt anyone uses more than a fraction of them.

I remember delving into the documentation maybe 15 years ago. Even then it was a bit much. I remember changing whatever setting I was looking for, and thinking one day I'd look back through it at my leisure. Well, that never happened.

[–] kik2civeswt1@sh.itjust.works 5 points 2 days ago

There's already some great answers in the thread, so I won't add to those.

Some shortcuts are shell-specific. For example, !!, !:$, and ^old^new are in bash, but not in fish.

Some things, like Alt-. and Ctrl-a, are implemented by readline, which can be used elsewhere, as well, for example in the python interpeter.

Depending on your context, it may be better to invest time learning methods implemented by readline. While not necessarily universal, they are more versatile.

There were heaps of functions I was using not realising they were from readline. For example, Ctrl-r for reverse interactive search, Ctrl-a/e for start/beginning if line, Ctrl-w for deleting a word.

[–] Noctambulist@lemmy.world 9 points 2 days ago

The way I solve this problem is to use nnn instead of ls. It's a full file manager for the terminal but so light and quickly started that it's as convenient as ls (a lot more so actually). You can navigate around your file system with vim-like key bindings and then have the option to exit either to the directory you started from or the one currently displayed.

[–] NeatNit@discuss.tchncs.de 10 points 2 days ago* (last edited 2 days ago) (2 children)

What I do is: Up, Home, type cd , Delete (hold/repeat as many times as needed), Enter.

The Home key instantly brings your cursor to the start of the command line (before the ls), even if the command is long enough to wrap.

I'm not a terminal guru, and I don't aspire to become one. I don't want to memorize arcane symbols that each has a subtly different meaning, and I especially don't want to execute them before I see explicitly what they're going to do. So while the top comment of cd !$ is a perfectly good and correct answer, I offer this alternative in case you, like me, like to see what you're doing as you do it. Home and End are pretty good.

[–] charokol@lemmy.zip 5 points 2 days ago

The seconds I’d save remembering which combination of dollar signs and exclamation points to use would never help me find a better job or otherwise improve my life. I’m okay with the up arrow too.

[–] abbadon420@sh.itjust.works 6 points 2 days ago (2 children)

I had already found ctrl+a that brings me back to the front of the line. It's bit more convenient for my hands than home.

[–] NeatNit@discuss.tchncs.de 5 points 2 days ago (1 children)

I have a really strong muscle memory for Home so it's super convenient to me, but ctrl+a sounds just as good.

load more comments (1 replies)
load more comments (1 replies)
[–] gole@lemmy.zip 8 points 2 days ago

For me I replaced cd with https://github.com/ajeetdsouza/zoxide

cd to anywhere from anywhere, don't even need to type the whole thing. Algorithm: https://github.com/ajeetdsouza/zoxide/wiki/Algorithm#matching

[–] tal@lemmy.today 5 points 2 days ago (2 children)

If you're using bash and haven't modified the readline default, which is to use emacs keystrokes:

$ ls foo/bar/baz

Just what I wanted!

Control-P Control-A Alt-D cd Enter

load more comments (2 replies)
[–] Steve@startrek.website 4 points 2 days ago (2 children)

Is it uncool to use a GUI?

[–] khannie@lemmy.world 3 points 2 days ago

Nah not at all, you do you but when you get used to the command line it's generally much faster and offers a lot of power.

[–] daychilde@lemmy.world 3 points 2 days ago

Use what you like.

I'm not OP, but I use SSH a lot, meaning I'm very much in a character-based terminal of some sort. :)

[–] usernameunnecessary@lemmy.zip 4 points 2 days ago

In addition to

^ls^cd

I mentioned in another comment, I highly recommend you try "z", installable on macos via "brew install z" (not sure if it's available on linux package managers). Suppose you want to jump to ~/Desktop/project1/foo, you can just type "z foo". It works without a full path, from anywhere, as long as you cd'd in there at least once.

[–] catlover@sh.itjust.works 1 points 2 days ago
load more comments
view more: next ›