linux读书笔记--shell

1. Bash shell

    1.1 什么是 shell ?

     充当用户指令与kernel间的媒介,”翻译“。    

    1.2 系统的 shell 与 /etc/shells 功能

    系统的shell:centos5.5为例,在/etc/shells中:

    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/tcsh
    /bin/csh
    /bin/ksh
   

    etc/shells功能:系统的服务在运行中,会检查使用者可使用的shell,于是到/etc/shells中查看有哪些shell并决定使用哪个

    1.3 Bash shell 的功能 :

    为系统预设的shell,其主要优点为:

       命令编修能力:对使用过的指令的记录,便于查找。登陆后的指令存在于内存中,注销后保存到~/.bash_history中

       命令补全功能(tab):【tab】接在一串指令的第一个字后面,则为命令补全。

                                             【tab】接在一串指令的第二个字后面,则为档案补全

                                             连按2个tab则显示所有指令。

      命令别名设定(alias):alias  cl=‘clear’ 这种形式,注意无空格

     通配符(*):ls  -l /usr/bin/X*  则显示以x开头的

   1.4 Bash shell 的内建命令: type

    查看命令是内建的还是来自外部的命令(非bash所提供的命令)type [-tpa]  name

   1.5 指令的下达 :在命令较长时,为了换行继续输入则输入\回车,

2. Shell 的变量功能

     2.1 变量的取用与设定:echo, 变量设定规则, unset

      变量的读取:echo,变量前面加$或者${变量名},如 $HOME 或${HOME}

      变量的设定规则:

      变量和变量内容用=连接, 变量=变量内容,且=两边不能有空格

     变量名只可为字母和数字,且不可以数字开头

     变量内容里包含空格为使用单引号或双引号,且双引号能保证特殊字符原有的含义,而单引号则只作为一般符号。

     可使用\符号将特殊字符转化为一般字符

     指令中需要其他指令 的信息,则使用反单引号[`指令`]或[$(指令)]。如 version=$(uname -r)  echo $version

     通常大写字母为系统变量,小写为自定义变量

     取消变量的设定用 unset 变量名称

     子程序的概念:在一个shell中去启动新的shell,则这个新的shell为子程序,父程序的自定义变量在子程序中无法使用。

                               若要保证父程序的变量在子程序中使用,则使用export

 

 2.3 环境变量的功能: env, 一些重要的环境变量, set, export

       显示设定的环境变量的命令:env,export,set用来显示所有变量,包括环境变量和用户自定义变量。

       PS1:命令提示符  
