I accidentally discovered that both “cd …” and “…” work, and moreover, I can add more dots to go back further! I’m using zsh on iTerm2 on macOS. I’m pretty sure this isn’t a cd feature. Is this specific to zsh or iTerm2? Are there other cool features I just never knew existed??

I’m so excited about an extra dot right now.

  • rutrum@lm.paradisus.day
    link
    fedilink
    English
    arrow-up
    21
    ·
    11 个月前

    Actually cd isnt a program. Your present working directory is managed entirely by the shell. If you type “type cat” in the terminal it will tell you its a program, but “type cd” says its a shell builtin. So yes, cd depends on the shell and zsh has some awesome quality of life features. This is not something you can do in bash.

  • originalfrozenbanana@lemm.ee
    link
    fedilink
    arrow-up
    8
    ·
    edit-2
    11 个月前

    Each instance of . is a relative level to your current directory. ‘cd .’ changes your directory to your current directory. ‘cd …’ (edit: on mobile this keeps changing to three periods but it should just be two) changes it to the directory above, ‘cd ….’ would change it to three directories above. This is standard in *nix (Unix and Linux) operating systems

    Edit 2: this is very wrong

      • originalfrozenbanana@lemm.ee
        link
        fedilink
        arrow-up
        7
        ·
        11 个月前

        Yeah you’re right. I wrote this before sleep and after sleep it’s hilariously wrong lol. Oh well I’ll leave it as a cautionary tale

    • Knusper@feddit.de
      link
      fedilink
      arrow-up
      23
      ·
      11 个月前

      That’s definitely not standard. Maybe your distro or shell has this configured that way. The actual standard thing is that each directory has entries for . and .., as you can see in ls -a.

      • catastrophicblues@lemmy.caOP
        link
        fedilink
        arrow-up
        5
        ·
        11 个月前

        Yup, that’s what I’ve always understood. Seems like this is zsh-specific, since using the default Terminal app with zsh also works. Do you know if other shells (fish, csh, etc.) support this syntactic sugar? Anything else zsh has that I should know?

    • rnd@beehaw.org
      link
      fedilink
      arrow-up
      17
      ·
      11 个月前

      Not really. . and .. are the only standard directory entries that are added by the system.

      Some shells may extrapolate from that by adding ... to go two directories up, but ... can just as well be the name of an actual file or directory.

      • catastrophicblues@lemmy.caOP
        link
        fedilink
        arrow-up
        1
        ·
        11 个月前

        I’ve always thought it was funny how *nix lets you name things in a way that makes it miserable for others lol. I think I had a directory named - because of a mkdir syntax error.

        • rnd@beehaw.org
          link
          fedilink
          English
          arrow-up
          2
          ·
          11 个月前

          I guess this is an interesting contrast to Windows, where not only certain characters (like ? or * or |) are banned, but also entire filenames that used to refer to device files in DOS (con, prn, lpt1, etc.)

    • catastrophicblues@lemmy.caOP
      link
      fedilink
      arrow-up
      9
      ·
      11 个月前

      Really? Doesn’t seem to work when I use bash:

      bash-3.2$ cd a/b/c/d/e
      bash-3.2$ ...
      bash: ...: command not found
      bash-3.2$ cd ...
      bash: cd: ...: No such file or directory
      
  • thelastknowngod@lemm.ee
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    11 个月前

    I have a function called up. I do up X where X is the number of directories I want to go up.

    up() {
      if [[ $# -eq 0 ]]; then
        cd ..
        return 0
      fi
      local path i
      for (( i=0; i < $1; i++ )); do
        path+=../
      done
      cd "$path"
    }
    

    EDIT: Don’t know if it’s just me but if you see < it should be the less than character.

  • xan@lemmy.one
    link
    fedilink
    arrow-up
    2
    ·
    11 个月前

    I use this all the time in zsh, and it’s one dot per directory up.

    ……… will go up 8 directories

    cd is also optional in zsh, you can just type “…” without cd