281
Comment:
|
6551
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#acl GreyCat:read,write,revert,admin,delete Lhunath:read,write,revert pgas:read,write,revert All:read [[BashGuide/CommandsAndArguments|Commands and Arguments ->]] ---- = Introduction = |
|
Line 2: | Line 6: |
[[TableOfContents]] ## Until TableOfContents.py gets fixed, every page will have to be manually included. ## Currently, using the regex makes the ToC have links pointing to the wrong anchors. [[Include(^BashGuide/.*, , editlink)]] |
'''You are invited to make additions or modifications so long as you can keep them accurate (and linguistically correct).''' |
Line 7: | Line 8: |
##[[Include(BashGuide/001, , editlink)]] | All the information here is presented without any warranty or guarantee of accuracy. Use it at your own risk. When in doubt, please consult the man pages or the GNU info pages as the authoritative references. [[BASH]] is a BourneShell compatible shell, which adds many new features to its ancestor. Most of them are available in the 'KornShell', too. -------- <<Anchor(About)>> = About This Guide = This guide aims to become a point of reference for people interested in learning to work with [[BASH]]. It aspires to teach its readers good practice techniques in developing scripts for the [[BASH]] interpreter and educate them about the internal operation of [[BASH]]. This guide is targeted at beginning users. It assumes no basic knowledge, but rather expects you to have enough common sense to put two and two together. If something is unclear to you, you are invited to report this (consider `#bash` on `irc.freenode.org`) so that it may be clarified in this document for future readers. You are invited to contribute to the development of this document by extending it or correcting invalid or incomplete information. The maintainer(s) of this document: * -- [[Lhunath]] (primary author) * -- GreyCat -------- <<Anchor(Definition)>> = A Definition = [[BASH]] is an acronym for '''''B'''ourne '''A'''gain '''Sh'''ell''. It is based on the ''Bourne'' shell and is mostly compatible with its features. Shells are applications that provide users with the ability to give commands to their operating system interactively, or to allow them to execute batch processes quickly. In no way are they required for execution of processes; they are merely a layer between system function calls and the user. Think of a shell as a way for you to speak to your system. Your system doesn't need it for most of its work, but it is an excellent interface between you and what your system can offer. It allows you to perform basic math, run basic tests and execute applications. More importantly, it allows you to combine these operations and connect applications to each other to perform complex and automated tasks. [[BASH]] is '''not''' your operating system. It is not your window manager. It is not your terminal. It does not control your mouse or keyboard. It does not configure your system, activate your screensaver, or open your files when you double-click them. It is generally not involved in launching applications from your window manager. It's important to understand that [[BASH]] is only the interface for you to execute statements (using [[BASH]] syntax), either at the interactive [[BASH]] prompt or via [[BASH]] scripts. -------- . '''In The Manual: [[http://www.gnu.org/software/bash/manual/bashref.html#SEC1|Introduction]]''' ---- . ''Shell'': A (possibly interactive) layer between the user and the system. <<BR>> ''[[BASH]]'': The Bourne Again Shell, a ''Bourne'' compatible shell. -------- <<Anchor(Using_Bash)>> = Using Bash = Most users that think of [[BASH]] think of it as a prompt and a command line. That is [[BASH]] in ''interactive mode''. [[BASH]] can also run in ''non-interactive mode'' through scripts. We can use scripts to automate certain logic. Scripts are basically lists of commands that you can type on the command line. When such a script is executed, all these commands are (generally) executed sequentially, one after another. We'll start with the basics in an ''interactive shell''. Once you're familiar with those, you can put them together in scripts. '''Important! <<BR>> You should make yourself familiar with the `man` and `apropos` commands on the shell. They will be vital to your self-tutoring.''' {{{ $ man man $ man apropos }}} The `man` command opens documentation on a certain application. You use it by running the command `man [application]` on the [[BASH]] prompt, where `[application]` is the name of the application as you would use to run it on the prompt. It explains that application's purpose and usage in detail. Note that if you're looking for information on [[BASH]] built-ins (commands provided by [[BASH]], not by external applications) you should look in `man bash` instead. [[BASH]]'s manual is extensive and detailed. It is an excellent reference; albeit more technical than this document. [[BASH]] also offers a `help` command which contains brief summaries of some of its built-in commands (which we'll discuss later on). {{{ $ help $ help read }}} -------- . '''In the FAQ: <<BR>> [[BashFAQ/061|Is there a list of which features were added to specific releases (versions) of Bash?]]''' ---- . ''Interactive mode'': A mode of operation where a prompt asks you for one command at a time. . ''Script'': A file that contains a sequence of commands to execute one after the other. -------- = Contents = The guide has been divided into sections, which are intended to be read roughly in the order presented. If you skip ahead to a specific section, you might find yourself missing some background information from previous sections. (Links to relevant sections are not always provided when a topic is mentioned.) * [[/CommandsAndArguments|Commands and Arguments]] * Types of commands; argument splitting; writing scripts. * [[/SpecialCharacters|Special Characters]] * [[/Parameters|Parameters]] * Variables; special parameters; parameter types; parameter expansion. * [[/Patterns|Patterns]] * Globs; filename matching; extended globs; regular expressions. * [[/Arrays|Arrays]] * [[/TestsAndConditionals|Tests and Conditionals]] * Exit status; {{{&&}}} and {{{||}}}; if, test and {{{[[}}}; while, until and for; case and select. * [[/InputAndOutput|Input and Output]] * Redirection; here documents; here strings; pipes; process substitution. * [[/CompoundCommands|Compound Commands]] * Aliases; functions. * [[/Sourcing|Sourcing]] * Reading commands from other files. * [[/JobControl|Job Control]] * [[/Practices|Practices]] * Choosing your shell; quoting; readability; debugging. ---- [[BashGuide/CommandsAndArguments|Commands and Arguments ->]] ---- CategoryShell |
Introduction
You are invited to make additions or modifications so long as you can keep them accurate (and linguistically correct).
All the information here is presented without any warranty or guarantee of accuracy. Use it at your own risk. When in doubt, please consult the man pages or the GNU info pages as the authoritative references.
BASH is a BourneShell compatible shell, which adds many new features to its ancestor. Most of them are available in the 'KornShell', too.
About This Guide
This guide aims to become a point of reference for people interested in learning to work with BASH. It aspires to teach its readers good practice techniques in developing scripts for the BASH interpreter and educate them about the internal operation of BASH.
This guide is targeted at beginning users. It assumes no basic knowledge, but rather expects you to have enough common sense to put two and two together. If something is unclear to you, you are invited to report this (consider #bash on irc.freenode.org) so that it may be clarified in this document for future readers.
You are invited to contribute to the development of this document by extending it or correcting invalid or incomplete information.
The maintainer(s) of this document:
A Definition
BASH is an acronym for Bourne Again Shell. It is based on the Bourne shell and is mostly compatible with its features.
Shells are applications that provide users with the ability to give commands to their operating system interactively, or to allow them to execute batch processes quickly. In no way are they required for execution of processes; they are merely a layer between system function calls and the user.
Think of a shell as a way for you to speak to your system. Your system doesn't need it for most of its work, but it is an excellent interface between you and what your system can offer. It allows you to perform basic math, run basic tests and execute applications. More importantly, it allows you to combine these operations and connect applications to each other to perform complex and automated tasks.
BASH is not your operating system. It is not your window manager. It is not your terminal. It does not control your mouse or keyboard. It does not configure your system, activate your screensaver, or open your files when you double-click them. It is generally not involved in launching applications from your window manager. It's important to understand that BASH is only the interface for you to execute statements (using BASH syntax), either at the interactive BASH prompt or via BASH scripts.
In The Manual: Introduction
Shell: A (possibly interactive) layer between the user and the system.
BASH: The Bourne Again Shell, a Bourne compatible shell.
Using Bash
Most users that think of BASH think of it as a prompt and a command line. That is BASH in interactive mode. BASH can also run in non-interactive mode through scripts. We can use scripts to automate certain logic. Scripts are basically lists of commands that you can type on the command line. When such a script is executed, all these commands are (generally) executed sequentially, one after another.
We'll start with the basics in an interactive shell. Once you're familiar with those, you can put them together in scripts.
Important!
You should make yourself familiar with the man and apropos commands on the shell. They will be vital to your self-tutoring.
$ man man $ man apropos
The man command opens documentation on a certain application. You use it by running the command man [application] on the BASH prompt, where [application] is the name of the application as you would use to run it on the prompt. It explains that application's purpose and usage in detail.
Note that if you're looking for information on BASH built-ins (commands provided by BASH, not by external applications) you should look in man bash instead. BASH's manual is extensive and detailed. It is an excellent reference; albeit more technical than this document.
BASH also offers a help command which contains brief summaries of some of its built-in commands (which we'll discuss later on).
$ help $ help read
Interactive mode: A mode of operation where a prompt asks you for one command at a time.
Script: A file that contains a sequence of commands to execute one after the other.
Contents
The guide has been divided into sections, which are intended to be read roughly in the order presented. If you skip ahead to a specific section, you might find yourself missing some background information from previous sections. (Links to relevant sections are not always provided when a topic is mentioned.)
- Types of commands; argument splitting; writing scripts.
- Variables; special parameters; parameter types; parameter expansion.
- Globs; filename matching; extended globs; regular expressions.
Exit status; && and ||; if, test and [[; while, until and for; case and select.
- Redirection; here documents; here strings; pipes; process substitution.
- Aliases; functions.
- Reading commands from other files.
- Choosing your shell; quoting; readability; debugging.