当前位置: 首页 > news >正文

网站建设接单网站开发移动端

网站建设接单,网站开发移动端,成都微信小程序制作价格,如何实现网站建设服务Linux系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 第二章(上) Vim课堂与实验 文章目录 Linux系列文章目录一、前言二、学习内容#xff1a;2.1 上课内容2.1.1 为什么要学习脚本编写#xff1f;2.1.2 Bash编程语言2.1.3 SheBang2.…Linux系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 第二章(上) Vim课堂与实验 文章目录 Linux系列文章目录一、前言二、学习内容2.1 上课内容2.1.1 为什么要学习脚本编写2.1.2 Bash编程语言2.1.3 SheBang2.1.4 Shell的变量2.1.5 expr 命令算数运算2.1.6 read 命令用户输入2.1.7 test 命令条件判断2.1.8 bool、if与case 判断条件2.1.9 loops 循环2.1.10 动手试试2.1.11 function 方法2.1.12 stream 流操作2.1.13 推荐阅读2.2 实验内容2.2.1 一些让事情变得更简单的提示2.2.2 脚本参考 三、问题描述3.1编写具有以下行为的 shell 脚本phonebook3.2 骨架代码3.2.1 Bash的框架代码3.2.2 Python的框架代码 四、解决方案4.1 制作一个电话簿Bash4.2 制作一个电话簿Python 五、总结5.1 学习总结 一、前言 原因学校里没有开设相关课程但是学校其他课程与学习开发过程却需要用到相关知识所以写此专栏以总结课程与实验内容 目的记录学习过程内容做到条例清晰通俗易懂最好的学习方式是教会别人以后忘记若复习能立即掌握麻辣香蝈蝈 第二堂课本章拆成两节本节掌握Shell伯克利大学Linux系统管理大部分课程与实验内容都会涵盖题目为方便已翻译成中文可在B站查找视频教程学习地址官网首页 二、学习内容 2.1 上课内容 上课主要讲的是Shell脚本编写为了方便可直接在命令行输入学习 2.1.1 为什么要学习脚本编写 需要频繁运行一些命令希望避免重复操作DRYDon’t Repeat Yourself可以将任务描述为一系列步骤让计算机执行 2.1.2 Bash编程语言 注这些是他们公开课的ppt可去官网下载 Bash是一个shell也是一种编程语言 运行Bash脚本的方法 使用bash /path/to/script命令通常是.sh文件使用chmod x /path/to/script命令赋予脚本执行权限然后运行/path/to/script 使用shebang指定解释器例如#!/bin/bash 2.1.3 SheBang Shebang#!是脚本文件的第一行用于指定该脚本文件将使用的解释器。Shebang行以字符#!开头后跟解释器的路径 Shebang的作用 指定解释器告诉操作系统使用哪个解释器来运行脚本文件。提高可移植性通过指定Shebang可以确保在不同环境中运行脚本时使用正确的解释器。方便执行无需在命令行中手动指定解释器只需直接执行脚本文件即可。 使用Shebang的步骤 在脚本的第一行添加Shebang例如#!/bin/bash。确保脚本具有执行权限使用chmod x script.sh命令赋予脚本执行权限。直接执行脚本在命令行中输入./script.sh来执行脚本。 2.1.4 Shell的变量 Shell变量 空格很重要echo这是一个Shell命令用于在终端输出文本。“$Name”这是对变量的引用。在变量名前加上$符号可以获取变量的值。双引号确保变量在被输出时内容会被解析和显示 2.1.5 expr 命令算数运算 使用 expr 命令进行算术运算 变量没有类型都是字符串 2.1.6 read 命令用户输入 2.1.7 test 命令条件判断 0是正确1是错误 他的解释是运行失败后1是退出 符号判断 记忆方法 -eqequal-nenot equal-gtgreater than-gegreater than or equal to-ltless than-leless than or equal to 命令执行 当你在Shell中执行任何命令时Shell会启动一个子进程来运行该命令。当子进程完成时它会返回一个退出状态给父进程即Shell。 获取退出状态 Shell会将最近一个命令的退出状态存储在特殊变量?中。通过引用 $?你可以获取并使用这个退出状态。$# 用于表示传递给 shell 脚本的参数数量。$# 将返回这些参数的数量。 进行错误处理和控制流 在脚本中使用$?来检查命令是否成功执行 变量引用概念 Shell通过变量名直接修改值没有指针的间接修改概念。例如nameBob直接修改变量name的值。指针如C语言通过指针可以间接修改值。例如*ptr 100修改ptr指向的变量的值。 2.1.8 bool、if与case 判断条件 自己实验试试 if then 与 case in 判断 我们写的时候要保证[ ]方括号里面内容的间隔别出错 2.1.9 loops 循环 想想不同语言之间循环的区别 2.1.10 动手试试 课堂上的动手实验 运行 ./mycoolscript.sh 前要授权 chmod x mycoolscript.sh动手操作 这是在 .sh 脚本文件下的内容 这题对实验有帮助 可用vim打开 课上第一行写解释器路径的时候他能跳出选项 当时我不知道操作但在后来vim的实验中与作弊表中找到方法 详细可看上节课内容 Vim的使用与作弊表 我直接写出实现的方法 关键词补全方法 Ctrl P 补全路径的方法 使用 Vim 的内置补全机制。按 Ctrl-X 然后按 Ctrl-F 可进行文件名补全按Ctrl-X 然后按 Ctrl-K 可进行关键词补全。 2.1.11 function 方法 解释 在 Bash 脚本中$1 是一个位置参数它代表传递给脚本或函数的第一个参数。 类似的$2就是第二个 greet是函数名后面跟的则是参数 2.1.12 stream 流操作 对文件操作 管道 别跟或混在一起| 左边的输出是右边的输入 2.1.13 推荐阅读 2.2 实验内容 上节学Vim 这节主要是Shell部分 Vim速查表 2.2.1 一些让事情变得更简单的提示 bash有一个 append 运算符正如您可能猜到的那样它会附加 从第一个参数到第二个参数结束的数据。 $ cat foobar.txt foobar $ echo hello, reader foobar.txt $ cat foobar.txt foobar hello, readerbash还有一个重定向算子它接受一个的输出命令并将其输出到文件中。 $ cat foobar.txt foobar $ echo hello foobar.txt $ cat foobar.txt hello $ foobar.txt $ cat foobar.txt $只需写入文件和读取文件即可持久保存数据。 在 bash 中可以通过命令更改行。 sed 是独立且强大的文本处理命令行工具 -i 选项使得 sed 会就地in-place编辑文件。 sed流编辑器Stream Editor用于处理和转换文本数据。-i直接修改文件内容不会将结果输出到终端。 “s/old/new/g”这是 sed 的主要操作部分表示进行替换操作。 具体的含义如下 s表示“替换”substitute。old旧字符串被新字符串替代。new新字符串。g表示全局替换在每一行中找到所有出现的 字符串都进行替换而不仅仅是替换每行中的第一个出现的实例。./filename这是要进行编辑的目标文件的路径和文件名。./ 表示当前目录后面跟着的 filename 代表文件名。 $ echo hello 123 foobar.txt # writes hello to foobar.txt $ cat foobar.txt hello 123 $ sed -i s/h/j/g foobar.txt $ cat foobar.txt jello 123# You can also use regex: learn more at regex101.com $ sed -i s/[0-9]\{3\}/world/g foobar.txt $ cat foobar.txt jello world通过位置参数公开了其命令行参数bash $Integer #!/bin/bash # contents of argscript.shecho $1 echo $2 $ ./argscript.sh foo bar foo bar上面的命令用于执行这个脚本foo 和 bar 是传递给脚本的参数。 对于引号原文给了复杂的定义说简单点就下面两点 单引号内容就是字面意思适合你不想让内容变的情况。双引号里面可以有变量会自动插入变量的值。适合你需要动态内容的情况。 $ echo $LANG $LANG $ echo $LANG en_US.UTF-8您可以通过列表与命令行参数进行交互 这里是讲python相关的 在 Python 中sys.argv 是一个列表它包含了命令行参数。 您可以通过列表与命令行参数进行交互命令行运行一个 Python 脚本时你可以传递参数给这个脚本。这些参数会被存储在 sys.argv 列表中。 首先导入 sys 模块使用 sys.argvsys.argv[0] 是脚本本身的名称。sys.argv[1] 开始是传给脚本的第一个参数。可以根据需要继续使用 sys.argv[2], sys.argv[3] 等等。 # !/usr/bin/python # contents of argscript.pyimport sys print(sys.argv[1]) print(sys.argv[2]) # end of file$ ./argscript.py foo bar foo barpython允许您使用常用的功能操作文件 具有控制结构 # !/usr/bin/python # contents of fileman.pywith open(./newfile.txt, w) as f: f.write(hello from python\n) # end of file$ python fileman.py $ cat newfile.txt hello from python把phonebook.sh文件设置为可执行文件 chmod x phonebook.sh2.2.2 脚本参考 几乎都是PPT的内容 可以进去写一写例题 链接地址脚本参考 三、问题描述 您将完成一个经典的第一个 shell 脚本任务制作一个 电话簿。两种语言脚本区别 3.1编写具有以下行为的 shell 脚本phonebook ./phonebook new name number将条目添加到电话簿中。不要担心重复始终添加一个新条目即使名称相同。./phonebook list显示电话簿中的每个条目无特别说明 订单。如果电话簿没有条目则显示phonebook is empty./phonebook remove name删除与该名称关联的所有条目。如果该名称不在电话簿中则不执行任何操作。./phonebook clear删除整个电话簿./phonebook lookup name显示与该名称关联的所有电话号码。您可以假设所有电话号码都采用以下形式其中是 0-9 之间的数字。ddd-ddd-ddddd 注意您可以打印每行的名称和编号。对于额外的挑战请尝试打印所有不带其姓名的电话号码。有关详细信息请参阅下面的示例 $ ./phonebook new Linus Torvalds 101-110-0111 $ ./phonebook list Linus Torvalds 101-110-1010 $ ./phonebook new Tux Penguin 555-666-7777 $ ./phonebook new Linus Torvalds 222-222-2222 $ ./phonebook list Linus Torvalds 101-110-1010 Tux Penguin 555-666-7777 Linus Torvalds 222-222-2222 # OPTIONAL BEHAVIOR $ ./phonebook lookup Linus Torvalds 101-110-1010 222-222-2222 # ALTERNATIVE BEHAVIOR $ ./phonebook lookup Linus Torvalds Linus Torvalds 101-110-1010 Linus Torvalds 222-222-2222 $ ./phonebook remove Linus Torvalds $ ./phonebook list Tux Penguin 555-666-7777 $ ./phonebook clear $ ./phonebook list phonebook is emptypython的测试文本(选做) # Add new entries python phonebook.py new Linus Torvalds 101-110-0111 python phonebook.py new Tux Penguin 555-666-7777 python phonebook.py new Linus Torvalds 222-222-2222# List entries python phonebook.py list# Lookup an entry python phonebook.py lookup Linus Torvalds# Remove an entry python phonebook.py remove Linus Torvalds# List entries to verify removal python phonebook.py list# Clear the phonebook python phonebook.py clear# List entries to verify clearing python phonebook.py list3.2 骨架代码 填充下面代码 完成上面 3.1 题目的要求 3.2.1 Bash的框架代码 #!/bin/bashPHONEBOOK_ENTRIESbash_phonebook_entriesif [ $# -lt 1 ]; thenexit 1elif [ $1 new ]; then# YOUR CODE HERE #elif [ $1 list ]; thenif [ ! -e $PHONEBOOK_ENTRIES ] || [ ! -s $PHONEBOOK_ENTRIES ]; thenecho phonebook is emptyelse# YOUR CODE HERE #fielif [ $1 lookup ]; then# YOUR CODE HERE #elif [ $1 remove ]; then# YOUR CODE HERE #elif [ $1 clear ]; then# YOUR CODE HERE #else# YOUR CODE HERE # fi3.2.2 Python的框架代码 #!/usr/bin/env pythonimport sys import osPHONEBOOK_ENTRIES python_phonebook_entriesdef main():if len(sys.argv) 2:exit(1)elif sys.argv[1] new:# YOUR CODE HERE #elif sys.argv[1] list:if not os.path.isfile(PHONEBOOK_ENTRIES) or os.path.getsize(PHONEBOOK_ENTRIES) 0:print(phonebook is empty)else:# YOUR CODE HERE #elif sys.argv[1] lookup:# YOUR CODE HERE #elif sys.argv[1] remove:name .join(sys.argv[2:])# YOUR CODE HERE #elif sys.argv[1] clear:# YOUR CODE HERE #else:name .join(sys.argv[1:])with open(PHONEBOOK_ENTRIES, r) as f:lookup .join(filter(lambda line: name in line, f.readlines()))# YOUR CODE HERE #if __name__ __main__:main()四、解决方案 4.1 制作一个电话簿Bash 先自己写一点试一试 要注意 [ ] 里面参数之间的空格要注意 Bash 脚本中的双引号 使用双引号原因如下 处理空格 如果文件路径在这里是变量 SAVE 的值中含有空格双引号的使用可以保证整个字符串被视为一个单一的参数。例如如果 SAVE 的值为 “My Documents/SAVEPLACE”没有双引号有可能导致错误解析。 防止扩展错误 尤其是当变量为空或未定义时使用双引号可以避免一些潜在的错误。 如果没有双引号脚本可能会尝试解析一个未定义的变量导致意外的结果。 安全性 双引号也能防止字元解释比如 *、? 等通配符确保它们不会被 Bash 解释为文件匹配。 SAVEMy Documents/SAVEPLACE echo $SAVE # 正确输出My Documents/SAVEPLACE echo $SAVE # 可能输出My Documents/SAVEPLACE 这时会产生两个参数参考代码 大部分参数都有解释 只解释没提到的 下面代码可以成功运行 #!/bin/bashPHONEBOOK_ENTRIESbash_phonebook_entriesif [ $# -lt 1 ]; thenexit 1elif [ $1 new ]; thenif [ $# -ne 3 ]; thenecho Usage: $0 new name numberexit 1fiecho $2 $3 $PHONEBOOK_ENTRIESecho Added: $2 $3elif [ $1 list ]; thenif [ ! -e $PHONEBOOK_ENTRIES ] || [ ! -s $PHONEBOOK_ENTRIES ]; thenecho phonebook is emptyelsecat $PHONEBOOK_ENTRIESfielif [ $1 lookup ]; thenif [ $# -ne 2 ]; thenecho Usage: $0 lookup nameexit 1fiif grep -q $2 $PHONEBOOK_ENTRIES; thengrep $2 $PHONEBOOK_ENTRIES | awk {print $2}elseecho No entry found for $2fielif [ $1 remove ]; thenif [ $# -ne 2 ]; thenecho Usage: $0 remove nameexit 1fiif grep -q $2 $PHONEBOOK_ENTRIES; then# 取出内容放入temp后再通过mv覆盖原文件grep -v $2 $PHONEBOOK_ENTRIES temp mv temp $PHONEBOOK_ENTRIES echo Removed all entries for $2elseecho No entry found for $2fi elif [ $1 clear ]; then $PHONEBOOK_ENTRIESecho Phonebook clearedelseecho Usage: $0 {new|list|lookup|remove|clear}exit 1 fi! -e $PHONEBOOK_ENTRIES 和 ! -s $PHONEBOOK_ENTRIES: -e 是一个条件测试操作符用于检查文件是否存在。-s 是一个条件测试操作符用于检查文件是否为空。 awk {print $2}: awk 是一个文本处理工具用于对文本文件中的数据进行处理。在这里它用于打印匹配行的第二个字段假设字段以空格分隔。{print $2} 表示只打印每一行的第二个字段。 4.2 制作一个电话簿Python 此代码仅供参考 记得升级python版本 #!/usr/bin/env pythonimport sys import osPHONEBOOK_ENTRIES python_phonebook_entriesdef main():if len(sys.argv) 2:print(Usage: script {new|list|lookup|remove|clear} [args])exit(1)command sys.argv[1]if command new:if len(sys.argv) ! 4:print(Usage: script new name number)exit(1)name, number sys.argv[2], sys.argv[3]with open(PHONEBOOK_ENTRIES, a) as f:f.write(f{name} {number}\n)print(fAdded: {name} {number})elif command list:if not os.path.isfile(PHONEBOOK_ENTRIES) or os.path.getsize(PHONEBOOK_ENTRIES) 0:print(phonebook is empty)else:with open(PHONEBOOK_ENTRIES, r) as f:print(f.read(), end)elif command lookup:if len(sys.argv) ! 3:print(Usage: script lookup name)exit(1)name sys.argv[2]found Falsewith open(PHONEBOOK_ENTRIES, r) as f:for line in f:entry_name, entry_number line.strip().split(maxsplit1)if entry_name name:print(entry_number)found Trueif not found:print(fNo entry found for {name})elif command remove:if len(sys.argv) ! 3:print(Usage: script remove name)exit(1)name sys.argv[2]found Falsewith open(PHONEBOOK_ENTRIES, r) as f:lines f.readlines()with open(PHONEBOOK_ENTRIES, w) as f:for line in lines:if name not in line.split(maxsplit1)[0]:f.write(line)else:found Trueif found:print(fRemoved all entries for {name})else:print(fNo entry found for {name})elif command clear:open(PHONEBOOK_ENTRIES, w).close()print(Phonebook cleared)else:print(Usage: script {new|list|lookup|remove|clear})exit(1)if __name__ __main__:main()五、总结 5.1 学习总结 主要是动手练习 Shebang指定脚本使用的解释器例如 #!/bin/bash。 运行脚本 bash /path/to/script chmod x /path/to/script ./path/to/script变量 定义变量NAME“value”输出变量echo “$NAME”变量类型Bash 中的变量是无类型的一切皆为字符串。表达式求值使用 expr 命令例如 FOO1 然后 expr $FOO 1 操作符 等于-eq不等于-ne大于-gt大于等于-ge小于-lt小于等于-le布尔操作符与||或 条件语句 if if [ $1 -eq 79 ]; then echo nicefiif-else if [ $1 -eq 79 ];thenecho nice elseecho darn fielif用于多条件判断case用于多分支选择 循环 记住do done for 循环 基本形式for ITEM in $ITEMS; do …; done 支持范围for x in {1…10}; do …; done while 循环 while true; do …; done 函数 定义函数function greet() { echo “hey there $1”; }调用函数例如 greet “sysadmin decal” 重定向和管道 输出重定向echo “hello” out.txt追加输出echo “hello” out.txt输入重定向sort file管道command1 | command2 其他重要工具 Python用于更复杂的控制结构或需要高级功能的任务。argparse简易 CLIfabric简易部署salt基础设施相关任务psutil监控系统信息其他 shell例如 zsh、fish、ksh 等每种 shell 可能有些许语法差异。 不同语言脚本的差异 语法差异Bash 使用简单的命令行语法和工具组合Python 使用更结构化和面向对象的编程语法。功能和库Bash 主要用于系统操作和自动化任务Python 提供了丰富的库和模块用于各种编程任务。执行环境Bash 通常在 Unix/Linux 环境下运行Python 可以跨平台运行。 声明如本内容中存在错误或不准确之处欢迎指正。转载时请注明原作者信息麻辣香蝈蝈。
http://www.tj-hxxt.cn/news/135297.html

