[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
slackbook:bash [2012/09/08 17:59 (UTC)] – [Wildcards] updated section to match original with formatting mfillpot | slackbook:bash [2012/09/08 18:05 (UTC)] – [Terminals] updated section to match original with formatting mfillpot | ||
---|---|---|---|
Line 158: | Line 158: | ||
===== Tab Completion ===== | ===== Tab Completion ===== | ||
- | Still think there' | + | Still think there' |
+ | wildcards? | ||
+ | dealing with long filenames: tab completion. | ||
+ | you to type just enough of the filename to uniquely identify it, then | ||
+ | by hitting the <key>TAB</ | ||
+ | the rest for you. Even if you haven' | ||
+ | identify a filename, the shell will fill in as much as it can for you. | ||
+ | Hitting TAB a second time will make it display a list of all possible | ||
+ | matches for you. | ||
===== Input and Output Redirection ===== | ===== Input and Output Redirection ===== | ||
- | One of the defining features of Linux and other UNIX-like operating systems is the number of small, relatively simple applications and the ability to stack them together to create complex systems. This is achieved by redirecting the output of one program to another, or by drawing input from a file or second program. | + | One of the defining features of Linux and other UNIX-like operating |
+ | systems is the number of small, relatively simple applications and the | ||
+ | ability to stack them together to create complex systems. | ||
+ | achieved by redirecting the output of one program to another, or by | ||
+ | drawing input from a file or second program. | ||
+ | |||
+ | |||
+ | To get started, we're going to show you how to redirect the output of a | ||
+ | program to a file. This is easily done with the '>' | ||
+ | **// | ||
+ | all of the standard output (also known as stdout) to whatever file name | ||
+ | follows. | ||
- | To get started, we're going to show you how to redirect the output of a program to a file. This is easily done with the '>' | ||
< | < | ||
darkstar:~$ echo foo | darkstar:~$ echo foo | ||
Line 173: | Line 191: | ||
</ | </ | ||
- | In this example, we show you what echo would do if its stdout was not redirected to a file, then we re-direct it to the /tmp/bar file. If /tmp/bar does not exist, it is created and the output from echo is placed within it. If /tmp/bar did exist, then its contents are over-written. This might not be the best idea if you want to keep those contents in place. Thankfully, bash supports '>>' | + | |
+ | In this example, we show you what **//echo//** would | ||
+ | do if its stdout was not redirected to a file, then we re-direct it to | ||
+ | the '' | ||
+ | does not exist, it is created and the output from | ||
+ | **//echo//** is placed within it. If | ||
+ | '' | ||
+ | over-written. | ||
+ | those contents in place. | ||
+ | supports '>>' | ||
< | < | ||
Line 187: | Line 215: | ||
</ | </ | ||
- | You can also re-direct the standard error (or stderr) to a file. This is slightly different in that you must use ' | + | |
+ | You can also re-direct the standard error (or stderr) to a file. This | ||
+ | is slightly different in that you must use ' | ||
+ | (Since | ||
+ | stderr, each must be uniquely identifiable. | ||
+ | and 2 is stderr. | ||
+ | **//bash//** will make its best guess as to what you | ||
+ | actually meant, and assumed anytime you use '>' | ||
+ | redirect stdout. | ||
< | < | ||
Line 197: | Line 234: | ||
</ | </ | ||
- | You may also redirect the standard input (known as stdin) with the '<' | + | |
+ | You may also redirect the standard input (known as stdin) with the | ||
+ | '<' | ||
+ | character, though it's not used very often. | ||
< | < | ||
Line 203: | Line 244: | ||
</ | </ | ||
- | Finally, you can actually redirect the output of one program as input to another. This is perhaps the most useful feature of bash and other shells, and is accomplished using the ' | + | |
+ | Finally, you can actually redirect the output of one program as input | ||
+ | to another. | ||
+ | **//bash//** and other shells, and is accomplished | ||
+ | using the ' | ||
+ | If you here some one talk of piping one program to another, this is | ||
+ | exactly what they mean.) | ||
< | < | ||
Line 213: | Line 261: | ||
root 3202 0.0 0.0 | root 3202 0.0 0.0 | ||
</ | </ | ||
- | |||
===== Task Management ===== | ===== Task Management ===== | ||
- | bash has yet another cool feature to offer, the ability to suspend and resume tasks. This allows you to temporarily halt a running process, perform some other task, then resume it or optionally make it run in the background. Upon pressing CTRL-Z, bash will suspend the running process and return you to a prompt. You can return to that process later. Additionally, | + | **//bash//** has yet another cool feature to offer, |
+ | the ability to suspend and resume tasks. | ||
+ | temporarily halt a running process, perform some other task, then | ||
+ | resume it or optionally make it run in the background. Upon pressing | ||
+ | <key>CTRL-Z</ | ||
+ | the running process and return you to a prompt. You can return to that | ||
+ | process later. | ||
+ | this way indefinitely. | ||
+ | command will display a list of suspended tasks. | ||
< | < | ||
Line 224: | Line 280: | ||
</ | </ | ||
- | In order to return to a suspended task, run the fg built-in to bring the the most recently suspended task back into the foreground. If you have mutiple suspended tasks, you can specify a number as well to bring one of them to the foreground. | + | |
+ | In order to return to a suspended task, run the | ||
+ | **//fg//** built-in to bring the the most recently | ||
+ | suspended task back into the foreground. If you have mutiple suspended | ||
+ | tasks, you can specify a number as well to bring one of them to the | ||
+ | foreground. | ||
< | < | ||
Line 231: | Line 293: | ||
</ | </ | ||
- | You can also background a task with (surprize) bg. This will allow the process to continue running without maintaining control of your shell. You can bring it back to the foreground with fg in the same way as suspended tasks. | + | |
+ | You can also background a task with (surprize) | ||
+ | **//bg//**. This will allow the process to continue | ||
+ | running without maintaining control of your shell. You can bring it | ||
+ | back to the foreground with **//fg//** in the same | ||
+ | way as suspended tasks. | ||
===== Terminals ===== | ===== Terminals ===== | ||
- | Slackware Linux and other UNIX-like operating systems allow users to interact with them in many ways, but the most common, and arguably the most useful, is the terminal. In the old days, terminals were keyboards and monitors (sometimes even mice) wired into a mainframe or server via serial connections. Today however, most terminals are virtual; that is, they exist only in software. Virtual terminals allow users to connect to the computer without requiring expensive and often incompatible hardware. Rather, a user needs only to run the software and they are presented with a (usually) highly customizable virtual terminal. | + | Slackware Linux and other UNIX-like operating systems allow users to |
+ | interact with them in many ways, but the most common, and arguably the | ||
+ | most useful, is the terminal. In the old days, terminals were keyboards | ||
+ | and monitors (sometimes even mice) wired into a mainframe or server via | ||
+ | serial connections. Today however, most terminals are virtual; that is, | ||
+ | they exist only in software. | ||
+ | to the computer without requiring expensive and often incompatible | ||
+ | hardware. Rather, a user needs only to run the software and they are | ||
+ | presented with a (usually) highly customizable virtual terminal. | ||
- | The most common virtual terminals (in that every Slackware Linux machine is going to have at least one) are the gettys. agetty(8) runs six instances by default on Slackware, and allows local users (those who can physically sit down in front of the computer and type at the keyboard) to login and run applications. Each of these gettys is available on different tty devices that are accessible seperately by pressing the **ALT** key and one of the function keys from **F1** through | + | The most common virtual terminals (in that every Slackware Linux machine |
+ | is going to have at least one) are the gettys. | ||
+ | **//agetty//**(8) runs six instances by default on | ||
+ | Slackware, and allows local users (those who can physically sit down in | ||
+ | front of the computer and type at the keyboard) to login and run | ||
+ | applications. Each of these gettys is available on different tty | ||
+ | devices that are accessible seperately by pressing the | ||
+ | <key>ALT</ | ||
+ | <key>F1</ | ||
+ | allows you to login multiple times, perhaps as different users, and run | ||
+ | applications in those users' shells silmutaneously. This is most | ||
+ | commonly done with servers which do not have | ||
+ | **//X//** installed, but can be done on any machine. | ||
- | On desktops, laptops, and other workstations where the user prefers a graphical interface provided by X, most terminals are graphical. Slackware includes many different graphical terminals, but the most commonly used are KDE's konsole and XFCE's Terminal(1) as well as the old standby, xterm(1). If you are using a graphical interface, check your tool bars or menus. Each desktop environment or window manager has a virtual terminal (often called a terminal emulater), and they are all labelled differently. Typically though, you will find them under a " | ||
+ | On desktops, laptops, and other workstations where the user prefers a | ||
+ | graphical interface provided by **//X//**, most | ||
+ | terminals are graphical. | ||
+ | terminals, but the most commonly used are KDE's | ||
+ | **// | ||
+ | **// | ||
+ | xterm(1). If you are using a graphical interface, check your tool bars | ||
+ | or menus. Each desktop environment or window manager has a virtual | ||
+ | terminal (often called a terminal emulater), and they are all labelled | ||
+ | differently. Typically though, you will find them under a //" | ||
+ | sub-menu in desktop environments. Executing any of these will give you | ||
+ | a graphical terminal and automatically run your default shell. | ||
===== Customization ===== | ===== Customization ===== | ||