鸟哥的Linux私房菜:3、学习shell与shell script

只愿长相守 提交于 2019-12-11 02:43:49

第 9 章、vim 程序编辑器


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

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

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

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

  • 常用的按键有 i, [Esc],:wq 等。

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

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

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

  • vi 的取代功能也很棒! :n1,n2s/old/new/g 要特别注意学习起来。

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

  • 进入编辑模式几乎只要记住: i,o,R 三个按钮即可!尤其是新增一列的 o 与取代的 R。

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

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

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

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

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

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

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



第 10 章、认识与学习 BASH


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

  • 学习 shell 的原因主要有:文字接口的 shell 在各大 distribution 都一样;远程管理时文字接口速度较快;
    shell 是管理 Linux 系统非常重要的一环, 因为 Linux 内很多控制都是以 shell 撰写的。

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

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

  • bash 的功能主要有:命令编修能力;命令与文件补全功能;命令别名设定功能;工作控制、前景背景控制;程序化脚本;通配符。

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

  • 变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据。

  • 变量主要有环境变量与自定义变量,或称为全局变量与局部变量。

  • 使用 env 与 export 可观察环境变量,其中 export 可以将自定义变量转成环境变量。

  • 可以观察目前 bash 环境下的所有变量。

  • $? 亦为变量,是前一个指令执行完毕后的回传值。在 Linux 回传值为 0 代表执行成功。

  • locale 可用于观察语系资料。

  • 可用 read 让用户由键盘输入变量的值。

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

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

  • 在使用 vim 时,若不小心按了 [rtl]+s 则画面会被冻结。你可以使用 [tul]+q 来解除冻结。

  • 通配符主要有: *,2,[] 等等。

  • 数据流重导向透过 >, 2>,< 之类的符号将输出的信息转到其他文件或装置去。

  • 连续命令的下达可透过 ;&&|| 等符号来处理。

  • 管线命令的重点是:「 管线命令仅会处理 standard output,对于 standard ertor 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:] 来替代编码范围较佳。

  • 由于严谨度的不同,正规表示法之上还有更严谨的延伸正规表示法。

  • 基础正规表示法的特殊字符有: *… 0], [-],[ ^ ],^,$等!

  • 常见的支持正规表示法的工具软件有: grep , sed, vim 等等。

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

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

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

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



第 12 章、学习 shell 脚本


  • shell script 是利用 shell 的功能所写的一一个「程序(program)」, 这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面,搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。

  • shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上,就不够好 了,因为 Shellscripts 的速度较慢,且使用的 CPU 资源较多,造成主机资源的分配不良。

  • 在 Shellscript 的文件中,指令的执行是从上而下、从左而右的分析与执行。

  • shell script 的执行,至少需要有r的权限,若需要直接指令下达,则需要拥有 r 与 x 的权限。

  • 良好的程序撰写习惯中,第一行要宣告 shell (#!/bin/bash),第二行以后则宣告程序用途、版本、作者等

  • 对谈式脚本可用 read 指令达成。

  • 要建立每次执行脚本都有不同结果的数据,可使用 date 指令利用日期达成。

  • script 的执行若以 source 来执行时,代表在父程序的 bash 内执行之意!

  • 若需要进行判断式,可使用 test 或中括号 ([]) 来处理。

  • 在 script 内,$0,$1, S2… $@ 是有特殊意义的!

  • 条件判断式可使用 if…then 来判断,若是固定变量内容的情况下,可使用 case $var in … esac 来处理。

  • 循环主要分为不定循环 (while, until) 以及固定循环 (for) ,配合 do, done 来达成所需任务!

  • 我们可使用 sh -x script.sh 来进行程序的 debug。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!