• Executive Chimp@discuss.tchncs.de
    link
    fedilink
    arrow-up
    14
    ·
    7 months ago

    Good article. Rather than aliasing `cd …/…" etc. I’ve got this function in my setup:

    up () {
    	local x='' 
    	for i in $(seq ${1:-1})
    	do
    		x="$x../" 
    	done
    	cd $x
    }
    

    This lets me do up 4 to go up 4 directories.

    • olafurp@lemmy.world
      link
      fedilink
      arrow-up
      9
      ·
      7 months ago

      You could also do a “up” for one up “upp” for 2 and “upppp” for 4 because of fun

    • ENipo@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      7 months ago

      Oh I really like this. I never had an alias for this since I need to do multiple backwards cds very rarely, but I might just copy this

    • Astaroth@lemm.ee
      link
      fedilink
      arrow-up
      2
      ·
      7 months ago

      I use Fish and have keybinds for previous and next directory, 99% of the time when going up in a directory it’s to (one of) the previous directory/ies I was in

    • beeng@discuss.tchncs.de
      link
      fedilink
      arrow-up
      2
      ·
      7 months ago

      Look into zoxide.

      z direc

      Will take you to the most used directory starting with “direc” eg “/home/me/random/directory”

      • Executive Chimp@discuss.tchncs.de
        link
        fedilink
        arrow-up
        2
        ·
        7 months ago

        I’ve tried things like that before but never got on with them. I found when I had many projects with similar directory structures it was easy to end up in the wrong place and took more thought to get to the right place than just cding

        • beeng@discuss.tchncs.de
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          7 months ago

          The dir’s are the same names or similar? A few extra key strokes to get the fullname should be easier than cd’ing back and forth.

          There’s also z foo “space” “tab” as per docs to get interactive list for matches.

          But, just a suggestion!

    • PlexSheep@feddit.de
      link
      fedilink
      arrow-up
      1
      ·
      7 months ago

      What I use to automatically extend stuff like ls .... to ls ../../../..

      function expand-dots() {
          local MATCH
          if [[ $LBUFFER =~ '(^| )\.\.\.+' ]]; then
              LBUFFER=$LBUFFER:fs%\.\.\.%../..%
          fi
      }
      
      function expand-dots-then-expand-or-complete() {
          zle expand-dots
          zle expand-or-complete
      }
      
      function expand-dots-then-accept-line() {
          zle expand-dots
          zle accept-line
      }
      
      zle -N expand-dots
      zle -N expand-dots-then-expand-or-complete
      zle -N expand-dots-then-accept-line
      bindkey '^I' expand-dots-then-expand-or-complete
      bindkey '^M' expand-dots-then-accept-line
      

      (for zsh)