Ask Slashdot: Command Line Interfaces -- What Is Out There?
Mars729 writes "GUIs are walled gardens in that features available in one piece of software is not available to other pieces of software. However, there is software out there with command-line options that can make software features accessible to power users and programmers. Some important ones I have uncovered are:
- Exiftool: A command-line application that can read/write almost any kind of metadata contained in almost any filetype
- Imagemagick: This and similar software like GraphicsMagick is a full-feature toolkit for displaying, converting and editing image files.
- Irfanview: Like Imagemagick but faster, although it has much fewer features.
FFMpeg: For video files - VLC: For audio and video files
- Aspell: A command line spell checker
- Google Static Maps API: A URL with coordinates, markers, zoom levels and other options to show a custom map from Google Maps. (I just uncovered this: no need to learn KML!)
Less useful but still useful are command shells. These provide file management mostly. I believe some of them may allow for sending and retrieving email messages. Also useful but less accessible and with a steeper learning curve are software with APIs and scripting. Examples would be Visual Basic for Applications in office software and groovy scripting for Freeplane. What else is out there?"
You all will love to use
systemctl
journalctl
The first shows all services running on Linux
The last shows all binary logging on Linux
Get used to those commands because its the defacto standard now.
This isn't worthy of being a story, we all grew up using command lines.
There is even more to uncover there!
How is this news for nerds? Maybe it's for nerds, but it's far from being news. It's more like common knowledge around Slashdot.
Mod parent up
Quoting the summary:
Less useful but still useful are command shells. These provide file management mostly. I believe some of them may allow for sending and retrieving email messages.
Yes, my head just exploded. Please pardon the mess, aggressive renovations are in progress. I'm absolutely awestruck that this made it to the front page of /., and suddenly feel extremely old at 32.
In short, if you are experiencing a lack of flexibility with GUIs, which is a completely normal response in my book, please proceed to install your favorite Linux/BSD/Whatever-nixish distribution and learn to use the following:
I really, truly, honestly, brain-explodingly do not know what else to say here. Holy crap.
Write failed: Broken pipe
are the mods are all drunk?
If you are doing windows and still doing Visual Basic for Applications for general scripts you are part of the problem and really behind in your skill level.
Powershell has easily replaced most VBA script usage, there are still a few special cases where it has to be used.
Is this some sort of joke?
A Unix-style shell is the most useful command line interface. It is itself its own scripting language.
There are various ones. The most popular is bash, but there are also fairly different ones like fish.
I'm sorry, is this a joke? The Windows command line - even with powershell - might be a crippled joke, but the unix command line allows you to control *everything* going on in the OS itself and most features of whichever Desktop you're using. Plus the ability to pipe commands together creates a level of poweruser control that is far greater than the sum of its parts. Something Microsoft took 2 decades to realise and a paradigm that a lot of Windows admins still don't "get".
PowerShell deserves a mention too. Some people hate it, some people love it.
It is object oriented so the data transfer between processes is more robust. Also all the commands' manual pages come with extensive documentation and lots of great examples. UNIX man pages usually lack examples.
mulk - much needed modernization of wget's functionality :color ir_black
qrencode - copy-paste from the desktop to a mobile device, or maintain an airgap
iotop - like htop for IO
history - built into bash, re-issue old commands as !number
pkill - kill programs indiscriminately
youtube-dl - keeps working even though google has almost killed youtube
netstat -lnp - see which program is bound to which port
vim - it won't make sense until you install plugins like spf-13, learn a few key combinations and set
tar -zxvf - you can remember it because the keys are right next to each other
pxz - parallel LZMA compressor
alasamixer - volume control
locate - find files, update the index with updatedb
Looking forwards to see more!
All rites reversed 2010
Everything old is new again...
Hey lets reinvent the wheel too.
I have been reading Slashdot for over 10 years.. this would have to be one of the worst 'news for nerds' stories I have ever seen.
I need to find a new watering hole.
"GUIs are walled gardens in that features available in one piece of software is not available to other pieces of software.
Never mind it should be "are" not "is", under what circumstances would you ever be surprised that the features provided by Excel are not available in PhotoShop... with the exception of cut/copy/paste?
Did I miss a meeting where meretricious twaddle on this site became de rigour?
Maybe I should resign my ID...
This sig left unintentionally blank.
Manipulate the Windows GUI with AutoHotkey. It's quite useful for scripting closed-source Windows software that provides a GUI but not command line options.
Exactly this. FFS, bash allows you to read straight from TCP sockets.
GUIs are walled gardens in that features available in one piece of software is not available to other pieces of software.
The best programs do have scripting interfaces but just because a program lacks a graphical interface doesn't mean it's properly scriptable.
Howdy howdy howdy
The movie Titanic was rendered, in no small part, with Amigas running AREXX to control the per-frame rendering and result submission. Many Amiga applications included an AREXX interface port (I used the one in the terminal emulator for automated dialing).
PC-DOS 6 (The IBM release, that also included CDROM drivers, and came on CD), had an IBM port of mainframe REXX, as well.
and that is the VMS DCL
Built-n context sensitive help with examples. Not need for those terrible things called 'man' pages. Nary and example in sight in them.
What if my time is free and I want to learn?
A GUI should be a shell that drives an object model. The same object model should be accessible via either a command-line program or some other interface (Perl, Python, etc). That's been a best practice since the 90s. Develop the functionality of the program as an object model, and write a GUI that drives it.
January 1 != April 1
VB was BASIC, then it was Pascal, then pretty well cut down Java. Where do you want to go today?
You won't be able to do it the same way tomorrow.
Obviously the submitter didn't grow up with a unix background, as lots of people here have. And now I see lots of people asking what the hell submitter is thinking, "is this a joke", "not worthy of a story" et cetera.
But think about it. Submitter came from a GUI background and now discovers the commandline. I'm thinking back when I started with Linux, feeling totally amazed about so much utilities, so much power and I kinda envy the submitter :)
So give it a rest and just chip in.
8 of 13 people found this answer helpful. Did you?
although it has a built-in python command prompt i.e. it's python it does have that as an actual tab, with the electrum python module pre-loaded. really handy.
are the mods are all drunk?
And maybe a few of us too.
Many of teh GUI utilities in *nix are basically wrappers around the CLI. Every MP3 or DVD burning program, for instance.
....this is a good example of why I rarely come to slashdot any more.
And I've been involved with /. almost from the beginning.
... of any less value than the others.
From http://abstractionphysics.net/pmwiki/index.php
Primary computer user interfaces:
Nature likes three (3) in primaries, as color in light (additive - red, blue, green) and paint (subtractive - blue, yellow, red) from which we can create all other colors in the rainbow. This applies to abstraction physics as well, as applied through the tool of computer, for there are three primary user interfaces. The command line, the Graphical User interface (GUI) and the side door port to application and functionality access (known by many different names and application levels such as API, IPC, DCOM, dcop, D-BUS, Plumber, computer sockets, etc., but each having its limitation and typically not so end user friendly as the concept should be.) And like the primary colors, if you take one away or limit its use, you constrain the ability of the user in putting new automatons together or modifying existing ones. Causing false limitations in user ability also applies to the abstraction actions mentioned above, constrain access and you constrain users ability to create or modify.
Why The Matrix was inside it green until the end of the third where the sky was full color. Why there were "THREE" power lines to the robot city...
The bad news is you're tarded and fuckedup. The good news is lots of tards live kickass lives these days!
Others have already pointed out how bizarre the original story is, but there seems to be no mention of AppleScript. If you're on OS X, you get the Unix command line plus scriptable applications through AppleScript with raw scripts or GUI-built actions through Automator. It's all built in to a clean installation of the OS. Amiga afficionados should be familiar with the concept via ARexx.
Many third party application support AppleScript, though as the environment seems to gain more and more inexperienced and/or lazy programmers, proper integration into the OS X framework environment seems to get worse and worse. That includes code from Apple. Given the extremely sharp decline in Apple's software quality over the last couple of years across all of their platforms, it's currently rather hard to recommend any of it. Probably needs to be filed under "a very good idea, destroyed by the incompetence of the modern software industry".
Looks like the you are a windows user.
In which case, there is only one thing you need, and that's Cygwin. It is a GNU environment on Windows.
http://www.cygwin.com/
-- Sig Sig Sputnik
Setting aside the fact that this statement makes no sense, I suspect it was crafted around using the term "walled garden" in a misguided effort to establish nerd street cred. Mission failed.
Out of all of the CLI based software the submitter could have chosen, the selection demonstrates that they are neither a power user or a programmer.
Holy fuck. Seriously? What I am supposed to run my CLI based software in to begin with. Never mind everything else about a shell that runs deep.
The bullet points caught my eyes first, I knew right away it was going to be bad, but this? This article making the front page is an insult to the majority of Slashdot's user base and an affront to our intellect and skill sets. Also, it reads like it was written by a second-grader.
Brought to you by Carl's Junior.
isint ffmpeg superseded? Don't know if the new one is better or not...
GUIs are walled gardens in that features available in one piece of software is not available to other pieces of software.
If only Members of Congress were programmers, companies would be modular entities instead of the monolithic monsters they are now.
If Pandora's box is destined to be opened, *I* want to be the one to open it.
Nama's command prompt has been used to produce the prog rock compositions of Julien Claassen. It is a small overlay (<20kloc) on the well-regarded Ecasound audio engine. Nama is written in perl, so can build under any Unix brethren, and Ecasound as well. With some upcoming changes, it will also manage audio mixing and routing for live shows. It does have a optional hard-disk recorder styled GUI, and can pop up other utilities for viewing and editing waveforms. Best is to build from github.
--The Nama Animator (say that three times fast)
The AT&T Documenters Workbench has the best spell checker I have ever used. If you keep spelling "the" as "xqy", it learns and copes to the point where it can will offer "then" to xqyn". It knows that "rhw" might be "the" as well as "tje" is "the" as it knows keyboard layout. It was also the best spell checker for then/than lose/loose and it would adapt its dictionary based on reading level so it won't get tripped up on efficiency/efficacy
Someone needs to find out who (if anyone) owns the copyright and make it open source friendly.
AT&T had other tool kits too that would be very useful to the modern world but they seemed to have disappeared.
apropos: reverse man page lookup. You could, for example, type apropos music and it would give you a list of every command that has something to do with music.
What the author exposes is exposed, and i can learn what is exposed in a reasonable manner. Who gives 2fks how?
Less useful but still useful are command shells. These provide file management mostly. I believe some of them may allow for sending and retrieving email messages.
Shell commands do provide file management, and the moment you realize that almost everything is a file you can start to understand the power of shells. Email messages are nothing but files, they are just on another computer and the shell gives you access to them. The same goes for web pages (wget, links/lynx and even telnet to port 80), video, pictures, sound, invoices, games, even your screen/keyboard/printer/network have an abstraction as a file, whatever...
I used to teach a 3 months Linux system administration class. The first two weeks my students had no GUI at all, just a shell prompt. The idea behind it was: whatever problem you have, once you have shell access you can start to solve it.
After using the system for two weeks in shell mode, I let them install whatever GUI they like. About half my class was on gnome, the other half on KDE and a couple were using OpenBox or something else. The point is: it did not matter which GUI they were on, it was just a tool to open a terminal window, everything was done on the shell anyway. In the beginning of the course, everybody had to use the same distro (SuSE), but by the end of the course the students could use any distro or even BSD or HP/UX (we had an HP Itanium system on loan, because I had called it "Itanic" to one of their sales reps and he wanted me to prove me wrong). For most things this again did not matter, and for the things where it did matter (for example firewalls, boot sequences, virtual file systems) it was interesting. For the final exam they had to install an operating system with mail/SaMBa/Apache server using a distro they had never used before, manually editing the configuration files using vi or whatever text editor they liked most. They also received a spreadsheet with usernames and default passwords which they had to convert to a text file and write a script to create the user accounts with correct privileges from that file (they did not get enough time to click on "add user" 200 times). My students went on and became great sysadmins.
Once you really know how to use the shell, most differences between *nix systems become almost transparent and tedious jobs can be automated easily. So, NO, shells are not "less useful" - shells unlock the true power of your computer.
/. refugees on Usenet: news:comp.misc
ls - copies files
cat - prints contents of a file
rm - deletes file
mv - moves file
I use a shell for pretty much everything, and for the things that don't i make them use it. For example Cygwin bash shell working well with WMI with stuff like this...
http://www.commandlinefu.com/commands/view/13031/returns-the-ntfs-windows-file-details-for-any-file-using-cygwin-bash-actual-r-click-properties-info-to-the-term
The two I use a lot in a terminal is bc and cal.
.bashrc:
Put this in your
alias bc='bc -i -l' Then just run bc for a interctive calculator:
(18*(567/23))+67
510.73913043478260869548
e.g.
and cal is brilliant.
cp /dev/sr0 whatever.iso
"In the beginning was the command line": http://www.cryptonomicon.com/beginning.html to understand why GUI's will never be better than the command line in terms of power and ease of use.
Don't dismiss so easily the plumbing tools as minor, good part of the magic on everything happens there, a lot of things have command line interface (even destop programs like openoffice, or gimp), of course a lot of servers can be accessed by commands (mysql, wget/curl) or even for pure graphical tools, you can script a lot with i.e. D-Bus. But something that combines the pieces, like, don't know, extracting urls from a mysql table, obtaining the images from there, making a collage and putting it as background on your desktop, requires just a few lines (if indented) in bash, where the small tools connecting the dots plays an essential role there.
Setup a virtual machine, or a partition, install a BSD (I'm partial to NetBSD), and go to it. Skip the graphical interface packages on installation.
You want to learn about this, here's how most of us did it (flavor and variant will vary of course). Your motivation determines how much you will learn. Enjoy.
LOAD “$”,8 - Now that was useful!
In the spirit of "command-line tools I use all the time":
sed - search and replace within files
git - redistributable file system that tracks changes, often used for version control of text files
ssh - secure command-line connection to another machine
scp - secure copy between machines
diff - compare differences between files
"We receive as friendly that which agrees with, we resist with dislike that which opposes us" - Faraday
Happy New Year. Whose going to get the FTF?
.nl, .de,...) ...
From http://geo.rkkda.com/. All are bash and awk tools run via a terminal. Lots of them build upon gpsbabel (e.g. geo-nearest), or ImageMagick (e.g. reverse-montage) or, you get the drift.
Tools for accessing gc.com...
(SO) : this program works only for gc.com subscribers
geo-found List caches found (by you or someone else)
geo-nearest List the nearest caches to a location
geo-newest List the newest caches in a state
geo-placed List caches placed (by you or someone else)
geo-keyword List caches by keywords.
All of the above can enter the waypoints into the
GpsDrive MySQL database.
geo-html2gpx Convert a gc.com printable web page (such as the
above commands can produce with the -H option) to
a GPX file.
geo-count Count caches found
geo-usernum Determine gc.com user number (used by geo-count)
(SO) geo-gid Retrieve cache info by GCxxxx waypoint name
(SO) geo-gpx Retrieve GPX file by GCxxxx waypoint name
(SO) geo-demand Request an immediate pocket query email
(SO) geo-gpxmail Process PQ email using gpx2html
(SO) geo-gpxprocess Process PQ download(s) using geo-pqdownload and gpx2html
(SO) geo-pqdownload Perform a Pocket Query download(s)
(SO) geo-myfinds Schedule a Pocket Query containing your finds.
(SO) geo-rehides From your found.gpx file, produce a GPX file of rehides
(SO) geo-correct-coords Correct the coords of cache(s)
geo-density Compute cache density of an area
gpx2html Lightly hacked converter from GPX to HTML
Originally by fizzymagic (v1.90). My version
fixes issues with HTML in the cache descriptions, adds
sort by latest log date for easy perusing of recent
cache activity, and fixes bug in GC[1-9]xxxx.
gpx-loghistory Print all logs in reverse cron order.
geo-pqs Figure out what PQs to run to get an entire state.
geo-state Convenience script; geo-state -? gives usage.
geo-sdt Replace Size, Difficulty, Terrain from a PQ file
geo-suffix Replace name with name/TypeSizeDiffTerr/gcid/LatLon
geo-uniq Unique the tabsep database
Tools for accessing opencaching.com...
oc-nearest List the nearest caches to a location
oc-newest List the newest caches in a state
EXPERIMENTAL, subject to drastic changes
Tools for accessing opencaching.us (and
ok-nearest List the nearest caches to a location
ok-newest List the newest caches in a state
EXPERIMENTAL, subject to drastic changes
Tools for accessing navicache.com...
nc-nearest List the nearest caches to a location
nc-newest List the newest caches in a state
I've been seeing the love for CLI's in a couple of articles here lately, and I'm wondering... why are GUI's "walled gardens", and CLI's are not? The CLI's have their definite boundaries as well. You can't run a function using a system utility that doesn't support it.
At best, I'd call GUI's walled gardens, and CLI's (larger) fenced in fields with rocks and weeds along with the trees and flowers. Definitely more versatile, not as friendly for some uses.
To get out of the boundaries of either a GUI or a CLI, you can just write your own code, to create... a GUI or CLI application. You can write a script, or put the equivalent function into a GUI app.
Disclosure; I've been computing since the Olivetti P-6060 was a cutting edge machine. http://www.old-computers.com/museum/computer.asp?st=1&c=407
/rdb - definitely not free, but a fascinating use of the shell and shell extensions as a database management system. Don't know if it's even still available. The NoSQL developer Carlo Strozzi said that he was inspired by it. Used to be at http://www.rsw.com./ An excellent white paper, "The UNIX Shell As a Fourth Generation Language" describes it, and there was a book too - "Unix Relational Database Management". I used it nearly 20 years ago for a retirement home's database when their DOS/dBase system broke down. Slackware Linux version 1 ran fine on their old PC. In fact, that was my first Linux kernel compilation.
great. I've been looking for a good command line spell check. All the graphics on the gui spell checkers are very distracting.
ôó
Great question.
Bitcoin: https://github.com/spesmilo/sx , GoxCLI
Calandar; 'cal'
wget, curl with cut, grep & awk
mplayer... with acsii output, transcode,
irc bots such as malware command and control interfaces - are there benign examples?
There are very few financial command line tools. It's strange but there doesn't seem to be a way to buy or sell securities, forex or futures.
Can anyone tell me why you can't |pipe| GUI programs....? Why can't you pipe audio live from /dev/urandom from a terminal to audacity for example?
A blog I run for the wealth
Then learn to use Google before you start asking questions that have been answered a million times over.
Now I wouldn't even comment on this story, but I have recently been wondering why we haven't seen new developments in command line shells in the last couple of decades or so. The last big advance was tab completion in bash and then we just... stopped. Now I could see the argument that bash does everything we need it to, but I'm not sure I completely buy that. For one thing I'm constantly working around deficiencies in the shell. For another, we have seen OS advances we could be taking advantage of.
The UNIX shell model for the last three decades is, you run a program and the shell finds it in the path, forks a child process, execs the program and waits on the child process. When the child process exits, the shell resumes and has the return status of the child process available for examination. And that does actually have its place. But it doesn't need to be all there is anymore. With threads, there's no reason not to have the ability to initiate a program in parallel in the same memory space. Obviously there are some drawbacks to that -- if the program crashes, you'd lose your working shell. But it'd have some advantages, too -- the program could modify the shell's environment, share or persist objects in local memory, and customize the shell's behavior much more easily than we do today. We'd move from having files on disk to having resources we can take advantage of. Naturally you should still be able to revert to the old fork/exec model for some applications.
I'll probably write some code to explore this when I get my current couple of projects squared away.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
New users never heard about bash. We live in the 21th century. By now no one should use things like grep, sed or awk anymore. The developers around systemd make sure that this functionality is soon hidden away from the audience.
You need to find a copy of Unix Power Tools from O'Reilly
The Unix philosophy is a large collection of small tools connected by pipes. It means that everything is scriptable.
Anyone who must admit that they have more experience with VBA than anything else should not claim to be a programmer.
Even companies that make commercial off-the-shelf ERP software in Access+VBA, such as Stone Edge? Besides, "no true programmer" is considered a fallacy.
I'd like to make mandatory to post the age of a submitter alongside any 'news' item. Why? Because if the poster of this item is a 10 year old, then I'd say OK, someone getting into the game is looking around, good job. However, I don't think this is the case here, I even thought first that it was a joke, which it doesn't seem so. I'd suggest redirecting noobies into other forums instead of posting their totally useless submissions on /.
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
Do you really let someone with less than 3 months experiance with big boy OSs fucking post. This is something someone with no real computer experiance would think.
>Less useful but still useful are command shells. These provide file management mostly. I believe some of them may allow for sending and retrieving email messages.
Thats not true, not on any modern operating system. It was only true on windows, before the introduction of PowerShell.
power users and programmers use command lines? I thought they edit the source code and recompile the code. I learned something new.
try ecasound with a chain setup you can pipe audio, fully scripted it can do just about everything directly from alsa or if you compile it with jack it will also use jackd. But esd is very versitile, I am surprised that more do not know about how versatile and easy it is to use.
This message was not sent from an iPhone because Peter Sellers really was a deviated prevert without a dime for the call
The elitists are out in full force today. Ya the submission is nothing new to many of us but instead of ripping submitter a new one why not share your knowledge with him. Back in 97 I bought Oreilly's Linux in a Nutshell reference book. That book is still on my desk today, beaten up an tattered but sill useful.
Happy New Year fellow neckbeards! ;-)
man(1)
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
Less useful but still useful are command shells. These provide file management mostly.
Ohhh, baby. If you think ImageMagick is cool by itself (and it is), just wait 'til you start to grok how powerful those "less useful" command shells are for gluing those complex tools together. It will blow your hair back.
Say you have a directory tree with a few hundred images scattered through it, and you want to create thumbnails for all of the images in a parallel directory structure; ImageMagick will do the thumbnail part, CLI-Fu will handle the directory traversal and turn a three hour job in to a three minute one.
Learn these for starters:
sed - text parser and transformer, for mutating file names and munging commands
awk - ultra-terse programming language, great for building more complex commands than you would with sed
find - traverse a directory tree and list files with conditional matching
xargs - process a large list of things (like files found with find) in batches
grep - filter out elements of a list based on string pattern matching
egrep - enhanced grep, includes more advanced patterns and wildcards
sort - sort lists numerically or alphabetically
wc - count the elements of a list, words in a line, or other things
wget - download a URL
curl - read a URL to stdout
Seriously, when you start piping those things together with the more complex command line tools like ImageMagick and FFMpeg, you will be astonished at the mass data processing you can do with a few dozen characters on the command line.
Stop-Prism.org: Opt Out of Surveillance
Programmers pissing off Programmers...
Maybe it would of been nice to have the option to run applications(or all) like gimp, blender, inkscape, vlc, web browsing, steam in cli mode instead in GUI(desktop mode) like the the old dos or unix way.
I would bet the modern softwere industry is smarter then you!
The submission itself seemed a bit rambling, so I'm not entirely sure what sort of CLI programs he or she was expecting, but I first thought it was going to focus on various text user interfaces, such as the kind usually made with ncurses. Some interesting ones I use or have used in the past:
screen: the 900 pound gorilla of terminal management. Multiple shells, hotkeys to switch, window splitting, detaching from, and reattaching to, the session without losing processes. Everyone should have screen installed.
dvtm: a tiling window manager for your shell. Not as feature-filled as screen, but less futzing about required for multi-window views. If all you want is multiple shell views at once, without all the other stuff, dvtm is a good choice.
newsbeuter: console RSS reader. News feeds are a good fit for command line, and it can import OPML files exported from other readers. There's also nrss but I haven't used it much due to lack of OPML import/export.
finch: A command-line version of Pidgin, using the same libpurple backend and plugins. May even share contact information between Pidgin for seamless use -- can't remember for sure, though. Draws its own stacking windows for the contact list and IM windows, much like the old DOS IDEs.
elinks: Best text-based browser right now, in my opinion. If you're still using lynx or links2*, probably worth switching.
weechat: IRC client, alternative to the (in my experience) better-known irssi. Combine with bitlbee for a different take on IM.
bitlbee: An IM client whose front-end is an IRC server. You connect via IRC client of choice and interact with your contacts via channel (by going "username: message here" to send a message to 'username') or via private message windows. Good for keeping track of multiple chats at once, since they function like a group chat would on your side, but none of your contacts see anything except what you direct to them.
calcurse: A basic calendar/organiser. Not much to say, lets you set appointments, to-dos, etc.
noping: an ncurses-based ping tool. Ping multiple targets simultaneously, with statistics always placed at the bottom, and unusual things like spikes in latency or timeouts highlighted in different colours.
htop: like top but a lot nicer to use and look at.
nethogs: Displays network utilisation on your machine, separated by process. Lets you see just how much bandwidth a stream or some other download (or upload) is using.
jnettop: Like nethogs, but focused on sorting by source, destination, port, and protocol rather than by process.
nvlc: ncurses front-end to vlc, for keyboard control of the VLC media player. If you're not interested in playing videos, add the --no-video switch and it becomes a passable command line audio or stream player.
nano: Available almost as often as vi, and easier for a beginner or occasonal command line user to acclimate to quickly.
alpine: Oldie but goodie. Any old schooler will likely remember pine, and it's still around in the form of alpine in the same way nano is keeping pico use alive.
mc: Midnight Commander. Still a damn fine file browser, and well worth having around.
nethack: because not everything has to be about work. Other roguelikes of note are angband, tome, and one of my favourites, the seemingly abandoned zangband, which was based loosely around Roger Zelazny's Chronicles of Amber.
Some of these will be obvious to anyone familiar with the command line already, a few might have passed by unnoticed even to veteran shell users, and hopefully all of them will be worth investigating for any newcomers to the command line.
I realise I omitted vi and emacs; that's a whole war of its own and not worth getting into here.
* Not TUI-related, but I find running links2 in graphical mode (links2 -g) to be a good way to do image searches on images.google.com. Fast, no frills, just the images and no bullshit.
Powershell: the most excessively verbose and yet still incomprehensible CLI scripting language yet developed.
Sample:
Powershell
$strComputer = "."
$colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" `
-computername $strComputer | Where{$_.IpEnabled -Match "True"}
foreach ($objItem in $colItems) {
write-host "Hardware Address:" $objItem.MACAddress
Bash /sbin/ifconfig | grep -Eo ..\(\:..\){5}
Why is this even a story? Has this guy ever heard of an API? GUIs are not 'walled gardens'..
Moron.
And shame on the one that approved this.
---- Booth was a patriot ----
Hairyfeet, back at ya.
I moved to Linux because from Mac OS X *because* of the command line. It is a first place citizen. You can expect almost all programs on it to support commandline options and such.
Here's my beef. When someone says you should be able to do everything in the GUI, they are also implicitely stating that you should not be able to do everything through the CLI. They are stating that the CLI side should atrophy because noone is using it. This is what happened on Windows. The Mac OS X commandline only works because it is based on someone elses work, who probably maintains it on a machine where they have to use the CLI everyday.
My only real gripe with the Linux command line is I would like to see bash replaced with a rethought interactive shell. (csh *har* *har* *ahahahaha*) Probably something more like the the ruby irb rather than something c-related would be good.
Linux should change, but it should not try to be something it is not. Us Linux people, we like our utilitarian pickup truck. It helps us to get our shit done. If you switch it out with a shiney sports car, you are fundimentally alienating the current core audience. We've seen the awkwardness this can put companies like Nintendo in.
Gnuplot
R
I use those directly from the application's CLI or write 'scripts' that I redirect into the application or `source' from the app's CLI. I'm sure I could think of others but those are the ones that quickly come to mind.
The OP must be coming from Windows World where CLIs are relatively few and far between. Wonder what they'd think about writing Expect scripts to drive CLI applications on UNIX/Linux? That's the sort of thing I would suggest to Windows folks to watch their heads explode.
CUR ALLOC 20195.....5804M
It's the first of January, not the first of April.
Ok, everyone has to start somewhere, but really? You've just uncovered the cool commandline tools available on an operating system that has it's GUI added-on as an afterthought ?
It's a bit like discovering that Windows can be used with - you won't believe it - a mouse! And some tasks are just so much easier! Wow!
Seriously. Don't Ask Slashdot. Commandline tools are the bread and butter. Almost everything that's not Gnome or KDE (aka cheap-windows-rip-off) has commandline functionality. So asking such a broad question is guaranteed to give mostly useless answers. Ask (or better, yet: Google) for specific use cases and you'll find plenty of answers, usually several different tools that can do the job.
Assorted stuff I do sometimes: Lemuria.org
GUIs are walled gardens in that features available in one piece of software is not available to other pieces of software.
That is actually blatantly false. It appears true because most people who write GUI software don't give a flying fuck about interoperability, while UNIX commandline tools are mostly expected to work as filters, a concept that by itself guarantees interoperability.
But if you look at the OS X world, for example, where universal drag & drop is pretty much a reality, the same is true of the GUI. I can drag almost everything from almost everywhere to almost everywhere else and it'll just work.
Interoperability is not a feature of GUI or no GUI but of developers investing the effort to make it, or not.
Assorted stuff I do sometimes: Lemuria.org
rsync is awesome, combine it with an SSH tunnel and you can mirror for your backups and then copy the result with hard links to make snapshots in time without duplication saving space. rsync just "breaks" the hard links when a file has changed and you can just browse the filesystem by directory where you just use the date as the directory name for the top of the tree.
Other Internet newbies like Microsoft and Google have gone out of their way to make their customer's emails illegible.
I get my email from Google over POP3. pop.gmail.com:995. But it requires SSL, which I don't know how to emulate with anything at the command line like telnet. At any rate, Thunderbird saves my emails as plain text files, and that's good enough for now.
(T>t && O(n)--) == sqrt(666)
What's the going rate for a proprietary software shill these days jonesy?
'Bout tree fiddy, Buckaroo.
The submitter obviously has no clue what he's talking about...
There's a bunch of UIs like he mentioned and there may be more... then the rest of the world is the shell...
The majority of the world's computing is based on command line, which is running on the shell.
Out of many many types of engineers, system and operations engineers are the top paid ones...
And out of those top paid ones, the ones that know how to use command lines get paid more than the rest.
A bit offtopic, but what I find sad is that there is no GUI following the Unix philosophy and no GUIs which integrate well with the command line. I mean things like GUIs for combining software components which to do useful stuff (cli completion is nice, but why is there no scrollbox to select from? Why no GUI with checkboxes which I can open with right-click when I forgot an obscure option?), good graphical shells which combine a file manager with a CLI shell (there was norton commander), or terminals with graphical features. I remember seeing some interesting projects, but nothing seems to have developed to a state to be really useful. I maybe wrong, I you know such things, let me know.
This is where I would have hoped to see innovation. Instead we get dumbed down GUIs with fancy annimations.
I encounter new libraries and tools without a useful command line interface all the time. It's getting to be irritating.
Right now I'd like a CLI to open-zwave, but I can't find one. Web interface, sure. Huge bloated tools that does everything for me, sure. No single simple CLI...
With a CLI it would have been trivial to hook into everything else unix, like cron.
Don't forget mencoder, part of mplayer. It does everything for video and audio streams that imagemagick does for images.
Worth naming is also sox, that is the same but for (only?) audio. I haven't use that one, so I don't know how good it is.
And maybe netpbm should be mentioned as a precursor to imagemagick.
You "believe" that you can send mail messages from the command line? JFC, have you ever heard of man pages? And where did you get the impression that grep or egrep are obsolete?
Best scripting language there is with a few libraries and a debugger. I would shell out to other peograms on occasion.
To answer OPs question.. /{,usr/{,pkg/,local/}}{,s}bin/ /sbin/:
amrctl*
apmlabel*
atactl*
badsect*
bioctl*
brconfig*
ccdconfig*
cgdconfig*
chown*
clri*
devpubd*
dhclient*
dhclient-script*
dhcpcd*
disklabel*
dkctl*
dkscan_bsdlabel*
dmctl*
dmesg*
dmsetup*
drvctl*
dump*
dump_lfs*
fastboot*
fasthalt*
fdisk*
fsck*
fsck_ext2fs*
fsck_ffs*
fsck_lfs*
fsck_msdos*
fsck_v7fs*
fsdb*
fsirand*
gpt*
halt*
ifconfig*
init*
ipf*
ipppctl*
iscsictl*
iscsid*
lvm*
mbrlabel*
mknod*
modload*
modstat*
modunload*
mount*
mount_ados*
mount_cd9660*
mount_chfs*
mount_efs*
mount_ext2fs*
mount_fdesc*
mount_ffs*
mount_filecore*
mount_hfs*
mount_kernfs*
mount_lfs*
mount_mfs*
mount_msdos*
mount_nfs*
mount_nilfs*
mount_ntfs*
mount_null*
mount_overlay*
mount_portal*
mount_procfs*
mount_ptyfs*
mount_puffs*
mount_smbfs*
mount_sysvbfs*
mount_tmpfs*
mount_udf*
mount_ufs*
mount_umap*
mount_union*
mount_v7fs*
newbtconf*
newfs*
newfs_ext2fs*
newfs_lfs*
newfs_msdos*
newfs_sysvbfs*
newfs_udf*
newfs_v7fs*
nologin*
npfctl*
pfctl*
pflogd*
pfs*
ping*
ping6*
poweroff*
pppoectl*
raidctl*
rcorder*
rdump*
rdump_lfs*
reboot*
resize_ffs*
resize_lfs*
resolvconf*
restore*
rndctl*
route*
routed*
rrestore*
rtsol*
rump.cgdconfig*
rump.ifconfig*
rump.modload*
rump.modstat*
rump.modunload*
rump.ping*
rump.raidctl*
rump.route*
rump.sysctl*
savecore*
scan_ffs*
scan_lfs*
scsictl*
setkey*
shutdown*
slattach*
svhlabel*
swapctl*
swapon*
sysctl*
tbrconfig*
ttyflags*
tunefs*
umount*
veriexecctl*
wdogctl*
wsconsctl*
zfs*
zpool* /usr/bin/:
Mail*
addftinfo*
addr2line*
agrep*
apply*
apropos*
ar*
arpaname*
as*
asa*
at*
atf-config*
atf-report*
atf-run*
atf-sh*
atf-version*
atq*
atrm*
audiocfg*
audioctl*
audioplay*
audiorecord*
awk*
banner*
basename*
batch*
bc*
bdes*
biff*
bthset*
btkey*
btpin*
bunzip2*
bzcat*
bzip2*
bzip2recover*
c++*
c++filt*
c89*
c99*
cal*
calendar*
cap_mkdb*
cc*
cdplay*
checknr*
chflags*
chfn*
chgrp@
chpass*
chsh*
ci*
cksum*
cleantags*
clear*
cmp*
co*
col*
colcrt*
colrm*
column*
comm*
compress*
config*
cpio@
cpp*
crontab*
crunchgen*
crunchide*
csplit*
ctags*
cu*
cut*
cvs*
cvsbug*
db*
dc*
deroff*
diff*
diff3*
dig*
dirname*
dns-sd*
du*
egrep*
eject*
elfedit*
env*
eqn*
error*
ex*
expand*
false*
fdformat*
fgen*
fgrep*
file*
fincore*
find*
finger*
flex*
flex++*
flock*
fmt*
fold*
fpr*
from*
fsplit*
fstat*
ftp*
g++*
gcc*
gcore*
gcov*
gcpp*
gdb*
gdbtui*
gdiffmk*
genassym*
gencat*
getcap*
getconf*
getent*
getextattr*
getopt*
gettext*
gkermit*
gprof*
grep*
grn*
grodvi*
groff*
grog*
grolbp*
grolj4*
grops*
grotty*
groups*
gsstool*
gunzip*
gzcat*
gzexe*
gzip*
head*
hesinfo*
hexdump*
host*
hoststat@
hpftodit*
hxtool*
iasl*
iconv*
id*
ident*
indent*
indxbib*
info*
infocmp*
infokey*
innetgr*
install*
install-info*
install-sid*
ipcrm*
ipcs*
join*
jot*
kcc*
kdestroy*
kdump*
kgetcred*
kinit*
klist*
kpasswd*
krb5-config*
ktrace*
ktruss*
lam*
last*
lastcomm*
ld*
ldapadd*
ldapcompare*
ldapdelete*
ldapexop*
ldapmodify*
ldapmodrdn*
ldappasswd*
ldapsearch*
ldapurl*
ldapwhoami*
ldd*
leave*
less*
lessecho*
lesskey*
lex*
lint*
lkbib*
locale*
locate*
lock*
logger*
login*
logname*
look*
lookbib*
lorder*
lp*
lpq*
lpr*
lprm*
lsextattr*
lua*
luac*
lzcat*
lzma*
lzmainfo*
m4*
machine*
mail*
mailq@
mailx*
make*
makeinfo*
man*
mandoc*
md2*
md4*
md5*
menuc*
merge*
mesg*
midiplay*
mixerctl*
mkcsmapper*
mkdep*
mkesdb*
mkfifo*
mklocale*
mkstr*
mktemp*
mkubootimage*
more*
msgattrib*
msgc*
msgcat*
msgcmp*
msgcomm*
msgconv*
msgen*
msgexec*
msgfmt*
msginit*
msgmerge*
msgs*
msgunfmt*
msguniq*
nbperf*
nbsvtool*
neqn*
netgroup*
netpgp*
netpgpkeys*
netpgpverify*
netstat*
newaliases@
newgrp*
newsyslog*
nfsstat*
nice*
nl*
nm*
nohup*
nroff*
nslookup*
nsupdate*
objcopy*
objdump*
od*
openssl*
page*
pagesize*
passwd*
paste*
patch*
pathchk*
pawd*
pcap-config*
pfbtops*
pgrep*
pic*
pigz*
pkill*
pmap*
post-grohtml*
pr*
pre-grohtml*
prenice*
printenv*
printf*
$ ls -F
/bin/: [* cat* chgrp@ chio* chmod* cp* cpio* csh* date* dd* df* domainname* echo* ed* expr* hostname* kill* ksh* ln* ls* mkdir* mt* mv* pax* ps* pwd* rcmd* rcp* rm* rmdir* rump.dd* sh* sleep* stty* sync* tar* test*
"GUIs are walled gardens in that features available in one piece of software is not available to other pieces of software. "
In journalism this is known as "telling a question". It looks like you're asking something when really you are asserting a premise. The fun part is that you get away without having to show that your premise is correct.
Less useful but still useful are command shells.
Really?
You obviously do not get it if you do not understand the Jedi Power of a person who has mastered the shell. Pick a shell. When you think you have mastered the shell, experiment with other shells. Hell, change your shell to perl, I know a couple of perl junkies who run that way.
Sometime when you are bored, and have more that three brain cells on shift, from the command line (that would be a shell prompt) execute "man init" on your favorite Unix, and read the page. Then read the init scripts. {sarcasm}no, the shell is not useful{/sarcasm}
In a Unix Xwindows environment (or in MacOS X for that matter), the GUI is a tool, a nice place for multiple graphical proggies to play together, and an easy way to have multiple terminals open and visible at once. If you are an absolute luddite, get yourself an old VT101 terminal, learn how to plumb in a serial terminal to your machine, and explore the wonders of tmux.
Happy new year
-Red
My (free) SDR [Software Defined Radio] software has, rather than a command line interface (since it isn't invoke to process, but invoke and continue to run to process), a network interface. Open a port, ask it for status and/or data, send it commands, etc.
I've interfaced it with other SDRs, remotely tunable antennas, and full on transceivers via this network interface. Commands are essentially text, other than you send them through the port.
Another thing is that regardless of which platform the SDR software is running on, you can talk to it from any other platform, because it's just a network connection. It's easily driven from any scripting language with network facilities, for instance Python interfacing is a doddle.
I love the idea of command line tools, because those are things I can use to leverage this kind of interface. Talk to a mapping application? Just feed the guy's callsign to a ham radio db, get the coordinates back, feed them to the mapping app, bingo, map. Etc.
I've fallen off your lawn, and I can't get up.
Leaving aside the hideous style, that's bullshit. Without a command shell you wouldn't be able to run anything, let alone chain programs together, automate actions etc.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
less: read only, open a text file and use VI commands to move around, with no fear of fucking up.
tail - f: for watching logs while troubleshooting an issue
ipcalc: quick IP reference guide
rinitd: to redirect IP traffic from one interface to another inteface
scp: move data anywhere
ls -lrt: to see the most recent change in a directory at the bottom of a list
ffmpeg, lame, sox: for mucking with audio
While it's true it took MS 2 decades to start seriously investing in command-line, they have caught up very fast. In a lot of ways it's superior to bash, being object oriented and having so many 3rd parties creating powershell modules to manage their products.
It's a super different world for a windows admin that does "get it". I rarely use GUIs.
The Wikipedia article cites four sources. If you're willing to provide some citations for who may "claim to be a programmer", I'll take a look at them.
Please see Enterprise resource planning on Wikipedia.
Command-line interpreters help save time and have became my favorite way to jump into using those languages, but there's more than the shell.
Python is a great one.
Javascript in Chrome has a command-line where you can try out things.
Unsurprisingly, despite both of these languages having issues, they are highly popular.
I hear that there's a chrome with a Dash interpreter built-in. If it includes inline editing, then I'd bet it will do well.
Science & open-source build trust from peer review. Learn systems you can trust.
Every operating system I know of (except maybe BeOS) has at least one command line interface. Many operating systems have more than one.
For example, the Stratus VOS operating system supports this command line interface:
http://stratadoc.stratus.com/vos/17.2.0/r089-06/wwhelp/wwhimpl/js/html/wwhelp.htm?context=r089-06&file=ch1r089-06.html
This command line interface was designed around 1980 and attempts to be more user friendly by using recognizable command names and has both lineal and form oriented methods for specifying command arguments.
The VOS operating system also supports bash...
An engineer who ran for Congress. http://herbrobinson.us