相关文章:

  • 如何做自己的网站百度推广重庆手机网站推广
  • 外贸建站优化撤销网站备案
  • flash全屏网站模板厦门网站建设工程
  • 网站推广软文欣赏优秀的字体设计网站
  • 做视频推广有哪几个网站搜索引擎优化论文3000字
  • VS2010做网站登录页面步骤wordpress删除侧边栏
  • 最新网站网址永久发布wordpress水滴
  • 站长工具seo综合查询张家界新娘东莞网站建设图表
  • 淄博团购网站建设推广网站平台免费
  • 网站怎么进行优化做自媒体搬运文章的网站
  • 建材网站模板做网站需要公章吗
  • 网站建设可行性方案模板怎么做表格
  • 避免网站侵权1m带宽做网站快不
  • 在那个网站做ppt可以赚钱网站建设什么专业
  • 内网门户网站建设互联网推广员是做什么
  • 运营企业网站怎么赚钱个人备案网站可以做淘宝客吗
  • 网站可信网站建设与维护课难吗
  • 网站默认首页文件顺序WordPress 微信小程序登录
  • 招商网站建站装潢设计网
  • 重庆涪陵网站设计公司哪家专业花生棒 做网站
  • 网站宣传的好处html美食网页设计源码
  • 台州网站建设策划怎么做自助交易网站
  • 陕西专业网站开发联系电话陕西省建设网信息截图
  • 网站建设模板怎么做烟台市住房和城乡建设局网站
  • 国外设计网站大全开发公司抽奖送房
  • 国外商业网站设计建设企业管理类网站
  • 网站建设品牌江门建站模板搭建
  • 站长之家ip查询百度收录不到公司网站
  • 闸北区网站设计企业为什么要分析环境
  • 网站左侧分类导航菜单北京网站建设华网