【Linux基础】学习shell 与shell script

《鸟哥的Linux私房菜基础学习篇》总结,本文为第三部分:学习shell 与shell script(9-11章)

9 vim程序编辑器

  • Linux 底下的配置文件多为文本文件,故使用 vim 即可进行设定编辑;

  • vim 可视为程序编辑器,可用以编辑 shell script, 配置文件等,避免打错字;

  • vi 为所有 unix like 的操作系统都会存在的编辑器,且执行速度快速;

  • vim 有三种模式,一般指令模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换;

  • 常用按键i, [Esc], :wq 等;

  • vim 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式;

  • 数字是有意义的,用来说明重复进行几次动作的意思,如 5yy 为复制 5 列之意;

  • 光标的移动中, G 经常使用,尤其是 1G, G 移动到文章的头/尾功能;

  • vim 的取代功能 :n1,n2s/old/new/g 要特别注意学习;

  • 小数点 . 为重复进行前一次动作,也是经常使用的按键功能;

  • 进入编辑模式: i, o, R,尤其是新增一列的 o 与取代的 R;

  • vim 会主动的建立 swap 暂存档,所以不要随意掉线;

  • 如果在文章内有对齐的区块,可以使用 [ctrl]-v 进行复制/贴上/删除的行为;

  • 使用 :sp 功能可以分区窗口

  • 若使用 vim 来撰写网页,若需要 CSS 元素数据,可透过 [crtl]+x, [crtl]+o 这两个连续组合按键来取得关键词;

  • vim 的环境设定可以写入在 ~/.vimrc 文件中;

  • 可以使用 iconv 进行文件语系编码的转换;

  • 使用 dos2unix 及 unix2dos 可以变更文件每一列的行尾断行字符。

  • vim常用指令示意图:

    img

10 认识与学习Bash

  • 由于核心在内存中是受保护的区块,因此我们必须要通过 Shell 将我们输入的指令与 Kernel 沟通,让 Kernel 可以控制硬件来正确无误的工作;

  • 操作系统合法的 shell 均写在 /etc/shells 文件中;

  • 用户默认登录取得的 shell 记录于 /etc/passwd 的最后一个字段;

  • bash 的功能主要有:历史命令、命令与文件补全功能、命令别名设定功能、工作控制、前台后台控制、程序化脚本、通配符;

  • type 命令可以用来找到执行指令为何种类型,亦可用于与 which 相同的功能;

  • 变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据,变量主要有环境变量与自定义变量,或称为全局变量与局部变量;

    • 使用 env 命令与 export 命令可观察环境变量,其中 export 命令可以将自定义变量转成环境变量,set 命令可以观察目前 bash 环境下的所有变量,$? 亦为变量,是前一个指令执行完毕后的回传值,在 Linux 回传值为 0 代表执行成功;
    • locale 命令可用于观察语系数据;
    • 可用 read 命令让用户由键盘输入变量的值;
  • 可使用 alias和unalias 设置命令别名;

  • ulimit 命令可用以限制用户使用系统的资源情况

  • bash 的配置文件主要分为 login shell 与 non-login shell,ogin shell 主要读取 /etc/profile 与 ~/.bash_profile,non-login shell 则仅读取 ~/.bashrc;

  • bash默认的组合键

    组合按键执行结果
    Ctrl + C终止目前的命令
    Ctrl + D输入结束 (EOF)
    Ctrl + MEnter
    Ctrl + S暂停屏幕的输出
    Ctrl + Q恢复屏幕的输出
    Ctrl + U / K在提示字符下,向前/后删除命令串
    Ctrl + A / E让光标移动到整个命令串的最前 / 最后面
    Ctrl + Z暂停目前的命令
  • 通配符:

    符号意义
    *代表 0 个到无穷多个任意字符
    ?代表一定有一个任意字符
    [ ]代表一定有一个在括号内的字符(非任意字符)
    [ - ]代表在编码顺序内的所有字符
    [^ ]反向选择
  • 特殊符号

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yZzwRn7w-1666319006592)(img/Linux基础/image-20221017110133013.png)]

  • 数据流重定向通过 >, 2>, < 之类的符号将输出的信息转到其他文件或设备去;

  • 连续命令的执行可通过 ; && || 等符号来处理

  • 管道命令的重点:

    • 管道命令仅会处理 standard output,对于 standard error output 会予以忽略;
    • 管道命令必须要能够接受来自前一个指令的数据成为 standard input 继续处理才行;
    • 本章介绍的管线命令主要有:
      • 选取命名:cut, grep
      • 排序命令:sort, wc, uniq
      • 双向重定向:tee
      • 字符转换命令:tr, col, join, paste, expand
      • 划分命令:split
      • 参数代换:xargs 等。

11 正则表达式与文件格式化处理

  • 正则表达式就是处理字符串的方法,他是以行为单位来进行字符串的处理行为;

  • 正则表达式通过一些特殊符号的辅助,可以让使用者轻易的达到查找、删除、替换某特定字符串的处理程序;

  • 只要工具程序支持正则表达式,那么该工具程序就可以用来作为正则表达式的字符串处理之用;

  • 正则表达式与通配符是完全不一样的东西,通配符 (wildcard) 代表的是 bash 操作接口的一个功能, 但正则表达式则是一种字符串处理的表示方式;

  • 使用 grep 或其他工具进行正则表达式的字符串比对时,因为编码的问题会有不同的状态,因此, 最好将 LANG 等变量设定为 C 或者是 en 等英文语系;

  • grep 与 egrep 在正规表示法里面是很常见的两个程序,其中, egrep 支持更严谨的正则表达式的语法;

  • 由于编码系统的不同,不同的语系 (LANG) 会造成正规表示法选取数据的差异,因此可利用特殊符号如[:upper:] 来替代编码范围较佳;

    特殊符号代表意义
    [:alnum:]代表英文大小写字符及数字,亦即 0-9, A-Z, a-z
    [:alpha:]代表任何英文大小写字符,亦即 A-Z, a-z
    [:blank:]代表空格键与 [Tab] 按键两者
    [:digit:]代表数字而已,亦即 0-9
    [:lower:]代表小写字符,亦即 a-z
    [:upper:]代表大写字符,亦即 A-Z
    [:print:]代表任何可以被打印出来的字符
    [:cntrl:]代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del… 等等
    [:space:]任何会产生空白的字符,包括空格键, [Tab], CR 等
  • 由于严谨度的不同,正规表示法之上还有更严谨的延伸正则表达式;

  • 基础正则表达式的特殊字符有: *, ., [], [-], [^], ^, $ 等;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oqiEZar2-1666319006594)(img/Linux基础/image-20221017173602447.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-40tbRv8K-1666319006594)(img/Linux基础/image-20221017173613412.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVSVYled-1666319006594)(img/Linux基础/image-20221017173623514.png)]

  • 扩展正则表达式,如 egrep 支持扩展正则表达式;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cB8WDBsj-1666319006595)(img/Linux基础/image-20221017173740033.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AzoUykhL-1666319006595)(img/Linux基础/image-20221017173748371.png)]

  • 常见的支持正则表达式的工具软件有: grep , sed, vim 等;

  • printf 可以通过一些特殊符号来将数据进行格式化输出;

  • awk 可以使用字段为依据,进行数据的重新整理与输出;

  • 文件的比对中,可利用 diff 指令及 cmp 指令进行比对,其中 diff 主要用在纯文本文件方面的新旧版本比对;

  • patch 指令可以将旧版数据更新到新版 (主要亦由 diff 建立 patch 的补丁来源文件);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值