鸟哥的Linux私房菜 课后练习第十章


鸟哥的Linux私房菜下载见

http://www.bkjia.net/thread-2200-1-1.html

http://www.bkjia.net/thread-2268-1-1.html

Bash的优点:

1、命令编修能力 (history):

     曾经输入的指令都被记录下来,记录的文件在根目录的.bash_history下。~/.bash_history记录的是上一次登入以前执行过的指令,这一次登陆所运行的命令都被缓存在内存中,当你成功的注销系统后,该命令记忆才会记录到 .bash_history 当中

2、命令与文件补全功能: ([tab] 按键的好处)

     [Tab] 接在一串命令的第一个字的后面,则为命令补全;

     [Tab] 接在一串命令的第二个字以后时,则为『文件补齐』!

3、命令别名配置功能: (alias)

4、工作控制、前景背景控制: (job control, foreground, background)

5、程序化脚本: (shell scripts)

6、通配符: (Wildcard)

显示变量的值要用echo指令:

语法:

[root @test root]# echo $variable

范例:

[root @test root]# echo $PATH

/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin

[root@test root]# echo $PATH

/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin

[root@test root]# echo $HOME

/root

显示系统中的所有环境变量可以使用env指令

比较重要的几个环境变量

HOME 登入者的根目录

SHELL 目前这个环境使用的 SHELL 是哪支程序

HISTSIZE 当前的指令记忆数量

MAIL 您的邮件文件

PATH 文件和命令的搜寻路径

set命令不止显示环境变量而且显示用户自定义变量

配置变量:变量名=变量内容

变量的配置规则:

1、变量与变量内容以一个等号『=』来连结

2、等号两边不能有空格符

3、变量名称只能是英文字母与数字,但是开头字符不能是数字

4、变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来,但

     双引号内的特殊字符如 $ 等,可以保有原本的特性,如下所示:
   『var="lang is $LANG"』则『echo $var』可得『lang is en_US』

    单引号内的特殊字符则仅为一般字符 (纯文本),如下所示:
   『var='lang is $LANG'』则『echo $var』可得『lang is $LANG』

5、可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符

6、在一串命令中,还需要藉由其他的命令提供的信息,可以使用反单引号『`命令`』或 『$(命令)』。注意,那个 ` 是键盘上方的数字键        1 左边那个按键,而不是单引号

7、若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如:『PATH="$PATH":/home/bin』

8、若该变量需要在其他子程序运行,则需要以 export 来使变量变成环境变量,如:『export PATH』

9、通常大写字符为系统默认变量,自行配置变量可以使用小写字符

10、取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的配置:

    『unset myname』

set命令:

OSTYPE=linux-gnu         <== 操作系统的类型!
PPID=20025               <== 父程序的 PID (会在后续章节才介绍)
PS1='[\u@\h \W]\$ '      <== PS1 就厉害了。这个是命令提示字符,也就是我们常见的
                             [root@www ~]# 或 [dmtsai ~]$ 的配置值啦!可以更动的!
PS2='> '                 <== 如果你使用跳脱符号 (\) 第二行以后的提示字符也
name=VBird               <== 刚刚配置的自定义变量也可以被列出来喔!
$                        <== 目前这个 shell 所使用的 PID
?                        <== 刚刚运行完命令的回传值。

环境变量PS1

PS1:(提示字符的配置)

这是 PS1 (数字的 1 不是英文字母),这个东西就是我们的『命令提示字符

  • \d :可显示出『星期 月 日』的日期格式,如:"Mon Feb 2"
  • \H :完整的主机名。举例来说,鸟哥的练习机为『www.vbird.tsai』
  • \h :仅取主机名在第一个小数点之前的名字,如鸟哥主机则为『www』后面省略
  • \t :显示时间,为 24 小时格式的『HH:MM:SS』
  • \T :显示时间,为 12 小时格式的『HH:MM:SS』
  • \A :显示时间,为 24 小时格式的『HH:MM』
  • \@ :显示时间,为 12 小时格式的『am/pm』样式
  • \u :目前使用者的账号名称,如『root』;
  • \v :BASH 的版本信息,如鸟哥的测试主板本为 3.2.25(1),仅取『3.2』显示
  • \w :完整的工作目录名称,由根目录写起的目录名称。但家目录会以 ~ 取代;
  • \W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。
  • \# :下达的第几个命令。
  • \$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $ 啰~

    环境变量$代表本Shell的线程代号,也就是PID

    环境变量?:上一个命令所传回的值(正确返回0,错误返回1)

    变量键盘读取、数组与宣告: read, array, declare

    要读取来自键盘输入的变量,用 read 这个命令

    [root@www ~]# read [-pt] variable
    选项与参数:
    -p  :后面可以接提示字符!
    -t  :后面可以接等待的『秒数!』这个比较有趣~不会一直等待使用者啦!

    declare / typeset

    declare 或 typeset 是一样的功能,就是在『宣告变量的类型』。如果使用 declare 后面并没有接任何参数,那么 bash 就会主动的将所有的变量名称与内容通通显示出来,就好像使用 set 一样。

    [root@www ~]# declare [-aixr] variable
    选项与参数:
    -a  :将后面名为 variable 的变量定义成为数组 (array) 类型
    -i  :将后面名为 variable 的变量定义成为整数数字 (integer) 类型
    -x  :用法与 export 一样,就是将后面的 variable 变成环境变量;
    -r  :将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset
    • 1
    • 2
    • 下一页

    相关内容