The good: Nice exercises for beginners. Tab-completion, accepts readline characters like ctrl-u.
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.
I've recently reached a point where I feel I've reached an upper limit with how much efficiency I can extract from my usual toolset/editors. So I've gone on a journey where I'm finally exploring tools that make living in the command line a productive and pleasant experience for me.
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.
For learning vim, I recommend searching for a "vim cheat sheet" that has an image of a keyboard layout with vim commands in it and printing that. Makes it easier to check and learn more, little by little.
Another one is online tutorials that make you practice interactively. Haven't used those much but the little I did, it was helpful.
I have an odd suggestion for learning more of vim: Check out gvim.
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.
Not commenting on the larger gist of the comment, only:
> 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.
I went back and forth over the years with vim. Lazyvim plus the ebook (lazyvim for ambitious devs or something like that, it’s free online) is what allowed me to stick.
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.
GNU Screen + dvtm/mtm + Vim (with some minimal plugins; especially for buffer mgmt) on a large Monitor is what you need to live on the command line :-)
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.
Hey this doesn’t work : first solution “ls -al” which I use all the time to list directories was rejected in the second question I used awk and was rejected it expected grep
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
"ls" shows only visible files whereas "ls -a" also displays those starting with a dot. Given the question doesn't that make your answer the correct one?
'Seven files that start with Santa' is actually about filenames. That's pretty confusing especially since users are primed with file contents from the previous exercises already.
And from pipers piping description I had no idea what was wanted of me.
I think that may be the point, the subtlety of "lines of pipers piping" got me for a second - as opposed to the 11 pipers piping files (which is what I thought it wanted).
I thought there was too much ambiguity to several of the challenges:
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.
As a developer I've been through 10 different languages and about the same number of operating systems, and I barely managed to remember any of them, even at the time. And I assume soon using natural language as the main interface will become commonplace, which will finally let me off the hook.
I will give this a go, but I doubt any of it will stick!
Shell quotes is the last frontier LLM's seem to keep getting wrong. Esp when it's Github CI yaml which needs to ssh somewhere and run command running another command there. Needs AGI apparrently.
It looks very nice. One problem I've encountered is that when you make a mistake then the name of the file you have to use disappears and it's impossible to get it back.
What is this website created with btw? I like the style a lot.
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.)
It doesn't handle backspace correctly. The character is erased visually, but not removed from the buffer, so when you type the next character, the erased character reappears. Make one typo and you have to reload the page.
How would one make a true shell in a website like this one? (As in, is there an open source library to host an interactive shell for educational purposes - eg codecademy)
I couldn't tell you the exact details (I'm only passingly familiar with how it works myself), but you'd almost certainly want to start by looking into web assembly.
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.
It would be nice if the instructions spelled out what to do, then I could do it. Otherwise I have to guess what author meant. But all in, a nice small exercise, thanks!
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.
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.
Viewing the page with Safari 26.1 the questions stopped showing up after the second challenge. I was left with only Learn and View Solutions, which was not very fun since both showed a form of the answer.
aargh_aargh|2 months 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.
pekim|2 months 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.
Retr0id|2 months ago
oneeyedpigeon|2 months ago
unknown|2 months ago
[deleted]
hdjrudni|2 months ago
bArray|2 months 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:
4. Likewise the ending "!": 5. On the eighth day I get a "runner error" with the command: 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.
iN7h33nD|2 months ago
arionmiles|2 months 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.
johncoltrane|2 months ago
kalaksi|2 months ago
Another one is online tutorials that make you practice interactively. Haven't used those much but the little I did, it was helpful.
Izkata|2 months 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.
ratrocket|2 months 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.
kace91|2 months 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.
rramadass|2 months 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.
derrida|2 months 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
comprev|2 months ago
Retr0id|2 months ago
prmoustache|2 months ago
janmatejka|2 months ago
And from pipers piping description I had no idea what was wanted of me.
Kakist0crat|2 months ago
blenderob|2 months ago
charlie-83|2 months ago
ggirelli|2 months ago
lcuff|2 months 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.
imp0cat|2 months ago
throw0101d|2 months ago
* https://en.wikipedia.org/wiki/Twelve_Days_of_Christmas
The days before the 25th are part of the season of Advent:
* https://en.wikipedia.org/wiki/Advent
xnorswap|2 months ago
But that's kind of understandable when Christmas begins in September if you believe the retailers.
beardyw|2 months ago
I will give this a go, but I doubt any of it will stick!
k_bx|2 months ago
bluecalm|2 months ago
ilvez|2 months ago
Barathkanna|2 months ago
jll29|2 months 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.)
Dataset: https://openbible.com/textfiles/kjv.txt
haolez|2 months 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 :)
sannysanoff|2 months ago
ggirelli|2 months ago
kwar13|2 months ago
only content no filenames. Need to see the output if it's wrong to baseline what's being asked.
cornonthecobra|2 months ago
6LLvveMx2koXfwn|2 months ago
naikrovek|2 months ago
"lines that contain 'laugh'". lines of what? Doesn't tell you without looking at the answer.
genius.
FailMore|2 months ago
ctippett|2 months 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-...
benterix|2 months ago
pstoll|2 months 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.
oneeyedpigeon|2 months 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.
einpoklum|2 months ago
other than that - nice exercise for newbie shell dabblers :-)
mejthemage|2 months ago
mejthemage|2 months ago
chillfox|2 months ago
I did have some issues with Day 11 figuring out what it wanted, but overall it was fun.
lozf|2 months ago
unknown|2 months ago
[deleted]
tensility|2 months ago
franticgecko3|2 months ago
sva_|2 months ago
ParadisoShlee|2 months ago
smusamashah|2 months ago
entropie|2 months ago
skinwill|2 months ago
TL;DR: The page stopped loading properly.
Milpotel|2 months ago
Who would've guessed...
Biganon|2 months 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.
dncornholio|2 months ago
imp0cat|2 months ago