感谢支持
我们一直在努力

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

鸟哥的Linux私房菜下载见


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


http://www.linuxidc.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
  • 范例一:让变量 sum 进行 100+300+50 的加总结果
    [root@www ~]# sum=100+300+50
    [root@www ~]# echo $sum
    100+300+50  <==咦!怎么没有帮我计算加总?因为这是文字型态的变量属性啊!
    [root@www ~]# declare -i sum=100+300+50
    [root@www ~]# echo $sum
    450         <==瞭乎??

    备注:1、变量类型默认为『字符串』。2、bash 环境中的数值运算,默认最多仅能到达整数形态


    数组 (array) 变量类型

    [root@www ~]# var[1]=”small min”
    [root@www ~]# var[2]=”big min”
    [root@www ~]# var[3]=”nice min”
    [root@www ~]# echo “${var[1]}, ${var[2]}, ${var[3]}”
    small min, big min, nice min

    与文件系统及程序的限制关系: ulimit

    [root@www ~]# ulimit [-SHacdfltu] [配额]
    选项与参数:
    -H :hard limit ,严格的配置,必定不能超过这个配置的数值;
    -S :soft limit ,警告的配置,可以超过这个配置值,但是若超过则有警告信息。
    在配置上,通常 soft 会比 hard 小,举例来说,soft 可配置为 80 而 hard
    配置为 100,那么你可以使用到 90 (因为没有超过 100),但介于 80~100 之间时,
    系统会有警告信息通知你!
    -a :后面不接任何选项与参数,可列出所有的限制额度;
    -c :当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),
    这种文件就被称为核心文件(core file)。此为限制每个核心文件的最大容量。
    -f :此 shell 可以创建的最大文件容量(一般可能配置为 2GB)单位为 Kbytes
    -d :程序可使用的最大断裂内存(segment)容量;
    -l :可用于锁定 (lock) 的内存量
    -t :可使用的最大 CPU 时间 (单位为秒)
    -u :单一用户可以使用的最大程序(process)数量。

    变量内容的删除、取代与替换
















    变量配置方式 说明
    ${变量#关键词}
    ${变量##关键词}
    若变量内容从头开始的数据符合『关键词』,则将符合的最短数据删除
    若变量内容从头开始的数据符合『关键词』,则将符合的最长数据删除
    ${变量%关键词}
    ${变量%%关键词}
    若变量内容从尾向前的数据符合『关键词』,则将符合的最短数据删除
    若变量内容从尾向前的数据符合『关键词』,则将符合的最长数据删除
    ${变量/旧字符串/新字符串}
    ${变量//旧字符串/新字符串}
    若变量内容符合『旧字符串』则『第一个旧字符串会被新字符串取代』
    若变量内容符合『旧字符串』则『全部的旧字符串会被新字符串取代』


    变量的测试与内容替换

















































    变量配置方式 str 没有配置 str 为空字符串 str 已配置非为空字符串
    var=${str-expr} var=expr var= var=$str
    var=${str:-expr} var=expr var=expr var=$str
    var=${str+expr} var= var=expr var=expr
    var=${str:+expr} var= var= var=expr
    var=${str=expr} str=expr
    var=expr
    str 不变
    var=
    str 不变
    var=$str
    var=${str:=expr} str=expr
    var=expr
    str=expr
    var=expr
    str 不变
    var=$str
    var=${str?expr} expr 输出至 stderr var= var=$str
    var=${str:?expr} expr 输出至 stderr expr 输出至 stderr var=$str


    命令别名用alias来定义,取消命令别名用unalias。

    [root@www ~]# alias lm=’ls -al | more’

    历史命令history

    [root@www ~]# history [n]
    [root@www ~]# history [-c]
    [root@www ~]# history [-raw] histfiles
    选项与参数:
    n :数字,意思是『要列出最近的 n 笔命令行表』的意思!
    -c :将目前的 shell 中的所有 history 内容全部消除
    -a :将目前新增的 history 命令新增入 histfiles 中,若没有加 histfiles ,
    则默认写入 ~/.bash_history
    -r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;
    -w :将目前的 history 记忆内容写入 histfiles 中!
    [root@www ~]# !number
    [root@www ~]# !command
    [root@www ~]# !!
    选项与参数:
    number :运行第几笔命令的意思;
    command :由最近的命令向前搜寻『命令串开头为 command』的那个命令,并运行;
    !! :就是运行上一个命令(相当于按↑按键后,按 Enter)

    bash shell 的配置文件


    系统设定值


    /etc/profile:这个文件设定了几个重要变量,例如PATH、USER、MAIL、HOSTNAME、HISTSIZE、umask等,


    /etc/bashrc:这个文件用于规划umask,同时规划提示符的内容(就是里面那个PS1)。


    /etc/man.config:这个文件指定了输入man时查看数据的路径设定


    个人设定值


    ~/.bash_profile:里面定义了个人路径(PATH)与环境变量的文件名称


    ~/.bashrc:这个文件对于个人喜好的bash设定是最重要的,命令别名的设定,路径的重新定义等都可以在这里设定


    ~/.bash_history:这个文件用于将您曾经用过的命令记录下来


    ~/.bash_logout:这个文件则是在您注销shell的时候BASH为您所做的事情


    bash中用到的通配符与特殊符号:


















































































       
    * 通配符,代表任意字符(0到多个)
    ? 通配符,代表一个字符
    # 注释,这个最常用在脚本中,视为说明
    \ 跳转符号,将特殊字符或通配符还原成一般字符
    | 分隔两个管线命令的界定
    ; 连续性命令的界定(注意,与管线命令不同)
    ~ 用户的根目录
    $ 即变量前需要加的变量值
    & 将指令变成在背景下工作
    ! 逻辑运算中的“非”(not)
    / 路径分隔符号
    >, >> 输出导向,分别为“取代”与“累加”
    单引号,不具有变量置换功能
    具有变量置换功能
    ` ` 两个“`”中间为可以先执行的指令
    ( ) 中间为子shell的起始与结束
    [ ] 中间为字符组合
    { } 中间为命令区块组合
    Ctrl + C 终止当前命令
    Ctrl + D 输入结束(EOF),例如邮件结束的时候
    Ctrl + M 就是Enter
    Ctrl + S 暂停屏幕的输出
    Ctrl + Q 恢复屏幕的输出
    Ctrl + U 在提示符下,将整行命令删除
    Ctrl + Z 暂停当前命令

    赞(0) 打赏
    转载请注明出处:服务器评测 » 鸟哥的Linux私房菜 课后练习第十章
    分享到: 更多 (0)

    听说打赏我的人,都进福布斯排行榜啦!

    支付宝扫一扫打赏

    微信扫一扫打赏