sudo apt-get install foo
sudo apt-get install bar
cd ~/somewhere
sudo nano something, change these lines
The same instructions for Windows involves screen after screen of text interspersed with annotated pictures of dialogs, which become obsolete when the OS is revised.In fact, I've seen an increasing number of Windows installation tips being given in CLI terms:
windows+R cmd
enter this command
It would be interesting to see some sort of tool, online or within the system, where you enter a command string and it explains what the command does.- Open the Store - Search for "Name of App" - Click Install
Bonus, this works for GUI software managers in Linux distributions which use them. Unifying the process simplifies most instructions greatly. I think the simple existence of Linux package managers, and the push to use them by the community, helps tremendously with this perceived ease. The installation complexity is largely solved by the package repository maintainers.
On the flip side, software which is not distributed with the OS can have very complex installation requirements even with command line instructions. Sometimes it's as easy as:
- ./configure - make install
But more often than not, you need to manually hunt down dependencies, and if the system uses automake / cmake and requires you to satisfy conditions for a build, those can get hairy and cryptic fast. I've gotten better at it over the years, but I wouldn't call this process any easier than a step-by-step installation wizard in a GUI.
Simply not true. More often than not you'll get static binaries. And if the software is supported by a commercial team, any dependencies on your supported platform are already tested and working.
1: https://hglabhq.com/documentation/installation/installing-hg...
Is it an MSI? If not it should be...
To install:
C:\> MSIEXEC /I /QB software-name.MSI
To remove: C:\> MSIEXEC /X /QB software-name.MSI
(/QB tells msiexec to install the app with the default options, and throw up no gui dialogs)Admittedly we're missing a good online universal repository system on Windows, but hopefully one day that'll change.
sudo apt install foo`apt search`/`apt-cache search`
`apt install` /`apt-get install`
Though, I prefer pacman/pacaur interface, even if it is less intuitive at first, but I won't use Arch on servers.
"apt-get" is meant to be used in scripts/automation. "apt-get install foo" will always behave the same way with the same params.
In Windows 10: Windows Key + type name of app + click Install button. No dialogs.
CLI is great for advanced users, but I think GUI is probably best for the vast majority of computer users.
Or to address your point more directly: for many tasks the GUI may seem easier at first, but a modest investment in CLI techniques can yield far greater dividends, over time.
And then there's all the conceptual and dependency bloat that GUIs impose on a project, over time.
CLIs are about memorizing what you can do.
One suits computers and the tiny amount of population with aspergers, the other suits normal people.
CLIs are idiotic. Why can't you just click a button and be done, certainly not sit there and spend 20 minutes figuring out what the fuck -g means or if knockut-sortable is missing an o.
It's utterly ridiculous that you're discussing this and just shows how many of you are utterly brainwashed by utterly useless trivia that your computer should be memorising for you but your fellow programmers are too lazy to implement GUIs for.
I honestly can't comprehend that you so gleefully spend your time so pointlessly, you should be spending your brains on solving actual life and business problems, not memorising the syntax of CLIs you'll use once every 3 months, or worse still, never again, or virtually useless regex syntax.
Using guis and managing a server without a CLI is a very annoying situation.
There are other things where using a GUI is way nicer, like complicated partial git commits.
Also thanks for informing me that I have aspergers, guess I'll have to go have a doctor check that out ;)
On the topic, some GUIs are idiotic. A command takes a second to type, but a complicated GUI may take multiple buttons, menus, etc. that take almost forever to navigate.
> I'm a developer
> useless regex
I don't know what kind of developing you do but regexes are massively useful if you do any sort of string handling or input checking.
> CLIs you'll use once every 3 months
Funny, I spend 90% of my time in a CLI. I don't spend my time memorizing stuff, the commands I use frequently are committed to muscle memory, the rest I look up. If you spend time with the CLI you learn to look stuff up not too inefficiently. Looking for a menu entry in a GUI is more painful to me than reading/grepping a man page.
Sounds like you really hate CLIs, I hope you don't have to use them too often, there's no reason why everyone has to use them, but I promise you, there are hundreds of thousands if not millions of productive CLI users out there.
Because there isn't a button to just do everything I want to do and if there was I'd have to find it amongst a million buttons.
This makes me skeptical that you're a programmer, because you just described programming. CLIs are everywhere in programming, and if you haven't written a script you prototyped on a command line, you can't be very experienced as programmer.
However, I spent a decade working in .NET on Windows – mostly before PowerShell became popular/usable. A lot of good, experienced programmers in that space rarely used a CLI. I personally had some batch scripts that I used often, but for most people on my team, the CLI was just used for infrequent admin tasks, e.g., debugging a networking issue, restarting IIS, etc. No part of the daily programming workflow depended on a CLI.
I've also worked around some iOS developers, and their workflow seemed similar in that most of them rarely used the terminal for anything beyond infrequent admin tasks or maybe version control.
So yeah, I live in the shell, and it's hard to imagine anyone working in Ruby (or Python or server-side JS) for long without heavy CLI usage. I love the power and composability of the command line, but I also understand that not everyone does and not everyone needs to.
Edit: This might be a flawed analogy, but my feelings on this are similar to my feelings on an IDE vs a text editor. I've become a somewhat passionate vim user, but I wouldn't negatively judge a .NET developer for using Visual Studio nor an iOS developer for using Xcode.
Dump 150 table database, both schema and data. Except two tables, for which you need only schema. Then compress, encrypt & email.
With CLI I can spend 10 minutes looking up documentation, shove command into shell, start it and go to lunch. If I need to something like that again, I can Ctrl-R it, tune and launch again in couple minutes.
But maybe there is a button I can just click?
I sometimes wonder if our ability to imagine what visual interfaces can do is limited by our experience with current GUIs. Right now, as other have pointed out, we're limited by the fact that GUI interfaces aren't really composable the way CLI commands are.
But what if we had something that is composable -- maybe something like Smalltalk on steroids -- where every program is a living object that can describe in detail what it does? Then, you'd be able to ask the program what inputs it requires, what its abilities are, and what outputs it can provide.
With something like that, it would be possible to visually put together interesting combinations of programs that we might not have created otherwise. Sort of the like what Bret Victor describes in 'Inventing on Principle'[1] where certain solutions to problems become much more apparent when you can manipulate things and try out new combinations quickly. I'm certain things like this exist (and have existed) in various forms, but I don't think we've explored the concept as fully as we can.
On the other hand, though, I agree with a quote from Eben Moglen earlier in this thread where he talked about 'point and grunt' interfaces. We've been iterating on the same paradigm for a long time. Touchscreens are better in some ways, and worse in others. We gain more physical interactivity with our devices, but we lose a lot of precision because we're now just smacking meat sticks against a pane of glass.
But you know, it's easy for me to sit here and complain about this on the internet. Actually doing something about it is much harder. Maybe it's time for me to fire up Smalltalk and give it a try. :)
CMD --help
man CMD
Tab competition
Command line history search
[QUOTE] ... to me, GUIs are like a caveman language where you have to grunt (click) and wave your hands (mouse) at the computer until it does what you want. (imagine the mouse pointer as your hand, then say "ugh" every time you click to mean "ME WANT THAT".) if whoever wrote the gui didn't add a feature that you can specifically communicate with an exact grunt and wave sequence, you're out of luck and have to ask the developer to add that.
Shell scripting is like spoken language, a much more natural and powerful way to communicate what you want to do. instead of every developer having to reimplement functionality for crawling a tree and doing something, one guy just writes the 'find' command and it's usable in conjunctions with other commands. [/QUOTE]
source: https://hydrogenaud.io/index.php?PHPSESSID=ae25885agmimsrj76...
> In 1979, when I was working at IBM, I wrote an internal memo lambasting the Apple Lisa, which was Apple`s first attempt to adapt Xerox PARC technology, the graphical user interface, into a desktop PC. I was then working on the development of APL2, a nested array, algorithmic, symbolic language, and I was committed to the idea that what we were doing with computers was making languages that were better than natural languages for procedural thought. The idea was to do for whole ranges of human thinking what mathematics has been doing for thousands of years in the quantitative arrangement of knowledge, and to help people think in more precise and clear ways. What I saw in the Xerox PARC technology was the caveman interface, you point and you grunt. A massive winding down, regressing away from language, in order to address the technological nervousness of the user. Users wanted to be infantilized, to return to a pre-linguistic condition in the using of computers, and the Xerox PARC technology`s primary advantage was that it allowed users to address computers in a pre-linguistic way. This was to my mind a terribly socially retrograde thing to do, and I have not changed my mind about that. I lost that war in the early 1980s, went to law school, got a history PHD, did other things, because the fundamental turn in the technology - which we see represented in its most technologically degenerate form, which is Windows, the really crippled version. I mean, I use Xwindows every day on my free-software PCs; I have nothing against a windowing environment, but it`s a windowing environment which is network transparent and which is based around the fact that inside every window there`s some dialogue to have with some linguistic entity.
Edit: it's also apparently one source for Eben's idea that I read a while ago but couldn't find again, about the switch from fighting over crypto for privacy to fighting over crypto for DRM (though it seems like in past few years we've gone back to fighting over crypto for privacy again).
"It could make more impact if it actually explained tasks that are harder to do in GUI than in the command line, such as massive renaming of the files, filtering files depending on content and so on."
It seemed to me his assertion wasn't "the CLI is bad and we shouldn't use it," but rather that the linked "You Don't Need the GUI" piece doesn't make a particularly good case.
And, I admit I agree. There are things that a CLI is much better at, especially if you're a developer, but there are other things that a GUI is arguably better at, sometimes even if you're a developer. If I have a bunch of files that need to be committed to a git repository and I want to commit the changes in multiple commits so they're related by topic, it's faster to select and commit each set of files with GitUp than it is using git's CLI. I find myself switching between the terminal and Finder on a fairly routine basis depending on what the task is.
tl;dr: GUI aficionados really should learn the CLI, but the reverse is also true. I can't speak for every GUI out there, but there's a lot you can do in macOS's that I think people don't really take advantage of.
It is partially possible via svn commit `select-files ./path/to`, except cancel part.
If you type svn commit ./path/to/<Star><Star><tab> It launches a fuzzy Finder (within the terminal) that you can use to recursively search through `to`. You can use the arrow keys and enter to navigate and select. Imo it's faster than a gui would be.
TortoiseSVN was a breakthrough for me. After switching to git, it was painful to try to remember all the different commands, wade through commit logs and find the hashes of commits. I see TortoiseGit exists, but since my org is still on SVN i haven't really given it a try.
Database admin, same thing. CLI clients such as sqlplus or pgsql are ok, but I'll never be able to commit to memory the various commands to show tables, show all databases, describe a table, etc. The one exception is the mysql client which has sane defaults and easy-to-remember commands. I frequently switch dbs, so this is a must. Pgadmin, sql developer and even the buggy MySql Workbench are all more pleasant to work with than CLI, in most cases.
But this are just my preferences. If the CLI works better for everyone else, then great. Maybe I'm missing something, and maybe someone would give me a pointer to unlock the magic of CLI in these scenarios that would make me more productive
Aside from large integrates, everything that the people working on my project do is drom the GUI.
Magit https://github.com/magit/magit is definitely the best user interface I've tried for version control. I still drop to the command line occasionally, but it's not as productive unless I'm doing something unusual.
SQL Server Management Studio is also much better than any command line database tool I've used. For any action you can do in it, you can hit a 'generate script' button which you can use to automate what you just did. This is a fantastic feature, because using the GUI becomes a better way to discover and understand the CLI underlying it.
However, the linked repo in the original article simply presents a few commands for copying, moving and zipping files. This is useless and will not convince anybody that they do not _need_ a GUI. It makes a very poor case. If you know what terminal is and how to launch it you already know way more than that article shows, if you don't then there is no way it will convince you that you do not need something like Finder.
Subjective. However, if you can type at a reasonable speed, the terminal is faster than moving a mouse around.
Now, GUI makes more sense for many things. Kinda hard to edit video without a GUI (but if someone has a command-line-driven video rendering editor, let me know - I want to explore this.) Visual programming wouldn't be 'visual' without GUI.
There is a linear editor called AviSynth that's relatively popular and very Windows-based.
Wait, does anyone actually use the aalib output? I thought it was a joke.
Even common commands have this problem — for example, I don't copy files all that much, so when I do, I frequently forget that cp takes -R instead of -r.
The annoying ones on linux are chmod/chown, they take -R only.
EDIT: it's OS specific in the sense that these programs follow the OS's convention, I expect BusyBox cp, a lightweight Linux version of cp, has the same options as GNU cp
(The gif is a little slow, but you can obviously move through them a fast as you can hit the keys)
Have you heard of one of the most popular visual editor called 'vi' (short form of 'visual')?
But of couse I don't use it. Once you know Emacs well, you won't either. :-)
Straight up.
apt-get /pip /equivalents are all astonishingly efficient methods of installing programs. Have seen many non-tech inclined people change their mind quickly once being exposed to it.
Perhaps we should be asking people to try first? A gui is a necessity in certain situations, but it shouldn't be lore.
Demand more and you will get more.
I was hoping for actual small common cases where people use JS to do something that's super easy with CSS, like animations.
Either way, I think log files of actions taken are much more debuggable than watching a computer control the gui.
Their current tool Automator is supposed to do this, but I don't know how widely it's supported. I suspect just like everything else, it has niche of users who love it and depend on it. It's not something your typical Mac user would think to reach for.
I actually built one of these hybrids for a piece of chip design software, where scripting is very much expected. Architectural bonuses were that it was almost like having a GUI microservice; it could iterate separately, be written in a different language, and crash separately too.