9 ms·
I'm a developer of 10 years, and use the command line for Git, Brew and a few other things, though I'm normally an IDE developer. I believe the CL is as powerfu
by Charlie_32 3y ago
I'm a developer of 10 years, and use the command line for Git, Brew and a few other things, though I'm normally an IDE developer. I believe the CL is as powerful as everyone says, but what are some useful things I can use it for? I use Zsh on a Mac some of the time.
- reactordev 3y agoColorful prompt with context information, powerline glyphs, autocomplete, command highlighting, easy navigation through strings, plugins and a plugin ecosystem that extends your shell like crazy
- smcleod 3y ago10 years in tech and you haven’t optimised your shell?
- cnity 3y agoX years in tech and you haven't Y. Pick any X and Y that maximises your ability to feel superior, I suppose.
- Brajeshwar 3y ago20+ years in tech and these days, the first thing that comes to my mind is usually, “Can I walk out of this?” :-) The idea is to be able to use any computer/system/devices easily instead of one perfectly.
- smcleod 3y agoGosh, I couldn’t think of anything worse than having to optimise myself for generalist systems
- kjellsbells 3y agoMight be a generational thing. Some folks grew up on systems that could fail at any time and leave them with nothing but the tools in /sbin to fix it with. No /usr, no bash/zsh, just sh and vi if you were lucky. You learn to love the cool new things, but you still have a mental bag packed with fsck and ed in case you need to bug out. It's silly, really because no systems are like that any more, but the things you learned at 2am when you were 22 tend to stick with you.
- smcleod 3y agoPerhaps, I’ve been in tech 18+ years though. Cut my teeth on Solaris, AIX, Unix, Linux etc… the good old days!
- markstos 3y agoI strive to speak multiple languages, but I think it still worthwhile to be really good at my primary language of English. Same with computers and servers. I interact with a lot of them, but my primary computer that I use >80% of the time is worthwhile to optimize with some tooling that's not available on all the others.
- pjmlp 3y agoCoding since 1986 and I touch the shell as much as I have to, If I cared that much I would still be using MS-DOS, and UNIX without X.
- Symbiote 3y agoWhen you need to rename 5000 files from abcd_small.jpg to abcd.jpg, how do you do that? rename s/_small// *_small.jpg When you have the string ABCD_XYZ in 50 files but you need to change it to DEFG_UVW, how do you do that? perl -pi -e 's{ABCD_XYZ}{DEFG_UVW}' **/*(.) When you need to move all the files ending '.png' into the directory 'PNG', and all the ones ending '.jpg' into 'JPG', how do you do that? mkdir JPG PNG; for i in *.png *.jpg; mv $i $i:e:u
- pjmlp 3y agoThere are GUI tools that do that, and thankfully most scripting languages have a REPL.
- Symbiote 3y agoI'll bet it takes longer to find and use a GUI tool for these. And a shell is a REPL.
- pjmlp 3y agoYou bet wrong, because naturally approaching 50y, I have my tools for quite some time, for the stuff I care about, not random examples on the Internet. A UNIX shell is a very bad approximation of a real programming language REPL. It is no accident that sh scripts turn into Perl, Python, Tcl, Lisp,... when one wants to keep sanity.
- JNRowe 3y agoAs we're in a zsh story, I'll point out it comes with a clever file renaming interface out of the box¹. It allows full access to all the advanced glob operators zsh provides too². ¹ https://zsh.sourceforge.io/Doc/Release/User-Contributions.html#index-zmv https://zsh.sourceforge.io/Doc/Release/User-Contributions.ht... ² https://zsh.sourceforge.io/Doc/Release/Expansion.html#Filename-Generation https://zsh.sourceforge.io/Doc/Release/Expansion.html#Filena...
- PrimeMcFly 3y ago> but what are some useful things I can use it for? I mean, surely you already know? Anything where feeding input between different tasks, or where you want to use regex, or similar things the cl will be superior.
- bongripper 3y ago[dead]
- pletnes 3y agoRename hundreds of files at a time. Find stupid errors in GB sized csv/json/.. data files. Automate git bisect. Automate workflows by writing a short loop or 3 commands in a row you can easily repeat. Down/upload big datasets. Convert text files any way you can think of.
- bongripper 3y ago[dead]
- jay-aye-see-key 3y agoThe two things you can do in the shell you mostly can’t do elsewhere is compose arbitrary commands and store custom commands. For #1 this blog post has some good examples of quickly chaining together commands (though personally I rarely use xargs) https://drewdevault.com/2020/12/12/Shell-literacy.html https://drewdevault.com/2020/12/12/Shell-literacy.html For #2 once you’ve got a command you like, maybe one that generates a metric, you can now re-run it with ease from your history, saved text file, or an alias. You could also share it with teammates. Please correct me if there are other ways to achieve the above, shell is the only way I know
- pjmlp 3y agoProgramming languages REPL environments.
- d0mine 3y ago"Always Bet on Text" - CLI encourages automation (shell commands are easier to repeat/parametrize then GUI steps) - shell instructions are more git friendly than screenshots (even if a process can't/shouldn't be automated. Commands are easier to document in a reusable/updatable way) - CLI can be used to run tests in a way similar how CI does it (more reproducible) Command line tools are easier to extend/combine with existing pipelines (rg,jq,xargs): read input from stdin/write output to stdout, report on stderr, return non-zero code on error. It enables you to create adhoc tools that you wouldn't bother otherwise (unrelated: LLMs also have this property by making your skill set much broader (though very shallow with current LLMs)). Shell also has Forth-like property (compose with: retry, timeout, setuid, exec, xargs, env, ssh, etc) https://www.oilshell.org/blog/2017/01/13.html https://www.oilshell.org/blog/2017/01/13.html