Twelve Days of Shell
Posted by zoidb 8 days ago
Comments
Comment by aargh_aargh 8 days ago
The bad: You don't see the (wrong) output if you don't get it right the first time, making it hard to work iteratively and having to guess what the question actually intended.
E.g. 'Seven files that start with "Santa"' actually wants file names that start with Santa, after some questions that had you use "grep" to search file contents. Where I actually struggled with what's expected is Day 11.
The ugly: Actually a very nice design.
Comment by pekim 7 days ago
Just the lines from the files are wanted, not the files names. It took me a little while to cotton on to that.
Semi-spoiler follows.
So you need to use the appropriate flag with grep to suppress the file names.
Comment by Retr0id 7 days ago
Comment by oneeyedpigeon 8 days ago
Comment by hdjrudni 7 days ago
Comment by bArray 7 days ago
1. It's difficult to know that it is following from the previous problem, and then on some problems it changes the workspace.
2. It's not always easy to know what it wants.
3. The question about finding a line starting with "The" I successfully cheated:
cat night-before-christmas.txt | grep "The "
4. Likewise the ending "!": cat night-before-christmas.txt | grep "!"
5. On the eighth day I get a "runner error" with the command: mv *lve* Workshop
I'm globbing for the filename match, I'm not sure if it's "elve" or "Elve" and then trying to move to the target directory.Otherwise it's quite fun - the instant feedback is great.
Comment by iN7h33nD 7 days ago
Comment by arionmiles 8 days ago
I've long put off learning or even exploring tmux or learning more than a few handful of vim keybinds. So I started digging into configuring them and learning them well enough to be able to regularly use them for work and personal computers.
It's been very pleasant, to say the least. There's still a few ways I need to go where I do everything from the command line and the keyboard, but I think it's worth training your muscles to be comfortable with doing things purely using the keyboard.
I've switched to vim mode for a few tools that offer it. I started seriously using vimium on chrome and firefox (a friend had introduced me to it about 7 years ago but I never cared enough to learn it well).
Another reason I finally made the jump was that I've been having RSI pain on my right hand due to using mouse too much and in un-ergonomic positions. While I've taken measures to improve ergonomic use of the mouse and keyboard, I'm just totally impressed with the capabilities of keyboard navigation and how much value you can extract out of your keyboard.
My friends have been egging on me about the bell curve meme, but I think it's important for me to figure out the limits and then maybe I will finally go back to defaults and simpler tools. The only way to be on the right side of the bell curve is through the middle.
Comment by kalaksi 8 days ago
Another one is online tutorials that make you practice interactively. Haven't used those much but the little I did, it was helpful.
Comment by johncoltrane 7 days ago
Comment by arionmiles 7 days ago
I learnt the basics of vim navigation through it. I'm yet to finish it since I dropped it after the first chapter to start using it as a daily driver and picking things as I need. I will probably come back and go through it again at some point and by then it will be another mind-blown situation
Comment by johncoltrane 7 days ago
Comment by arionmiles 1 day ago
Comment by sambaumann 7 days ago
Comment by Izkata 7 days ago
It's vim with a GUI, dropdowns for nice discoverability and most importantly the shortcuts on each menu item are the commands to use it in regular vim. It's how I found out vim even had folding waaay back.
For Firefox, I use Tridactyl. After Vimperator died I tried several replacements and found Vimium very limited (IIRC it was the one that was just hotkeys and didn't have modes like vim, no idea how it's grown since then). I have Tridactyl configured to open gvim with the contents of any text input when I hit ctrl+i so I can use vim for them.
Comment by probablyrobert 7 days ago
Comment by arionmiles 7 days ago
Comment by ratrocket 7 days ago
> I've been having RSI pain on my right hand due to using mouse too much and in un-ergonomic positions
If you can, try using a left-hand vertical mouse. I use an Evoluent but there are a million brands. Get a cheapo and try it out. I figure it took me about a week to adjust and my wrists have been happier ever since.
Comment by kace91 8 days ago
I can’t be doing real work and suddenly realize I don’t know the way to do a certain basic action. Lazyvim makes it so that for everything you want to do, there’s an already configured way, and then you have all the time in the world to fiddle for a better alternative if you don’t like it.
Comment by rramadass 7 days ago
Just have some minimal configs for the above and learn more of the default key bindings/behaviour etc. That way you can easily take the above setup to any machine that you move to.
Comment by derrida 8 days ago
I think a beginner could be doing it right but then be told they are wrong as you aren’t evaluating actual commands
Best would be to like actually run it* and then check solutions out with awk that it pattern matches
* aka give me a shell ok worth a try lol xD
Edit: also I was expecting something a bit more challenging (also that is correct) to like exercise the brain for those of us that use shell (this is hacker news) something that takes a few minutes and isn’t just commands used all the time
Comment by comprev 7 days ago
Comment by Retr0id 7 days ago
Comment by derrida 7 days ago
> awk '/^laugh/ { print $0 }' night-before-christmas.txt
Comment by aidenn0 7 days ago
Comment by derrida 4 days ago
Comment by prmoustache 7 days ago
Comment by janmatejka 8 days ago
And from pipers piping description I had no idea what was wanted of me.
Comment by Kakist0crat 7 days ago
Comment by blenderob 7 days ago
grep laugh *
There's only one file in the directory. So that's a correct answer but the game wants me to run grep laugh night-before-christmas.txt
It's like those weird interviewers who have a specific answer in mind and they'll accept nothing other than the answer they have in mind.Comment by charlie-83 7 days ago
Comment by blenderob 7 days ago
Output does not match expected lines - try again
So you can't move on to the next level.Comment by szszrk 7 days ago
Comment by blenderob 7 days ago
Output does not match expected lines - try again
Does it give you the clue for the next level? Can you or someone else share a screenshot or something so I can compare to find out what I'm missing?Comment by szszrk 7 days ago
There is some mess if you already finished the thing, and then use url to particular level on a clean session. For me it looked like I am on level 2, but site expected answers to 1.
When I start from scratch with proper link (main page) simple:
grep laugh *
works
Comment by blenderob 7 days ago
Comment by ggirelli 7 days ago
Comment by lcuff 7 days ago
I gave up after the following exercise:
On the eighth day of Shell my true love gave to me Eight elves in Santa's Workhop/ ... Hint: Try finding files named after Elves and moving them to the Workshop/ directory.
It turns out, all they want is the files in the ./Elves directory to the ./Workshop directory. But I didn't figure that out.
Comment by imp0cat 7 days ago
Comment by lcuff 4 days ago
I will admit, as I reread the question and the hint just now, that I just didn't read carefully the first time through. It's actually pretty clear. Sigh.
People's minds work quite differently ... As evidenced by people that have strong reactions to particular languages (love or hate), or, as another example, people that love or hate syntax coloring in code. (Yes, it gets in the way for some). The fact that the instructions didn't make the problem clear to me is not an overthinking problem on my part. It would be better for me if the problems were expressed in different ways.
When trying to communicate, saying the same thing two different ways is a big step towards helping deal with the variance in people's minds. I wish they'd done that with some of the questions.
Comment by throw0101d 7 days ago
* https://en.wikipedia.org/wiki/Twelve_Days_of_Christmas
The days before the 25th are part of the season of Advent:
Comment by xnorswap 7 days ago
But that's kind of understandable when Christmas begins in September if you believe the retailers.
Comment by lo_zamoyski 7 days ago
Commercialism is likely the culprit for the current state of affairs. By putting the "Christmas season" and the commercialized variety of festivity before Christmas and making Christmas day the big finale, you create a situation during which you can get people to buy, buy, buy. And then it's over.
Compare that with the real deal and as it was traditionally celebrated. Advent is a period of contemplation, waiting, quiet, abstinence from meat -maybe even fasting - in anticipation for the birth of Christ. Then, on Christmas Eve and especially Christmas day, the festivities kick off, and they last until January 6th (the 12 days of Christmas) or Candlemas (40 days of Christmas). And that's when people used to pack up their trees and decorations (either Jan 6th or Feb 2nd).
People today suck at festivity. We're boring.
Comment by OkayPhysicist 7 days ago
Comment by throw0101d 7 days ago
Up to Candlemas was probably more cultural than liturgical, as things go back to 'Ordinary time' in the West post-Epiphany:
* https://en.wikipedia.org/wiki/Christmastide
* https://en.wikipedia.org/wiki/Liturgical_year#Christmastide
Comment by throw0101d 7 days ago
Ah, a fellow Commonwealther (I'm Canadian):
Comment by beardyw 8 days ago
I will give this a go, but I doubt any of it will stick!
Comment by k_bx 8 days ago
Comment by wpm 5 days ago
Comment by bluecalm 8 days ago
Comment by ilvez 7 days ago
Comment by Barathkanna 8 days ago
Comment by jll29 8 days ago
Perhaps it would be even nicer if the "advent" theme was more prominently present, e.g. using the Bible as the target data file to be used.
Here's three examples tasks from me:
(1) Write an sh script (using only POSIX standard commands) to create a Keywords in Context (KWIC) concordance of the new testament.
(2) Write a bash script that uses grep with regular expressions to extracts all literal quotes of what Jesus said in the New Testament. [Incidentally, doing this task manually marked the beginnings of philology and later automating it marked the beginning of what was later called literary and linguistic computing, corpus linguistics, computational linguistics, and digital humanities.]
(3) How many times is Jesus mentioned by each of the four accounts of his life (Matthew, Mark, Luke, and John)?
(You may begin by extracting the New Testament from the end of the Bible with a grep command.)
Comment by chrisweekly 7 days ago
Comment by lo_zamoyski 7 days ago
Specifically, while it is true that certain kinds of words can become decoupled from their original meanings (which is generally normal), in this case, the usage is not so decoupled, especially given that this usage occurs during the religious season of Advent and with the intentional allusion to the religious season of Advent. (Otherwise, what is "Advent of X" without its religious origin and which takes place at the exact same time during the year?)
You can make a much stronger argument that the non-religious usage is a kind of cultural appropriation. That would make your concern entirely backwards. Your wish is to keep it "neutral" to please those who don't practice Advent, as you show a simultaneous lack of concern for the tradition it appropriates from. This involves a tacit claim of possessing the authority to do so as well, but if anything, given the source, if anything, the authority belongs not to the appropriators, but to the Church.
One wonders how a "Ramadan of Code" or "Teshuvah of Shell" would be received.
"Neutrality" is, of course, a bunk concept, and the idea that we ought to be guided by what is "nice" rather than what is "good" is a grave misunderstanding of how decisions ought to be made.
Comment by chrisweekly 6 days ago
By all means, you should do what you think is "good". That's what I strive to do. My comment about "nice" was literally quoting you, so in trying to take me to task for that, as with your broader point, you've missed the mark. I don't think your hypocrisy is intentional, but I do feel good about pointing it out.
Have a nice day and holiday season! :)
Comment by kwar13 6 days ago
only content no filenames. Need to see the output if it's wrong to baseline what's being asked.
Comment by haolez 7 days ago
Like, do a complex background worker for a web server that listens to a socket, does complicated stuff, exports functions (if in Bash), etc.
You don't have to use it afterwards. The value is in the journey. It's fun :)
Comment by sannysanoff 8 days ago
Comment by ggirelli 7 days ago
Comment by cornonthecobra 7 days ago
Comment by 6LLvveMx2koXfwn 7 days ago
My answer: `ls -a`
er, wrong. Then don't put all in the question!Comment by naikrovek 7 days ago
"lines that contain 'laugh'". lines of what? Doesn't tell you without looking at the answer.
genius.
Comment by FailMore 7 days ago
Comment by ctippett 7 days ago
I found a-Shell's documentation[1] quite interesting, it describes their use of web assembly and offers some practical tips for compiling stuff so it can work in a sandboxed environment.
[1]: https://bianshen00009.gitbook.io/a-guide-to-a-shell/lets-do-...
Comment by benterix 8 days ago
Comment by einpoklum 7 days ago
other than that - nice exercise for newbie shell dabblers :-)
Comment by pstoll 8 days ago
But doesn’t seem to do enough shell escaping or correctly. Also seems underspecified, ie “find 5 lines starting with ‘the” doesn’t require a pipe to head -5.
Comment by oneeyedpigeon 8 days ago
Especially since the previous two questions used head/tail. IMO, the wording would be better as "find all the lines" since that's what the command does.
Comment by mejthemage 7 days ago
Comment by mejthemage 7 days ago
Comment by chillfox 7 days ago
I did have some issues with Day 11 figuring out what it wanted, but overall it was fun.
Comment by tensility 4 days ago
Comment by lozf 7 days ago
b64(r13(MaE3o3OmYz5yqPNtqUu0VPOxnJpX))Comment by franticgecko3 8 days ago
Comment by sva_ 8 days ago
Comment by ParadisoShlee 8 days ago
Comment by smusamashah 7 days ago
Comment by entropie 7 days ago
Comment by skinwill 8 days ago
TL;DR: The page stopped loading properly.
Comment by Milpotel 8 days ago
Who would've guessed...
Comment by Biganon 7 days ago
After the 3rd time I had to peek at "learn" to understand what was even asked, I gave up. This is more annoying than fun.
Comment by dncornholio 7 days ago
Comment by imp0cat 7 days ago