The Command Line Can Do Certain Jobs Much More Efficiently Than GUI Apps
Total Page:16
File Type:pdf, Size:1020Kb
FEATURE THE COMMAND LINE If you haven’t mastered the command line, you’re missing out on the most powerful features of Linux. Mike Saunders has tips galore for both newbies and old-timers... “The command line can do certain jobs much more efficiently than GUI apps.” ou know how in films, when they want to that that’s nonsense, and the command line portray a computer genius/nerd/hacker at interface has its benefits. But have you really Ywork, they always show someone tapping delved deeply into it? Have you discovered all its incomprehensible gobbledygook into a command hidden tricks? And have you been able to ditch line? Sometimes it’ll be a green-on-black text the mouse and start working more quickly? Over terminal from the 1980s, accompanied by various the next seven pages we’ll show you how the beeping noises, just to add to the mystique. And command line interface (CLI) can do certain jobs thanks to stereotypes like these, many non- much more efficiently than GUI applications, technical people assume that the command making your day-to-day Linux life smarter, easier line is a weird and arcane tool, only to be used if and faster. Even if you’ve been using the CLI for there’s no pointy-clicky GUI goodness at hand. a while, you’ll find plenty of new gems in here, so Now, as a Linux user, you already know let’s get started. 18 www.linuxvoice.com THE COMMAND LINE FEATURE Better file management GUI file managers are clunky and slow. Here’s how to work at light speed. olphin, Nautilus, Thunar and co. are OK for simple drag-and-drop Djobs, but in all honesty they don’t compare to the CLI. As soon as you need to do something complicated, you end up with a horribly long workflow involving countless mouse clicks until your wrists get overloaded with RSI. Let’s take a complex job and see how it can be made simpler with some CLI magic. Even though you might not need this specific command on a day-to-day basis, you can break out the component parts and use them on your Linux travels in future, saving you heaps of time. So: imagine that you have a bunch of files without any extensions, and you don’t know what’s inside them. (You can see hundreds of these in Firefox’s cache, for example.) They look like this: 3F7DFd01 E64C7d01 Using pipes and multiple commands, you can narrow down to just the filenames you need, all C42F9d01 without hundreds of tedious mouse clicks. F0887d01 ... lines like this: it, you can see how powerful the CLI is for Let’s say you want to open the 10 biggest CBD2Fd01: JPEG image data, JFIF standard 1.01 working with files. (For instance, you could JPEG files in Gimp to have a look at them. D0488m01: raw G3 data, byte-padded replace xargs gimp with xargs rm to delete Think about how you’d do that in your DB54Ad01: gzip compressed data, max compression those 10 biggest JPEG files.) Try adding graphical file manager – if it’s even possible. We only want JPEG files, so we take the your own components to the command, and Providing that your file manager can peek output from the file * command via a pipe making new ones using parts of it. inside the contents of files to determine their (|), then grep to just retrieve lines containing format, you might be able to click around JPEG. After this point we don’t need any Essential tips and somehow sort the list by file format and information other than the filename, so size simultaneously (very few file managers we pipe the text to sed, the stream editor, If you’re new to the command line, here are can do that), and then click and drag to which does a replacement. It takes a colon some things you absolutely need to know. In most Linux distros, the CLI is accessible in your select the top 10, and right-click on the : followed by any sequence of characters desktop’s program menu as Terminal, XTerm or selection to open them in a program, then (.*) and replaces it with nothing (// – ie Konsole. click down the list to find Gimp… Ugh. nothing between the slashes). So it gets rid ls/cd/rm/mv The most common commands Now check this command out: of everything but the filenames. (list files, change directory, remove file and move/rename file). Each command has a file * | grep JPEG | sed s/:.*// | xargs ls -S | head -n10 Then, using xargs ls, we bundle together manual page (eg man ls – hit Q to quit the | xargs gimp all the filenames we’ve got so far and list viewer). Many commands have extra options; It’s a beast, isn’t it? But actually, it’s them, sorting by size (-S). The head part for example, ls -la lists all files, including a bunch of smaller commands linked retrieves the top 10 items of the list, and hidden ones, with details. together, done in such as way that you can then using xargs again, we bundle up all the Tab Hit the Tab key to automatically complete understand what each part does. filenames into a single string and tell Gimp a filename or directory. If you want to delete foobarlongfile.txt, for instance, enter rm foo First, the file * part looks at every file in the to open them. and hit Tab, and it should be completed. current directory, and works out the filetype It might take a few re-reads to really grok History Use the up and down cursor keys to from the bytes contained inside. So you get all this, but once you have your head around navigate through previous commands. You can edit them as well. ~ Your home directory (eg /home/bob/) “Once you have your head around it, you can see > and >> sends output of a command to a file, overwriting (>) or appending (>>). Eg ls -l > how powerful the CLI is for working with files.” list.txt. www.linuxvoice.com 19 FEATURE THE COMMAND LINE Better editing Learning a good text editor on the command line is essential. e can’t stress enough how important it is to learn a good Wtext editor. It really makes a vast difference to how you work – even if you’re not a programmer. Some GUI text editors are well-specced with plenty of features, but when you’re working with plain text, why should you keep moving your hands away from the keyboard to grab the mouse? The two most notable text editors are Emacs and Vim. They both have their strengths and weaknesses, but we’ll focus on the latter here because it’s installed in nigh-on every Linux distro by default. This isn’t a guide to the basics – we did that in issue 1. If you don’t have that issue and you’ve never used Vim before, see the “Micro guide” box and then do the vimtutor. Here we’ll explain why it’s well worth learning, and if you’re a regular Vim user, we’ll show you some tricks that you might not have come across. A well-tuned ~/.vimrc file makes Vim more attractive, informative and welcoming. How to love Vim Vim’s commands look weird and cryptic, but some programming, and want to find a Many people try Vim and come away when you piece them together they make matching bracket or brace? Move the cursor frustrated, because they don’t spend time more sense. For instance, in Vim-speak d is over the bracket and hit %. Want to quickly getting into the right mindset. Some people delete, a means around an object, and P go back to the last place you entered text? use it often but never learn to enjoy it. That’s refers to a paragraph. Hit dap and voila: Use gi. fair enough – it’s not a very welcoming delete text around a paragraph (that is, text Earlier we mentioned using dap to delete program. But bear these in mind and you’ll inside the paragraph and trailing spaces). a whole paragraph. This is an example of learn to love it: It’s also worth customising the .vimrc file using a text object, and this is where Vim is Always switch back command mode in your home directory to make the editor a ridiculously powerful. For instance, das (with Esc) straight after editing. Make bit friendlier. Here’s what we have: deletes a sentence, while ci” (C-I-double command mode your default mode. Vim is a set number ruler laststatus=2 hlsearch ignorecase quotes) changes text inside a pair of double modal editor, which means sometimes title quotes. Say you have this text: you’re editing text, and sometimes you’re syntax on <img src=”foo/bar/baz.jpg” /> giving commands. You should only be in This adds: line numbering; a ruler showing To change the filename: move the cursor insert mode when you’re editing text, so the current line number; a status line with the anywhere inside the quotes, and hit ci”. Vim always hit Esc as soon as you’re done. You’ll filename; highlighted searches; case- will remove all text inside the quotes and learn commands better this way, instead of insensitive searches; more information in the place you in insert mode, so you can type in accidentally adding them to your text. terminal window title; and syntax highlighting some new text and hit Esc when you’re Use the H, J, K and L keys to navigate.