怎么自建网站,php部署网站,昆明网站建设一条龙服务,网站开发交接表一、输入输出重定向 输入重定向是指把文件导入到命令中#xff0c;而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。 在日常的学习和工作中#xff0c;相较于输入重定向#xff0c;我们使用输出重定向的频率更高。 所以又将输出重定向分为了标准输出重定向…一、输入输出重定向 输入重定向是指把文件导入到命令中而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。 在日常的学习和工作中相较于输入重定向我们使用输出重定向的频率更高。 所以又将输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术以及清空写入与追加写入两种模式。 标准输入重定向STDIN文件描述符为0默认从键盘输入也可从其他文件或命令中输入。 标准输出重定向STDOUT文件描述符为1默认输出到屏幕。错误输出重定向STDERR文件描述符为2默认输出到屏幕。比如我们分别查看两个文件的属性信息其中第二个文件是不存在的虽然针对这两个文件的操作都分别会在屏幕上输出一些数据信息但这两个操作的差异其实很大。 先用ls查看当前目录然后查看lc详细信息再随便输入一个不存在的文件名查询。 在上述命令中名为 lc 的文件是存在的输出信息是该命令的标准输出信息。而名为 lclc 的第二个文件是不存在的因此在执行完ls命令之后显示的报错提示信息也是该命令的错误输出信息。 那么要想把原本输出到屏幕上的数据转而写入到文件当中就要区别对待这两种输出信息。 对于输入重定向来讲用到的符号及其作用如下表 符号 作用 命令 文件 将文件作为命令的标准输入 命令 分界符 从标准输入中读入直到遇见分界符才停止 命令 文件1 文件2 将文件1作为命令的标准输入并将标准输出到文件2 对于输出重定向来讲用到的符号及其作用如下表 符号 作用 命令 文件 将标准输出重定向到一个文件中清空原有文件的数据 命令 2 文件 将错误输出重定向到一个文件中清空原有文件的数据 命令 文件 将标准输出重定向到一个文件中追加到原有内容的后面 命令 2 文件 将错误输出重定向到一个文件中追加到原有内容的后面 命令 文件 21或命令 文件 将标准输出与错误输出共同写入到文件中追加到原有内容的后面 对于重定向中的标准输出模式可以省略文件描述符1不写而错误输出模式的文件描述符2是必须要写的。 通过标准输出重定向将 systemctl status vsftpd 命令原本要输出到屏幕的信息写入到文件 lc 中然后用cat命令显示 lc 文件中的内容。具体命令如下 如果想把命令的报错信息写入到文件平时一般用不到。 但是当用户在执行一个自动化的Shell脚本时这个操作会特别有用因为它可以把整个脚本执行过程中的报错信息都记录到文件中便于安装后的排错工作。 接下来我们以一个不存在的文件进行实验演示 因为我们用的是 所以追加到文档原有内容后面了。 输入重定向相对来说有些冷门在工作中遇到的概率会小一点。 输入重定向的作用是把文件直接导入到命令中。接下来使用输入重定向把 lc 文件导入给 wc -l 命令统计一下文件中的内容行数。 二、管道命令符 管道命令符的作用也可以用一句话来概括“把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入”。 比如用翻页的形式查看/etc目录中的文件列表及属性信息这些内容默认会一股脑儿地显示到屏幕上根本看不清楚 ls -l /etc/ | more 最上面显示总共多少条我们可以利用more命令的用法来浏览这些信息。 三、常用的转义字符 4个最常用的转义字符如下所示。 反斜杠\使反斜杠后面的一个变量变为单纯的字符串。单引号转义其中所有的变量为单纯的字符串。双引号保留其中的变量属性不进行转义处理。反引号把其中的命令执行后返回结果。我们先定义一个名为PRICE的变量并赋值为5然后输出以双引号括起来的字符串与变量信息 接下来我们希望能够输出“Price is $5”即价格是5美元的字符串内容。 但碰巧美元符号与变量提取符号合并后的$$作用是显示当前程序的进程ID号码于是命令执行后输出的内容并不是我们所预期的 要想让第一个“$”作为美元符号那么就需要使用反斜杠\来进行转义将这个命令提取符转义成单纯的文本去除特殊功能。 四、Vim文本编辑器 Vim编辑器中设置了三种模式—命令模式、末行模式和编辑模式每种模式分别又支持多种不同的命令快捷键这大大提高了工作效率。 要想高效率地操作文本就必须先搞清这三种模式的操作区别以及模式之间的切换方法。 命令模式控制光标移动可对文本进行复制、粘贴、删除和查找等工作。输入模式正常的文本录入。末行模式保存或退出文档以及设置编辑环境。 在每次运行Vim编辑器时默认进入命令模式此时需要先切换到输入模式后再进行文档编写工作。 而每次在编写完文档后需要先返回命令模式然后再进入末行模式执行文档的保存或退出操作。 在Vim中无法直接从输入模式切换到末行模式。 Vim编辑器中在命令模式中最常用的一些命令如下图。 命令 作用 dd 删除剪切光标所在整行 5dd 删除剪切从光标处开始的5行 yy 复制光标所在整行 5yy 复制从光标处开始的5行 n 显示搜索命令定位到的下一个字符串 N 显示搜索命令定位到的上一个字符串 u 撤销上一步的操作 p 将之前删除dd或复制yy过的数据粘贴到光标后面 末行模式主要用于保存或退出文件以及设置Vim编辑器的工作环境还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。 要想切换到末行模式在命令模式中输入一个冒号就可以了。末行模式中可用的命令如下表。 命令 作用 :w 保存 :q 退出 :q! 强制退出放弃对文档的修改内容 :wq! 强制保存退出 :set nu 显示行号 :set nonu 不显示行号 :命令 执行该命令 :整数 跳转到该行 :s/one/two 将当前光标所在行的第一个one替换成two :s/one/two/g 将当前光标所在行的所有one替换成two :%s/one/two/g 将全文中的所有one替换成two ?字符串 在文本中从下至上搜索该字符串 /字符串 在文本中从上至下搜索该字符串 编写脚本文档的第1步就是给文档取个名字这里将其命名为practice.txt。如果存在该文档则是打开它。如果不存在则是创建一个临时的输入文件。 打开practice.txt文档后默认进入的是Vim编辑器的命令模式。此时只能执行该模式下的命令而不能随意输入文本内容我们需要切换到输入模式才可以编写文档。 五、编写Shell脚本 可以将Shell终端解释器当作人与计算机硬件之间的“翻译官”它作为用户与Linux系统内部的通信媒介除了能够支持各种变量与参数外还提供了诸如循环、分支等高级编程语言才有的控制结构特性。 要想正确使用Shell中的这些功能特性准确下达命令尤为重要。 Shell脚本命令的工作方式有两种交互式和批处理。 交互式Interactive用户每输入一条命令就立即执行。批处理Batch由用户事先编写好一个完整的Shell脚本Shell会一次性执行脚本中诸多的命令。在Shell脚本中不仅会用到很多Linux命令以及正则表达式、管道符、数据流重定向等语法规则还需要把内部功能模块化后通过逻辑语句进行处理最终形成日常所见的Shell脚本。 查看SHELL变量可以发现当前系统已经默认使用Bash作为命令行终端解释器了 使用Vim编辑器把Linux命令按照顺序依次写入到一个lc文件中这就是一个简单的脚本了。 例如如果想查看当前所在工作路径并列出当前目录下所有的文件及属性信息实现这个功能的脚本应该类似于下面这样 第一行的脚本声明#!用来告诉系统使用哪种Shell解释器来执行该脚本 第二、三行的可执行语句就是我们平时执行的Linux命令。 通过bash lc 来执行lc是刚才编辑那个文件名 但是像上面这样的脚本程序只能执行一些预先定义好的功能太过死板了。 为了让Shell脚本程序更好地灵活完成工作必须要让脚本程序能够像之前执行命令时那样接收输入的参数。 接收参数的变量变量之间可以使用空格间隔。 例如$0对应的是当前Shell脚本程序的名称$#对应的是总共有几个参数$*对应的是所有位置的参数值$?对应的是显示上一次命令的执行返回值而$1、$2、$3……则分别对应着第N个位置的参数值。 例如编辑如下文件 执行后 下面再介绍判断用户参数 系统在执行mkdir命令时会判断用户输入的信息即判断用户指定的文件夹名称是否已经存在如果存在则提示报错 反之则自动创建。Shell脚本中的条件测试语法可以判断表达式是否成立若条件成立则返回数字0否则便返回其他随机数值。 条件测试语法的执行格式如图所示。切记条件表达式两边均应有一个空格。 按照测试对象来划分条件测试语句可以分为4种 文件测试语句逻辑测试语句整数值比较语句字符串比较语句。文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符具体的参数如表 运算符 作用 -d 测试文件是否为目录类型 -e 测试文件是否存在 -f 判断是否为一般文件 -r 测试当前用户是否有权限读取 -w 测试当前用户是否有权限写入 -x 测试当前用户是否有权限执行 下面使用文件测试语句来判断/etc/fstab是否为一个目录类型的文件然后通过Shell解释器的内设$?变量显示上一条命令执行后的返回值。 如果返回值为0则目录存在如果返回值为非零的值则意味着目录不存在 再判断/etc/fstab是否为一般文件 逻辑语句用于对测试结果进行逻辑分析根据测试结果可实现不同的效果。 例如在Shell终端中逻辑“与”的运算符号是它表示当前面的命令执行成功后才会执行它后面的命令因此可以用来判断/dev/cdrom文件是否存在若存在则输出Exist字样。 除了逻辑“与”外还有逻辑“或”它在Linux系统中的运算符号为||表示当前面的命令执行失败后才会执行它后面的命令因此可以用来结合系统环境变量USER来判断当前登录的用户是否为非管理员身份 切换到非管理员身份进行管理员验证 第三种逻辑语句是“非”在Linux系统中的运算符号是一个叹号它表示把条件测试中的判断结果取相反值。 也就是说如果原本测试的结果是正确的则将其变成错误的原本测试错误的结果则将其变成正确的。 我们现在切换回到root管理员身份再判断当前用户是否为一个非管理员的用户。 由于判断结果因为两次否定而变成正确因此会正常地输出预设信息 下面这个示例的执行顺序是先判断当前登录用户的USER变量名称是否等于root然后用逻辑运算符“非”进行取反操作效果就变成了判断当前登录的用户是否为非管理员用户了。 最后若条件成立则会根据逻辑“与”运算符输出user字样或条件不满足则会通过逻辑“或”运算符输出root字样而如果前面的不成立才会执行后面的||符号。 整数比较运算符仅是对数字的操作不能将数字与字符串、文件等内容一起操作而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。 因为等号与赋值命令符冲突大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。 因此一定要使用规范的整数比较运算符来进行操作。可用的整数比较运算符如表所示。 运算符 作用 -eq 是否等于 -ne 是否不等于 -gt 是否大于 -lt 是否小于 -le 是否等于或小于 -ge 是否大于或等于 接下来测试一下10是否大于10以及10是否等于10通过输出的返回值内容来判断 转载于:https://www.cnblogs.com/nefu-Lc/p/9485989.html