Differences between revisions 28 and 33 (spanning 5 versions)
Revision 28 as of 2008-12-26 23:04:49
Size: 4682
Editor: 94
Comment: comment2 http://petr2225.hostevo.com/free-standing-magazine-rack.html free magazine subscriptions here http://petr2225.hostevo.com/hair-cuttery-linthicum.html hair cuttery matthews nc http://pet
Revision 33 as of 2009-01-01 16:11:32
Size: 6217
Editor: GreyCat
Comment: spam
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
comment2
http://petr2225.hostevo.com/free-standing-magazine-rack.html free magazine subscriptions here
http://petr2225.hostevo.com/hair-cuttery-linthicum.html hair cuttery matthews nc
http://petr2225.hostevo.com/how-to-cut-childrens-hair.html how to cut hair instructions
http://petr2225.hostevo.com/high-school-musical-2-disney-channel-uk.html high school musical 3 on the disney channel
http://petr2225.hostevo.com/free-and-clear-hair-care.html goody hair care products
http://petr2225.hostevo.com/ashley-scott-haircut.html assymetrical hair cuts
http://petr2225.hostevo.com/how-to-cut-hair-with-thinning-shears.html how to cut kids hair at home
http://petr2225.hostevo.com/egg-masala-recipes.html egg noddles recipe
http://petr2225.hostevo.com/vacation-hawaii-travel.html vacation hawaii travel
http://petr2225.hostevo.com/4-guns-of-the-patriots-how.html gun how to kill macgruder
http://petr2225.hostevo.com/bereavment-airline-tickets.html sheap airline tickets
http://petr2225.hostevo.com/trendy-womens-hairstyles.html try on hair styles free
http://petr2225.hostevo.com/day-weather-forecast-for-perpignan-france.html day weather forecast for gran canaria
http://petr2225.hostevo.com/popular-long-haircuts.html popular short haircut
http://petr2225.hostevo.com/southwestern-vegetable-soup-recipe.html thai vegetable recipes
http://petr2225.hostevo.com/syrup-drink-recipe.html triple sec drink recipe
http://petr2225.hostevo.com/asian-new-hair-style.html assymetrical bob hairstyles
http://petr2225.hostevo.com/fish-pie-recipe-jamie-oliver.html mincemeat pie recipe
http://petr2225.hostevo.com/train-tickets-from-leeds-to-london.html tickets for tower of london
http://petr2225.hostevo.com/corrination-chicken-recipe.html cream cheese chicken recipes
http://petr2225.hostevo.com/online-telphone-book.html safarri books online
http://petr2225.hostevo.com/massage-parlors-ny.html massage parlors happy
http://petr2225.hostevo.com/used-auto-truck-parts.html used mercedes trucks
http://petr2225.hostevo.com/party-ideas-activities.html bridal party gift ideas
http://petr2225.hostevo.com/mithaniel-marr-daily-news.html naples daily news article
http://petr2225.hostevo.com/latest-hair-cut-for-men.html latest hair cuts for men
http://petr2225.hostevo.com/layered-hairstyles-men.html layered hairstyles uk
http://petr2225.hostevo.com/popular-male-hairstyles.html popular men hairstyle
http://petr2225.hostevo.com/custom-home-builders-san-antonio.html sarasota home builders
http://petr2225.hostevo.com/choice-haircutters-business-hours.html choice haircutters cape
http://petr2225.hostevo.com/steak-and-mushrooms-recipe.html steak marinade recipe beer
http://petr2225.hostevo.com/2008-womens-hair-styles.html a line bob hair style
http://petr2225.hostevo.com/guide-cancun-travel-survey.html travel cancun to cozumel
http://petr2225.hostevo.com/ashley-judd-hairstyle.html ashley olsen hairstyle
http://petr2225.hostevo.com/seven-peaks-water-park-in-provo-utah.html smugglers notch water park
http://petr2225.hostevo.com/stormlake-water-park.html swapna shrushti water park
http://petr2225.hostevo.com/recipe-for-chocolate-rice-crispies.html recipe for lazy pierogi
http://petr2225.hostevo.com/cookie-recipe-with-no-butter.html and butter cucumbers recipe
http://petr2225.hostevo.com/upside-down-cake-recipe-betty-crocker.html vanilla cake frosting recipes
http://petr2225.hostevo.com/bacon-potato-soup-recipe.html chinese chicken soup recipe
http://petr2225.hostevo.com/long-beach-vacation-packages.html long beach vacation packages
http://petr2225.hostevo.com/best-way-to-buy-concert-tickets.html i buy arsenal tickets
http://petr2225.hostevo.com/rifled-paintball-gun-barrels.html shockers paintball guns
http://petr2225.hostevo.com/shower-massage-shower-head.html advice indian head massage
http://petr2225.hostevo.com/read-a-book-in-one-day.html book reader for windows mobile
http://petr2225.hostevo.com/contential-airline-tickets.html best day to buy airline tickets online
http://petr2225.hostevo.com/long-hairstyle-photos.html long hairstyles gallery
http://petr2225.hostevo.com/find-cheap-air-plane-tickets.html cheap multi city plane tickets
http://petr2225.hostevo.com/aquaglow-underwater-light-show-and-fountain.html catit water fountain filters
http://petr2225.hostevo.com/japanese-massage-techniques.html okinawa japan massage
http://petr2225.hostevo.com/spamalot-tickets-city.html tickets for rapid city
http://petr2225.hostevo.com/learn-how-to-break-dance-video.html learn how to do dance
http://petr2225.hostevo.com/hair-care-cosmetics.html hair care relaxers
<<Anchor(Commands_And_Arguments)>>
== Commands And Arguments ==

[[BASH]] reads commands from its input (which is either a terminal or a file). These commands can be aliases, functions, builtins, keywords, or executables.

 * '''Aliases''': Aliases are a way of shortening commands. They are only used in '''interactive''' shells, not in '''scripts'''. An alias is a ''name'' that is mapped to a certain ''string''. Whenever that ''name'' is used as a command name, it is replaced by the ''string'' before executing the command.
    So, instead of executing:
    {{{
     $ nmap -P0 -A --osscan_limit 192.168.0.1}}}
    You could use an alias like this:
    {{{
     $ alias nmapp='nmap -P0 -A --osscan_limit'
     $ nmapp 192.168.0.1}}}

 * '''Functions''': Functions in [[BASH]] are somewhat like aliases, but more powerful. Unlike aliases they can be used in '''scripts'''. A function contains shell commands, very much like a small script. When a function is called, the commands in it are executed.

 * '''Builtins''': [[BASH]] has some basic commands built into it, such as `cd` (change directory), `if` (conditional command execution), and so on. You can think of them as functions that are provided already.

 * '''Keywords''': Keywords are quite like builtins, but the main difference is that special parsing rules apply to them. For example, `[` is a bash builtin, while `[[` is bash keyword. They are both used for testing stuff, but since `[[` is a keyword rather than a builtin, it benefits from a few special parsing rules which make it a lot better:
    {{{
     $ [ a < b ]
    -bash: b: No such file or directory
     $ [[ a < b ]]}}}
    The first example returns an error because bash tries to redirect the file `b` to the command `[ a ]` (See [[#File_Redirection|File Redirection]]). The second example actually does what you expect it to. The special character `<` no longer has it's special meaning of `File Redirection` operator.

 * '''Executables''': The last option of commands that can be executed in bash is executables. The command name of an executable is always the pathname of to the executable to execute. If the executable is in the current directory; use `./myprogram`. If it's in the `/usr/local/bin` directory, use `/usr/local/bin/myprogram`.
    To make life a little easier for you, though, [[BASH]] uses a variable that tells it where to find applications in case you just use the name of the application but not its full pathname. This variable is called `PATH`, and it is a set of directory names separated by colons -- for example, `/bin:/usr/bin`. When a command is specified in [[BASH]] without a pathname (e.g. `myprgram`, or `ls`), and it isn't an alias, function, builtin or keyword, [[BASH]] searches through the directories in `PATH`, in order from left to right, to see whether they contain an executable by the name of the command name you typed.

Each command can be followed by arguments. Arguments are words you specify after the command name. Arguments are separated from the command name and from each other by white space. This is important to remember. For example, the following is '''wrong''':
{{{
    $ [-f file]
}}}

You want the `[` command name to be separated from the arguments `-f`, `file` and `]`. If you do not separate `[` and `-f` from each other with whitespace, bash will think you are trying to execute the command name `[-f` and look in `PATH` for a program named `[-f`. Additionally, the arguments `file` and `]` also need to be separated by spaces. The `[` command expects the last argument to be `]`. The correct command separates all arguments with spaces:
{{{
    $ [ -f file ]
}}}

'''NOTE:'''<<BR>>
'''It is very important that you understand how this works exactly.''' If you don't grasp these concepts well, the quality of your code will degrade significantly and you will introduce very dangerous bugs. Read [[#Argument_Splitting|Argument Splitting]] very carefully.

{{{
    $ ls
    a b c
}}}
`ls` is a command that lists files in the current directory. It's intended to be used '''only for producing human-readable results'''. Please don't try to parse, pipe, grep, capture, read, or loop over the output of `ls` in a script. It's dangerous and there's always a better way. While an invaluable tool on the interactive shell, `ls` should therefore never be used in scripts. You will understand why as you go through this guide.

{{{
    $ mkdir d
    $ cd d
    $ ls
}}}
`mkdir` is a command that creates a new directory. We specified the argument `d` to that command. This way, the application `mkdir` is instructed to create a directory called `d`. After that, we use the builtin command `cd` to change the shell's current directory to `d`. `ls` shows us that the current directory (which is now `d`) is empty, since it doesn't display any filenames.

In [[BASH]] scripts, arguments that were passed to the script are saved in 'Positional Parameters'. You can read these by using `$1`, `$2`, and so on for the respective argument. You can also use `$@` and `$*` but more about this later on.

--------
 . '''Tip: <<BR>> You can use the `type` command to figure out the type of a command. <<BR>> For example:'''
{{{
    $ type rm
    rm is hashed (/bin/rm)
    $ type cd
    cd is a shell builtin
}}}
----
 . '''In The Manual: [[http://www.gnu.org/software/bash/manual/bashref.html#SEC16|Simple Commands]]'''
----
 . ''Alias'': A name that is mapped to a string. Whenever that name is used as a command, it is replaced by the string it has mapped. <<BR>> ''Function'': A name that is mapped to a script. Whenever that name is used as a command, the script is called with the arguments provided to the function's name on the command line. <<BR>> ''Builtin'': Certain features have been built into [[BASH]]. These are handled internally whenever they are executed on the command line (and often do not create a new process). <<BR>> ''Application'': A binary that can be executed by referring to it (`/bin/ls`) or if its location is in your `PATH` variable, you can execute it simply by using its name (`ls`).
--------

Commands And Arguments

BASH reads commands from its input (which is either a terminal or a file). These commands can be aliases, functions, builtins, keywords, or executables.

  • Aliases: Aliases are a way of shortening commands. They are only used in interactive shells, not in scripts. An alias is a name that is mapped to a certain string. Whenever that name is used as a command name, it is replaced by the string before executing the command.

    • So, instead of executing:
           $ nmap -P0 -A --osscan_limit 192.168.0.1
      You could use an alias like this:
           $ alias nmapp='nmap -P0 -A --osscan_limit'
           $ nmapp 192.168.0.1
  • Functions: Functions in BASH are somewhat like aliases, but more powerful. Unlike aliases they can be used in scripts. A function contains shell commands, very much like a small script. When a function is called, the commands in it are executed.

  • Builtins: BASH has some basic commands built into it, such as cd (change directory), if (conditional command execution), and so on. You can think of them as functions that are provided already.

  • Keywords: Keywords are quite like builtins, but the main difference is that special parsing rules apply to them. For example, [ is a bash builtin, while [[ is bash keyword. They are both used for testing stuff, but since [[ is a keyword rather than a builtin, it benefits from a few special parsing rules which make it a lot better:

    •      $ [ a < b ]
          -bash: b: No such file or directory
           $ [[ a < b ]]

      The first example returns an error because bash tries to redirect the file b to the command [ a ] (See File Redirection). The second example actually does what you expect it to. The special character < no longer has it's special meaning of File Redirection operator.

  • Executables: The last option of commands that can be executed in bash is executables. The command name of an executable is always the pathname of to the executable to execute. If the executable is in the current directory; use ./myprogram. If it's in the /usr/local/bin directory, use /usr/local/bin/myprogram.

    • To make life a little easier for you, though, BASH uses a variable that tells it where to find applications in case you just use the name of the application but not its full pathname. This variable is called PATH, and it is a set of directory names separated by colons -- for example, /bin:/usr/bin. When a command is specified in BASH without a pathname (e.g. myprgram, or ls), and it isn't an alias, function, builtin or keyword, BASH searches through the directories in PATH, in order from left to right, to see whether they contain an executable by the name of the command name you typed.

Each command can be followed by arguments. Arguments are words you specify after the command name. Arguments are separated from the command name and from each other by white space. This is important to remember. For example, the following is wrong:

    $ [-f file]

You want the [ command name to be separated from the arguments -f, file and ]. If you do not separate [ and -f from each other with whitespace, bash will think you are trying to execute the command name [-f and look in PATH for a program named [-f. Additionally, the arguments file and ] also need to be separated by spaces. The [ command expects the last argument to be ]. The correct command separates all arguments with spaces:

    $ [ -f file ]

NOTE:
It is very important that you understand how this works exactly. If you don't grasp these concepts well, the quality of your code will degrade significantly and you will introduce very dangerous bugs. Read Argument Splitting very carefully.

    $ ls
    a  b  c

ls is a command that lists files in the current directory. It's intended to be used only for producing human-readable results. Please don't try to parse, pipe, grep, capture, read, or loop over the output of ls in a script. It's dangerous and there's always a better way. While an invaluable tool on the interactive shell, ls should therefore never be used in scripts. You will understand why as you go through this guide.

    $ mkdir d
    $ cd d
    $ ls

mkdir is a command that creates a new directory. We specified the argument d to that command. This way, the application mkdir is instructed to create a directory called d. After that, we use the builtin command cd to change the shell's current directory to d. ls shows us that the current directory (which is now d) is empty, since it doesn't display any filenames.

In BASH scripts, arguments that were passed to the script are saved in 'Positional Parameters'. You can read these by using $1, $2, and so on for the respective argument. You can also use $@ and $* but more about this later on.


  • Tip:
    You can use the type command to figure out the type of a command.
    For example:

    $ type rm
    rm is hashed (/bin/rm)
    $ type cd
    cd is a shell builtin



  • Alias: A name that is mapped to a string. Whenever that name is used as a command, it is replaced by the string it has mapped.
    Function: A name that is mapped to a script. Whenever that name is used as a command, the script is called with the arguments provided to the function's name on the command line.
    Builtin: Certain features have been built into BASH. These are handled internally whenever they are executed on the command line (and often do not create a new process).
    Application: A binary that can be executed by referring to it (/bin/ls) or if its location is in your PATH variable, you can execute it simply by using its name (ls).


BashGuide/CommandsAndArguments (last edited 2023-06-20 18:36:11 by larryv)