How many Linux commands can a 7 year old learn?
thejavaguy.org
thejavaguy.org
"ok, now open finder. its in the dock. you have to move the mouse to the bottom of the screen. its the man with the face. ok now we need to get to the file. ok where did you put it? ok lets click to it. is that it? ok right click. lets find copy. great where is it going, click back, its the button up there, click back again, click it one more time, lets go forward again, ok in that folder, click on the name, no thats a triple click click somewhere else and lets try again, ok double click, ok now we are in, ok right click, paste."
versus
"type cp filefromyada toyada and press enter"
A lot of people are so used to the GUI that they get scared of having to learn to walk again practically and diving into the cli. But if you never learned all the hoops and crap we have to deal with finagling stuff around a modern gui, I think you'd be able to do a lot more powerful things a lot faster starting with the cli from the beginning. I really wish I grew up learning the cli vs the gui, personally. guis also frequently change whereas the cli feels like its etched in stone (or you can use a container with whatever version of the stone you like)
so hit the 't' key, followed by the 'y' key ,,, followed by the enter key to copy this file. While this is a trite example, how many linux how-do-I-do-this's get resolved with copy this command with half a dozen flags[0] into your terminal?
The underlying problem with CLI is they lack information about the underlying structural logic and discoverability about the interaction. This makes it hard to impossible to extend 'copy this file' to 'open this file', or 'make this file read only'. In a (decent) GUI once 'left-click select' 'double-click open' and 'right-click options' is understood the rest is spelled out. Unlike with a CLI, where one needs to remember 'ls'[1] there are only two buttons on a mouse.
I absolutely agree GUI changes - especially paradigm changes - are a plague though.
[0]Which invariably seem to have a different obtuse formatting from the last command I had to copy.
[1]Which stands for what anyway?
I'd always figured it stood for something like "listing" but if it doesn't, who cares, no one's gonna have a problem remembering it.
> there are only two buttons on a mouse
There are 3 buttons on the mouse, plus 3-4 modifier keys (shift, alt, control, logo) on the keyboard, which are sometimes used in combination. Usually not more than 2 modifier keys are used at a time, so that gives us four (single mod) plus four choose two (two mods) modifier combinations, times three for each mouse button, equals 30 different actions, which are usually not well discoverable.
Ahhah. My favourite question when some fanboy starts to evangelize the ease of use.
It's 'list segments', from Multics, AFAIK.
“The best thing about computers is they do exactly what you tell them to do. The worst thing about computers is they do exactly what you tell them to do.”
CLI requires reading and writing, and usually in English — at the very least, Latin script.
I don't know how I would feel if I didn't grow on the CLI (back in the DOS days), but I'd say CLI is a faster way to do most things other than selecting by visual data (eg. find all images with mountains in this folder of 1000 files) — at some point, ML will help that bridge get crossed too.
The benefit of a well designed GUI is that it can give you high quality feedback, or block you even trying to do something in the first place, because it's contextually aware. Command line commands can only give you an error after trying something.
Good software makes recovering from a problem as painless as possible. In general command line apps are quite bad at that.
I don't remember any of the syntax for commands I haven't used in the last month or so. GUIs are very fast for one off tasks like "Sort this CSV and only take these 3 columns".
LibreOffice loads faster than I can read 3 different man pages and figure out commands I haven't had a reason to use in months.
Plus, commands tend to be less integrated, and there are some things that GUIs automate very well, that would require writing your own automation in the CLI, and I like workflows with an absolute minimum of ad hoc software.
In theory, yes. In practice, what happens is the progress bar would seem to freeze.
What do you do now? Some computers still have a blinking HDD LED, maybe you can glance there.
Otherwise you have to know a great deal of the mechanics behind the curtain to find where the relevant log is, and how to inspect the running process. Is it a stale mount? A shared library that wasn't found? Or perhaps an automatic operation triggered on a magic filename?
A CLI has the benefit on being conceptually simple. There's going to be a result, and it's going to the console. It may be cryptic, and you may have to look up the meaning it it's something unusual (notorious ones like "lp0 on fire" are the joke of the Internet, hilariously cryptic GUI messages are a dime a dozen), but it's seldom going to surprise you. It's not going to freeze the terminal, or suddenly boil your coffee.
It's certainly not the silver bullet that fits all, but things that are conceptually simple are often a good default.
If you're lucky. The kind of things that make a UI freeze often make a CLI freeze too. If you're unlucky, you end up with an unkillable process. Or, more confusingly, a process that garbles up your shell until you reset it.
All of those problems could also occur with the GUI approach, and I'm not sure the error messages would allow a novice to fix the problem any better than on the command line.
Neither happens on macOS. Instead, I can drag the file as usual, but then I'm shown a dialog which asks me to login. It doesn't do a brilliant job of explaining the problem, but it's probably better on balance than the command line's "Permission denied".
> An unmounted volume just isn't shown in the first place.
Is this significantly different from the volume not being listed under /Volumes (again, this is where it turns up on macOS)? I think I almost always use tab-completion with that directory anyway because volumes rarely have reasonable names.
> A full disk shows an error saying how much space is needed, or asks you to free up space.
I'd be surprised if the command-line error wasn't similar, tbh.
Piping commands etc is conceptually more intricate, but the good thing is, that even without it you can get quite far already.
There’s a minimum level of knowledge required to solve problems on your own at the command line. Another 5 sessions would do it.
I imagine the GUI is similar but harder to quantify since spatial knowledge is more innate. I remember being 10 and fiddling with a computer UI without knowing anything. I figured out selecting and dragging on my own but not double clicking to open.
Curious if other aphantastics are similarly slow/error prone? I cannot visualize a keyboard, and while I can usually type without looking, my form is poor and I do steal occasional glances.
I do make mistakes but I don't feel particularly slow or error prone. As I said elsewhere I like to use the C-t command to fix letter swaps and I get them definitely less than once per normal day.
I don't have a visual representation of the keyboard in my mind at all, but having touch typed (imperfectly) since high school, I can tell when I mistyped a key by feel too (eg. not looking at the output on the screen either, your muscle memory will let you know if any movement was awkard or unexpected).
FWIW, it's important to learn where the "corrective" (backspace, delete, cursor movement...) keys are on your keyboard while looking at the output: then you can easily push yourself to not look down on the keyboard while practicing.
I also do everything I possibly can on the command line because it is -one- interface to learn with a universal history to reference past commands vs randomly mucking about in GUI interfaces I can not picture in my head that are wildly different in every application.
I never noticed myself doing it either. But after learning of Emacs (and MacOS) "transpose" shortcut C-t (aka Control-T on macs), I find I use it about once every 1-2 weeks.
It's not even faster than deleting the word and re-typing it, no. It's just funny.
Really, I tried it out and giggled out loud. Now how do I go about sharing this joke with my friends? "It all started in 1976... let me tell you about bucky bits."
If I'm typing at a steady pace ( no matter the speed), when a finger doesn't get the tactile feedback it expects, it may hesitate while the next finger strikes the next key on the same pace.
And for short commands like, `ls` or `cat`, I often hit the all the letters at nearly the same time which can swap letters.
A few years later and I was typing in c64 basic programs from the back of magazines. Then it was I showing my father how to schedule and print little league baseball games, and my mother how to track her bowling tournament results.
Thanks for sharing your story. It is amazing what kids can do with just a bit of a nudge.
My father (84 now) is up to date with technology, he gets the mechanics and can perform his tasks (windows, android, roku) but I don't think he has a conceptual model of how any of this works. It was fascinating to me growing up, if you gave him a budget for buying a computer he could spec out the best "bang for your buck" knowing 8GB RAM > 4GB RAM and a 1Gig HD is > 500 MB HD without actually understanding what the components were. He was never interested in that level of detail, just show him how to click and do it.
I'll never be sure how many trials and errors I had before I could do something, but eventually I figured some things out.
Definitely would have been faster with somebody showing me. I probably would have been about 6 or 7.
Watching my 7 year old fumbling around with Scratch makes me think it's not as rare or amazing as it seems. He gets better all the time.
He’s not a savant by any stretch of the imagination. Kids are quite capable at very young ages. Parents are usually the ones holding kids back.
I make my 8-year old struggle and work when she asks for help. She gets mad, but I can see her actually learning how to learn. She also is not a savant, just a normal 8-year old.
https://kidshealth.org/en/parents/screentime-baby-todd.html#....
Edit: looking at your post history you have a pattern of making shitty one-sentence comments. Why even bother? You come across as a troll.
So many kids learned to type some commands on a Commodore 64. There wasn't an iPhone to steal their attention.
I think that learning in an environment without a GUI was in the end very helpful. Of course in the beginning it was quite difficult, but very gratifying when I got something right.
Hope you are having a great Tuesday and hope all is well! My name is flerchin, I am a technical recruiter for Amazon Web Services (AWS) and am hiring for Software Engineers looking for 100% fully remote roles. I’m reaching out because your experience and development background intrigued me and are in line with what we are looking for to help continue to build AWS. Especially your recent work would complement the AWS teams here and I know they would be interested in speaking to you.
"Squeak Etoys, Children & Learning", Alan Kay
> The projects developed in Squeak use a different and simpler kind of incremental mathematics that allows very young children to understand some of the key ideas in calculus. We have found that more than 90% of 5th graders not only understand “Galilean gravity” but are able to derive the mathematical “formulas” (actually 2nd order differential equations) using this alternative mathematics, and author a simulation that matches up very well with the experimental data.
http://www.vpri.org/pdf/rn2005001_learning.pdf
(Also, something about infants and sign language... And László Polgár and his three daughters, whom he raised to be chess prodigies...)
We are barely scratching the surface of human potential...
I got around at a basic level with that knowledge, learning how to copy, rename, delete files, etc. and create new ones with 'ed' or 'vi'. Just enough to be dangerous, as they say. It wasn't until a few years later that I understood pipes, filters, redirection,and how to write my own commands in shell or C.
Recently got my daughter into doing web application testing. She found four bugs in an hour. Trying stuff that I never thought of. I've created a monster. (She's getting paid, don't worry)
sudo papa buy me a lego set
He might not be able to touch type, but now he can type touch.
Put each byte where it belongs
That's about the age where I learned programming (with AmigaBASIC). At that point, I did already know a bunch of CLI commands, too.
Kids can very easily get immersed into something. They also have a lot of free time.
git bisect good/bad
E: I mixed the commits up. The irony
But give the kid the right context cues, and they can take off running. My daughter knows Bash. She always stares blankly at the first minute, but with someone able to get her started, she'll be back to writing her CYOA game in about five minutes.
"Kobayashi Maru" of teaching?
People should start making their shells act like in the 2000's and not 1990.
I only use raw "rm" when I need to delete a large folder that should not go in the trash bin.
In fact distros should start caring for user friendliness and even ask to do that on installation.
A system with no trash bin is what, before Windows 95?
as a regular user of rm for decades without any issue whatsoever this reads like parody.
I understand it probably isn't, and I understand the logic behind the design choices that are prevalent in a modern OS..
but some of us just want the machine to do what it's told the first time, and we're competent and confident enough with our holstered foot-guns that we're not a major threat to any system that is being administrated properly.
>In fact distros should start caring for user friendliness and even ask to do that on installation.
I felt a great disturbance in the Force, as if millions of scripts suddenly cried out in terror and were suddenly silenced. I fear something terrible has happened.
people try to coin terms and initiate trends all the time. it's no 'thats so fetch' but its not that bad. I'd never use it personally and have never heard of this type of lunacy but to each their own.
Sure, for someone riding a horse for decades, a bicycle may look like a parody but people should look for more convenient methods.
> we're competent and confident enough with our holstered foot-guns that we're not a major threat to any system that is being administrated properly.
This is more like a parody that you should realize how many people are losing data over simple wrong "rm" everyday as apparently average people aren't as competent as you're with decades of experience.
Desktop Linux also has a trash bin like anyone would expect. Not sure why this is not the case on the command line.
Yes, aliasing rm to trash-put may screw bunch of scripts but that doesn't mean people should find out about trash-cli after they've lost data. Smart scripts should not rely on aliases but use a clean environment or specify a full path to a command as well.
It could act as trash-put when used interactively or how come rm itself can't evolve over POSIX when rm is one of the easiest way to screw yourself with no confirmation by default.
The thing is that many Linux commands can wreck your system if you're not careful: a wrong `dd` or `mkfs`, removing a core package and its dependencies, a wrong change in `/boot`, etc.
I've definitely lost work because of this, but it always served as a learning experience, and I was more careful next time. I don't think I'd want to use a system with training wheels, not even when I was learning. The whole idea of Unix is giving full control to the user, and respecting them enough to allow them to make mistakes. If I didn't want that I'd be using a more restrictive OS.
BTW, a good middle ground between raw `rm` and `trash-put` is `alias rm='rm -i'`. This way you can confirm deletions or pass `-f` to force it.
Done that 15 years ago.
Ended up using -f because the confirmation got annoying fast.
Landed onto using trash-cli and never had to bother anything when rm'ing.
You can add 'trash-empty 30' in daily cron to delete files older than 30 days in the trash.
If I were to alias rm to something safer, I would probably get used to it, and over time start being less careful on the rare occasions I do use it.
Then I'd SSH into some system that didn't have the alias, and screw myself over.
rm should ideally have trashed stuff instead from the start, but since it doesn't, I think it's best to forevermore treat it as a dangerous command, unless all major distros switch.
When I'm about to delete something with wildcard expansion, I'll first `ls` the wildcard expansion and glance over the results to make sure I'm not deleting anything I don't want to delete.
Glad you've diligently followed that rule for over 10 years but think of average users.
It's also very possible that you actually want the file back later even though you thought you didn't need it then.
Deletion confirmations are more important in GUI systems like Window's file explorer, where accidentally deleting a selected file would otherwise be a single mistaken keypress away. The delete key is easy to accidentally press. Your cat could even do it for you. Using rm requires a lot more effort, so I don't find a confirmation necessary.
A cat needs to step on up arrow and enter to repeat a command as well.
But supposing all the stars aligned against me and my cat re-ran a removal from my shell history that actually referred to a file that existed still, I think that's a significantly less likely scenario than accidentally pressing delete in a GUI file explorer. Selecting files in a file explorer is a very common operation. And something is selected, the confirmations are the only thing standing between you and a single keypress disaster.
You know what commands scares me more than rm? cp and mv. Both of those can overwrite files, effectively deleting them. When I use rm at least my mind is already on the topic of file removal. (And yes, I know about -i, but who has time for that... I tried using aliases with -i once and disabled it the first time it inconvenienced me. Besides, I don't want to rely on a crutch that might not be there when I really need it.)
I've mostly moved away from all of this anyway, and primarily use dired and ranger.
It saves me, usually in minor ways, a few times a year.
The real saviour is git.
In all seriousness - use of physical tools teaches a myriad of skills. Just a few; hand-eye coordination, problem solving, visual spacial recognition. Children's toy brands like Melissa & Doug sell a wide variety of sets for development of these and other skills. Her using my tools is additional parental involvement and interaction, bonding time. Nothing but positives.
There is no such a thing as "Linux command"!
> He goes on another spree of rm <something>
I cant be the only one who was waiting for him to try `rm -rf /`, can I? ;) Seriously, though, give him his own account asap!
My 8 year old doesn't sit at the terminal, but he sure likes going to Scratch and editing the computer games there... sometimes writing his own, but usually just finding amusing ways to cheat or make existing games do weird things.
I wish it was a little easier to get into the "under the hood" stuff for kids. A whole lot of kids can do it and would enjoy it, but there's too many things with shallower learning curves in computers competing for attention.
As far as "tender cognitive age"--- not everyone picks up the mental models and procedural thinking needed to be a decent programmer. A little bit of early exposure probably makes this more likely. Of course, too much of anything is bad.
the title of this article, that I commented on, is literally "How many Linux commands can a 7 year old learn?"
Did you just willfully skip everything I said to focus on this?
The article is about a kid who spent an hour, once, with his dad experimenting with a terminal. He's interested and curious and probably wants to do it again.
I told you that my 8 year old doesn't sit at a terminal, but has spent a fair bit more than an hour doing a somewhat similar computing task. He's also hyper-social and well adapted dealing with other living beings.
in an age of overwhelming signals, too much is too much, completely agree.. there is no ambiguity, children and teens are overstimulated with synthetic signals, and emotional health is suffering for it
There are more important things out there to teach to a 7 year old kid. Later, the kid can learn much faster, more important commands than simple 'ls' stuff.
Life skills, math, sports and stuff like that are much more important and fun, compared to these simple commands.
Kids learn by imitating. If they see you learning the terminal, they ask you how to use it. The right thing to do is to show them.
programming is a tool that you can apply to just about every facet of life and output any number of posibilities. Not having learned it earlier is my biggest regret. imo knowing how to program and really understand how a computer works should be seen as the reading and writing of our modern age. computer literacy is low in this world and that's dangerous, but i think the reason for this is people just don't often get exposed to programming unless they want to seek it out themselves. it's rare to have parents who know how to code or even schools that offer classes in coding, much less require it like english.
Of course I'm aware that math, soft skills etc. are probably going to be more important to him than `bash`, and I try to show him a bit of those too! But that doesn't mean that showing him something unusual when there's already an interest from his side is useless.