网站用户维护网站开发模式

张小明 2026/1/2 0:23:13
网站用户维护,网站开发模式,免费推广渠道,网站宣传文案Bash编程#xff1a;避免常见错误与掌握关键特性避免函数调用时“command not found”错误在编程中#xff0c;不同的编程语言对于函数调用和定义有不同的规则。比如在Perl等语言中#xff0c;你可以在函数实际定义之前的代码部分调用函数。然而#xff0c;在Shell脚本中避免常见错误与掌握关键特性避免函数调用时“command not found”错误在编程中不同的编程语言对于函数调用和定义有不同的规则。比如在Perl等语言中你可以在函数实际定义之前的代码部分调用函数。然而在Shell脚本中情况有所不同。问题习惯了像Perl这样允许在函数定义前调用函数的语言在Shell脚本中沿用这种方式可能会导致“command not found”错误。解决方案Shell脚本是按从上到下的线性方式读取和执行的所以在使用函数之前必须先定义它们。原因分析一些语言如Perl在执行过程中会有中间步骤将整个脚本作为一个单元进行解析这使得你可以将main()函数放在代码顶部而将其他函数或子例程放在后面定义。但Shell脚本是先读入内存然后逐行执行因此在定义函数之前无法使用它。区分Shell通配符和正则表达式在Shell编程中通配符和正则表达式容易让人混淆。有时候会看到.*、*、[a - z]*等符号但它们的含义可能和你预期的不同而且在grep和sed中使用正则表达式在bash的某些地方却不适用这让人难以理清。问题难以区分Shell通配符和正则表达式的使用场景和含义。解决方案放松心态可能是因为学习的内容太多或者使用频率太低而导致混淆多练习就会逐渐掌握。在bash中正则表达式语法仅在~比较运算符中使用其他表达式都使用Shell模式匹配。详细说明bash使用的模式匹配和正则表达式有一些相同的符号但含义不同。而且在Shell脚本中经常会调用使用正则表达式的命令如grep和sed。经过询问专家得知~是bash中唯一使用正则表达式的地方。以下是bash中使用Shell模式匹配的部分语法- 文件名通配路径名扩展-[[中的和!运算符-case语句-$GLOBIGNORE处理-$HISTIGNORE处理-${parameter#[#]word}-${parameter%[%]word}-${parameter/pattern/string}- 几个可绑定的readline命令如glob-expand-word、glob-complete-word等-complete -G和compgen -G-complete -X和compgen -X-help内置命令的pattern参数Bash调用选项在调用当前版本的bash时可以使用以下选项。多字符选项必须在单字符选项之前出现在命令行上。登录Shell通常使用-i交互式、-s从标准输入读取和-m启用作业控制选项。除了表中列出的选项外任何set选项都可以在命令行上使用。OptionMeaning-c string如果存在string则从string中读取命令。string之后的任何参数都将被解释为位置参数从$0开始。-D将所有以$开头的双引号字符串列表打印到标准输出。当当前区域设置不是C或POSIX时这些字符串会进行语言翻译。同时开启-n选项。-i交互式Shell。忽略TERM、INT和QUIT信号。如果启用作业控制也会忽略TTIN、TTOU和TSTP信号。-l使bash表现得像作为登录Shell被调用一样。-o option接受与set -o相同的参数。-O, O shopt-optionshopt-option是shopt内置命令接受的Shell选项之一。如果存在shopt-option-O设置该选项的值O取消设置。如果未提供shopt-option则将shopt接受的Shell选项的名称和值打印到标准输出。如果调用选项是O输出将以可作为输入重用的格式显示。-s从标准输入读取命令。如果给bash提供了参数此标志优先即参数不会被视为脚本名称而是从标准输入读取。-r受限Shell。-v读取Shell输入行时将其打印出来。-表示选项结束禁用进一步的选项处理。此后的任何选项都将被视为文件名和参数。--与-同义。–debugger安排在Shell启动前执行调试器配置文件。在bash 3.0或更高版本中开启扩展调试模式和Shell函数跟踪。–dump-strings与-D作用相同。–dump-po-strings与-D作用相同但输出采用GNU gettext可移植对象po文件格式。–help显示使用消息并退出。–login使bash表现得像作为登录Shell被调用一样与-l相同。–noediting如果是交互式Shell不使用GNU readline库读取命令行。–noprofile不读取启动文件/etc/profile或任何个人初始化文件。–norc如果是交互式Shell不读取初始化文件~/.bashrc。如果以sh调用Shell此选项默认开启。–posix在bash的默认操作与POSIX标准不同的地方使bash的行为更符合POSIX标准。–quiet启动Shell时不显示任何信息这是默认行为。–rcfile file, –init-file file如果是交互式Shell执行从file读取的命令而不是初始化文件~/.bashrc。–verbose等同于-v。–version显示此bash实例的版本号然后退出。提示字符串自定义以下是可用的提示字符串自定义格式代码的总结不同的bash版本对这些代码的支持有所不同。CommandMeaningAdded\aASCII铃字符007bash - 1.14.7\A当前时间24小时制的HH:MM格式bash - 2.05\d“星期 月份 日期”格式的日期\D {format}将format传递给strftime(3)并将结果插入提示字符串空格式会得到特定于区域设置的时间表示需要使用花括号bash - 2.05b\eASCII转义字符033bash - 1.14.7\H主机名bash - 1.14.7\h主机名直到第一个“.”\j当前Shell管理的作业数量bash - 2.03\lShell终端设备名称的基本名称bash - 2.03\n回车换行符\r回车符bash - 2.01.1\sShell的名称\T当前时间12小时制的HH:MM:SS格式bash - 1.14.7\t当前时间HH:MM:SS格式\当前时间12小时制的a.m./p.m.格式bash - 1.14.7\u当前用户的用户名\vbash的版本号如2.00bash - 1.14.7\Vbash的发行号版本和补丁级别如3.00.0bash - 1.14.7\w当前工作目录\W当前工作目录的基本名称#当前命令的命令编号!当前命令的历史编号\$如果有效用户ID为0打印#否则打印$\nnn八进制字符代码\打印反斜杠[开始非打印字符序列如终端控制序列]结束非打印字符序列ANSI颜色转义序列以下是ANSI颜色转义序列的相关信息可用于设置终端输出的颜色和字符属性。CodeCharacter attributeFG codeForeground colorBG codeBackground color0重置所有属性30黑色40黑色1明亮31红色41红色2暗淡32绿色42绿色4下划线33黄色43黄色5闪烁34蓝色44蓝色7反转35品红色45品红色8隐藏36青色46青色37白色47白色Bash编程避免常见错误与掌握关键特性内置命令和保留字以下是所有内置命令和保留字的总结表格中“Type”列的字母含义为R 保留字空白 内置命令。CommandTypeSummary!R命令退出状态的逻辑非。:不执行任何操作仅对参数进行扩展。.读取文件并在当前Shell中执行其内容。alias为命令或命令行设置简写。bg将作业放入后台。bind将键序列绑定到readline函数或宏。break从周围的for、select、while或until循环中退出。builtin执行指定的Shell内置命令。caseR保留字多路条件构造。cd更改工作目录。command绕过Shell函数查找来运行命令。compgen生成可能的补全匹配项。complete指定补全的执行方式。continue跳过for、select、while或until循环的下一次迭代。declare声明变量并赋予其属性与typeset相同。dirs显示当前记住的目录列表。disown从作业表中移除作业。doRfor、select、while或until循环构造的一部分。doneRfor、select、while或until循环构造的一部分。echo输出参数。elifRif构造的一部分。elseRif构造的一部分。enable启用和禁用内置Shell命令。esacRcase构造的结束。eval通过命令行处理运行给定的参数。exec用给定的程序替换Shell。exit从Shell退出。export创建环境变量。fc修复命令编辑历史文件。fg将后台作业置于前台。fiRif构造的一部分。forR循环构造。functionR定义函数。getopts处理命令行选项。hash确定并记住全路径名。help显示内置命令的帮助信息。history显示命令历史。ifR条件构造。inRcase构造的一部分。jobs列出任何后台作业。kill向进程发送信号。let算术变量赋值。local创建局部变量。logout退出登录Shell。popd从目录栈中移除目录。pushd向目录栈中添加目录。pwd打印工作目录。read从标准输入读取一行。readonly使变量只读不可赋值。return从周围的函数或脚本返回。selectR菜单生成构造。set设置选项。shift移动命令行参数。suspend暂停Shell的执行。test计算条件表达式。thenRif构造的一部分。timeR运行命令管道并打印执行时间输出格式可通过TIMEFORMAT控制。times打印从Shell运行的进程的累积用户和系统时间。trap设置信号捕获例程。type识别命令的来源。typeset声明变量并赋予其属性与declare相同。ulimit设置/显示进程资源限制。umask设置/显示文件权限掩码。unalias移除别名定义。unset移除变量或函数的定义。untilR循环构造。wait等待后台作业完成。whileR循环构造。内置Shell变量以下是bash 3.0中可用的环境变量的完整列表表格中“Type”列的字母含义为A 数组L 冒号分隔的列表R 只读U 取消设置会使其失去特殊含义。VariableTypeDescription*R一个字符串包含当前脚本或函数的位置参数由$IFS的第一个字符分隔例如arg1 arg2 arg3。R当前脚本或函数的每个位置参数作为双引号字符串列表给出例如arg1 arg2 arg3。#R当前脚本或函数的参数数量。-R调用Shell时提供的选项。?R上一个命令的退出状态。_R上一个命令的最后一个参数。$RShell进程的进程ID。!R最后一个后台命令的进程ID。0RShell或Shell脚本的名称。BASH用于调用此bash实例的完整路径名。BASH_ARGCA一个数组其值是当前bash执行调用栈中每个帧的参数数量。当前子例程使用.或source执行的Shell函数或脚本的参数数量位于栈顶。BASH_ARGVA当前bash执行调用栈中的所有参数。最后一个子例程调用的最后一个参数位于栈顶初始调用的第一个参数位于栈底。BASH_COMMAND当前正在执行或即将执行的命令除非Shell正在作为陷阱的结果执行命令在这种情况下它是陷阱发生时正在执行的命令。BASH_EXECUTION_STRING-c调用选项的命令参数。BASH_ENV当Shell被调用时作为环境文件运行的文件名。BASH_LINENOA一个数组其成员是源文件中与var{FUNCNAME}的每个成员对应的行号。${BASHLINENO[$i]}是源文件中调用${FUNCNAME[$i 1]}的行号对应的源文件名是${BASHSOURCE[$i 1]}。BASH_REMATCHAR一个数组其成员由[[条件命令的~二元运算符赋值。索引为0的元素是与整个正则表达式匹配的字符串部分索引为n的元素是与第n个带括号的子表达式匹配的字符串部分。BASH_SOURCEA一个数组包含与$FUNCNAME数组变量中的元素对应的源文件名。BASH_SUBSHELL每次生成子Shell或子Shell环境时递增 1初始值为 0。子Shell是父Shell的派生副本共享其环境。BASH_VERSION此bash实例的版本号。BASH_VERSINFOAR此bash实例的版本信息数组的每个元素保存版本号的一部分。CDPATHLcd命令搜索的目录列表。COMP_CWORDCOMPWORDS中包含当前光标位置的单词的索引此变量仅在可编程补全设施调用的Shell函数中可用。COMP_LINE当前命令行此变量仅在可编程补全设施调用的Shell函数和外部命令中可用。COMP_POINT当前光标位置相对于当前命令开头的索引。如果当前光标位置在当前命令的末尾此变量的值等于${#COMPLINE}此变量仅在可编程补全设施调用的Shell函数和外部命令中可用。COMP_WORDBREAKSUReadline库在执行单词补全时视为单词分隔符的字符集。如果取消设置COMP_WORDBREAKS它将失去其特殊属性即使随后重新设置也是如此。COMP_WORDSA当前命令行中各个单词的数组此变量仅在可编程补全设施调用的Shell函数中可用。COMPREPLYA可编程补全设施调用的Shell函数生成的可能补全项。DIRSTACKARU目录栈的当前内容。EUIDR当前用户的有效用户ID。FUNCNAMEARU一个数组包含当前执行调用栈中所有Shell函数的名称。索引为0的元素是当前正在执行的任何Shell函数的名称最底部的元素是“main”此变量仅在Shell函数执行时存在。FCEDITfc命令的默认编辑器。FIGNOREL执行文件名补全时要忽略的名称列表。GLOBIGNOREL路径名扩展期间要忽略的文件名模式列表。GROUPSAR一个数组包含当前用户所属的组列表。IFS内部字段分隔符作为单词分隔符的字符列表通常设置为空格、制表符和换行符。HISTCMDU当前命令的历史编号。HISTCONTROL由冒号:分隔的模式列表可具有以下值ignorespace以空格开头的行不进入历史列表ignoredups与最后一个历史行匹配的行不进入erasedups在保存当前行之前从历史列表中移除所有与当前行匹配的先前行ignoreboth同时启用ignorespace和ignoredups。HISTFILE命令历史文件的名称。HISTIGNORE决定历史列表中应保留哪些内容的模式列表。HISTSIZE命令历史中保留的行数。HISTFILESIZE历史文件中保留的最大行数。HISTTIMEFORMAT如果设置且不为空其值用作strftime(3)的格式字符串用于打印history内置命令显示的每个历史条目的时间戳。如果设置此变量时间戳将写入历史文件以便在Shell会话之间保留。HOME主登录目录。HOSTFILE用于主机名补全的文件。HOSTNAME当前主机的名称。HOSTTYPEbash运行的机器类型。IGNOREEOF退出交互式Shell之前接收的EOF字符数量。INPUTRCreadline启动文件。LANG用于确定未由以LC_开头的变量专门选择的任何类别如LC_COLLATE、LC_CTYPE等的区域类别。LC_ALL覆盖$LANG和任何其他指定区域类别的LC_变量的值。LC_COLLATE确定路径名扩展结果排序时使用的排序顺序。LC_CTYPE确定路径名扩展和模式匹配中字符的解释和字符类的行为。LC_MESSAGES此变量确定用于翻译以$开头的双引号字符串的区域设置。LC_NUMERIC确定用于数字格式化的区域类别。LINENOU脚本或函数中刚刚运行的行号。MACHTYPE描述bash执行所在系统的字符串。MAIL检查新邮件的文件名。MAILCHECK检查新邮件的频率以秒为单位。MAILPATHL如果未设置$MAIL则检查新邮件的文件名列表。OLDPWD上一个工作目录。OPTARGgetopts处理的最后一个选项参数的值。OPTERR如果设置为 1显示getopts的错误消息。OPTIND选项之后的第一个参数的编号。OSTYPEbash执行的操作系统。PATHL命令的搜索路径。PIPESTATUSA一个数组变量包含最近执行的前台管道中进程的退出状态值列表。POSIXLY_CORRECT如果在bash启动时存在于环境中Shell在读取启动文件之前进入POSIX模式就像提供了--posix调用选项一样。如果在Shell运行时设置bash启用POSIX模式就像执行了set -o posix命令一样。PROMPT_COMMAND在发出主提示之前将其值作为命令执行。PS1主命令提示字符串。PS2行延续的提示字符串。PS3select命令的提示字符串。PS4xtrace选项的提示字符串。PPIDR父进程的进程ID。PWD当前工作目录。RANDOMU0到327672^15 - 1之间的随机数。REPLY用户对select命令的响应如果未给出变量名则是read命令的结果。SECONDSU自Shell被调用以来的秒数。SHELLShell的完整路径名。SHELLOPTSLR已启用的Shell选项列表。SHLVL每次调用新的bash实例不是子Shell时递增 1用于计算bashShell的嵌套深度。TIMEFORMAT指定在命令管道上使用time保留字时输出的格式。TMOUT如果设置为正整数则在没有收到输入的情况下Shell自动终止的秒数。UIDR当前用户的用户ID。auto_resume控制作业控制的工作方式值为exact、substring或其他非这些关键字的值。histchars指定用作历史控制字符的内容通常设置为字符串!^#。通过掌握这些Bash的关键特性和避免常见错误能够让你在使用Bash进行编程和脚本编写时更加得心应手提高工作效率和代码的稳定性。希望这些内容对你有所帮助让你在Bash的世界中探索更多的可能性。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

