<span class="latin" style="width:19px;height:19px;">C</span><span class="latin" style="width:19px;height:19px;">o</span><span class="latin" style="width:19px;height:19px;">n</span><span class="latin" style="width:19px;height:19px;">t</span><span class="latin" style="width:19px;height:19px;">e</span><span class="latin" style="width:19px;height:19px;">n</span><span class="latin" style="width:19px;height:19px;">t</span><span class="latin" style="display:block;width:19px;height:19px;"> </span><span class="latin" style="width:19px;height:19px;">i</span><span class="latin" style="width:19px;height:19px;">n</span><span class="latin" style="width:19px;height:19px;">v</span><span class="latin" style="width:19px;height:19px;">e</span><span class="latin" style="width:19px;height:19px;">n</span><span class="latin" style="width:19px;height:19px;">t</span><span class="latin" style="width:19px;height:19px;">o</span><span class="latin" style="width:19px;height:19px;">r</span><span class="latin" style="width:19px;height:19px;">y</span><span class="latin" style="display:block;width:19px;height:19px;"> </span><span class="latin" style="width:19px;height:19px;">f</span><span class="latin" style="width:19px;height:19px;">i</span><span class="latin" style="width:19px;height:19px;">r</span><span class="latin" style="width:19px;height:19px;">s</span><span class="latin" style="width:19px;height:19px;">t</span><span class="latin" style="display:block;width:19px;height:19px;"> </span><span class="latin" style="width:19px;height:19px;">e</span><span class="latin" style="width:19px;height:19px;">d</span><span class="latin" style="width:19px;height:19px;">i</span><span class="latin" style="width:19px;height:19px;">t</span><span class="latin" style="width:19px;height:19px;">i</span><span class="latin" style="width:19px;height:19px;">o</span><span class="latin" style="width:19px;height:19px;">n</span></span><span class="tktr-gyo" style="height:640px;margin:0 0 180px 22px;font-size:19px;_width:19px;/width:19px;"><span class="latin" style="display:block;width:19px;height:19px;"> </span><span class="latin" style="width:19px;height:19px;">-</span><span class="latin" style="display:block;width:19px;height:19px;"> </span><span class="latin" style="width:19px;height:19px;">L</span><span class="latin" style="width:19px;height:19px;">i</span><span class="latin" style="width:19px;height:19px;">b</span><span class="latin" style="width:19px;height:19px;">r</span><span class="latin" style="width:19px;height:19px;">e</span><span class="latin" style="width:19px;height:19px;">P</span><span class="latin" style="width:19px;height:19px;">l</span><span class="latin" style="width:19px;height:19px;">a</span><span class="latin" style="width:19px;height:19px;">n</span><span class="latin" style="width:19px;height:19px;">e</span><span class="latin" style="width:19px;height:19px;">t</span>  

Navigation menu




LibrePlanet


About 
About LibrePlanet
Mission Statement
Founding documents
Support this Community
Code of Conduct
Anti-harassment policy
Teams 
Activists
Wiki Helpers
LibrePlanet Artists
FSF Community Team
Local & Student Teams
Conferences 
LibrePlanet Conference
Non-official
Get involved 
Participate
Discussion channels
Events
 


Login
 










Content inventory first edition

 

From LibrePlanet


Jump to: navigation, search  

Content Inventory of Introduction to the Command Line

