<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Make Tech Easier&#187; shell</title>
	<atom:link href="http://maketecheasier.com/tag/shell/feed" rel="self" type="application/rss+xml" />
	<link>http://maketecheasier.com</link>
	<description>Uncomplicating the complicated, making life easier</description>
	<lastBuildDate>Sun, 12 Feb 2012 15:58:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Beginner Guide to Writing Linux Shell Scripts</title>
		<link>http://maketecheasier.com/write-linux-shell-scripts/2011/06/30</link>
		<comments>http://maketecheasier.com/write-linux-shell-scripts/2011/06/30#comments</comments>
		<pubDate>Thu, 30 Jun 2011 14:58:29 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=34658</guid>
		<description><![CDATA[For starters &#8211; let&#8217;s clarify that headline. Linux has more than one possible shell, and scripting any of them is a subject that can easily pack a full book. What we&#8217;re going to be doing is covering the basic elements of a bash script. If you don&#8217;t know what shell you&#8217;re using, it&#8217;s probably bash. [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30&amp;title=The+Beginner+Guide+to+Writing+Linux+Shell+Scripts&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/write-linux-shell-scripts/2011/06/30">The Beginner Guide to Writing Linux Shell Scripts</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imagecdn.maketecheasier.com/2011/06/bashscripting-small.png" alt="bashscripting-small" title="bashscripting-small" width="200" height="150" class="alignleft size-full wp-image-34667" />For starters &#8211; let&#8217;s clarify that headline. Linux has more than one possible shell, and scripting any of them is a subject that can easily pack a full book. What we&#8217;re going to be doing is covering the basic elements of a <em>bash</em> script. If you don&#8217;t know what shell you&#8217;re using, it&#8217;s probably <em>bash</em>. The process will be familiar to anyone who&#8217;s worked with DOS&#8217;s <em>bat</em> files, it&#8217;s essentially the same concept. You just put a series of commands into a text file and run it. The difference comes from the fact that bash scripts can do a LOT more than batch files. In fact, bash scripting isn&#8217;t all that far from a full-fledged language like Python. Today we&#8217;ll be covering a few basics like input, output, arguments and variables.<br />
<span id="more-34658"></span><br />
<strong>Note</strong>: <em>If we want to get really technical, bash is not a Linux-only shell.  Much (though possibly not all) of the following would apply to any UNIX-type system, including Mac OSX and the BSDs.</em></p>
<h2>Hello World</h2>
<p>It&#8217;s tradition to begin a new &#8220;language&#8221; by creating a simple script to output the words &#8220;Hello World!&#8221;. That&#8217;s easy enough, just open your favorite text editor and enter the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> Hello World<span style="color: #000000; font-weight: bold;">!</span></pre></div></div>

<p>With only two lines, it couldn&#8217;t be a whole lot simpler, but that first line, <em>#!/bin/bash</em>, may not be immediately obvious. The first two characters (often called a hashbang) are a special signal. It tells Linux that this script should be run through the /bin/bash shell, as opposed to the C shell or Korn shell or anything else you might have installed. Without it, there&#8217;s no easy way for Linux to tell exactly what type of shell script this is. A Python script, for example, would likely start with something like <em>#!/usr/bin/python</em>.  </p>
<p>After that is just the <em>echo</em> statement, which prints the words after it to the terminal (technically, to <em>standard output</em>).  </p>
<h2>Running Your Script</h2>
<p>As is often the case with Linux, there are multiple ways to do this job. The most basic way would be to call bash manually and feed it the script file, as in</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#Filename can be anything, .sh is a common practice for shell scripts.</span>
<span style="color: #c20cb9; font-weight: bold;">bash</span> myscript.sh</pre></div></div>

<p><img src="http://imagecdn.maketecheasier.com/2011/06/bashscripting-hello1.png" alt="bashscripting-hello1" title="bashscripting-hello1" width="246" height="66" class="aligncenter size-full wp-image-34660" /></p>
<p>Clever readers may be thinking &#8220;<em>But wait, didn&#8217;t we put that hashbang thing in so it would know to use bash?  Why did I have to run bash manually?</em>&#8221; and the answer is &#8220;<em>You didn&#8217;t</em>&#8220;. At least, you wouldn&#8217;t have if we had taken a moment to make the script executable on its own.  </p>
<p>In the previous example, we launched bash and sent it the script. Now we&#8217;ll save ourselves some future time by making the script executable so we dont need to run bash manually. That&#8217;s as easy as a single command.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x myscript.sh</pre></div></div>

<p>And now it can be run with the filename directly.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/06/bashscripting-hello2.png" alt="bashscripting-hello2" title="bashscripting-hello2" width="243" height="109" class="aligncenter size-full wp-image-34661" /></p>
<h2>Variables and Arguments</h2>
<p>Variables in bash can be a little more confusing than some other scripting languages, partly because they sometimes need to be prefaced with a <em>$</em> character and sometimes not &#8211; depending on what you&#8217;re doing.  Take the following example.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PATH</span>=<span style="color: #007800;">$PATH</span>:<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>josh<span style="color: #000000; font-weight: bold;">/</span>scripts</pre></div></div>

<p>We refer to the same variable, PATH, two times. Once there&#8217;s no <em>$</em>, but the other time there is.  There are a few ways that you can remember when a $ is appropriate, but this author uses a &#8220;talking&#8221; metaphor. If I&#8217;m talking TO the variable (such as assigning it a new value) I call it by the short name, in this case PATH. If I&#8217;m talking ABOUT a variable (such as getting its current value) it gets a more formal title ($PATH). The precise reasoning and inner workings of this design are beyond the scope of this guide, so just try to remember that you need to include a $ if you&#8217;re trying to fetch the information in a variable.  </p>
<p>Now we&#8217;re going to use a variable in our script. Change the second line to look like the following:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> Hello <span style="color: #007800;">$1</span><span style="color: #000000; font-weight: bold;">!</span></pre></div></div>

<p>And re-run your script, but this time include your name after the script name.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/06/bashscripting-arg1.png" alt="bashscripting-arg1" title="bashscripting-arg1" width="232" height="59" class="aligncenter size-full wp-image-34662" /></p>
<p>Bash auto-assigns certain variables for you, including a few such as $1, $2 etc which hold each of the arguments passed to the script. Variables can be reassigned and renamed any way you wish, so you could rewrite the previous script as</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">firstname</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">lastname</span>=<span style="color: #007800;">$2</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> Hello <span style="color: #007800;">$firstname</span> <span style="color: #007800;">$lastname</span><span style="color: #000000; font-weight: bold;">!</span></pre></div></div>

<p>As you can see, there are no $ signs when assigning the value to the variable, but you do need them when pulling the info out.  </p>
<h2>Conditionals and Loops</h2>
<p>No script could get very far without the ability to analyse or loop through data. The most common method of determining a course of action is to use the if statement. It works much like you&#8217;d expect &#8211; IF something THEN do stuff ELSE do something different. This example compares the string of characters that we stored in the variable <em>firstname</em> and compares it to some hardcoded text. If they match, it prints special output.  Otherwise, it continues as normal.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">firstname</span>=<span style="color: #007800;">$1</span>
<span style="color: #007800;">lastname</span>=<span style="color: #007800;">$2</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$firstname</span>&quot;</span> == <span style="color: #ff0000;">&quot;Josh&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;What a great name&quot;</span>
<span style="color: #000000; font-weight: bold;">else</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> Hello <span style="color: #007800;">$firstname</span> <span style="color: #007800;">$lastname</span><span style="color: #000000; font-weight: bold;">!</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>Finally, the next core component is bash&#8217;s ability to loop over data. The normal looping mechanisms for bash are FOR, WHILE, and UNTIL. We&#8217;ll start with while, as it&#8217;s the simplest.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash </span>
         <span style="color: #007800;">counter</span>=<span style="color: #000000;">0</span>
         <span style="color: #666666; font-style: italic;">#While the counter is less than 10, keep looping</span>
         <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #007800;">$counter</span> <span style="color: #660033;">-lt</span> <span style="color: #000000;">50</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">do</span>
             <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$counter</span>
             <span style="color: #7a0874; font-weight: bold;">let</span> <span style="color: #007800;">counter</span>=counter+<span style="color: #000000;">1</span> 
         <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>That example creates a <em>counter</em> variable, begins a <em>while</em> loop, and continues looping (and adding one to the counter) until it reaches the limit, in this case 50. Anything after the <em>done</em> statement will execute once the loop is complete.  </p>
<p>UNTIL operates similarly, but as the reverse of WHILE. A while loop will continue as long as its expression is true (counter less than 50). The until loop takes the opposite approach, and would be written as</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">until</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>  <span style="color: #007800;">$counter</span> <span style="color: #660033;">-gt</span> <span style="color: #000000;">50</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">do</span></pre></div></div>

<p>In this example, &#8220;while less than 50&#8243; and &#8220;until greater than 50&#8243; will have nearly identical results (the difference being that one will include the number 50 itself, and the other will not. Try it out for yourself to see which one, and why.)</p>
<h2>Conclusion</h2>
<p>As stated above, it would take a lot more than a single Getting Started article to fully demonstrate the power of bash scripting. The pieces shown here can be seen as the core components of how bash operates, and should suffice to show you the basic principles behind shell scripting in Linux. If you really want to get into the guts and start making some great scripts, check out GNU&#8217;s official bash reference guide <a href="http://www.gnu.org/software/bash/manual/bashref.html">here</a>. Happy scripting!</p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30&amp;title=The+Beginner+Guide+to+Writing+Linux+Shell+Scripts&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/write-linux-shell-scripts/2011/06/30" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/write-linux-shell-scripts/2011/06/30">The Beginner Guide to Writing Linux Shell Scripts</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/write-linux-shell-scripts/2011/06/30/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>7 Linux Shell Tips For Increased Productivity</title>
		<link>http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16</link>
		<comments>http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16#comments</comments>
		<pubDate>Thu, 16 Jun 2011 14:58:08 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=34129</guid>
		<description><![CDATA[Love it or hate it, the command line is here to stay. Sure, there are new options emerging like TermKit but it&#8217;s unlikely that the command line will ever really go away. Those who take the time to master it can run productivity circles around their peers, but with the astonishing assortment of CLI tools [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16&amp;title=7+Linux+Shell+Tips+For+Increased+Productivity&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16">7 Linux Shell Tips For Increased Productivity</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imagecdn.maketecheasier.com/2011/06/linuxshelltips-small.png" alt="linuxshelltips-small" title="linuxshelltips-small" width="128" height="128" class="alignleft size-full wp-image-34154" />Love it or hate it, the command line is here to stay. Sure, there are new options emerging like <a href="http://acko.net/blog/on-termkit" target="_blank">TermKit</a> but it&#8217;s unlikely that the command line will ever really go away. Those who take the time to master it can run productivity circles around their peers, but with the astonishing assortment of CLI tools available, where do you even begin? We&#8217;ve compiled a few of the most useful tools and tricks into this guide to help new users gain some new knowledge, and old pros learn some new tricks.<br />
<span id="more-34129"></span><br />
<em>Note: Some of the tools or commands listed here may require root privileges.  </em></p>
<h2>1. Making a Temporary Filesystem (Ramdisk)</h2>
<p>There are several reasons to make a temporary RAM-based filesystem such as fast read/write times or to guarantee that the files will not persist after reboot. Making such a &#8220;fake&#8221; filesystem is easy, and just requires one command.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-t</span> tmpfs tmpfs <span style="color: #000000; font-weight: bold;">/</span>mytemppartition <span style="color: #660033;">-o</span> <span style="color: #007800;">size</span>=1024m</pre></div></div>

<p>Where <em>/mytemppartion</em> is the location you wish to mount (it must already exist) and <em>1024m</em> is the desired size of the ramdisk.  </p>
<h2>2. Quickly Scheduling Commands</h2>
<p>Linux pros almost certainly know the <em>at</em> command, it lets you set a specific time for a job to be run. You simply say what to do and when to do it, and <em>at</em> takes care of the rest. Its usage can be confusing for some, so here&#8217;s one common way of scheduling a task with <em>at</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">at <span style="color: #000000;">12</span>:<span style="color: #000000;">30</span> <span style="color: #666666; font-style: italic;">#Enter key</span>
somecommandtorun
anothercommand
<span style="color: #666666; font-style: italic;">#ctrl-D</span></pre></div></div>

<p>If you want to verify that it worked, you can easily list the sceduled jobs with</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">at <span style="color: #660033;">-l</span></pre></div></div>

<h2>3. Re-run Previous Commands</h2>
<p>Perhaps you ran a long complicated command, but forgot to preface it with <em>sudo</em>, or maybe you didn&#8217;t add some necessary options to the end. Instead of retyping the whole thing or going back through your shell history, you can use &#8220;double bangs&#8221; to represent your last command.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>myDir
<span style="color: #666666; font-style: italic;">#Permission denied</span>
<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">!!</span>
<span style="color: #666666; font-style: italic;">#Success!</span></pre></div></div>

<p>If you&#8217;re the type who tracks your command history numbers, you can use the same approach to recall any previous command by referencing its number:</p>
<p><img src="http://imagecdn.maketecheasier.com/2011/06/linuxshelltips-banghistory.png" alt="linuxshelltips-banghistory" title="linuxshelltips-banghistory" width="494" height="189" class="aligncenter size-full wp-image-34147" /></p>
<h2>4. Find the PID of a Process</h2>
<p>If you need to kill a particular process but don&#8217;t have its PID, there&#8217;s a simple shortcut to find it &#8211; the pgrep command. It doesn&#8217;t do anything that can&#8217;t be done with a combination of <em>ps</em> and <em>grep</em>, but every little bit helps.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/06/linuxshelltips-pgrep.png" alt="linuxshelltips-pgrep" title="linuxshelltips-pgrep" width="285" height="101" class="aligncenter size-full wp-image-34148" /></p>
<h2>5. Find the Fastest Apt Mirror</h2>
<p>Most Debian-derived distributions (but not Ubuntu) have access to a great tool that seems to go largely unnoticed. It&#8217;s called apt-spy, and its purpose is to scan the list of known Debian mirrors to find the fastest one <em>for you</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">apt-spy update
<span style="color: #666666; font-style: italic;">#This example will scan stable branch of 20 american mirrors for 30 seconds each</span>
apt-spy <span style="color: #660033;">-d</span> stable <span style="color: #660033;">-a</span> America <span style="color: #660033;">-e</span> <span style="color: #000000;">20</span> <span style="color: #660033;">-t</span> <span style="color: #000000;">30</span></pre></div></div>

<h2>6. Show Listening Ports and their Processes</h2>
<p>If you need to see what&#8217;s listening for connections on your system, and the processes handling those connections, the old trusty netstat tool is up to the job. Try</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">netstat</span> <span style="color: #660033;">-tlnp</span></pre></div></div>

<p>to see just such a list.  </p>
<h2>7. SSH Without Passwords</h2>
<p>Many people, such as this author, use SSH on a nearly constant basis. It&#8217;s a great tool, there&#8217;s no denying that, but having to constantly retype your passwords can get annoying. Instead, you can simply copy your (public) SSH information to the remote machine, allowing it to authenticate you without requiring your password, and all you need is a single command.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ssh-copy-id username<span style="color: #000000; font-weight: bold;">@</span>remote-machine</pre></div></div>

<h2>Conclusion</h2>
<p>Obviously we&#8217;ve only begun to scratch the surface when it comes to useful CLI tools, but the ones listed here are a few of those that we at MTE consider indispensable. If you&#8217;ve got any favorite utilities that we forgot to mention, let us know in the comments below.</p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16&amp;title=7+Linux+Shell+Tips+For+Increased+Productivity&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16">7 Linux Shell Tips For Increased Productivity</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/7-linux-shell-tips-for-increased-productivity/2011/06/16/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How to Multitask at the Linux Command Line with Screen</title>
		<link>http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28</link>
		<comments>http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28#comments</comments>
		<pubDate>Thu, 28 Apr 2011 14:58:17 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=32311</guid>
		<description><![CDATA[I&#8217;ll admit up front &#8211; it&#8217;s embarrassingly late for me to have discovered screen. Friends and coworkers have been suggesting it to me for years, but it wasn&#8217;t until recently that I had a concrete need for it. Now I wish I&#8217;d had it all along. In short, screen gives you the equivalent of the [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28&amp;title=How+to+Multitask+at+the+Linux+Command+Line+with+Screen&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28">How to Multitask at the Linux Command Line with Screen</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imagecdn.maketecheasier.com/2011/04/screencli-small.png" alt="screencli-small" title="screencli-small" width="199" height="167" class="alignleft size-full wp-image-32337" />I&#8217;ll admit up front &#8211; it&#8217;s embarrassingly late for me to have discovered <em>screen</em>. Friends and coworkers have been suggesting it to me for years, but it wasn&#8217;t until recently that I had a concrete need for it. Now I wish I&#8217;d had it all along. In short, <em>screen</em> gives you the equivalent of the &#8220;workspaces&#8221; you find in Gnome, KDE, and other desktop environments, but for the command line. It may not sound like much, but like the graphical equivalent, you begin to see the power after a few uses. Today we&#8217;re going to cover some <em>screen</em> basics useful for your home desktop but <strong>especially</strong> useful if you use remote access tools like SSH.<br />
<span id="more-32311"></span></p>
<h3>Overview</h3>
<p>Let&#8217;s say you&#8217;re at the command line, and you&#8217;re running a long process like a kernel recompile. On some machines, that can take up to an hour. An average user might sit and wait. A clever user might background the job, or use the function keys to open a new TTY login. A <em>screen</em> user, however, has already thought ahead. Had <em>screen</em> been launched first (or automatically &#8211; more on that later) that user would just hit the proper key combo to create a new shell. And another, and another, if desired. Each one operates independently of the others and all output will remain on the appropriate <em>screen</em> session.  </p>
<p>Some of you who like to use the <em>ALT-CTRL-(F1 through F4)</em> method may wonder how <em>screen</em> is any better. Several reasons actually, some of which would be:</p>
<ol>
<li>Not limited to number of function keys</li>
<li>Ability to name each screen</li>
<li>Ability to detach/reattach screen sessions</li>
<li>&#8220;Status Bar&#8221; support</li>
<li>Multi-user shared screens</li>
<li>Split screens</li>
</ol>
<p>A LOTS more.  </p>
<h3>Getting Started</h3>
<p>As <em>screen</em> is included in nearly every major Linux distro, this guide will not cover installation. The simplest way to launch <em>screen</em> is to just open a terminal and type</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">screen</span></pre></div></div>

<p>You might get a welcome screen, but otherwise you may not notice anything different. It just looks like a normal terminal right?  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/04/screencli-normal.png" alt="screencli-normal" title="screencli-normal" width="590" height="218" class="aligncenter size-full wp-image-32318" /></p>
<p>What you&#8217;re actually seeing is the default screen session, and you can think of it as a layer over your shell. Should you exit or detach the session, you&#8217;d be returned to your normal <em>screen</em>-less shell.  </p>
<h3>Adding and Navigating Screens</h3>
<p>For starters, you&#8217;ll need to know one major key combo. This is the &#8220;magic&#8221; key combo that lets you access all the individual commands. What is this magical combination?  <em>Ctrl-A</em>.  For example, <em>Ctrl-A</em> followed by <em>c</em> will create a new screen. <em>Ctrl-A</em> and <em>n</em> will move to the next screen in line (if one exists). The following includes many of the most common action keys (all keys are case-sensitive):</p>
<ul>
<li>c &#8211; Create a new screen</li>
<li>n &#8211; Move to next screen</li>
<li>p &#8211; Move to previous screen</li>
<li>S &#8211; Split screen into stacked regions</li>
<li>| &#8211; Split to side-by-side regions (might not work on all systems)</li>
<li>d &#8211; Detach screen</li>
<li>A &#8211; Set screen title</li>
</ul>
<h3>Attaching/Detaching Screens</h3>
<p>While there are many great uses for screen, this function could be called screen&#8217;s bread and butter. The ability to detach a screen, leaving it running, and pick it back up later is invaluable.  </p>
<p>Let&#8217;s say you&#8217;re running the <a href="http://maketecheasier.com/complete-guide-to-running-a-minecraft-server/2011/04/21">Minecraft server from last week</a>, and it&#8217;s running on an old PC under your bed. Normally if you wanted to, say, enter commands at the server console, you&#8217;d have to pull out the machine, dig out a keyboard and monitor, run your commands, and push it all back. Had the server software been started in a screen session, you can just SSH into the server, re-attach the screen, and do what you need. When done, detach the screen, and the server will keep running<em> even after you close the SSH session</em>. Days/weeks/months later, you can log back into the server and reattach that screen to enter new commands.  </p>
<h3>.screenrc</h3>
<p>Finally, we could not cover screen without at least a brief mention of the <em>~/.screenrc</em> file. There are many many uses for this file, but as this is an introductory guide, we will not cover all possible options. Instead, we&#8217;ll just point out the well-loved <em>hardstatus</em> setting.  </p>
<p>This option gives you a fantastically useful info bar that will persist across all <em>screen</em> sessions. Typically, it&#8217;s placed at the bottom and holds info such as time, hostname, and title/number of the current screen.  </p>
<p>You can find example hardstatus codes all over the net with your preferred search engine, but here are a few to get you started. </p>
<h3>#1</h3>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">hardstatus alwayslastline
hardstatus string <span style="color: #ff0000;">'%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'</span></pre></div></div>

<p><img src="http://imagecdn.maketecheasier.com/2011/04/screencli-hs1.png" alt="screencli-hs1" title="screencli-hs1" width="570" height="170" class="aligncenter size-full wp-image-32331" /></p>
<h3>#2</h3>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">hardstatus alwayslastline
hardstatus string <span style="color: #ff0000;">&quot;%{+b Rk}(%{-b g}<span style="color: #007800;">$LOGNAME</span>@%H%{+b R}) (%{-b g}%C %a%{+b R}) %{-b g} %n %t %h&quot;</span></pre></div></div>

<p><img src="http://imagecdn.maketecheasier.com/2011/04/screencli-hs2.png" alt="screencli-hs2" title="screencli-hs2" width="564" height="168" class="aligncenter size-full wp-image-32334" /></p>
<h3>#3</h3>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">hardstatus alwayslastline
hardstatus string <span style="color: #ff0000;">'%{= M} %H%{= G} %l %= %{= w}%-w%{+b r}%n*%t%{-b r}%{w}%+w %= %{c}%d %D %{B}%c '</span></pre></div></div>

<p><img src="http://imagecdn.maketecheasier.com/2011/04/screencli-hs3.png" alt="screencli-hs3" title="screencli-hs3" width="566" height="168" class="aligncenter size-full wp-image-32335" /></p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28&amp;title=How+to+Multitask+at+the+Linux+Command+Line+with+Screen&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28">How to Multitask at the Linux Command Line with Screen</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/multitask-at-linux-command-line/2011/04/28/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gnome Shell is Almost Ready to Rock Your Desktop</title>
		<link>http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17</link>
		<comments>http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17#comments</comments>
		<pubDate>Thu, 17 Feb 2011 12:58:22 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[desktop manager]]></category>
		<category><![CDATA[gnome 3]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=29615</guid>
		<description><![CDATA[When Gnome Shell was first becoming available over a year ago, we took a look at it to see what the foundation was like, and to see what direction the Gnome desktop was likely to go. At the time, we liked it, though it was clearly a &#8220;rough draft&#8221; of what it could eventually become. [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17&amp;title=Gnome+Shell+is+Almost+Ready+to+Rock+Your+Desktop&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17">Gnome Shell is Almost Ready to Rock Your Desktop</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-small.jpg" alt="fed15shell-small" title="fed15shell-small" width="200" height="125" class="alignleft size-full wp-image-29636" />When Gnome Shell was first becoming available over a year ago, we <a href="http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09">took a look</a> at it to see what the foundation was like, and to see what direction the Gnome desktop was likely to go. At the time, we liked it, though it was clearly a &#8220;rough draft&#8221; of what it could eventually become. Since then, time has gone by, and while Ubuntu may have decided to go with Unity instead, others have taken Gnome Shell up to the next level.  Fedora, among others, will be putting it front and center in future releases. Today we&#8217;re going to take a look at one of the most recent builds available to see what this slick desktop environment has got to offer.<br />
<span id="more-29615"></span><br />
<em>Note: The screenshots here were made with a Gnome Shell live CD based on OpenSUSE which can be found <a href="http://blog.crozat.net/2011/01/gnome-3-live-cd-usb-test-image.html" target="_blank">here, </a>or the Fedora 15 nightly builds, which can be found <a href="http://alt.fedoraproject.org/pub/alt/nightly-composes/desktop/" target="_blank">here</a>. The first link is a much more stable option currently but the Fedora images should improve daily. Lastly, you can also download the Gnome 3 Live CD from the <a href="http://gnome3.org/index.html">new Gnome 3 website.</a></em></p>
<h3>The Basic Desktop</h3>
<p>When it launches, the Gnome Shell desktop is pretty sparse. In fact, all you&#8217;ve really got is a thin panel on the top.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-maindesktop.jpg" alt="fed15shell-maindesktop" title="fed15shell-maindesktop" width="577" height="346" class="size-full wp-image-29619" /></p>
<p>It&#8217;s more-or-less like the default top panel you&#8217;d find on your average Gnome install. The user text in the upper right corner acts much like the equivalent Gnome applet in Ubuntu.</p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-userapplet.jpg" alt="fed15shell-userapplet" title="fed15shell-userapplet" width="574" height="453" class="aligncenter size-full wp-image-29621" /></p>
<p>Things get interesting once you click the Activities button, or move your mouse all the way to the top left. This activates the nuts-and-bolts of Gnome Shell, the Activities screen.  </p>
<h3>Windows and Applications</h3>
<p>If you have no applications open, the Activities screen doesn&#8217;t show very much to start.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-activities.jpg" alt="fed15shell-activities" title="fed15shell-activities" width="577" height="405" class="aligncenter size-full wp-image-29622" /></p>
<p>But once you open a few things, possibly through the sidebar dock, you&#8217;ll see one of the features of Gnome Shell:  decluttering your workspace.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-windowclutter.jpg" alt="fed15shell-windowclutter" title="fed15shell-windowclutter" width="577" height="361" class="aligncenter size-full wp-image-29623" /></p>
<p>However many windows you have open on that workspace will be sorted for easy viewing and access. As you may see in the screenshot above, Gnome Shell adds a close button to the window under the cursor, so excess applications can be removed without leaving the Activities screen.  </p>
<p>So far that&#8217;s just the <em>Windows</em> section. If you look near the top of the Activities screen, you&#8217;ll also see <em>Applications</em>. Clicking this brings up the full application screen.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-allapps.jpg" alt="fed15shell-allapps" title="fed15shell-allapps" width="577" height="361" class="aligncenter size-full wp-image-29624" /></p>
<p>On the right you can choose specific categories of applications, much like the traditional Gnome menu.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-submenu.jpg" alt="fed15shell-submenu" title="fed15shell-submenu" width="577" height="277" class="aligncenter size-full wp-image-29625" /></p>
<h3>The Dock</h3>
<p>The sidebar dock provided here is a pretty simple one, and is actually similar in many ways to the one found in Unity.  It is a launcher of course and also tracks the open applications, so that if you click the icon when the application is open, it will move you to the appropriate workspace. Items can be added and removed by right clicking to icon to add it as a &#8220;Favorite&#8221;.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-addtodock.jpg" alt="fed15shell-addtodock" title="fed15shell-addtodock" width="453" height="558" class="aligncenter size-full wp-image-29632" /></p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-adddock.jpg" alt="fed15shell-adddock" title="fed15shell-adddock" width="577" height="354" class="aligncenter size-full wp-image-29633" /></p>
<h3>Workspaces</h3>
<p>This is where Gnome Shell has always stood above most other desktop environments: its ability to manage multiple workspaces. So far there seem to be three approaches to workspace management. Early builds placed workspaces in a grid layout showing you all at once:</p>
<p><img alt="gnome-shell-multi-desktop" src="http://imagecdn.maketecheasier.com/2009/09/gnome-shell-multi-desktop.jpg" title="old layout" class="aligncenter" width="577" height="361" /></p>
<p>Fedora, and the live CD used for this article, place their workspace icons at the bottom of the Activities screen, and you click the &#8220;+&#8221; or &#8220;-&#8221; icons on the right to add and remove new workspaces.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-workspace.jpg" alt="fed15shell-workspace" title="fed15shell-workspace" width="577" height="361" class="aligncenter size-full wp-image-29639" /></p>
<p>But there are some screenshots circulating of a third method which, to some, may be the best of both worlds.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-proposed.jpg" alt="fed15shell-proposed" title="fed15shell-proposed" width="500" height="375" class="aligncenter size-full wp-image-29631" /></p>
<h3>Enhanced Search</h3>
<p>In the upper right corner you&#8217;ve got your search box. This can not only pick up applications and system settings, but you can use it to directly search sites like Google and Wikipedia.</p>
<p><img src="http://imagecdn.maketecheasier.com/2011/02/fed15shell-search.jpg" alt="fed15shell-search" title="fed15shell-search" width="577" height="359" class="aligncenter size-full wp-image-29634" /></p>
<h3>Conclusion</h3>
<p>As for this author&#8217;s opinion &#8211; I love it. While I can&#8217;t claim to take sides on the Compiz vs Clutter debate, it&#8217;s my opinion that Gnome Shell is the best designed desktop environment I&#8217;ve yet seen. This is coming from someone who&#8217;s very very picky about their interface. In Gnome Shell, all actions are fluid.  Windows fade or slide into place.  Transitions from one screen to the next are smooth and uninterrupted. To many it may resemble the feel of a modern smart phone more than a desktop. It&#8217;s a pity Ubuntu isn&#8217;t going to fully back it, they&#8217;ve got the best track record of giving a desktop the polish it really needs. I, for one, am very excited about the future of Gnome Shell and can&#8217;t wait to see where it goes.  </p>
<p>Image credit: <a href="http://www.flickr.com/photos/jakubsteiner/5201349215/sizes/l/in/photostream/" target="_blank" rel="nofollow">Jimmac</a> </p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17&amp;title=Gnome+Shell+is+Almost+Ready+to+Rock+Your+Desktop&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17">Gnome Shell is Almost Ready to Rock Your Desktop</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/gnome-shell-is-almost-ready-to-rock-your-desktop/2011/02/17/feed</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>How to Supercharge Your Shell with Bashish [Linux]</title>
		<link>http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27</link>
		<comments>http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27#comments</comments>
		<pubDate>Thu, 27 Jan 2011 12:58:38 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=28352</guid>
		<description><![CDATA[If you&#8217;re a Linux (or even Mac) user, and you&#8217;ve never toyed with your shell prompt, you might not realize just how useful a good prompt can be. Sure, it can show your user and host names, and perhaps the current directory, but a really good prompt can do a whole lot more. Those who [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27&amp;title=How+to+Supercharge+Your+Shell+with+Bashish+%5BLinux%5D&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27">How to Supercharge Your Shell with Bashish [Linux]</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-lcars-small.png" alt="bashish-lcars-small" title="bashish-lcars-small" width="220" height="149" class="alignleft size-full wp-image-28353" />If you&#8217;re a Linux (or even Mac) user, and you&#8217;ve never toyed with your shell prompt, you might not realize just how useful a good prompt can be. Sure, it can show your user and host names, and perhaps the current directory, but a really good prompt can do a <a href="http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04">whole lot more</a>. Those who spend a LOT of time in the terminal might even want to take it a step further and move into a custom semi-graphical shell with all kinds of bells and whistles. If you&#8217;re one such shell enthusiast, then check out <a href="http://bashish.sourceforge.net/" target="_blank">Bashish</a> &#8211; a way to theme your command prompt. Yep, you read that right.<br />
<span id="more-28352"></span></p>
<h3>Installing Bashish</h3>
<p>Not all the links on the Bashish <a href="http://bashish.sourceforge.net/download.html">Download Page</a> seem to be working, however the source tarball is working fine. Once extracted, it can be installed from the command line with</p>
<pre lang="bash">./configure &#038;&#038; make &#038;&#038; sudo make install</pre>
<p>If you need details on the above steps, see <a href="http://maketecheasier.com/install-software-from-a-tarball-in-linux/2009/06/25">How to Install Software from a Tarball in Linux</a>.  </p>
<p>You&#8217;ll need to restart your shell for Bashish to take effect.  </p>
<h3>Choosing Themes</h3>
<p>Bashish comes with several themes in the base package, and you can list them with the command </p>
<pre lang="bash">bashish list</pre>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-list.png" alt="bashish-list" title="bashish-list" width="418" height="328" class="aligncenter size-full wp-image-28357" /></p>
<p>And once you&#8217;ve seen a theme you&#8217;d like to try, just enter</p>
<pre lang="bash">bashish (theme name)</pre>
<p>There is an alternate method, which will allow you to browse the themes instead of specifying one-at-a-time, but in the tests performed for this article, the theme manager failed to apply changes to theme selection, so the above method is recommended. Should you wish to try the theme manager, it can be run with the command <code>bashishtheme</code> and requires the <em>dialog</em> program in order to run properly.  </p>
<h3>Disabling Bashish</h3>
<p>There are some cases in which Bashish might cause problems with software run through it, so the developers have included a fairly simple way to temporarily suspend Bashish for the duration of a process. To run a command without Bashish, run it as </p>
<pre lang="bash">BASHISH_DISABLED=1 your_command</pre>
<h3>Recommended Themes</h3>
<p>Of the themes included with Bashish, there are a few that stand out as especially cool (at least in this author&#8217;s opinion). The following themes are the ones we&#8217;d most recommend, either for usefulness or simply because of the cool factor.  </p>
<p>The <em>Box</em> theme applies a border around each section of your output, marking a clear distinction between events.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-box2.png" alt="bashish-box2" title="bashish-box2" width="412" height="251" class="aligncenter size-full wp-image-28360" /></p>
<p>The <em>Bashish2</em> theme is an elegant 2-liner with some minimal information.</p>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-bashish2.png" alt="bashish-bashish2" title="bashish-bashish2" width="412" height="173" class="aligncenter size-full wp-image-28363" /></p>
<p>The default theme <em>BlueSteel</em>, and with good reason. It looks lovely and contains several bits of useful info.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-bluesteel.png" alt="bashish-bluesteel" title="bashish-bluesteel" width="412" height="147" class="aligncenter size-full wp-image-28364" /></p>
<p><em>Elite</em> and <em>Elite2</em> are favorites as well, because they pack a lot of info into a small space, and include bash history number in the top line.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-elite2.png" alt="bashish-elite2" title="bashish-elite2" width="412" height="152" class="aligncenter size-full wp-image-28365" /></p>
<p>The <em>LCARS</em> theme is clearly more about style than substance, as it&#8217;s intended to resemble the LCARS computer interface seen on several Star Trek series. It doesn&#8217;t give much in the ways of useful info, and it takes up a lot of space, but it deserves a mention.  </p>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-lcars-large.png" alt="bashish-lcars-large" title="bashish-lcars-large" width="412" height="256" class="aligncenter size-full wp-image-28366" /></p>
<p>Finally, for those who want a clear visual split between commands, but not a bunch of text in the way, we&#8217;ve got the simplistic <em>Uberprompt</em>.</p>
<p><img src="http://imagecdn.maketecheasier.com/2011/01/bashish-uber.png" alt="ashish-uber" title="bashish-uber" width="412" height="143" class="aligncenter size-full wp-image-28367" /></p>
<h3>Conclusion</h3>
<p>If you want a fancy shell without trying to decode a line like <em>PS1=&#8221;\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ &#8220;</em> to do it, Bashish is a great way to go. There are enough built-in themes to satisfy just about anyone, and for the most part, they look great. This author will probably be using BlueSteel for quite a while.  </p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27&amp;title=How+to+Supercharge+Your+Shell+with+Bashish+%5BLinux%5D&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27">How to Supercharge Your Shell with Bashish [Linux]</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/supercharge-shell-with-bashish/2011/01/27/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gnome Shell &#8211; Your Next Desktop Environment</title>
		<link>http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09</link>
		<comments>http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09#comments</comments>
		<pubDate>Wed, 09 Sep 2009 23:57:47 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[compiz]]></category>
		<category><![CDATA[compositing]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=7039</guid>
		<description><![CDATA[Since the release of KDE4, a major overhaul of the KDE desktop, there&#8217;s been some grumbling among the Gnome community about if and when Gnome would have a major overhaul. Well with Gnome 3 we&#8217;ll have it in the form of Gnome Shell. It pretty much replaces the panel and window manager in a normal [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09&amp;title=Gnome+Shell+%26%238211%3B+Your+Next+Desktop+Environment&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09">Gnome Shell &#8211; Your Next Desktop Environment</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-7061" src="http://imagecdn.maketecheasier.com/2009/09/gnome-shell-menu-small.jpg" alt="gnome-shell-menu-small" width="250" height="156" />Since the release of KDE4, a major overhaul of the KDE desktop, there&#8217;s been some grumbling among the Gnome community about if and when Gnome would have a major overhaul.  Well with Gnome 3 we&#8217;ll have it in the form of <a href="http://live.gnome.org/GnomeShell" target="_blank">Gnome Shell</a>.  It pretty much replaces the panel and window manager in a normal Gnome installation with a fully composited environment with some great new functionality.<br />
<span id="more-7039"></span></p>
<h3>Installation</h3>
<p>It&#8217;s important to note right away that Gnome Shell is still in fairly early development.  There is no stable release or package, we&#8217;ll be downloading and installing from source code using an auto build script.  While I had no trouble at all with the installation, things could change at any moment so there&#8217;s certainly no guarantees that it will build, let alone run.  That said, Gnome Shell has so far given me no trouble at all.</p>
<p><!--more-->First, we&#8217;ll need <em>jhbuild</em>, a tool that&#8217;ll help with the installation.  It&#8217;s probably in your distro&#8217;s repositories.  Debian/Ubuntu users an fetch it with:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> jhbuild</pre></div></div>

<p>Next we download and run the installation script:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>git.gnome.org<span style="color: #000000; font-weight: bold;">/</span>cgit<span style="color: #000000; font-weight: bold;">/</span>gnome-shell<span style="color: #000000; font-weight: bold;">/</span>plain<span style="color: #000000; font-weight: bold;">/</span>tools<span style="color: #000000; font-weight: bold;">/</span>build<span style="color: #000000; font-weight: bold;">/</span>gnome-shell-build-setup.sh
<span style="color: #c20cb9; font-weight: bold;">bash</span> gnome-shell-build-setup.sh
jhbuild build</pre></div></div>

<p>This will take a little while.  It ran for about 10 minutes on my Core 2 Duo test machine.  Fortunately, there were no errors during any part of it during my installation.</p>
<h3>Running</h3>
<p><strong>BEFORE RUNNING GNOME SHELL</strong>, make sure to disable Compiz if you&#8217;ve got it running.  Ubuntu users can do this by opening your normal Gnome panel to <em>System -&gt; Preferences -&gt; Appearance</em> and turning off desktop effects.  Once you&#8217;re sure any desktop effects have been disabled, <strong>save any work you&#8217;re not willing to risk</strong>, and enter the following in your terminal:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">~<span style="color: #000000; font-weight: bold;">/</span>gnome-shell<span style="color: #000000; font-weight: bold;">/</span>source<span style="color: #000000; font-weight: bold;">/</span>gnome-shell<span style="color: #000000; font-weight: bold;">/</span>src<span style="color: #000000; font-weight: bold;">/</span>gnome-shell <span style="color: #660033;">--replace</span></pre></div></div>

<p>If you find yourself liking Gnome Shell and running it often, I&#8217;d suggest making an alias in your <em>.bashrc</em> file for the command above.</p>
<h3>Launching Applications</h3>
<p>The main difference in working with the Gnome Shell desktop is that your panel on the top is not your normal panel,  Once you click Activities, you&#8217;ll see a completely different interface from what you&#8217;re used to.</p>
<p><img class="aligncenter size-full wp-image-7045" src="http://imagecdn.maketecheasier.com/2009/09/gnome-shell-single-desktop.jpg" alt="gnome-shell-single-desktop" width="577" height="361" /></p>
<p>You can also open the Activities screen by hitting the Super (aka Windows) key on your keyboard.  On the left, you&#8217;ve got the equivalent of the old menu system.  The top of that panel is the Find box, which operates like many of the desktop finder tools out there.  You can type in the name of a program (like &#8220;firefox&#8221;) to run it, or you can specify a word in the program&#8217;s description, like below.</p>
<p><img class="aligncenter size-full wp-image-7048" src="http://imagecdn.maketecheasier.com/2009/09/gnome-shell-finder.jpg" alt="gnome-shell-finder" width="287" height="408" /></p>
<p>The other method of launching programs is to click the Browse button under Applications, if you prefer using menus.</p>
<h3>Multiple Desktops</h3>
<p>No Linux desktop environment would be complete if it wouldn&#8217;t run multiple desktop screens to manage all your apps.  Gnome Shell is no different, and provides an interesting take on these often-used workspaces.</p>
<p>With the Activities screen up, you&#8217;ll see a small round &#8220;+&#8221; icon in the bottom right corner of your screen.  Click that to add new workspaces to your desktop.</p>
<p><img class="aligncenter size-full wp-image-7050" src="http://imagecdn.maketecheasier.com/2009/09/gnome-shell-multi-desktop.jpg" alt="gnome-shell-multi-desktop" width="577" height="361" /></p>
<p>Even though Gnome Shell is still in pretty early stages, they&#8217;ve already included some great usability features.  For example, with the Activities up, you can click an application icon to launch in your current workspace, or drag the launch icon onto the appropriate workspace.  So in the screenshot above, for example, I could drag the Firefox icon onto the third desktop to make it open there directly.  Once a window is open, you can easily drag it from one workspace to the next.  <a href="http://www.gnome.org/~otaylor/gnome-shell-talk/3-gnome-shell-workspaces.ogg" target="_blank">This video</a> demonstrates exactly what I mean.</p>
<h3>Sidebar</h3>
<p>This is a nice little feature that&#8217;s not much right now but my guess is that it could evolve into a great little tool.  If you click your username in the top right corner of the screen, you can choose to enable the Sidebar.  If enabled, it sits at the left edge of the screen and can be collapsed to a thin bar or expanded into a small box by clicking the arrows at the top.</p>
<p><img class="aligncenter size-full wp-image-7054" src="http://imagecdn.maketecheasier.com/2009/09/gnome-shell-sidebar1.jpg" alt="gnome-shell-sidebar" width="493" height="506" /></p>
<h3>Eye Candy</h3>
<p>The most obvious comparison for a composited window manger like Gnome Shell would be to Compiz.  They&#8217;ve both got window animation effects for things like minimizing and opening windows, as well as transparencies and everything else you&#8217;d expect from a composited setup.  The difference, so far at least, seems to me to be the purpose of those effects.  Compiz puts much more emphasis on pure decoration like rain drops and wobbly windows whereas the Gnome Shell effects are generally more practical.  That&#8217;s not to say Compiz doesn&#8217;t have some handy features, and this could all change as Gnome Shell development goes on.</p>
<h3>Conclusion</h3>
<p>My overall impression of Gnome Shell is most certainly positive.  There&#8217;s clearly been a lot of thought put into its design, and some equally impressive coding behind the implementation.  The visual effects are pleasing but not overwhelming, and the interface is very intuitive and takes almost no effort to understand.</p>
<p>That said, there&#8217;s still plenty of room for development.  So far I&#8217;ve found essentially no configuration options of any kind, so at the moment it seems you&#8217;re stuck with having the shell exactly the way it was installed, like it or not.  Fortunately for me, I like it.  I&#8217;m sure configuration options will improve as development continues and more tools and features are added, so that&#8217;s not so much a complaint as a suggestion to be patient.  It looks like it&#8217;ll be worth the wait.</p>
<p><!--adsense#468x60--></p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09&amp;title=Gnome+Shell+%26%238211%3B+Your+Next+Desktop+Environment&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09">Gnome Shell &#8211; Your Next Desktop Environment</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/gnome-shell-your-next-desktop-environment/2009/09/09/feed</wfw:commentRss>
		<slash:comments>65</slash:comments>
		</item>
		<item>
		<title>8 Useful and Interesting Bash Prompts</title>
		<link>http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04</link>
		<comments>http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04#comments</comments>
		<pubDate>Fri, 04 Sep 2009 12:00:27 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=6712</guid>
		<description><![CDATA[Many people don&#8217;t think of their command prompt as a particularly useful thing, or even pay it much attention. To me, this is a bit of a shame, as a useful prompt can change the way you use the command line. Well I&#8217;ve scoured the Interwebs looking for the best, most useful, or sometimes most [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04&amp;title=8+Useful+and+Interesting+Bash+Prompts&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04">8 Useful and Interesting Bash Prompts</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img src="http://imagecdn.maketecheasier.com/2009/08/bachprompts-main.jpg" alt="bachprompts-main" width="170" height="127" class="alignleft size-full wp-image-6939" />Many people don&#8217;t think of their command prompt as a particularly useful thing, or even pay it much attention.  To me, this is a bit of a shame, as a useful prompt can change the way you use the command line.  Well I&#8217;ve scoured the Interwebs looking for the best, most useful, or sometimes most amusing bash prompts.  Here, in no particular order, are the ones I&#8217;d be most likely to use on my computers.</p>
<p><em>Note &#8211; to use any of these prompts, you can copy &amp; paste the &#8220;PS1=&#8221; line directly into your terminal.  To make the change permanent, paste the line to the end of your </em>~/.bashrc<em> file. </em><br />
<span id="more-6712"></span></p>
<h3>1. Show Happy face upon successful execution</h3>
<p>This prompt is probably the most amusing one on the list, but remains useful.  The idea is that as long as your commands execute successfully, your prompt shows a happy face.  Any time a command fails, it shows a sad face instead.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6786" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-happyface.jpg" alt="bashprompts-happyface" width="298" height="111" /><br />
Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;\<span style="color: #780078;">`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`</span>[\u@\h:\w]\<span style="color: #000099; font-weight: bold;">\$</span> &quot;</span></pre></div></div>

<h3>2.Change color on bad command</h3>
<p>Here&#8217;s one of my favorites.  This prompt has it all.  Like above, the prompt changes color if your last command failed to run successfully, but it also shortens long paths and contains the <a href="http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank">bash history</a> number of each command for easy retrieval.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6791" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-hurring.jpg" alt="bashprompts-hurring" width="378" height="154" /><br />
Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PROMPT_COMMAND</span>=<span style="color: #ff0000;">'PS1=&quot;\[\033[0;33m\][\!]\`if [[ \$? = &quot;0&quot; ]]; then echo &quot;\\[\\033[32m\\]&quot;; else echo &quot;\\[\\033[31m\\]&quot;; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d &quot; &quot;` &gt; 18 ]]; then echo &quot;\\W&quot;; else echo &quot;\\w&quot;; fi\`]\$\[\033[0m\] &quot;; echo -ne &quot;\033]0;`hostname -s`:`pwd`\007&quot;'</span></pre></div></div>

<h3>3. Multi lines prompt</h3>
<p>If you&#8217;re the type who wants to pack your prompt full of information, then here&#8217;s the one for you.  This one is a multi-line prompt containing date/time, full path, user and host, active terminal, even file count and space usage.<br />
Example:<br />
<img class="aligncenter size-full wp-image-6794" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-informant.jpg" alt="bashprompts-informant" width="392" height="162" /><br />
Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>\[\033[35m\]<span style="color: #000099; font-weight: bold;">\$</span>(/bin/date)<span style="color: #000099; font-weight: bold;">\n</span>\[\033[32m\]\w<span style="color: #000099; font-weight: bold;">\n</span>\[\033[1;31m\]\u@\h: \[\033[1;34m\]<span style="color: #000099; font-weight: bold;">\$</span>(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]<span style="color: #000099; font-weight: bold;">\$</span>(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]<span style="color: #000099; font-weight: bold;">\$</span>(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -&gt; \[\033[0m\]&quot;</span></pre></div></div>

<h3>4. Color manage your prompt</h3>
<p>There&#8217;s nothing particularly fancy about this prompt, other than the good use of color to separate the different pieces of information.  As you can see, it provides time, username, hostname, and current directory.  Fairly minimal but useful.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6808" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-4.jpg" alt="bashprompts-4" width="333" height="69" /><br />
Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;\[\033[35m\]<span style="color: #000099; font-weight: bold;">\t</span>\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]<span style="color: #000099; font-weight: bold;">\$</span> &quot;</span></pre></div></div>

<h3>5. Show full path</h3>
<p>This one&#8217;s a nice, clean, minimal 2-line prompt (plus a blank line at the top).  You&#8217;ve got your full path at the first line and pretty much just the username at the bottom.  If you want to remove the blank line at the start of every prompt, just take out the first &#8220;\n&#8221;.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6818" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-5.jpg" alt="bashprompts-5" width="231" height="126" /></p>
<p>Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;[\[\033[32m\]\w]\[\033[0m\]<span style="color: #000099; font-weight: bold;">\n</span>\[\033[1;36m\]\u\[\033[1;33m\]-&gt; \[\033[0m\]&quot;</span></pre></div></div>

<h3>6. Show background job count</h3>
<p>Another nifty 2-liner, but this one&#8217;s got some info we haven&#8217;t used before.  The first line is the normal user@host, with full path.  On the second line we&#8217;ve got history number and a count of the jobs running in the background.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6835" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-61.jpg" alt="bashprompts-6" width="310" height="114" /></p>
<p>Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">'\[\e[1;32m\]\u@\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '</span></pre></div></div>

<h3>7. Display directory information</h3>
<p>A very elegant and nice looking prompt design.  With this one we&#8217;ve got user/host, number of jobs, and date/time on the top line.  Below that is current directory along with number of files in that directory and their disk usage.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6838" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-7.jpg" alt="bashprompts-7" width="399" height="134" /></p>
<p>Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\u@\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])-&gt;\[\e[30;1m\]<span style="color: #000099; font-weight: bold;">\n</span>\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]<span style="color: #000099; font-weight: bold;">\$</span>(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, <span style="color: #000099; font-weight: bold;">\$</span>(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--&gt; \[\e[0m\]&quot;</span></pre></div></div>

<h3>8. My Prompt</h3>
<p>And finally, the prompt I personally like to use.  It&#8217;s a modification of #7, changed to take up less space and include only the information I most want in my prompt.  I like the two-line style as it lets me see the full path without reducing the space for my actual commands.</p>
<p>Example:<br />
<img class="aligncenter size-full wp-image-6845" src="http://imagecdn.maketecheasier.com/2009/08/bashprompts-8.jpg" alt="bashprompts-8" width="268" height="136" /><br />
Code:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])<span style="color: #000099; font-weight: bold;">\n</span>(\[\[\e[37;1m\]! \!\[\e[32;1m\])-&gt; \[\e[0m\]&quot;</span></pre></div></div>

<p>If you&#8217;d like to share your prompt, please do so in the comments below.  </p>
<p><!--adsense#468x60--></p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04&amp;title=8+Useful+and+Interesting+Bash+Prompts&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04">8 Useful and Interesting Bash Prompts</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04/feed</wfw:commentRss>
		<slash:comments>141</slash:comments>
		</item>
		<item>
		<title>Mastering the Bash History</title>
		<link>http://maketecheasier.com/mastering-the-bash-history/2009/05/20</link>
		<comments>http://maketecheasier.com/mastering-the-bash-history/2009/05/20#comments</comments>
		<pubDate>Wed, 20 May 2009 12:32:08 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=4706</guid>
		<description><![CDATA[The Bourne Again Shell, better known as bash, is the default for most Linux distributions. It&#8217;s extremely powerful as far as command shells go, and holds all kinds of nifty tricks for those willing to learn. One of the best features is, in my opinion, the command history system. There are many options to use [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20&amp;title=Mastering+the+Bash+History&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/mastering-the-bash-history/2009/05/20">Mastering the Bash History</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-4801" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-terminal.png" alt="bash-history-terminal" width="200" height="178" />The <em>Bourne Again Shell</em>, better known as <em>bash</em>, is the default for most Linux distributions.  It&#8217;s extremely powerful as far as command shells go, and holds all kinds of nifty tricks for those willing to learn.  One of the best features is, in my opinion, the command history system.</p>
<p>There are many options to use with the bash history, some of them I use nearly every time I open a command shell.  Today I&#8217;ll be covering some of the most useful aspects of the history, but I certainly won&#8217;t be able to cover them all.<br />
<span id="more-4706"></span></p>
<h3>Up/Down Arrows</h3>
<p>Many of you probably know this one, but for anyone who doesn&#8217;t, it&#8217;ll make your life a lot easier.  Any time you&#8217;re in the command shell, simply use the up and down arrows on your keyboard to move through the list of previously entered commands.  Next time you enter a long command that turns out to have a typo, you don&#8217;t have to retype the whole thing just hit the up arrow and make whatever edits are needed.</p>
<h3>!!</h3>
<p>A similar feature to the one listed above is the double bang (!!).  Those characters entered in the shell represent the last typed command.  Let&#8217;s say you&#8217;re trying to run a command only to find out that you need root privileges to do it.  Instead of retyping the whole command, you can simply enter</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">!!</span></pre></div></div>

<p>Bash will substitute the !! for the previous command, as in the example below.</p>
<p><img class="aligncenter size-full wp-image-4772" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-bangbang.png" alt="bash-history-bangbang" width="367" height="103" /></p>
<p>This also works further backward, you can do something like</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">!</span>-<span style="color: #000000;">5</span></pre></div></div>

<p>to recall the command 5 entries back in the history.</p>
<h3>!(word)</h3>
<p>Perhaps a few days ago you typed a long, complex command into your shell, for example a series of options for &#8220;wterm&#8221;.  You can find and re-enter than command by using the history&#8217;s built in search.  You simply add the first few letters of the command after the ! and bash will find it.</p>
<p><img class="aligncenter size-full wp-image-4778" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-bangword.png" alt="Example of !(word)" width="464" height="95" /></p>
<p><em>Be careful with this one.  You may end up running something other than what you expected.  Don&#8217;t use this for potentially dangerous commands like &#8220;rm&#8221; or &#8220;fdisk&#8221;. </em></p>
<h3>!?(word)</h3>
<p>This is similar to the last feature in that it searches the history for the word entered, but unlike !(word) this will find the word anywhere in the command, not just the beginning.</p>
<p><img class="aligncenter size-full wp-image-4781" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-bangquestion.png" alt="bash-history-bangquestion" width="454" height="70" /></p>
<p><em>Be careful with this one.  You may end up running something other than what you expected.  Don&#8217;t use this for potentially dangerous commands like &#8220;rm&#8221; or &#8220;fdisk&#8221;. </em></p>
<h3>Ctrl-R</h3>
<p>This one may be my personal favorite history tool.  It&#8217;s a bit like the <em>!?</em> item above, but interactive.  In your command shell, hit <em>Ctrl-R</em>, and it will begin a search.  As you type, bash will search the history and show you the results as you type.  When it shows the command you want, simply hit enter and it will run that command.  This can be safer than things like <em>!?</em> because you can see what the command will be before you run it, so you don&#8217;t have to guess or rely on memory.</p>
<p><img class="aligncenter size-full wp-image-4789" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-ctrl-r.png" alt="Example of Ctrl-R in the shell" width="515" height="37" /></p>
<h3>Manual Search</h3>
<p>Perhaps you don&#8217;t like the way Ctrl-R works, or you want to see ALL the commands you typed, or just the ones that contain a particular word.  The <em>history</em> command will show you your full command history, along with the history number of each command (hold that thought, we&#8217;ll cover those numbers in a moment).</p>
<p>You can also specify the number of items the <em>history</em> command will show.  To see the last 10 entries in the history, you could type</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">history</span> <span style="color: #000000;">10</span></pre></div></div>

<p>To see all history entries that contain a particular word, you can use <em>grep </em>to filter the results, like below.</p>
<p><img class="aligncenter size-full wp-image-4794" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-grep.png" alt="Example of using grep to filter history list" width="351" height="122" /></p>
<h3>!(number)</h3>
<p>When you use the <em>history</em> command to view your command history list, you&#8217;ll notice each item in the list has a number associated with it.  You can use that to recall that particular command.  For example, item 87 could be run again by entering</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">!</span><span style="color: #000000;">87</span></pre></div></div>

<p>into your shell.</p>
<h3>Word replacement</h3>
<p>This one&#8217;s pretty great.  How many times have you written out some big long command only to realize you put, say, <em>hdd</em> when you wanted <em>hdc</em>?  Well bash has you covered.  You can replace a word in the previous command with another using &#8220;^&#8221;, as in the example below</p>
<p><img class="aligncenter size-full wp-image-4798" src="http://imagecdn.maketecheasier.com/2009/05/bash-history-wordreplacement1.png" alt="Example of word replacement with &quot;^&quot;" width="540" height="104" /></p>
<h3>Managing Your History</h3>
<p>By default, the history is saved in ~/.bash_history.  You can deal with this file however you see fit, but there are some useful things you could try to manage it automatically.  Namely, setting the environment variables <strong>HISTSIZE</strong> and <strong>HISTFILESIZE</strong>.  To set the number of entries that can be saved in the history file to 1000, enter</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">HISTFILESIZE</span>=<span style="color: #000000;">1000</span></pre></div></div>

<p>into your shell.  This will limit the file to 1000 entries.  If you want to make this change permanent, put that export command into your .bashrc or .bash_profile file.</p>
<p><!--adsense#468x60--></p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20&amp;title=Mastering+the+Bash+History&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/mastering-the-bash-history/2009/05/20" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/mastering-the-bash-history/2009/05/20">Mastering the Bash History</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/mastering-the-bash-history/2009/05/20/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Making The Linux Command Line A Little Friendlier</title>
		<link>http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19</link>
		<comments>http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19#comments</comments>
		<pubDate>Thu, 19 Mar 2009 13:03:50 +0000</pubDate>
		<dc:creator>Joshua Price</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[alias]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[command line]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://maketecheasier.com/?p=3366</guid>
		<description><![CDATA[One thing that gets debated over and over in Linux is the need for the command line. Many say that you should never need to access a command prompt to get things done, others are of the opinion that the power of the Linux shell is one of the things that makes Linux so great. [...]<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19&amp;title=Making+The+Linux+Command+Line+A+Little+Friendlier&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19">Making The Linux Command Line A Little Friendlier</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-3367 alignleft" src="http://imagecdn.maketecheasier.com/2009/03/konsole.png" alt="Console icon" width="128" height="128" />One thing that gets debated over and over in Linux is the need for the command line. Many say that you should never need to access a command prompt to get things done, others are of the opinion that the power of the Linux shell is one of the things that makes Linux so great. While I would fall into the latter category, I can certainly understand why people can get frustrated with having to learn complex and seemingly obscure commands to get their computer to work right. Even if you hate the command line, you often have no choice but to open it once in a while to get the job done. Today, we&#8217;ll be covering various ways to make it a little easier to navigate.</p>
<p><span id="more-3366"></span>For those just starting out with Linux, or the command line specifically, the program that displays the command prompt and handles your commands is called <em>bash</em>, or the Bourne Again Shell. In this article we&#8217;ll be using the words <em>command line</em> and <em>shell</em> interchangeably to refer to interacting with Linux through bash.</p>
<p>Today we&#8217;ll be covering:</p>
<ul>
<li>Changing the shell startup routine</li>
<li>Making a more useful command prompt</li>
<li>Creating aliases for long or complex commands</li>
</ul>
<h3>.bashrc and .bash_profile</h3>
<p>These two files are often the source of some confusion. At first appearance, they seem to do the exact same thing &#8211; running startup instructions every time you open a command prompt. In short, <em>.bash_profile</em> runs when you start a shell from a login screen (such as a console system login) and <em>.bashrc</em> runs for non-login shells (such as running Terminal from your system menu).  The <em>.bashrc</em> file is the one you&#8217;ll be using the majority of the time so that&#8217;s the one we&#8217;ll use in our examples today.</p>
<p>As I said, .bashrc is loaded by bash whenever you open a new shell. Chances are you already have a .bashrc file that was created for you when you first installed your Linux system. To see what&#8217;s already in there, load up your preferred text editor and open</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>YourUserName<span style="color: #000000; font-weight: bold;">/</span>.bashrc</pre></div></div>

<p>(By default, the file is hidden from public view. You&#8217;ll have to right-click and select Show Hidden Files before it can show itself.)</p>
<p>You&#8217;ll probably see several lines of code, bash shell scripting to be precise, already in there. The default .bashrc in most distros has some code to do things like color prompts (which we&#8217;ll get into a little bit) and some handy aliases (which we&#8217;ll get into a lot).</p>
<p><img class="aligncenter size-full wp-image-3381" src="http://imagecdn.maketecheasier.com/2009/03/default-bashrc.png" alt="The default .bashrc file for Ubuntu 8.10" width="560" height="508" /></p>
<p>Feel free to glance through the current contents of the file so you have an idea what&#8217;s already happening on each new shell session, but for the sake of this article we can safely ignore the current settings and just add what we want to the end.</p>
<p>Instead of putting our new items directly into the .bashrc file, we&#8217;re going to take a slightly different approach.  Each user on the system has their own .bashrc file in their home directory. If we wanted to make changes to the way bash runs, we&#8217;d have to place our changes in each of those files. If you later decide that what you did wasn&#8217;t quite what you wanted, you&#8217;d have to go through all of those files again and make your updates. Instead of all that hassle, we&#8217;re going to make a single file with all our custom settings, and just tell .bashrc to load from that file.  The diagram below demonstrates:</p>
<p><img class="aligncenter size-full wp-image-3510" src="http://imagecdn.maketecheasier.com/2009/03/source-diagram1.jpg" alt="Diagram representing file sourcing" width="550" height="395" /></p>
<p>By placing the <em>source</em> command at the end of the .bashrc file, it will pull our commands in from the custom-shell.sh file and overwrite the default prompt and default aliases with the ones we&#8217;ve specified. This way, we can make a single file (/etc/custom-shell.sh or whatever else you&#8217;d like to name it) and just tell each user&#8217;s .bashrc file to load it. So if you&#8217;ve still got your .bashrc file loaded in your text editor, move all the way down to the bottom and add</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">source</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>custom-shell.sh</pre></div></div>

<p>Note &#8211; you can take this a step further and add the <em>source</em> line to the .bashrc file in <em>/etc/skel</em>. That way, all new users created on the system will already have our <em>source</em> line included!</p>
<p>Save the .bashrc file and then create a new, blank text file named custom-shell.sh.  This is where we&#8217;ll be putting all of the new settings in the following sections.</p>
<h3>The Prompt</h3>
<p>Every system has a default prompt. Usually, it&#8217;s a bland, default prompt with only a little bit of useful information.  It probably looks something like:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">josh<span style="color: #000000; font-weight: bold;">@</span>roberts:~$</pre></div></div>

<p>To test out exactly how prompt customisation is done, enter the following into the shell:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;Custom &gt; &quot;</span></pre></div></div>

<p>This will turn your prompt into a simple arrow.  No useful info of any kind, but it shows the basic idea of how you change the contents of your prompt.</p>
<p>Over the years, people have taken prompt customisation to the extreme, putting all kinds of info into it. I won&#8217;t go into a huge amount of detail on how to handle colors and multi-line prompts and adding live info, but I will give a nice looking, useful prompt that you could use as a base for your own. In the custom-shell.sh file we created earlier, paste in:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">PS1</span>=<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>\[\033[1;36m\]\u\[\033[1;37m\] \[\033[0;36m\]<span style="color: #780078;">`date`</span><span style="color: #000099; font-weight: bold;">\n</span>\[\033[0m\][\[\033[1;33m\]\w\[\033[0m\]] &quot;</span></pre></div></div>

<p>Most of what you see there are color codes telling bash to switch back and forth between various colors for the text in the prompt. The end result of all this gibberish is a rather nice looking and easy to understand prompt.</p>
<p><img class="aligncenter size-full wp-image-3467" src="http://imagecdn.maketecheasier.com/2009/03/newprompt.png" alt="New prompt after changes" width="484" height="316" /></p>
<p>Save the custom-shell.sh file after pasting in the code above. If you save it in /etc, you&#8217;ll probably need root privileges. You can save it anywhere you want, but make sure you point your .bashrc to the right place. To test out your new prompt, you can either close and re-open your shell, or just type</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">source</span> .bashrc</pre></div></div>

<p>into your current shell.</p>
<p>Your .bashrc file should read our new prompt info from the custom-shell.sh file and make your prompt nice and fancy with colors and all.</p>
<p>For an EXTREMELY detailed guide on prompt magic, see the <a title="Linux Prompt HOWTO" href="http://www.linux.org/docs/ldp/howto/Bash-Prompt-HOWTO/index.html" target="_blank">Official Linux Prompt HOWTO</a>.<br />
<a name="alias"></a><br />
<h3>Aliases</h3>
<p>I might as well tell you up front &#8211; I love aliases. The first thing I do when I install a new system is set up my preferred aliases. As the name implies, an alias is just another name for a command. For example, my most used alias is one I call &#8220;gimme&#8221; which bash translates to &#8220;sudo apt-get install&#8221;. You can use aliases for a variety of reasons, such as shortening a long command or making the Linux shell act more like a Windows/Mac/Solaris/BSD/Whatever shell. I suggest pasting the following aliases into your custom-shell.sh file. Those who use distros other than Debian/Ubuntu style can translate the apt-get aliases into the appropriate <em>yum</em> command, or whatever package utility you prefer, and of course the same is true for aptitude and portage users.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#Apt-related aliases</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">gimme</span>=<span style="color: #ff0000;">&quot;sudo apt-get install&quot;</span>            <span style="color: #666666; font-style: italic;">#Install new software</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">acs</span>=<span style="color: #ff0000;">&quot;apt-cache search&quot;</span>                    <span style="color: #666666; font-style: italic;">#Search available packages</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">purge</span>=<span style="color: #ff0000;">&quot;apt-get --purge remove&quot;</span>        <span style="color: #666666; font-style: italic;">#Removes package and its config files</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">update</span>=<span style="color: #ff0000;">&quot;sudo apt-get update&quot;</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">debclean</span>=<span style="color: #ff0000;">&quot;sudo apt-get clean &amp;amp;&amp;amp; sudo apt-get autoremove&quot;</span>  <span style="color: #666666; font-style: italic;">#Removes some unneeded files</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #666666; font-style: italic;">#Misc useful aliases</span>
<span style="color: #666666; font-style: italic;">#</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">ls</span>=<span style="color: #ff0000;">&quot;ls --color=auto&quot;</span>                           <span style="color: #666666; font-style: italic;">#Plain ls with color</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">ll</span>=<span style="color: #ff0000;">&quot;ls -l --color=auto&quot;</span>                         <span style="color: #666666; font-style: italic;">#Detailed list with color</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">config</span>=<span style="color: #ff0000;">&quot;dpkg-reconfigure&quot;</span>                <span style="color: #666666; font-style: italic;">#Re-run the configuration step for a package</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">cmi</span>=<span style="color: #ff0000;">&quot;./configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install&quot;</span>    <span style="color: #666666; font-style: italic;">#Common steps to install package from source</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">numfiles</span>=<span style="color: #ff0000;">&quot;echo <span style="color: #007800;">$(ls -1 | wc -l)</span>&quot;</span>          <span style="color: #666666; font-style: italic;">#Count the number of files in current directory</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">dfree</span>=<span style="color: #ff0000;">&quot;df -h&quot;</span>                                       <span style="color: #666666; font-style: italic;">#See how much hard drive space is free in easy-to-read format</span>
<span style="color: #7a0874; font-weight: bold;">alias</span> <span style="color: #007800;">favdir</span>=<span style="color: #ff0000;">&quot;cd /directory/you/use/a/lot&quot;</span>   <span style="color: #666666; font-style: italic;">#Quickly switch to a directory you often need (music, documents, etc)</span></pre></td></tr></table></div>

<p>Add whatever else you think might be useful, or change the ones I&#8217;ve suggested to suit your needs. Instead of <em>gimme</em> and <em>acs</em>, you could use <em>get</em> and <em>got</em>. Some people transitioning from Windows like to make aliases to mimic Windows commands: <em>copy</em> to replace <em>cp</em>, <em>move</em> to replace <em>mv</em>, <em>ipconfig</em> to replace <em>ifconfig</em>, etc.</p>
<p>Your custom-shell.sh should now look something like this:</p>
<p><img class="aligncenter size-full wp-image-3516" src="http://imagecdn.maketecheasier.com/2009/03/custom-shell.png" alt="Example of finished file" width="448" height="528" /></p>
<p>Once the custom-shell.sh file is saved, and .bashrc is set to point to it, re-open your command prompt and you should have a nice looking, useful prompt with several handy aliases to make things a little easier.</p>
<p>I would love to hear about you favorite aliases! Leave a comment and share some useful command shortcuts you&#8217;ve found, or maybe a nice prompt.  The command line can be a very powerful tool, and I&#8217;d love to know ways you&#8217;ve found to make it even better.</p>
<p><!--adsense#468x60--></p>
<p><div style="float:left;margin-bottom:10px"><a href="http://api.tweetmeme.com/share?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19&amp;service=bit.ly" target="_blank"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" style="border:none;margin-right:5px" width="51" height="61"></a><a href="http://digg.com/tools/diggthis/login?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" target="_blank"><img src="http://images.maketecheasier.com/diggme.png" style="border:none;margin-right:5px" ></a><a href="http://www.facebook.com/sharer.php?u=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" target="_blank"><img src="http://images.maketecheasier.com/fb.jpg" style="border:none;margin-right:5px" ></a><a href="http://www.google.com/reader/link?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19&amp;title=Making+The+Linux+Command+Line+A+Little+Friendlier&amp;srcTitle=MakeTechEasier.com" target="_blank"><img src="http://images.maketecheasier.com/gbuzz-feed.png" style="border:none;margin-right:5px" ></a><a href="http://www.stumbleupon.com/submit?url=http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19" target="_blank"><img src="http://images.maketecheasier.com/stumble.png"></a></div>
<div style="clear:both"></div>
<strong><a href="http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19">Making The Linux Command Line A Little Friendlier</a></strong> originally published on <a href="http://maketecheasier.com">Make Tech Easier</a> (<a href="http://feedproxy.google.com/MakeTechEasier">RSS</a>)
<br/>
Follow us at <a href="http://www.facebook.com/MakeTechEasier">Facebook</a> | <a href="http://twitter.com/MakeTechEasier">Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://maketecheasier.com/making-the-linux-command-line-a-little-friendlier/2009/03/19/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
	</channel>
</rss>