高清网站推广免费下载网页制作的公司

利用.NET Core构建应用程序 1. .NET Core概述 .NET Core 是一个开源框架(托管在 GitHub 上,链接为 https://github.com/dotnet/core),由微软发布并由 .NET 社区维护,用于为 Windows、Linux 和 macOS 构建跨平台应用程序。你可以从微软官方的 .NET Core 网站(https://ww…

张小明 2026/1/1 0:22:57 网站建设

深圳网站建设有限公司wordpress云采集

25分钟搞定700飞书文档批量导出:告别手动备份的烦恼 【免费下载链接】feishu-doc-export 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 最近公司要换办公软件,700多个重要文档需要从飞书迁移出来。手动下载?那简直…

张小明 2025/12/29 17:28:47 网站建设

中企动力网站策划深圳市建设工程质量检测中心网站

在生成式AI技术深度渗透产业领域的今天,企业级智能应用正经历从单一文本交互向多模态协同处理的范式转移。全球企业服务龙头ServiceNow AI近日发布重磅成果——Apriel系列小语言模型(SLM)的迭代产品Apriel-1.5-15B-Thinker。这款搭载150亿参数…

张小明 2025/12/29 17:27:38 网站建设

如何使用阿里云服务器建设网站四川省建设厅信息平台

互联网冲浪与邮件使用全指南 1. 启动 Internet Explorer 若要使用 Windows 7 内置的 Internet Explorer 浏览器浏览网页,首先需启动它。以下是具体步骤: 1. 连接到互联网。 2. 点击 Internet Explorer。若任务栏中没有该图标,可点击“开始”,再点击“所有程序”,最后点…

张小明 2025/12/29 17:27:04 网站建设

1元建站华亭县门户网站

Chrome扩展开发效率革命:热重载终极解决方案 【免费下载链接】crx-hotreload Chrome Extension Hot Reloader 项目地址: https://gitcode.com/gh_mirrors/cr/crx-hotreload 作为一名Chrome扩展开发者,你是否厌倦了每次修改代码后都要手动重新加载…

张小明 2025/12/29 17:26:29 网站建设

网站的建设入什么科目网络营销外包公司

Qwen2.5-VL-3B-Instruct-AWQ深度解析:多模态AI的突破性进展与实践教程 【免费下载链接】Qwen2.5-VL-3B-Instruct-AWQ 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen2.5-VL-3B-Instruct-AWQ 在Qwen2-VL模型问世五个月以来,全球开发者社…

张小明 2026/1/1 21:29:06 网站建设