Contents

  • 1.2 Content Inventory (Formatted)
  • 1.3 Content Inventory (Plain text)
  • 2 Markdown version with images
  • 3 Source files
  • Table of Contents: Sections and Chapter Headings

    Introduction

    1. Introduction
    2. About this Manual

    Basics

    3. Getting Started
    4. Beginning Syntax
    5. Moving Around

    Commands

    6. Basic Commands
    7. Standard Files
    8. Cut Down on Typing
    9. Superusers
    10. Redirection

    Advanced-ish

    11. Multiple Files
    12. Searching for Files
    13. Piping
    14. Processes
    15. File Structure
    16. Command History

    Advanced

    17. Permissions
    18. Interactive Editing
    19. Checking Exit
    20. Sub Commands
    21. Moving Again
    22. Customization
    23. Parameter Substitution
    24. GNU Screen
    25. SSH
    26. Git
    27. Installing Software
    28. Making Your Own Interpreter

    Text Editors

    29. Text Editors [removed vim, emacs, kedit, gedit]
    30. Nano

    Scripting

    31. Scripting
    32. Maintaining Scripts
    33. Other Languages
    34. Sed
    35. Awk
    36. Regular Expressions

    Scripting Languages [removed perl, ruby, GNU Octave]

    37. Python

    Appendices

    38. Glossary
    39. Command Quick
    40. Outline
    41. Credits

    Content Inventory (Formatted)

    1. Introduction

    1.1. Put Yourself in Command [comparison of GUI and command line for same task]
    1.2. Advantages of Using Commands
    1.2.1. Flexibility
    1.2.2. Reliability
    1.2.3. Speed
    1.2.4. Experience [learning experience]
    1.2.5. Fun
    1.3. The Value of Scripting
    1.4. Is my Computer Sick? [get hardware and software info from command line]
    1.5. Spanning the Network [execute commands on remote computer using command line]
    1.6. Even Graphical Programs are Commands [examining GUI program behavior via command line]
    Terms: command line, command line interface, command line program, commands, GNU/Linux, graphical user interface, program, scripting, script, text file

    2. About this Manual [origin of book and ways to contribute]

    3. Getting Started

    3.1. Getting Started
    $date
    3.2. The Command Line Can do Much Better [beyond simple commands without options]
    3.3. What Do We Mean By a Command? [command is executable file; mentions builtins]
    3.4. Ways to Enter Commands
    3.5. Finding a Terminal
    3.6. Running an Individual Command
    3.7. How We Show Commands and Output in This Book
    Terms: shell, terminal, desktop environment
    Commmands: date

    4. Beginning Syntax

    4.1. Arguments [examples of args using echo]
    $echo foo
    4.2. Options [examples of options using date]
    $date --utc
    4.3. Repeating and editing commands [keyboard up arrow for previous commands (no mention of history); right, left arrow to edit]
    Terms: argument, white space, quoting, option
    Commands: echo, date

    5. Moving Around [navigating file system]

    5.1. Absolute and relative paths
    $pwd
    $cd
    5.2. Good to be back home [introduces home directory; two ways to return to it]
    $cd
    $cd ~
    5.3 The . and .. directories
    Terms: folders, directories, filesystem, root directory, absolute path, relative path, parent directory (..), current directory (.)
    Commands: pwd, cd

    6. Basic Commands

    6.1. ls
    $ls
    $ls --color
    6.2. man, info & apropos
    $man ls
    $info ls
    $emacs -f info-standalone [view info main menu in Emacs]
    $apropos rename
    $apropos -s 1 rename [brief into to manual page sections]
    6.3. mv
    $mv oldname newname
    $mv -i oldname newname
    $mv one_file another_file a_third_file ~/stuff
    6.4. mkdir
    $mkdir ~/stuff
    $rmdir ~/stuff
    6.5. rm & rmdir
    6.6. cat & less
    Terms: subdirectory, manual page, Emacs, globbing, recursive
    Commands: apropos, cat, cp, info, less, ls, man, mkdir, rmdir

    7. Standard Files [section introduces stdin, stdout, stderr; introduces redirection operator > and >>) and pipe; file descriptors; exec]

    7.1. More about redirection
    $ls *.bak > listfile
    $ls *.bak | more
    $ls -lR / | tee > allMyFiles
    7.2. Redirecting stderr
    $ls /nosuchplace > /dev/null
    $ls /nosuchplace 2>/tmp/errors
    $ls *.bak > listfile 2>&1
    7.3. Adding more descriptors
    $exec 3>/tmp/thirdfile
    $exec 4>/tmp/fourthfile
    $echo drib >&3
    $ echo drab >&4
    $ echo another drib >&3
    $ echo another drab >&4
    $ exec 3>&-
    $ exec 4>&-
    Terms: pipes, stdin, stdout, stderr, redirection, standard input, standard output, standard error, *, file descriptor, >&, |, >, >>
    Commands: ls, tee, exec

    8. Cut Down on Typing

    8.1. All That Typing... [short intro]
    8.2. Autocompleting [autocompletion using tab]
    8.3. Copy and Paste [copy and paste into command line using GUI and mouse]
    8.4. History [using keyboard up, down arrow to navigate history]
    Terms: auto completion, history

    9. Superusers

    9.1. The Superuser (Root) [narrative intro to root, superuser]
    9.2. The sudo Command [brief into to sudo andsu]
    $sudo rm -r /junk_directory
    Terms: superuser, root
    Commands: sudo, su

    10. Redirection [redirection to /dev/null; background process; job control not mentioned prior]

    10.1. Redirection
    $ls > my-file-list [introduces >> in narrative]
    $bigprogram > /dev/null [brief intro to /dev/null]
    $mail joe < myfile.txt
    $ogg123 *.ogg &
    $ogg123 *.ogg >/dev/null 2>music_err &
    Terms: redirection, clobbering, background [process], /dev/null, >, >>, <

    11. Multiple Files

    11.1. Multiple Files [introductory text]
    11.2. Globbing
    11.2.1. The "*" Wildcard
    $rm -- * [text says: When you use just an asterisk ("*") with rm, and basically any other command, it is always a good idea to put an option terminator ("--") before the wildcard like this:]
    11.2.2. The "?" Wildcard
    11.2.3. The "[ ]" Wildcards
    11.2.4. Brace Expansion [first mention of bash]
    11.3. Globbing When No File Matches
    11.4. Disabling A Wildcard
    Terms: globbing, wildcards (?, *), anchors (^), ranges ([]), brace expansion, brace range {1..10}, escape (\), string, shell, hidden files, option terminator (--)

    12. Searching for Files

    12.1. Wildcards with Find
    $find . -name 'some*' -print
    12.2. Trimming The Search Path
    $find . -maxdepth 1 -name 'some*' -print
    12.3. Using Criteria
    $find ~ -mtime -3 -print
    12.4. Using Find To Run a Command on Multiple Files [introduces exec option to find]
    $find directory_to_backup -mtime +30 -size +500k -print \
    -exec rm {} \;
    $find . -name 'file*' -exec cp {} {}.backup \;
    Commands: find

    13. Piping [introduces cat, cut, sort, uniq, and grep to illustrate the use of pipes]

    13.1 Piping Hot Commands [illustrating use of pipes]
    $cat books
    $sort books
    $cut -d: -f1 books
    $sort books | cut -d: -f1
    $sort books | cut -d: -f2
    $cut -d: -f2 books | sort
    $cut -d: -f1 books | sort | grep "John"
    $cut -d: -f1 books | sort | grep ", John"
    $cut -d: -f1 books | sort | grep ", John" | uniq -c
    $cut -d: -f1 books | sort | grep ", John" | uniq -c | sort -nr
    Topics: pipes, delimiters
    Commands: cat, sort, cut, grep, uniq

    14. Processes

    14.1. Processes [briefly introduces concept of a process]
    14.2. Interrupting (Ctrl-C) [introduces SIGINT as raised on CTRL-C; first mention of kernel]
    14.3. ps and kill [introduces top; mentions tty]
    $ps
    $tty
    $ps -e
    $kill 3941 [doesn't explain where pid in example comes from; mentions kill and option 9, introduces SIGKILL, and $kill -s SIGKILL (pid)]
    14.4. Processes and jobs (background) [starting process in background with &, introduces fg, bg, and Ctrl-Z, and jobs]
    $firefox &
    $fg 3694
    $fg %1
    $jobs
    Topics: processes, binary, executable, signals, SIGINT, foreground [process], background [process], process id (PID), terminal, tty, terminating a process, jobs

    job number,

    Commands: ps, top, tty, kill, fg, bg

    15. File Structure

    15.1. Files and Directories [introduces GNU/Linux directory structure; introduces concept of hidden file (~/.sugar/default/logs), suggests referring to heir man page]
    Terms: root directory
    Commands: man

    16. Command History

    16.1. Command History Shortcuts [brief first mention of cron; reiterates keyboard arrow up, down to navigate history]
    16.2. Recalling a command by a string [introduces !, !command:p, !!]
    $!mv
    $!mv:p
    $!?log? [Rhockens: I can't figure out how this works]
    $sudo !! [after mentioning !! in text]
    16.3. Recalling a command by number
    $history
    $!504
    $!-4
    16.4. Repeating arguments [introduces !*, !^, and !$, :number, and :number range]
    [code samples below in pairs showing original command and command using recall operator]


    $emasc /home/fred/mywork.java /tmp/testme.java # FAILS
    $emacs !* # fixed command name and recalled all arguments with !*


    $emacs /home/fred/mywork.java /tmp/testme.java
    $svn commit !^ # equivalent to: svn commit /home/fred/mywork.java


    $mv /home/fred/downloads/sample_screen_config /home/fred/.screenrc
    $emacs !$ # equivalent to: emacs /home/fred/.screenrc


    $sudo cp /etc/apache2/sites-available/siteconfig /home/fred/siteconfig.bak
    $echo !^ !!:2 # equivalent to echo cp /etc/apache2/sites-available/siteconfig


    16.5. Editing Arguments [introduces editing recalled arguments with s/foo/bar]
    $wc file1
    $rm !$:s/1/2/ [expands to "rm file2"]


    $wc file1
    $^1^2 [Expands to "wc file2"; RH: Check on Arch]
    16.6. Searching through the Command History [Ctrl-R for "reverse-i-search"]
    16.7. Sharing Bash History [update ~/.bashrc; hidden files and text editing have not yet been introduced; don't believe bash has been formally introduced]
    shopt -s histappend
    PROMPT_COMMAND='history -a'
    Terms: command history, bang operator, bash shell, .bashrc
    Commands: !, mv, log, sudo, history, !*, !^, !$, emacs, svn, cp, wc, rm

    17. Permissions

    17.1. What can I do? What can others do? [introduces files types; r, w, x permissions; users and groups; whoami; root]
    17.2. Setting through chmod [introduces two ways to change permissions]
    $chmod u=rw,g=,o= motd
    $chmod 0660 issue


    18. Interactive Editing [introduces concept of key bindings; shows how to set vim or emacs; detailed discussion of emacs keybindings; suggests exploring vim on own; prior to discussion of vim in book]


    19. Checking Exit

    19.1. Exit Status [introduces exit status; 0 success; $?]
    $echo $?
    19.2. if/then [introduces compound command]
    19.3. && and ||
    19.4. What does an exit status mean?


    20. Sub Commands

    20.1. Command Substitution [introduces commmand substitution; breifly introduces adding alias to .bashrc; hidden files, text editing not yet introduced]
    $grep `date +%b` apache_error_log
    .bashrc: alias monthlog="grep `date +%b` apache_error_log"
    $grep $(date +%b) apache_error_log


    21. Moving Again [introduces directory stack; dirs; pushd dir; pushd; pushd +/- number; popd; illustrates state of state after various example commands]


    22. Customization

    22.1. Useful customizations [intro text]
    22.2. Variables [assigning, unassigning variables]
    $p=/home/jsmith/projects/foo/confoobulator
    $cd $p
    $VAR=""
    $unset VAR
    22.3. Ordinary Variables and Environment Variables
    $export p
    22.4. Shell Variables [describes several variables; SHELL, USER, PATH, etc.]
    $echo $HOME
    $env
    22.5. Controlling Variable Expansion
    $curr=myfile
    $rm $curr1.jpeg # doesn't work
    $rm ${curr}1.jpeg # works
    22.6. The Search Path [brief into to search path; introduction of which]
    22.7. Configuration Files [introduction to hidden files; .bashrc; reference to text editor chapter]


    23. Parameter Substitution

    23.1. Parameter Substitution
    $curr=myfile
    $rm ${curr}.jpeg
    $rm ${curr/file/picture}.jpeg # to change file to picture and rm mypicture.jpg
    23.2. Playing Safe With Variables That Don't Exist [introduces :- and :=]
    $cat "${VARIABLE_FILE_NAME:-/home/user/file}"
    $cat "${VARIABLE_FILE_NAME:=/home/user/file}"
    23.3. Cutting Corners With Variable Expansion
    $export ALT_LS='--color=always -b -h --filetype'
    $ls $ALT_LS


    24. GNU Screen [introduces screen and key combinations for: splitting, copy and paste, detaching, quitting]


    25. SSH [intro to ssh, scp, rsync; discourages telnet; detached remote session using screen]

    25.1. SSH
    $ssh othermachine.domain.org
    $ssh -l remoteusername othermachine.domain.org
    $ssh remoteusername@othermachine.domain.org
    $ssh remoteusername@othermachine.domain.org 'mkdir /home/myname/newdir'
    25.2. scp: file copying
    $scp myprog.py me@othermachine.domain.org:stuff
    $scp me@othermachine.domain.org:docs/interview.txt yesterday-interview.txt
    $scp user1@host1:file1 user2@host2:otherdir
    $scp -r user1@host1:dir1 user2@host2:dir2
    25.3. rsync: automated bulk transfers and backups
    $rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/
    25.4. Making life easier when you use SSH often [editing .ssh/config]


    26. Git [list of basic git commands: clone, commit, revert; chapter appears incomplete]
    Didn't realize that this chapter wasn't in the first edition Rhockens (talk) 08:33, 2 June 2019 (EDT)]


    27. Installing Software [basic commands for apt-get and yum; brief overview of compiling from source]

    27.1. Dependencies [introduction to topic]
    27.2. Unpack the archive
    $tar zxvf packagename.tar.gz
    27.3. Run the configure script
    $./configure
    $./configure --prefix ~/bin/myprogs
    27.4. Compile the software
    $make
    $make -j3
    27.5. Install the software
    $sudo make install


    28. Making Your Own Interpreter [source code for bdc; compiling; usage]


    29. Text Editors [including nano; omitting vim, emacs, kedit, gedit]

    29.1. Text Editors [intro]
    29.1.1. Word Processing vs Text Editing
    29.1.2. Why do you need a text editor?
    29.1.3. Why are most text editors command-line programs?
    29.2. Setting a default text editor
    $export EDITOR=emacs


    30. Nano [brief intro; basic use; start, save, exit]


    31. Scripting

    31.1. Scripting [intro; sample script]
    31.2. Making scripts executable
    $chmod +x make_thumbnails.sh
    $./make_thumbnails.sh
    $bash make_thumbnails.sh
    31.3. More Control [examples of if, while, etc.]
    31.3.1. if
    31.3.2. while (and until)
    31.3.3. case
    31.3.4. for
    31.3.5. parallel

    32. Maintaining Scripts [guidelines for maintainable, robust scripts; e.g., "Use descriptive names for your scripts"]

    33. Other Languages [introduction; introduces awk, sed, python; other languages omitted]

    34. Sed

    34.1. The Sed Text Processor
    $wc -c * | sort -n | sed ...
    34.2. Basic Syntax and Substitution
    $sed "s/foo/bar/g" inputfile > outputfile
    34.3. Sed Expressions Explained [introduces $, ^, *, []]
    34.4. Deletion
    $sed "/^$/d" inputfile > outputfile
    34.5. Controlling Printing
    $sed -n "s/Mrs\./Ms/p" testfile
    34.6. Multiple Patterns
    $echo Gnus eat grass | sed -e "s/Gnus/Penguins/" -e "s/grass/fish/"
    34.7. Controlling Edits With Patterns
    $sed "/one/ s/number/1/" testfile > testchangedfile
    34.8. Controlling Edits With Line Numbers
    $sed "2,3 s/number/1/" < testfile > testchangedfile
    34.9. Scripting SED commands
    $sed -f sedcommands < inputfile > outputfile


    35. Awk [basic intro to awk]

    36. Regular Expressions [basic intro to regular expressions; operators, ranges, groups, anchoring, etc.]

    37. Python [new chapter TK]

    38. Glossary [update for second edition]

    Glossary terms that don't appear in text: aptitude, ash, aspell, bug report, character set, findutils, fontconfig, intltool, kernel-utils, lsof, openssh, syntax highlighting [some glossary terms only appear in Command Quickie]

    39. Command Quickie [to be revised for second edition]

    Commands in order of presentation: ls, man, info apropos, pwd, cd, mkdir, rmdir, touch, rm, ln, cp, mv, whoami, passwd, ps, kill, chown, chmod, more, less, pg, cat, grep, df, echo, file, diff, wc, find, ftp, wget, tar, gzip, gunzip, zcat, bzip2, bunzip2, bzcat, lynx, mc, emacs, vi, nano, pico, pr, lpr, split

    40. Outline [proposed outline for a future edition]

    41. Credits

    Content Inventory (Plain text)

    
    Introduction
    1. Introduction
    2. About this Manual
    Basics
    3. Getting Started
    4. Beginning Syntax
    5. Moving Around
    Commands
    6. Basic Commands
    7. Standard Files
    8. Cut Down on Typing
    9. Superusers
    10. Redirection
    Advanced-ish
    11. Multiple Files
    12. Searching for Files
    13. Piping
    14. Processes
    15. File Structure
    16. Command History
    Advanced
    17. Permissions
    18. Interactive Editing
    19. Checking Exit
    20. Sub Commands
    21. Moving Again
    22. Customization
    23. Parameter Substitution
    24. GNU Screen
    25. SSH
    26. Git
    27. Installing Software
    28. Making Your Own Interpreter
    Text Editors
    29. Text Editors [removed vim, emacs, kedit, gedit]
    30. Nano
    Scripting
    31. Scripting
    32. Maintaining Scripts
    33. Other Languages
    34. Sed
    35. Awk
    36. Regular Expressions
    Scripting Languages [removed perl, ruby, GNU Octave]<br />
    37. Python
    Appendices
    38. Glossary
    39. Command Quick
    40. Outline
    41. Credits
    
    
    
    
    1. Introduction
    1.1. Put Yourself in Command [comparison of GUI and command line for same task]
    1.2. Advantages of Using Commands
    1.2.1. Flexibility
    1.2.2. Reliability
    1.2.3. Speed
    1.2.4. Experience [learning experience]
    1.2.5. Fun
    1.3. The Value of Scripting
    1.4. Is my Computer Sick? [info on running hardward and software from cli]
    1.5. Spanning the Network [executing commands on remote computers using cli]
    1.6. Even Graphical Programs are Commands [examing GUI program behavior via cl]
    
    Terms: command line, command line interface, command line program, commands, GNU/Linux,graphical user interface, program, scripting, script, text file
    
    2. About this Manual [origin of book and ways to contribute]
    
    3. Basics
    3.1. Getting Started
     $date
    3.2. The Command Line Can do Much Better [beyond simple commands without options]
    3.3. What Do We Mean By a Command? [command is executable file; mentions builtins] 
    3.4. Ways to Enter Commands
    3.5. Finding a Terminal
    3.6. Running an Individual Command
    3.7. How We Show Commands and Output in This Book
    
    Terms: shell, terminal, desktop environment, 
    Commmands: date 
    
    4. Beginning Syntax
    4.1. Arguments [examples of args using echo]
     $echo foo
    4.2. Options [examples of options using date]
     $date --utc
    4.3. Repeating and editing commands [keyboard up arrow for previous commands (no mention of history); right, left arrow to edit]
    
    Terms: argument, white space, quoting, option
    Commands: date, echo 
    
    5. Moving Around [navigating file system]
    5.1. Absolute and relative paths
     $pwd
     $cd
    5.2. Good to be back home [introduces home directory; two ways to return to it]
     $cd
     $cd ~
    5.3 The . and .. directories 
    
    Terms: folders, directories, filesystem, root directory, absolute path, relative path, parent directory (..), current directory (.)
    Commands: cd, pwd
    
    6. Basic Commands
    6.1. ls
     $ls
     $ls --color
    6.2. man, info & apropos
     $man ls
     $info ls
     $emacs -f info-standalone [view info main menu in Emacs]
     $apropos rename
     $apropos -s 1 rename [brief into to manual page sections]
    6.3. mv
     $mv oldname newname
     $mv -i oldname newname
     $mv one_file another_file a_third_file ~/stuff
    6.4. mkdir
     $mkdir ~/stuff
     $rmdir ~/stuff
    6.5. rm & rmdir
    6.6. cat & less
    
    Terms: subdirectory, manual page, Emacs, globbing, recursive
    Commands: apropos, cat, cp, info, less, ls, man, mkdir, rmdir
    
    7. Standard Files [section introduces stdin, stdout, stderr; introduces redirection operator > (but not >>) and pipe; file descriptors; exec]
    7.1. More about redirection 
     $ls *.bak > listfile
     $ls *.bak | more
     $ls -lR / | tee > allMyFiles
    7.1. Redirecting stderr
     $ls /nosuchplace > /dev/null
     $ls /nosuchplace 2>/tmp/errors
     $ls *.bak > listfile 2>&1
    7.2. Adding more descriptors
     $exec 3>/tmp/thirdfile
     $ exec 4>/tmp/fourthfile
     $ echo drib >&3
     $ echo drab >&4
     $ echo another drib >&3
     $ echo another drab >&4
     $ exec 3>&-
     $ exec 4>&-
    Terms: pipes, stdin, stdout, stderr, redirection, standard input, standard ouputt, standard error, *, file descriptor, >&, |, >, >>
    Commands: ls, tee, exec
    
    8. Cut Down on Typing
    8.1. All That Typing... [short intro]
    8.2. Autocompleting [autocompletion using tab]
    8.3. Copy and Paste [copy and paste into command line using GUI and mouse]
    8.4. History [using keyboard up and down arrow to access history]
    
    Terms: auto completion, history
    
    9. Superusers
    9.1. The Superuser (Root) [narrative intro to root/superuser]
    9.2. The sudo Command [brief into to sudo and su]
     $sudo rm -r /junk_directory
    
    Terms: superuser, root, 
    Commands: sudo, su
    
    10. Redirection [introduces >>; redirection to /dev/null; background process; job control not mentioned prior] 
    10.1. Redirection
     $ls > my-file-list [introduces >> in narrative]
     $bigprogram > /dev/null [brief intro to /dev/null]
     $mail joe < myfile.txt
     $ogg123 *.ogg &
     $ogg123 *.ogg >/dev/null 2>music_err &
    
    Terms: redirection, clobbering, background [process], /dev/null, >, >>, <
    
    11. Multiple Files
    11.1. Multiple Files [introductory text]
    11.2. Globbing
    11.2.1. The "*" Wildcard
     $rm -- *
    11.2.2. The "?" Wildcard
    11.2.3. The "[ ]" Wildcards
    11.2.4. Brace Expansion [first mention of bash]
    11.3. Globbing When No File Matches
    11.4. Disabling A Wildcard
    
    Terms: globbing, wildcards (?, *), anchors (^), ranges ([]), brace expansion, brace range {1..10}, escape (\), string, shell, hidden files, option terminator (--), 
    Commands: rm, ls, 
    
    12. Searching for Files
    12.1. Wildcards with Find
     $find . -name 'some*' -print 
    12.2. Trimming The Search Path
     $find . -maxdepth 1 -name 'some*' -print 
    12.3. Using Criteria
     $find ~ -mtime -3 -print
    12.4. Using Find To Run a Command on Multiple Files [introduces exec option to find]
     $find directory_to_backup  -mtime +30  -size +500k -print \
                  -exec rm {} \;
     $find . -name 'file*' -exec cp {} {}.backup \; 
    
    Topics:
    Commands: find
    
    13. Piping [introduces cat, cut, sort, uniq, and grep to illustrate the use of pipes]
    13.1 Piping Hot Commands
     $cat books
     $sort books
     $cut -d: -f1 books
     $sort books | cut -d: -f1
     $sort books | cut -d: -f2
     $cut -d: -f2 books | sort
     $cut -d: -f1 books | sort | grep "John"
     $cut -d: -f1 books | sort | grep ", John"
     $cut -d: -f1 books | sort | grep ", John" | uniq -c
     $cut -d: -f1 books | sort | grep ", John" | uniq -c | sort -nr
    
    Topics: pipes, delimiters
    Commands: cat, sort, cut, grep, uniq 
    
    14. Processes 
    14.1. Processes [breifly introduces concept of a process]
    14.2. Interrupting (Ctrl-C) [introduces SIGINT as raised on CTRL-C; mentions kernel] 
    14.3. ps and kill [introduces top but doesn't demonstrate, mentions tty]
     $ps
     $tty
     $ps -e
     $kill 3941 [doesn't explain where pid in example comes from; mentions kill option 9, SIGKILL, and $kill -s SIGKILL (pid)]
    14.4. Processes and jobs (background) [starting process in background with &, introduces fg, bg, and Ctrl-Z, and jobs]
     $firefox &
     $fg 3694
     $fg %1
     $jobs
    
    Topics: processes, binary, executable, singals, SIGINT, foreground [process], background [process], process id (PID), terminal, tty, terminating a process, jobsjob number, 
    Commands: ps, top, tty, kill, fg, bg
    
    15. File Structure
    15.1. Files and Directories [introduces GNU/Linux directory structure, introduces concept of hidden file (~/.sugar/default/logs), suggests referring to heir man page]
    
    Terms: root directory
    Commands: man
    
    16. Command History
    16.1. Command History Shortcuts [breif first mention of cron; reiterates keyboard arrow up, down to navigate]
    16.2. Recalling a command by a string [introduces !, !command:p, !!]
     $!mv
     $!mv:p
     $!?log? [RH: not sure what this is doing]
     $sudo !! [after mentioning !! in text]
    16.3. Recalling a command by number
     $history
     $!504
     $!-4
    16.4. Repeating arguments [introduces !*, !^, and !$, :number, and :number range]
     [code samples are pairs showing original command and command using recall operator]
    
     $emasc /home/fred/mywork.java /tmp/testme.java # FAILS
     $emacs !* # FIXED COMMAND NAME, RECALLED ALL ARGUMENTS
    
     $emacs /home/fred/mywork.java /tmp/testme.java
     $svn commit !^    # equivalent to: svn commit /home/fred/mywork.java
    
     $mv /home/fred/downloads/sample_screen_config /home/fred/.screenrc
     $emacs !$     # equivalent to: emacs /home/fred/.screenrc
    
     $sudo cp /etc/apache2/sites-available/siteconfig /home/fred/siteconfig.bak
     $echo !^ !!:2  # equivalent to echo cp /etc/apache2/sites-available/siteconfig
    
    16.5. Editing Arguments [introduces editing recalled arguments with s/foo/bar]
     $wc file1
     $rm !$:s/1/2/ [expands to "rm file2"]
    
     $wc file1
     $^1^2 [Expands to "wc file2"; RH: Check on Arch]
    16.6. Searching through the Command History [Ctrl-R for "reverse-i-search"]
    16.7. Sharing Bash History [update ~/.bashrc; hidden files and text editing have not yet been introduced; don't believe bash has been formally introduced]
     shopt -s histappend
     PROMPT_COMMAND='history -a'
    
    Terms: command history, bang operator, bash shell, .bashrc
    Commands: !, mv, log, sudo, history, !*, !^, !$, emacs, svn, cp, wc, rm 
    
    17. Permissions
    17.1. What can I do? What can others do? [introduces files types; r, w, x permissions; users and groups; whoami; root]
    17.2. Setting through chmod [introduces two ways to change permissions]
     $chmod u=rw,g=,o= motd
     $chmod 0660 issue
    
    18. Interactive Editing [introduces concept of key bindings; shows how to set vim or emacs; detailed discussion of emacs keybindings; suggests explore vim on own; prior to discsussion of vim in book]
    
    19. Checking Exit
    19.1. Exit Status [introduces exit status; 0 success; $?]
     $echo $?
    19.2. if/then [introduces compound command]
    19.3. && and ||
    19.4. What does an exit status mean?
    
    20. Sub Commands 
    20.1. Command Substitution [introduces commmand substitution; breifly introduces adding alias to .bashrc; hidden files, text editing not yet introduced]
     $grep `date +%b` apache_error_log
     .bashrc: alias monthlog="grep `date +%b` apache_error_log"
     $grep $(date +%b) apache_error_log
    
    21. Moving Again [introduces dirctory stack; dirs; pushd dir; pushd; pushd +/- number; popd; illustrates state of state after various example commands]
    
    22. Customizations
    22.1. Useful customizations [intro text]
    22.2. Variables [assigning, unassigning variables]
     $p=/home/jsmith/projects/foo/confoobulator
     $cd $p
     $VAR=""
     $unset VAR
    22.3. Ordinary Variables and Environment Variables
     $export p
    22.4. Shell Variables [describes severeal variables; SHELL, USER, PATH, etc.]
     $echo $HOME
     $env
    22.5. Controlling Variable Expansion 
     $curr=myfile
     $rm $curr1.jpeg # doesn't work
     $rm ${curr}1.jpeg # works
    22.6. The Search Path [brief into to search path; introduction of which]
    22.7. Configuration Files [introduction to hidden files; .bashrc; reference to text editor chapter]
    
    23. Parameter Substitution
    23.1. Parameter Substitution
     $curr=myfile
     $rm ${curr}.jpeg
     $rm ${curr/file/picture}.jpeg # to change file to picture and rm mypicture.jpg
    23.2. Playing Safe With Variables That Don't Exist [introduces :- and :=]
     $cat "${VARIABLE_FILE_NAME:-/home/user/file}"
     $cat "${VARIABLE_FILE_NAME:=/home/user/file}"
    23.3. Cutting Corners With Variable Expansion
     $export ALT_LS='--color=always -b -h --filetype'
     $ls $ALT_LS
    
    24. GNU Screen [introduces screen and key combinations for: splitting, copy and paste, detaching, quitting]
    
    
    25. SSH [intro to ssh, scp, rsync; discourages telnet; detached remoted session using screen]
    25.1. SSH
     $ssh othermachine.domain.org
     $ssh -l remoteusername othermachine.domain.org
     $ssh remoteusername@othermachine.domain.org
     $ssh remoteusername@othermachine.domain.org 'mkdir /home/myname/newdir'
    25.2. scp: file copying
     $scp myprog.py me@othermachine.domain.org:stuff
     $scp me@othermachine.domain.org:docs/interview.txt yesterday-interview.txt
     $scp user1@host1:file1 user2@host2:otherdir
     $scp -r user1@host1:dir1 user2@host2:dir2
    25.3. rsync: automated bulk transfers and backups
     $rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/
    25.4. Making life easier when you use SSH often [editing .ssh/config]
    
    26. Git [list of basic git commands: clone, commit, revert; chapter appears incomplete]
    
    27. Installing Software [basic commands for apt-get and yum; brief overview of compling from source]
    27.1. Dependencies [introduction to topic]
    27.2. Unpack the archive
     $tar zxvf packagename.tar.gz
    27.3. Run the configure script
     $./configure
     $./configure --prefix ~/bin/myprogs
    27.4. Compile the software
     $make
     $make -j3
    27.5. Install the software
     $sudo make install
    
    28. Making Your Own Interpreter [source code for bdc; compiling; usage]
    
    29. Text Editors [including nano; omitting vim, emacs, kedit, gedit]
    29.1. Text Editors [intro]
    29.1.1. Word Processing vs Text Editing
    29.1.2. Why do you need a text editor?
    29.1.3. Why are most text editors command-line programs?
    29.2. Setting a default text editor
     $export EDITOR=emacs
    
    30. Nano [brief intro nano; basic use; start, save, exit]
    
    31. Scripting
    31.1. Scripting [intro; sample script]
    31.2. Making scripts executable
     $chmod +x make_thumbnails.sh
     $./make_thumbnails.sh
     $bash make_thumbnails.sh
    31.3. More Control [examples of if, while, etc.]
    31.3.1. if
    31.3.2. while (and until)
    31.3.3. case
    31.3.4. for
    31.3.5. parallel
    
    32. Maintaining Scripts [guidelines for maintainable, robust scripts; e.g., "Use descriptive names for your scripts"]
    
    33. Other Languages [introduction; introduces awk, sed, python; other languages omitted]
    
    34. Sed
    34.1. The Sed Text Processor
     $wc -c * | sort -n | sed ...
    34.2. Basic Syntax and Substitution
     $sed "s/foo/bar/g" inputfile > outputfile
    34.3. Sed Experessions Explained [introduces $, ^, *, []]
    34.4. Deletion
     $sed "/^$/d" inputfile > outputfile
    34.5. Controlling Printing
     $sed -n "s/Mrs\./Ms/p" testfile
    34.6. Multiple Patterns
     $echo Gnus eat grass | sed -e "s/Gnus/Penguins/" -e "s/grass/fish/"
    34.7. Controlling Edits With Patterns
     $sed "/one/ s/number/1/" testfile > testchangedfile
    34.8. Controlling Edits With Line Numbers
     $sed "2,3 s/number/1/" < testfile > testchangedfile
    34.9. Scripting SED commands
     $sed -f sedcommands < inputfile > outputfile
    
    35. Awk [basic intro to awk]
    
    36. Regular Expressions [basic intro to regular expressions; operators, ranges, groups, anchoring, etc.]
    
    37. Python [new chapter]
    
    38. Glossary [update for second editing]
    
    Glossary terms that don't appear in text: aptitude, ash, aspell, bug report,
    character set, findutils, fontconfig, intltool, kernel-utils, lsof, openssh,
    syntax highlighting [some glossary terms only appear in Command Quickie]
    
    39. Command Quickie [to be revised]
    
    Commands in order of presentation: ls, man, info apropos, pwd, cd, mkdir,
    rmdir, touch, rm, ln, cp, mv, whoami, passwd, ps, kill, chown, chmod, more,
    less, pg, cat, grep, df, echo, file, diff, wc, find, ftp, wget, tar, gzip,
    gunzip, zcat, bzip2, bunzip2, bzcat, lynx, mc, emacs, vi, nano, pico, pr, lpr,
    split
    
    40. Outline [proposed outline for a future edition]
    
    41. Credits 
    
    
    
    
     
    
    
    
    
    
    
    
    

    Markdown version with images

    A markdown version of the "Introduction to the Command Line" is available on this wiki. It was created from the epub version available at https://archive.flossmanuals.net/_booki/command-line/command-line.epub.

    Source files

    Source files, albeit imperfect, are available here https://static.fsf.org/nosvn/gnu-press/source-files/books/Intro-to-Command-Line.zip

    Retrieved from "https://libreplanet.org/wiki?title=Content_inventory_first_edition&oldid=69192" 



















    FSF
    The Free Software Foundation (FSF) is a nonprofit with a worldwide mission to promote computer user freedom.

    We defend the rights of all software users. (Read more)
     



    Campaigns


    High Priority Free Software Projects

    Free JavaScript

    Secure Boot vs Restricted Boot

    GNU Operating System

    Defective by Design

    See all campaigns
     



    Get Involved



    Contact
     




    Send your feedback on our translations and new translations of pages to campaigns@fsf.org.

    Copyright © 20132023 Free Software Foundation, Inc.  Privacy Policy, JavaScript license information