• Badabinski@kbin.earth
    link
    fedilink
    arrow-up
    94
    ·
    2 months ago

    Having been in this situation (the only binary I could use was bash, although cd was a bash builtin for me), echo * is your friend. Even better is something like this:

    get_path_type() {
        local item
        item="$1"
        [[ -z "$item" ]] && { echo 'wrong arg count passed to get_path_type'; return 1; }
        if [[ -d "$item" ]]; then
            echo 'dir'
        elif [[ -f "$item" ]]; then
            echo 'file'
        elif [[ -h "$item" ]]; then
            echo 'link'  # not accurate, but symlink is too long
        else
            echo '????'
        fi
    }
    
    print_path_listing() {
        local path path_type
        path="$1"
        [[ -z "$path" ]] && { echo 'wrong arg count passed to print_path_listing'; return 1; }
        path_type="$(get_path_type "$path")"
        printf '%s\t%s\n' "$path_type" "$path"
    }
    
    ls() {
        local path paths item symlink_regex
        paths=("$@")
        if ((${#paths[@]} == 0)); then
            paths=("$(pwd)")
        fi
        shopt -s dotglob
        for path in "${paths[@]}"; do
            if [[ -d "$path" ]]; then
                printf '%s\n' "$path"
                for item in "$path"/*; do
                    print_path_listing "$item"
                done
            elif [[ -e "$path" ]]; then
                print_path_listing "$path"
            printf '\n'
            fi
        done
    }
    

    This is recreated from memory and will likely have several nasty bugs. I also wrote it and quickly tested it entirely on my phone which was a bit painful. It should be pure bash, so it’ll work in this type of situation.

    EDIT: I’m bored and sleep deprived and wanted to do something, hence this nonsense. I’ve taken the joke entirely too seriously.

      • Badabinski@kbin.earth
        link
        fedilink
        arrow-up
        43
        ·
        2 months ago

        My pain tolerance for shitty input methods has been permanently warped after experiencing psychic damage from using Teamviewer to connect to a system over a very flaky HughesNet satellite link. I was working for a vendor that supplied a hardware networking box to a stupid retail company that sells food and shit. I just wanted to ssh to our boxen on a specific network so I could troubleshoot something, but the only way I could get to it was via putty installed on an ancient Windows XP desktop on the same network as our box that could only be accessed with Teamviewer. My favorite part of that was that the locale or something was fucked up, so my qwerty keyboard inputs were, like, fucking transformed into azerty somehow?? The Windows desktop was locked down and monitored to a tremendous degree, so I couldn’t change anything. The resolution was terrible, the latency was over a second, and half of my keyboard inputs turned into gibberish on the other side.

        Oh, and I was onsite at that same company’s HQ doing a sales engineering call while I was trying to figure out what was wrong. I spent 5 days sitting in spare offices with shitty chairs, away from my family, living that fucking nightmare before I finally figured out what was wrong. God damn, what a fucking mess that was. For anyone reading this, NEVER WORK FOR GROCERY/DRUG STORE IT. They are worse than fucking banks in some ways. Fuck.

        EDIT: also, I asked ‘why Teamviewer’ and the answer was always shrugs. This was before the big TeamViewer security incidents, so maybe they thought it was more secure? Like, at least they didn’t expose RDP on the internet…

          • Badabinski@kbin.earth
            link
            fedilink
            arrow-up
            4
            ·
            2 months ago

            It very definitely was 😅 The way that company used the satellite network was cool, don’t get me wrong. They would use it to push content out to all their stores with multicast which was really efficient with bandwidth. I loved it for that, but I hated interacting with it over unicast in any way, shape, or form. Horses for courses, as they say.

    • bi_tux@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      2 months ago

      I wanted to try it on my phone to, since I’m bored sitting on my train to work, but appearently you can’t copy text out of jeroba and now I don’t care enough to open it in my webbrowser

  • Thorry84@feddit.nl
    link
    fedilink
    arrow-up
    59
    ·
    2 months ago

    Hmmm command not found, let me just try the same command a couple more times, this time it will work right?

    In IT teaching users to actually read and understand errors is always an uphill battle.

    • kaboom36@ani.social
      link
      fedilink
      arrow-up
      80
      ·
      2 months ago

      Tbh I’d try it multiple times too, just because the concept of cd not being there is horrifying and cannot possibly be the case

    • skulbuny@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      24
      ·
      2 months ago

      I learned early in my software engineering career these two beautiful rules of debugging:

      1. Read all of the words
      2. Believe them
      • ich_iel@feddit.org
        link
        fedilink
        arrow-up
        10
        ·
        edit-2
        2 months ago

        Unless you were the one writing the program and its error messages - then check, that you didn’t mess up there…

      • ugo@feddit.it
        link
        fedilink
        arrow-up
        7
        ·
        2 months ago

        Until you write a compiler error in some deeply templated C++ code, in which case just reading every word takes all day

        /s but not too much

      • smeg
        link
        fedilink
        English
        arrow-up
        6
        ·
        2 months ago

        Addendum to 2: never believe that what they say is relevant to what’s actually happening here. You have a lot of faith that the people writing error messages knew what they were doing!

        • Trainguyrom@reddthat.com
          link
          fedilink
          English
          arrow-up
          3
          ·
          2 months ago

          Having written some error messages in a godforsaken database frontend, an error message only means that something didn’t work correctly and may or may not correctly indicate what is actually wrong

        • skulbuny@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          2 months ago

          I mean, if the error says “variable foo is not defined” I don’t think it’s wise to go “I’m pretty sure it’s defined, the compiler is just wrong” 😂

          • Ethan@programming.dev
            link
            fedilink
            English
            arrow-up
            2
            ·
            2 months ago

            I don’t know, have you ever used JavaScript? I’ve run into some really fucking weird bugs. I’ve also spent hours trying to find the source of an error message only to discover the error message was lying and caused by some other error.

    • smeg
      link
      fedilink
      English
      arrow-up
      7
      ·
      2 months ago

      Never dealt with an intermittent failure or race condition, eh?

    • nxn@lemmy.ml
      link
      fedilink
      English
      arrow-up
      12
      ·
      2 months ago

      What do you mean? The nvme device label convention is far easier to screw up IMO. At least on my system the first drive would be labeled “nvme0n1”, second “nvme1n1”, etc and partitions get an additional suffix like “nvme0n1p1”.

      I am far more likely to screw that up compared to “sda” vs “sdb”. Especially since I noticed that if I have both my internal and external SSDs hooked up at boot time their number gets assigned on a seemingly random basis.

      • Scoopta@programming.dev
        link
        fedilink
        arrow-up
        8
        ·
        edit-2
        2 months ago

        Eh? Idk if I agree. My original comment was entirely a joke based on the fact that the literal argument of=/dev/sda has no affect on my system but to address your actual point. I personally don’t find nvme naming any more confusing than SCSI. /dev/nvme0n1 is only one char away from /dev/nvme1n1 just like sda vs sdb. Additionally if you understand how the kernel comes up with those names they make a lot of sense. The first number is the controller, the second is the namespace or drive attached to that controller, the 3rd if present is the partition on the given drive. It is entirely possible to have a controller with more than one namespace. That aside aside…I think there is a genuine benefit to be argued for having USB drives, which are SCSI and fall into sdX naming separate from system drives as I dd far more USB media than system media. Making it a lot harder to screw my system up when trying to poke a flash drive.

    • cmhe@lemmy.world
      link
      fedilink
      arrow-up
      5
      ·
      edit-2
      2 months ago

      That might make it even more dangerous, because you get used to flash to usb sticks on “/dev/sda”. And when you then use a device with a built-in sata drive, you might forget checking in a hurry.

      Happened to me a once or twice. I am now only using bmap tools for this.

    • Trainguyrom@reddthat.com
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      2 months ago

      I realized I was long overdue for a hardware refresh when I learned that nvme drives are /dev/nvme and not /dev/sd[x] and I realized every single computer I interacted with was pre-nvme

    • quant@leminal.space
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 months ago

      An unintended benefit of using Qubes is that everything is a virtual machine and physical disks have to be manually attached to a vm before doing operations like dd. I haven’t had to worry about accidentally nuking my main partition for a while.

      • Scoopta@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        2 months ago

        Huh, yeah I suppose that’s true. Qubes is an interesting project but I’m not sure it’s for me. I selectively isolate apps I worry about using containers, I actually should give flatpak a try as it basically does that for me but I haven’t seriously tried it yet.

      • Faresh@lemmy.ml
        link
        fedilink
        English
        arrow-up
        7
        ·
        edit-2
        2 months ago

        echo and alias are both shell commands. If the shell is running (which it obviously still is), those commands should still work, as it does not involve reading data from disk, but from memory.

        Edit: I just noticed the picture said cd was not found, which is also a shell built-in. So, I don’t know.

  • antonamo@feddit.org
    link
    fedilink
    Deutsch
    arrow-up
    6
    ·
    2 months ago

    sudo dd if=. /rpi3-aarch64-archlinux.img status=progress of=/dev/sd[tab] [tab] [enter]