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

  • kik2civeswt1@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 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.

  • palordrolap@fedia.io
    link
    fedilink
    arrow-up
    0
    ·
    10 days ago

    The soft option perspective (I see plenty of command-line-only solutions here already):

    These days, if I’m doing any major navigation, I do it the uncool way and use the GUI file manager bundled with my distro. I have the option enabled to show the “open a terminal at this location” button if I really want to start issuing commands.

    If you’d rather stay on the command line, a compromise might be to use something like Midnight Commander. Back in my DOS days I used to use an equivalent there on a regular basis, but that’s because I hadn’t launched Windows and didn’t feel like it was necessary to do what I wanted. (It was possible to patch Win 9x to behave like earlier Win 3.x so that it stopped at the DOS prompt and didn’t load Windows, which fit my aesthetic at the time.)

    These days I prefer my comforts and I sure as heck don’t boot Linux to a command line unless something’s really wrong!

  • usernameunnecessary@lemmy.zip
    link
    fedilink
    arrow-up
    0
    ·
    10 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.

  • Noctambulist@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    10 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.

  • quarrel4you@piefed.social
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 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].

  • tal@lemmy.today
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 days ago

    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

    • BonkTheAnnoyed@piefed.blahaj.zone
      link
      fedilink
      English
      arrow-up
      0
      ·
      10 days ago

      absolutely brilliant <slow clap>

      You know, I always kind of wondered what happened when I accidentally pressed control C, control V or whatnot in bash.

      Level unlocked

  • scrion@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    10 days ago
    1. You could start by typing cd and use tab completion to explore your target folder(s). This would require at least a rudimentary knowledge of what you’re looking for so you can prefix your search

    2. If you really want to explore the contents and pick your target without knowing anything in advance, cd "$(find . -type d | fzf)" would give you a smart browser. You can of course replace ‘.’ with any base directory you like. Requires fzf.

    3. In general, zoxide can help with navigation.

    4. If you want to stay a purist, I’d go for simply recalling your last ls command from the history and replacing it with cd. An example has been given in the thread already.

  • notabot@piefed.social
    link
    fedilink
    English
    arrow-up
    0
    ·
    10 days ago

    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
      link
      fedilink
      English
      arrow-up
      0
      ·
      10 days ago

      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
        link
        fedilink
        English
        arrow-up
        0
        ·
        10 days ago

        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.

  • arbitrary_sarcasm@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    10 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 <your custom command> <file path> and you pick the file name from the output and it automatically cd’s into the selected file’s directory.