LPI Linux Certification/Work On The Command Line

      Detailed Objective

      Weight: 4

      Description:
      Candidates should be able to interact with shells and commands using the command line. The objective assumes the bash shell.

      • Key knowledge area(s):
        • Use single shell commands and one line command sequences to perform basic tasks on the command line.
        • Use and modify the shell environment including defining, referencing and exporting environment variables.
        • Use and edit command history.
        • Invoke commands inside and outside the defined path.
      • The following is a partial list of the used files, terms and utilities:
        • .
        • bash
        • echo
        • env
        • exec
        • export
        • pwd
        • set
        • unset
        • man
        • uname
        • history
      ↑Jump back a section

      Command line

      Command lines have a common form:

      command  [options]  [arguments]
      

      Examples:

      pwd
      ls -ld or ls -l -d or ls -d -l
      rm -r /tmp/toto
      cat  ../readme helpme > save
      more /etc/passwd /etc/hosts /etc/group
      find . -name *.[ch] -print
      date "+day is %a"
      

      Command lines can be stored into a file for a script.

      To display a string to the standard output (stdout) use echo.

      echo [-n][string|command|$variable]
      echo my home directory is: $HOME
      echo I use the $SHELL shell
      
      ↑Jump back a section

      Shells and Bash

      The order of precedence of the various sources of command when you type a command to the shell are:

      • Aliases
      • Keywords, such as if, for and more.
      • Functions
      • Built-ins like cd, type, and kill.
      • Scripts and executable programs, for which the shell searches in the directories listed in the PATH environment variable.

      If you need to know the exact source of a command, do:

      $ type kill
      kill is a shell builtin
      

      Not the same as:

      /bin/kill
      

      To list all the built-in commands use help.

      /bin/bash
      

      /bin/bash can be invoked at login time or explicitly from the command line. At login time the following script files will be executed:

      • /etc/profile default system file
      • $HOME/.profile if it exists
      • $HOME/.bash_profile if it exists

      When bash is executed the following script files will be executed

      • /etc/bash.bashrc if it exists
      • $HOME/.bashrc if it exists

      When a user explicitly invokes a bash shell, the following script files will be executed:

      • /etc/bash.bashrc if it exists
      • $HOME/.bashrc if it exists

      The history off commands typed from the bash shell are stored in ~/.bash_history. A script is a list of commands and operations saved in a text file to be executed in the context of the shell. The bash scripts intend to setup your environment variables and more.

      Overlay /bin/bash

      Each time you execute a program a new process is created. When the program terminates, the process will be terminated and you get back your prompt. In some cases you can run a program in background with the '&' following the command.

      myscript &
      

      In some situations, it is also possible to overlay the running process bash. exec [program] This is usefull when you don't need to get the prompt back. The login program for example can be a good example to overlay the bash process in which it has been started.

      exec login
      
      ↑Jump back a section

      Shell variables

      All local variables to the bash session can be viewed with set.

      To declare a local variable, do:

      VARNAME=foo
      

      To unset a variable, do:

      unset VARNAME
      

      All the environment variables can be viewed with env. To declare a variable that will be seen by other shells use export.

      export VARNAME=foo
      

      or

      VARNAME=foo
      export VARNAME
      

      The variable will only be seen by the shell that has been started from where the variable has been declared. Here are some important variables:

      • HOME: Home directory of username logged in.
      • PATH: Command search path.
      ↑Jump back a section

      Man pages

      The online manuals describe most of the commands available in your system.

      man mkdir
      man cal
      

      If you are looking for a key word in all the man pages, use the -k option.

      man -k compress
      apropos compress
      

      The location of all the man pages must be set in the MANPATH variable.

      echo $MANPATH
      /usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/man
      
      ↑Jump back a section

      Exercises

      1. Get information on the useradd and userdel commands.
      2. Create two new accounts user1 and user2 and set the passwords to those accounts with the passwd command. As root lock the accounts and check if you can still log in.
      3. What is the command to concatenate files?
      4. Declare and initialize the following environment variables: NAME and LASTNAME. Use echo to print them out.
      5. Start a new bash (type bash) and check that you can still see those declared variables.
      6. Use exec to start a new bash session. Can you still see those declared variables?
      7. Use date to display the month.
      8. Add a new user named notroot with root's rights and lock the root account.
      ↑Jump back a section
      Last modified on 24 January 2011, at 20:23