6 ms·
Dunno, so much work to achieve so little. I'm even more inclined to stick with shell scripts now
by oguz-ismail 1y ago
Dunno, so much work to achieve so little. I'm even more inclined to stick with shell scripts now
- kragen 1y agoThe Bourne shell is definitely less work unless you want your code to correctly or reliably handle user input. Then it's more work.
- oguz-ismail 1y agoNot in my experience. Any concrete examples off the top of your head, where it's more work than setting up pipes in python manually?
- baobun 1y agoFill in the blank to run a docker container which opens the file with user-provided path in (say) vim. docker run --rm -it ...? Now run a container doing the exact same thing ("docker-in-docker"). docker run --rm -it -v $DOCKER_HOST:/var/run/docker.sock ...?
- oguz-ismail 1y ago> Fill in the blank to run a docker container which opens the file with user-provided path in (say) vim. Never used docker before, but this seems to work: docker run --rm -it debian bash -c 'vim -- "$1"' _ "$user_provided_path"
- kragen 1y agoLooks relatively safe to me, though it doesn't seem to work because debian:latest doesn't have vim in it (so I'm skeptical of your implicit claim of having tried it), and, if $user_provided_path is empty, it defaults to browsing the filesystem. But there are a lot of characters there that are specifically there to avoid footguns; without them, it would seem to work, but it would fail when $user_provided_path contained special characters. The version I tested was docker run --rm -it debian bash -c 'apt update; apt install -y vim; vim -- "$1"' _ "$user_provided_path"
- oguz-ismail 1y ago> your implicit claim of having tried it I tried printing positional parameters, they looked fine. (And already uninstalled docker. What's the point of containerization if you need superuser privileges to use it?) > if $user_provided_path is empty, it defaults to browsing the filesystem That's what vim -- "" does. > But there are a lot of characters there that are specifically there to avoid footguns What are those characters? --? That's not a lot
- kragen 1y agoAlso bash -c '' and "".
- hollerith 1y agoThe Python code Kragen gave is more characters to type, but fewer footguns. Shell scripts are much higher in footguns per character than most programming languages. It is possible for a coder to understand bash so well that he never shoots his own foot off, but it requires more learning hours than the same feat in another language requires, and unless I've also put in the (many) learning hours, I have no way of knowing whether a shell script written by someone I don't know contains security vulnerabilities or fragility when dealing with unusual inputs that will surface in unpredictable circumstances. The traditional Unix shell might be the most overrated tool on HN.
- oguz-ismail 1y ago> The Python code Kragen gave is more characters to type, but fewer footguns. What are the footguns in this? df | grep /$
- deleted 1y ago[deleted]
- hollerith 1y agoThere are none AFAIK. Allow me to correct my previous comment: using Python's os.spawnlp or Popen to invoke Unix commands has fewer footguns than using the shell. (Kragen's code only addresses your question of how to set up a pipeline in Python.)