Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For your consideration, the jukebox from my old CS club:

    #!/bin/bash
    cd songs
    if [[ ! -p q ]]; then
        mkfifo q
    fi

    (while true; do echo "playing" | nc -l 10000 | head -n 1 | cut -f 2 -d " " | cut -b 2- | grep -E "^[a-zA-Z0-9/:.?=-]{1,}$" > q; done) &

    while true; do
        if read a <q; then
        echo $a;
        fn=$(youtube-dl -f m4a --id --get-filename $a);
        youtube-dl -f m4a --id $a
        echo $fn
        mplayer $fn
        fi
    done

To queue up a song, we'd find it on youtube and prepend "http://jukebox.local:10000/" to the url


More nc, cut, grep, head, mkfifo, youtube-dl, and mplayer than anything about Bash.


If bash is passing and handling input from an http request that’s pretty much good enough for me.


It's not really doing that though. Nc+head/cut/grep are and youtube-dl is grabbing the data. Bash in this case is just orchestrating the order of communication between the tools doing the actual work, as a normal Bash script.

The post is about doing all of this in pure bash builtins like /dev/tcp and bash functions. Not about gluing together tools which do the work.


Nonetheless pretty wicked app made with bash


Yeah, it's a nifty little tool. On the other hand when a really interesting post on pure bash exposition comes up the comments section turns to talking about plain bash scripts they've made or know of instead. There are several normal scripts replied in this post and a few others via links, more than actual conversation around what the post is actually about (so far). That's all I was commenting on, not the value of the tool. It's a hill :).


your hill is valid, sorry


Even the post isn't using /dev/tcp, but compiled a C file into bash "loadable builtin" (which is something I learned today). It still feels kind of cheating to me tbh.. But cool enough!


It is a bit of a cheat, to be fair. Official bash loadable module, but not necessarily a part of the static bash binary.


That's not the rules used in this submission though.

> A purely bash web server, no socat, netcat, etc...


Yeah that's how bash scripting works.


See the original GitHub post for how this post is not about scripting other binaries with Bash but pure Bash implementations of functionality. The posted script e.g. does not call nc or grep to make the socket or process the text. What makes this post interesting and upvoted is that it's esoteric.

It's like replying to a thread about implementing a web server in C macros with how you implemented a music jukebox as a standard C program. Great, but also not the point or really even related.


as always




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: