bash.html

来自「学习linux的工具书」· HTML 代码 · 共 491 行 · 第 1/3 页

HTML
491
字号
<p><font color="#3366FF">Things to do today:</font>
<p><font color="#3366FF">Low: Go grocery shopping</font>
<p><font color="#3366FF">High: Return movie</font>
<p><font color="#3366FF">High: Clear level 3 in Alien vs. Predator</font>
<p><font color="#3366FF">Medium: Pick up clothes from dry cleaner</font>
<br>&nbsp;
<p>&nbsp;&nbsp;&nbsp; 管道行将返回结果 2,指出你今天有两件很重要的事要做:
<p><font color="#3366FF">cat sample.text | grep "High" | wc -l</font>
<p><font color="#3366FF">2</font>
<center>
<p><b><font color="#000000"><font size=+1>提示符</font></font></b></center>

<br>&nbsp;
<p><br>
<p>&nbsp;&nbsp;&nbsp; bash 有两级用户提示符。第一级是你经常看到的 bash
在等待命令输入时的提示符。缺省的一级提示符是字符$(如果是超级用户,则是#号)。你可以通过改变bash
的PS1变量的值来改变你的缺省提示符,例如:
<p><font color="#3366FF">PS1="Please enter a command"</font>
<p>&nbsp;&nbsp;&nbsp; 把bash shell 的提示符该为指定的字符串。
<p>&nbsp;&nbsp;&nbsp; 当bash 期待输入更多的信息以完成命令时显示第二级提示符。缺省的第二级提示符是
>。 果你要改变第二级提示符,可以通过设置PS2变量的值来实现:
<p><font color="#3366FF">PS2="I need more information"</font>
<p>&nbsp;&nbsp;&nbsp; 另外你还可以用特殊的字符来定义你的提示符,下面的列表列出了最常用的特殊字符。
<center><b><font size=+1>&nbsp;提示符特殊字符代码</font></b></center>
&nbsp;字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 含义
<br>&nbsp;\!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示该命令的历史记录编号。
<p>&nbsp;\#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前命令的命令编号。
<p>&nbsp;\$&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示$符作为提示符,如果用户是root的话,则显示#号。
<p>&nbsp;\\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示反斜杠。
<p>&nbsp;\d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前日期。
<p>&nbsp;\h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示主机名。
<p>&nbsp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打印新行。
<p>&nbsp;\nnn&nbsp;&nbsp;&nbsp;&nbsp; 显示nnn的八进制值。
<p>&nbsp;\s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前运行的shell的名字。
<p>&nbsp;\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前时间。
<p>&nbsp;\u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前用户的用户名。
<p>&nbsp;\W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前工作目录的名字。
<p>&nbsp;\w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 显示当前工作目录的路径。
<br>&nbsp;
<p>&nbsp;&nbsp;&nbsp; 这些特殊字符能组合成很多种有用的提示符方案(也可以组合为很奇异的方案),例如把
PS1 设为:
<p><font color="#3366FF">PS1="\t"</font>
<p>&nbsp;&nbsp;&nbsp; 这导致提示符显示当前的时间,就象下面的显示一样(提示符后面将不会有空格):
<p><font color="#3366FF">02:16:15</font>
<br>&nbsp;
<p>&nbsp;&nbsp;&nbsp; 而下面的设置:
<p><font color="#3366FF">PS1=\t</font>
<p>&nbsp;&nbsp;&nbsp; 将导致提示符变成下面的样子:
<p><font color="#3366FF">t</font>
<p>&nbsp;&nbsp;&nbsp; 这显示了设置中引号的重要性,下面的提示符串:
<p><font color="#3366FF">PS1="\t\\ "</font>
<p>&nbsp;&nbsp;&nbsp; 会使提示符看起来象这个样子:
<p><font color="#3366FF">02:16:30\</font>
<p>&nbsp;&nbsp;&nbsp; 这种情况下,提示符后面会有一个空格,因为引号里有一个空格。
<center>
<p><b><font color="#000000"><font size=+1>作业控制(Job Control)</font></font></b></center>

<br>&nbsp;
<p><br>
<p>&nbsp;&nbsp;&nbsp; 作业控制能够控制当前正在运行的进程的行为。特别地,你能把一个正在运行的进程挂起,稍后再恢复它的运行。bash
保持对所有已启动的进程的跟踪,你能在一个正在运行的进程的生命期内的任何时候把它挂起或是使它恢复运行。
<p>&nbsp;&nbsp;&nbsp; 按下 Ctrl-Z 使一个运行的进程挂起。bg 命令使一个被挂起的进程在后台恢复运行,反之
fg 命令使进程在前台恢复运行。这几个命令在当用户想在后台运行而意外的把它放到了前台时,经常被用到。当一个命令在前台被运行时,它会禁止用户与
shell 的交互,直到该命令结束。这通常不会造成麻烦,因为大多数命令很快就执行完了。如果你要运行的命令要花费很长的时间的话,我们通常会把它放到后台,以使我们能在前台继续输入其他命令。例如,你输入这个命令:
<p><font color="#3366FF">command find / -name "test" > find.out</font>
<p>&nbsp;&nbsp;&nbsp; 它将寻找整个文件系统中的名为test 的文件并把结果保存在一个叫fing.out的文件里。如果在前台运行的话,根据文件系统的大小,你的shell将有数秒甚至数分钟不能使用,你不想这样的话可以再输入以下面的内容:
<p><font color="#3366FF">control-z</font>
<p><font color="#3366FF">bg</font>
<p>&nbsp;&nbsp;&nbsp; find 命令首先被挂起,再在后台继续被执行,并且你能马上回到bash下。
<br>&nbsp;
<center>
<p>&nbsp;<b><font size=+1>用户化配置bash</font></b></center>

<p>&nbsp;&nbsp;&nbsp; 本文已经描述了许多用户化配置bash的方法。但知道现在为止,我们所做的改动都仅在当前运行的bash下才有效。一旦退出系统,所有的改动也随之消失了。为了保存这些用户化配置,你必须把它们保存到一个bash的初始化文件里。
<p>&nbsp;&nbsp;&nbsp; 你能把任何想每次进入cash都执行的命令放到初始化文件里。这个文件里最常见到的命令通常是alias和变量的初始化。bash的初始化文件叫做
profile。每个使用bash的用户都有一个 .profile文件在他的用户目录里。bash在每次启动时都读取这个文件,并执行所有包含的命令。
<p>&nbsp;&nbsp;&nbsp; 下面的代码是缺省的.profile文件的内容。这个文件的位置在
/etc目录。如果你想设置自己的bash 的话把它拷到你的用户目录里(如果还没有的话)并命名为.profile。
<p>
<hr WIDTH="100%">
<br>&nbsp;&nbsp;&nbsp;&nbsp; <b>注意:</b> 有些setup程序会在建立用户时自动放一个.profile文件的拷贝在你的用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
户目录里。但是并不是所有的都这么做,所以最好先检查一下你的用户目&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
录。记住所有以句点开头的文件都是隐含的,只有用ls -a或ls -A命令才&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
能列出。
<br>
<hr WIDTH="100%">
<br>&nbsp;
<p><font color="#3366FF"># commands common to all logins</font>
<p><font color="#3366FF">export OPENWINHOME=/usr/openwin</font>
<p><font color="#3366FF">export MINICOM="-c on"</font>
<p><font color="#3366FF">export MANPATH=/usr/local/man:/usr/man/preformat:/usr/man:/X11/man:/usr/openwin
/m</font>
<br><font color="#3366FF">an</font>
<p><font color="#3366FF">export HOSTNAME="`cat /etc/HOSTNAME`"</font>
<p><font color="#3366FF">PATH="$PATH:/usr/X11/bin:$OPENWINHOME/bin:/usr/games:."</font>
<p><font color="#3366FF">LESS=-MM</font>
<p><font color="#3366FF"># I had problems using 'eval test' instead of
'TERM=', but you might want to # try</font>
<br><font color="#3366FF">&nbsp;it anyway. I think with the right /etc/termcap
it would work great.&nbsp; # eval 'tset</font>
<br><font color="#3366FF">&nbsp;-sQ "$TERM"'if [ "$TERM" = "" -o "$TERM"
=</font>
<br><font color="#3366FF">"unknown"]; then</font>
<p><font color="#3366FF">TERM=linux</font>
<p><font color="#3366FF">#PS1=''hostname':'pwd'# `</font>
<p><font color="#3366FF">if [ "$SHELL" = "/bin/pdksh" -o "$SHELL" = "/bin/ksh"
]; then</font>
<p><font color="#3366FF">&nbsp;PS1="! $"</font>
<p><font color="#3366FF">elif [ "$SHELL" = "/bin/zsh" ]; then</font>
<p><font color="#3366FF">&nbsp;PS1="%m:%~%# "</font>
<p><font color="#3366FF">elif [ "$SHELL" = "/bin/ash" ]; then</font>
<p><font color="#3366FF">&nbsp;PS1="$ "</font>
<p><font color="#3366FF">else</font>
<p><font color="#3366FF">PS1='\h:\w\$ `</font>
<p><font color="#3366FF">fi</font>
<p><font color="#3366FF">PS2='> `</font>
<p><font color="#3366FF">ignoreeof=10</font>
<p><font color="#3366FF">export PATH DISPLAY LESS TERM PS1 PS2 ignoreeof</font>
<p><font color="#3366FF">umask 022</font>
<p><font color="#3366FF"># set up the color-ls environment variables:</font>
<p><font color="#3366FF">if [ "$SHELL" = "/bin/zsh" l; then</font>
<p><font color="#3366FF">&nbsp; eval 'dircolors -z'</font>
<p><font color="#3366FF">elif [ "$SHELL" = "/bin/ash" l; then</font>
<p><font color="#3366FF">&nbsp; eval 'dircolors -s'</font>
<p><font color="#3366FF">else</font>
<p><font color="#3366FF">&nbsp; eval 'dircolors -b'</font>
<p><font color="#3366FF">fi</font>
<p><font color="#3366FF">echo</font>
<p><font color="#3366FF">fortune</font>
<p><font color="#3366FF">echo</font>
<p><font color="#3366FF">export TAPE="/dev/nftape"</font>
<center>
<p><b><font size=+1>&nbsp;bash 命令概要</font></b></center>

<p>&nbsp;&nbsp;&nbsp; 这是几个最有用的bash内部命令:
<p>alias:&nbsp; 设置bash别名。
<p>bg:&nbsp;&nbsp;&nbsp;&nbsp; 使一个被挂起的进程在后台继续执行。
<p>cd:&nbsp;&nbsp;&nbsp;&nbsp; 改变当前工作目录。
<p>exit:&nbsp;&nbsp; 终止shell。
<p>export: 使变量的值对当前shell的所有子进程都可见 。
<p>fc:&nbsp;&nbsp;&nbsp;&nbsp; 用来编辑历史命令列表里的命令。
<p>fg:&nbsp;&nbsp;&nbsp;&nbsp; 使一个被挂起的进程在前台继续执行。
<p>help:&nbsp;&nbsp; 显示bash内部命令的帮助信息。
<p>kill:&nbsp;&nbsp; 终止某个进程。
<p>pwd:&nbsp;&nbsp;&nbsp; 显示当前工作目录。
<p>unalias: 删除已定义的别名。
<p>&nbsp;&nbsp;&nbsp; bash 还有许多命令,但这些是最常用的,想了解更详细的情况,请参考bash的手册--在提示符下键入
man bash。
<center><b><font size=+1>bash 变量</font></b></center>

<p>&nbsp;&nbsp;&nbsp; 这里是几个最有用的bash变量,包括变量名和简单描述。
<p>EDITOR, FCEDIT: bsah fc 命令的缺省编辑器。
<p>HISTFILE: 用于贮存历史命令的文件。
<p>HISTSIZE: 历史命令列表的大小。
<p>HOME: 当前用户的用户目录。
<p>OLDPWD: 前一个工作目录。
<p>PATH: bash寻找可执行文件的搜索路径。
<p>PS1: 命令行的一级提示符。
<p>PS2: 命令行的二级提示符。
<p>PWD: 当前工作目录。
<p>SECONDS: 当前shell开始后所流逝的秒数。
<p>&nbsp;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?