{"id":92,"date":"2015-11-13T11:19:52","date_gmt":"2015-11-13T19:19:52","guid":{"rendered":"http:\/\/blogs.oregonstate.edu\/mist\/?p=92"},"modified":"2015-11-18T10:47:15","modified_gmt":"2015-11-18T18:47:15","slug":"the-command-line-2","status":"publish","type":"post","link":"https:\/\/dev.blogs.oregonstate.edu\/mist\/2015\/11\/13\/the-command-line-2\/","title":{"rendered":"The Command Line"},"content":{"rendered":"<p><em>A place to just document useful commands and all the good stuff in the terminal I&#8217;ve found useful so far.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Basic Commands<\/strong><br \/>\n\n<table id=\"tablepress-2\" class=\"tablepress tablepress-id-2\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">ls<\/td><td class=\"column-2\">List contents (short)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">ls -l<\/td><td class=\"column-2\">List contents (long)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">ls -a<\/td><td class=\"column-2\">List contents w\/ hidden files<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">ls -lh<\/td><td class=\"column-2\">Long Listing with human readable file sizes<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">ls -R<\/td><td class=\"column-2\">List contents recursively<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">cd<\/td><td class=\"column-2\">Home directory<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">cd {directory}<\/td><td class=\"column-2\">Change directory<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">sudo {command}<\/td><td class=\"column-2\">Runs command as super user<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">sudo !!<\/td><td class=\"column-2\">Runs sudo on previous command<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">top<\/td><td class=\"column-2\">Displays all active processes<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\">clear<\/td><td class=\"column-2\">Clear screen<\/td>\n<\/tr>\n<tr class=\"row-13\">\n\t<td class=\"column-1\">reset<\/td><td class=\"column-2\">Reset screen<\/td>\n<\/tr>\n<tr class=\"row-14\">\n\t<td class=\"column-1\">q<\/td><td class=\"column-2\">Quit<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-2 from cache --><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Shortcuts<\/strong><\/p>\n\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Tab<\/td><td class=\"column-2\">Autocomplete<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Ctrl + C<\/td><td class=\"column-2\">Kill Process<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Ctrl + D<\/td><td class=\"column-2\">Exit Shell<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Ctrl + L<\/td><td class=\"column-2\">Clear Screen<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Ctrl + Z<\/td><td class=\"column-2\">Puts whatever you are running into a suspended background process. fg restores it.<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Ctrl + A<\/td><td class=\"column-2\">Go to beginning of current line<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Ctrl + E<\/td><td class=\"column-2\">Go to end of current line<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">Ctrl + U<\/td><td class=\"column-2\">Clears line before cursor position<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">Ctrl + K<\/td><td class=\"column-2\">Clears line after cursor position<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">Ctrl + W<\/td><td class=\"column-2\">Deletes word before cursor<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-3 from cache -->\n<p>&nbsp;<\/p>\n<p><strong>File System Management<\/strong><\/p>\n\n<table id=\"tablepress-4\" class=\"tablepress tablepress-id-4\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">pwd<\/td><td class=\"column-2\">List current working directory<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">touch {file}<\/td><td class=\"column-2\">Create file<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">cat {file}<\/td><td class=\"column-2\">Concatenate file and display on command line<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">rm {file}<\/td><td class=\"column-2\">Remove file (permanent)<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">rm -rf {directory}<\/td><td class=\"column-2\">Delete folder and its contents (Recursively force remove)<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">mv {file} {newFile}<\/td><td class=\"column-2\">Move\/Rename file<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">cp {file} {newFile}<\/td><td class=\"column-2\">Copy to file<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">touch {file} {directory}<\/td><td class=\"column-2\">Copy to folder<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">grep {pattern} {file}<\/td><td class=\"column-2\">Searches file(s) for specific pattern<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">mkdir {directory}<\/td><td class=\"column-2\">Create directory<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\">rmdir {directory}<\/td><td class=\"column-2\">Delete directory<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-4 from cache -->\n<p>&nbsp;<\/p>\n<p><strong>Pipe<\/strong><br \/>\n<em>Piping is essentially chaining the outputs of a command into the input of the following command.<\/em><\/p>\n\n<table id=\"tablepress-5\" class=\"tablepress tablepress-id-5\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">{command} | {command}<\/td><td class=\"column-2\">Push output of command 1 into command 2<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">{command} &gt; {file}<\/td><td class=\"column-2\">Push output to a file (overwrite)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">{command} &gt;&gt; {file}<\/td><td class=\"column-2\">Push output to a file (append)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-5 from cache -->\n<p><em>Example:<\/em> Grab all instances of foo from command line history<\/p>\n<pre>history | grep foo | less\r\n\r\n<\/pre>\n<p><em>Example:<\/em>\u00a0Pipe output in to grep<\/p>\n<pre>man curl | grep verbose<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Flags<\/strong><br \/>\n<em>Flags are command line parameters appended to a command to specify certain settings, multiple flags can be used in combination. **Note -** The following examples will be based on the command &#8220;`ls&#8220;`. Flags will vary depending on the command they are affiliated with. The following examples are just &#8220;common&#8221; flags that you may or may not see in other commands.<\/em><\/p>\n\n<table id=\"tablepress-6\" class=\"tablepress tablepress-id-6\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">-a<\/td><td class=\"column-2\">All (including files starting with .)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">-A<\/td><td class=\"column-2\">Almost all (not including files starting with .)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">-d<\/td><td class=\"column-2\">List directory entries instead of contents<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">-f<\/td><td class=\"column-2\">Do not sort<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">-h<\/td><td class=\"column-2\">Human readable<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">-I {Pattern}<\/td><td class=\"column-2\">Do not show entries with {Pattern}<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">-r<\/td><td class=\"column-2\">Reverse order<\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">-R<\/td><td class=\"column-2\">Recursive<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">-s<\/td><td class=\"column-2\">Print size<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">-S<\/td><td class=\"column-2\">Sort by size<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\">man {command}<\/td><td class=\"column-2\">Look up list of flags<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-6 from cache -->\n<p><em>Example:<\/em> Grab all files at a specific location with a specific pattern<\/p>\n<pre>grep -l -f \/src\/bin\/foo bar<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>History<\/strong><\/p>\n\n<table id=\"tablepress-7\" class=\"tablepress tablepress-id-7\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">history n<\/td><td class=\"column-2\">Display previous commands inputed (limit to n)<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Ctrl + R<\/td><td class=\"column-2\">Search through command history<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">jobs<\/td><td class=\"column-2\">List all the current jobs<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">!!<\/td><td class=\"column-2\">Execute previous command<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-7 from cache -->\n<p>&nbsp;<\/p>\n<p><strong>Job Control<\/strong><br \/>\n<em>Job control allows you to have multiple processes or &#8220;jobs&#8221;, essentially run by the shell. Press ctrl + z when in a program (ex &#8211; vim) to back out of it and put it into the background.<\/em><\/p>\n\n<table id=\"tablepress-8\" class=\"tablepress tablepress-id-8\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Ctrl + Z<\/td><td class=\"column-2\">Back out of program and put into background<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">jobs<\/td><td class=\"column-2\">List all the current jobs<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">bg\/fg {job}<\/td><td class=\"column-2\">Move job to the background or foreground<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">kill {job}<\/td><td class=\"column-2\">Kill a specific job<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-8 from cache -->\n<p><em>Example:<\/em> Send job &#8220;top&#8221; to foreground<\/p>\n<pre>[1]+ Stopped top\r\n brandon@brandon-Inspiron-560:~$ fg \"%top\"<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Networking<\/strong><br \/>\n<em>&#8220;`telnet&#8220;` and &#8220;`netcat&#8220;` are both networking commands for reading from and writing to network connections using TCP or UDP. &#8220;`wget&#8220;` and &#8220;`curl&#8220;` are programs that retrieve content from web servers.<\/em><\/p>\n\n<table id=\"tablepress-9\" class=\"tablepress tablepress-id-9\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">telnet {application}<\/td><td class=\"column-2\">Command line interface client to TCP application<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">netcat {application}<\/td><td class=\"column-2\">Better (arguably) command line interface client to TCP application<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">netstat<\/td><td class=\"column-2\">Lists all the TCP\/UDP connections on your network<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">curl {URL}<\/td><td class=\"column-2\">Retrieve URL page<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">wget {URL}<\/td><td class=\"column-2\">Retrieve URL page<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-9 from cache -->\n<p>Examples coming soon!!!<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Help and Documentation<\/strong><\/p>\n<p>\n<table id=\"tablepress-10\" class=\"tablepress tablepress-id-10\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">{command} --help<\/td><td class=\"column-2\">Display help<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">man {command}<\/td><td class=\"column-2\">Display command's documentation<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">whatis {command}<\/td><td class=\"column-2\">Display one line description<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-10 from cache --><br \/>\n<strong>Other Useful Stuff<\/strong><br \/>\n\n<table id=\"tablepress-11\" class=\"tablepress tablepress-id-11\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Command<\/th><th class=\"column-2\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">&gt;&gt; (Heredocs)<\/td><td class=\"column-2\">Execute all commands within these lines between the two points.<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">chmod +x {script}<\/td><td class=\"column-2\">Make your bash script an executable<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-11 from cache --><\/p>\n<p><em>Example:<\/em> Send a GET request to a local host<\/p>\n<pre>$ nc localhost 8008 &lt;&lt; HERE &gt; &gt; GET \/api\/v0\/course\/all HTTP\/1.0 &gt; &gt; HERE<\/pre>\n<p><em>Linux Safe Reset <\/em><\/p>\n<pre>Alt + SysRq + R E I S U B \"Reboot even if system utterly broken\"<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A place to just document useful commands and all the good stuff in the terminal I&#8217;ve found useful so far. &nbsp; Basic Commands &nbsp; Shortcuts &nbsp; File System Management &nbsp; Pipe Piping is essentially chaining the outputs of a command into the input of the following command. Example: Grab all instances of foo from command&hellip; <a href=\"https:\/\/dev.blogs.oregonstate.edu\/mist\/2015\/11\/13\/the-command-line-2\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":6959,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3012,716095,13,716097,716098,1968],"class_list":["post-92","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-code","tag-command-line","tag-linux","tag-shortcuts","tag-terminal","tag-tricks"],"_links":{"self":[{"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/posts\/92","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/users\/6959"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/comments?post=92"}],"version-history":[{"count":12,"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/posts\/92\/revisions"}],"predecessor-version":[{"id":108,"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/posts\/92\/revisions\/108"}],"wp:attachment":[{"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/media?parent=92"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/categories?post=92"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev.blogs.oregonstate.edu\/mist\/wp-json\/wp\/v2\/tags?post=92"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}