例如:产生[root@www /home/dmtsai 16:50 #12]#如此效果,则 PS1='[\u@\h \w \A #\#]\$ '  则可。

每个shell代表的线程,都有PID来表示,PID变量为$,如echo $$

?:该变量表示上次任务的回传值

export:将自定义变量升级为环境变量。

 2.4 语系档案的变量 (locale)

      locale:用以表示系统所支持的语系。

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

语法:read [-pt]  variable

参数意义:p--后可接提示符,read  "keyin your name:"   name

                  t--后接等待输入的秒数,超时后返回,read -t  3

declare\typeset:效用为宣告变量的类型

语法:declare  [-airx]  variable

参数意义:-a  变量的类型为数组

                 -i   变量的类型为整数

                  -r  变量设定为只读

                 -x  将环境变量转换为自定义变量,与explore对应。

数组变量类型:var[index]=content ,例如,var[1]="name", var[2]="age"

 

2.7 与档案系统及程序的限制关系: ulimit

限制档案的大小,防止内存崩溃。

2.8 其它额外变量功能

变量内容的删除与取代

linux读书笔记--shell_第1张图片

变量的测试与内容替换:

linux读书笔记--shell_第2张图片

3. 命令别名与历史命令:

3.1 命令别名设定: alias, unalias

3.2 历史命令: history, HISTSIZE

历史命令:history  [ncraw]

参数说明:-n   列出最近的n个指令

                  -c   清除目前shell中的history 的内容

                  -a   将目前新增的 history 指令新增入 histfiles 中,若没有加 histfiles , 则预写入 ~/.bash_history

                  -r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;

                  -w :将目前的 history 记忆内容写入 histfiles 中!

!!:执行上个指令

!n:执行第n个指令

![var]:执行以var开头的指令

4. Bash shell 使用环境:

4.1 绝对路径与相对路径

指令运作癿顺序可以这样看:
1. 以相对/绝对路径执行挃令,例如『 /bin/ls 』或『 ./ls 』;
2. 由 alias 找到该指令来执行;
3. 由 bash 内建的 (builtin) 指令来执行;
4. 透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。

4.2 登录讯息显示数据: /etc/issue, /etc/motd

 4.3 环境设定档: bashrc, ~/.bashrc, ~/.profile, profile...,/etc/inputrc, source

4.4 终端机的环境设定: stty, set

stty:用来查看设定的按键列表,

set:

4.5 万用字符与特殊符号:

万用字符:

linux读书笔记--shell_第3张图片

特殊符号:

linux读书笔记--shell_第4张图片

5. 数据流重导向 (redirecte)

 5.1 何谓数据流重导向?

将送往屏幕输出的标准输出或标准错误输出信息进行导向,导向到其他地方,比如文件中。

标准输出:指令执行所回传的正确的信息。

标准错误输出:指令执行失败后,所回传的错误信息。

三种信息的符号表示:

    标准输入:(stdin) :代码为0,使用<或<<

    标准输出:  (stdout):代码为1,使用>或>>

    标准错误输出:(stderr): 代码为2,使用2>或2>>

语法表示:

    1> :覆盖的方法将正确的数据输出到指定的档案或装置上;

        1>>:以追加的方式将、、、、、、、

        2>:覆盖、、、将错误的数据、、、、、、、、、、、、

        2>>:追加的方式、、、、、、、、、、、、、、、、、、

       注意:中间无空格

     有时会存在标准输出和错误输出同时存在,避免混淆,将二者分别重定向:如

       分别定向到两个文件:>rightout 2> errout

       共同定向到同一文件:2>&1,指将标准信息输出路径指定为错误信息输出路径(也就是都输出在一起)
标准输入(stdin):

      <:表示将原本由键盘输入的改由文件输入,如:cat >b < 'a',表示将a中的内容copy到b中。

     <<:如''cat >b <<'end',表示由键盘进行输入,且当输入end时,输入结束。

 

5.2 命令执行的判断依据: ; , &&, ||

   当希望几个指令一次执行而不是一个个执行时,除了写shell script,用这些命令可以实现。

   cmd;cmd  :用;来分割各个命令,则可一次执行多个命令,但当各个命令存在依赖关系时,则这种简单形式不能满足。

   &?(指令回传值)与&&或||:

  linux读书笔记--shell_第5张图片

 

 6. 管线命令 (pipe):

     当希望标准输出能以某个格式输出时,就用到了管线 |,其只能处理由前一个指令传回的正确信息。

     linux读书笔记--shell_第6张图片

      每个管道后面接的必须是命令,且该命令可以接收stdin的数据 

 6.1 撷取命令:将数据分析后,取出想要的部分,或符合要求的某一行,通常针对一行来分析,不整篇分析。

  cut:将一行数据根据跟定的分割参数进行划分分解。

         linux读书笔记--shell_第7张图片

 grep :分析一行数据,若存在符合的部分,则将整行提取。

linux读书笔记--shell_第8张图片

    

6.2 排序命令: sort, wc, uniq

  sort:

  wc:统计文档中有多少行,多少字,多少字符。

  uniq:排序后,对于重复的只显示一个。

 6.3 双向重导向: tee

将数据流分别导向屏幕和文件。

 6.4 字符转换命令: tr, col, join, paste, expand,split,xargs

你可能感兴趣的:(linux,shell,bash,文档)