【Linux从零开始】:7.学习Bash与Shell Script(2)

时间:2022-12-21 00:13:58

   一.路径与命令的的查找顺序                    

  1.以相对/绝对路径执行命令,例如"/binls"或"./ls";

  2.由alias重命名中内容来查找执行命令;

  3.由bash内置的命令来执行;

  4.通过$PATH变量中所定义的路径顺序找到第一个命令来执行。

   二.自定义自己的bash登陆欢迎界面信息:            

  /etc/issue(登陆界面), /etc/issue.net(telnet的登陆界面) , /etc/motd/(登陆路成功后用户取得的信息)

  执行 cat /etc/issue命令显示如当前的设置:

  issue内的各代码意义
  \d   本地端时间的日期
  \l 显示第几个终端机借口
  \m 显示硬件的等级(i386/i486/i686)
  \n 显示主机的网络名称
  \o 显示domain name
  \r 操作系统版本(相当于uname -r)
  \t 本地端时间
  \s 操作系统名称
  \v 操作系统版本

   三.数据流重定向:                        

  1.标准输入输出的重定向:<输入方   >输出方
    cat命令 : cat filename表示读取文件,也就是从文件输出数据并输出到屏幕上
          cat从键盘读取数据,并且输出到屏幕
            cat > filename从键盘输入,并且输出到文件中(会无条件的覆盖已有的文件)
        以 ctrl + d 来结束输入
      2.防止覆盖已有的文件:
         启用该设置:set -o noclobber
         禁用该设置:set +o noclobber
        使用追加标准输出:可以向某个文件的末尾添加新的内容
          cat filename1 >> filename2
       3.使数据消失,同时不改变文件的权限:
        将数据重定向至 /dev/null
        eg: cat /dev/null > filename 将该文件内容清空

   4.代码输出:

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

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

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

   5.tee:双向重定向命令

       -a 以累加的形式将数据输入一个文件

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

    ;不考虑相关性连续执行命令

    $?(命令回传码)与&&(逻辑与运算)或||(逻辑或运算)

 

   四.管道(Pipe)                        

  1.选取命令:

    cut:常用参数

    -d'分隔字符'  -f fields

    -c 字符范围

  eg:  cut ' ; ' -f 5   显示以;为分隔字符的第5个数据(分隔符必须是单个字符)

     cut ' ; ' -f 3,5

     cut -c 12- 若数据分行显示,输出第12个字符以后的数据

   2.字符转换命令:
        tr: -d 删除其中的某个字符串  
              eg:  tr '[a-z]' '[A-Z]' 将小写替换成大写
            tr -d ';' 删除;符号
       3.文件粘贴连接命令paste:

      paste file1 file2
           直接将2个文件相同的行粘贴在一起(以TAB分隔)
       4.join: [-ti12] file1 file2 
           -t 如果相应行之前的文件内容相同以分隔符链接 Eg: join -t ':' file1 file2
           -i 忽略大小写
         使用join前最好对文件进行sort

     5. split:切割文件命令
            -b 切割成的文件大小,可加单位b k m
            -l 以行数来进行切割
           eg: split -b 300k filename newfile前导名