幸运的是,我们可以通过在包含破折号或加号前缀的文件名前使用双破折号 (–) 来解决此问题。它指示命令选项的结尾,以便后续参数将被视为文件名: #!...但是,当我们将此字符串提供给读取命令时,它会删除那些出现在换行符和前导空格旁边的反斜杠。 4.2. -r选项_ 如果我们想覆盖读取的默认行为并保留反斜杠怎么办?...用反斜杠转义特殊字符 在 shell 中,转义特殊字符最常见的方法是在字符前使用反斜杠。这些特殊字符包括 ?、+、$、! 和 [ 等字符。...和 $ 在 shell 中也有特殊含义。因此,请记住,每当我们在字符串中遇到这些字符时,我们都需要在它们之前添加一个反斜杠以获取文字字符。 6....使用 Shellcheck 编写健壮的脚本 Shellcheck 是一个简单的实用程序,我们针对我们的 shell 脚本运行以执行分析。Shellcheck 将检查脚本中的错误、警告和潜在的安全漏洞。
这里最明显的问题之一是——究竟是谁创建 / 处理具有 Hash(#)、分号(;)、破折号(-)或任何其他特殊字符的文件 / 文件夹名称。 创建一个以破折号开头的文件-,比如**-abx.txt**。...为了解决这样的错误,我们必须告诉 Bash shell(这个和本文中的大多数其他示例都是针对BASH 的)不要将特殊字符(这里是破折号)之后的任何内容解释为选项。...>touch _12.txt 文件名中的等于 =拥有等号不会改变任何东西,您可以将其用作普通文件。 >touch =12.txt 处理反斜杠 \反斜杠告诉 shell 忽略下一个字符。...在这种情况下,正斜杠不是真正的正斜杠,而是一个看起来像正斜杠的 Unicode 字符。 文件名中的问号 ?同样,您不需要进行任何特殊尝试的示例。可以以最一般的方式处理带有问号的文件名。...文件名带空格不是一个好主意,如果您必须区分可读的名称,则应使用下划线或破折号。但是,如果您必须创建这样的文件,则必须使用反斜杠来忽略它的下一个字符。要创建上述文件,我们必须这样做..
Python 中的反斜杠 \ 可以被用作续行符,它允许你将一行代码分成多行来书写,以提高代码的可读性。这在处理长字符串、复杂的数学表达式或其他需要多行布局的代码时非常有用。...缩进:续行的代码块应该与原始行保持相同的缩进级别。 下面这段代码演示了如何利用反斜杠 \ 作为续行符,将较长的字符串分割为多行,将复杂的数学表达式分多行书写,提高代码的可读性。...运行结果如下所示: 反斜杠 \ 是一个特殊的字符,还可用作转义字符。转义字符用于在字符串中插入那些通常具有特殊含义的字符,如引号、反斜杠、换行符和制表符等。...在正则表达式中,需要进行两次转义才能匹配反斜杠 \。 希望这些解释和示例能帮助你更好地理解和使用 Python 中的反斜杠 \ !...总的来说,当在 Python 中使用反斜杠 \ 时,需要注意其作为转义字符的特性,以及在文件路径和正则表达式中的使用。 ️
它将转换字符串为原始字符串,避免机器读取字符时候引起冲突,例如 Windows 的目录路径中的反斜杠。 你也许注意到我们现在并没有使用整个语料库。...这个例子中,这比原来的Python 代码仅少 1 行 。然而随着脚本行数的快速增长,正则表达式可以节省脚本的代码量。 re.findall() 以列表形式返回字符串中符合模式的所有实例。...请注意我们在第一个引号旁使用反斜杠。反斜杠是用于转义其他特殊字符的特殊字符。例如,当我们想使用引号作为字符串而不是特殊字符时,我们用反斜杠来表示转义:\"。如果不使用反斜杠表示转义,就是""....*"",Python解释器视作两个空字符串之间读取一个句点和一个星号。这就会出现错误,脚本不能运行。因此,关键是使用反斜杠表示转义。...和 re.findall() 类似, re.search() 也接受两个参数。第一个参数是匹配的模式,第二个参数是要搜索的字符串范围。这里为了简洁起见,我们已经将结果赋值给match 变量。
例如 *.txt 匹配所有以 .txt 结尾的文件,如 file1.txt 和 document.txt。 data/* 匹配 data 目录下的所有文件和子目录。 问号 ? 匹配一个单一字符。...在 Unix/Linux Shells 中 在传统的 Unix/Linux shell 中,如 Bash,** 通常不是默认支持的模式。...反斜杠 () 感叹号可以否定它前面的模式。在我上面分享的字符类示例中,我们使用了模式[123]。 如果我们想要显式地过滤我们想要的结果,我们可以通过[!123]来否定该模式。...反斜杠用于删除通配符的特殊含义,以便它们可以在模式中使用。...6.小结 Glob Patterns 常用于脚本、命令行工具、构建系统(如 make)、以及许多编程语言中的文件操作库(如 Python 的 glob 模块),我们需要熟练掌握和使用。
点号(dot) 点号在不同场景有着不同的含义,在目录路径中,一个点代表当前工作目录,两个点代表父目录;当一个文件以点号开头,表示一个隐藏文件;在正则表达式,点号代表匹配单个字符; 点号可以用于执行某个文件...,同样,在脚本中,用于导入文件,等于source指令。...,正则表达式表示行尾 ${} 变量的正则表达式 {parameter},等于parameter,即是变量参数的值,可用于变量和字符串连接起来 [root@localhost shell]# cat a1...abc *, @ 所有定位参数 *和 @要加引号,符号 * 将所有的引用变量视为一个整体。...但符号 @ 则仍旧保留每个引用变量的区段观念。 当*没有加双引号,效果和@效果是一样的。 [root@localhost shell]# cat argslist2.sh #!
>>/opt/tom-checkp.log fi 扩展知识 单引号,双引号,反引号 区别 a. 单引号(括起来的字符都作为普通字符出现。...双引号(除$(美元符号)、\(反斜杠)、'(单引号)、和"(双引号)这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待) c....反引号(tab兼上方紧挨这数字1)`(括起来的字符串被shell解释为命令行) #!/bin/bash #echo 'hello world!!!'...echo "两数之和为:$0 特殊变量 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。...n 是一个数字,表示第几个参数; eg:第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数的参数个数。 $\* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数。
问: 我有一个 Bash 脚本,它使用 read 命令以交互方式读取命令参数,例如 yes/no 选项。是否有一种方法可以在非交互式脚本中调用这个脚本,并将默认选项值作为参数传递?...我需要向交互式脚本传递不止一个参数。 答: 如果你的脚本是通过 read 命令在交互式环境下读取命令参数,并且你希望在非交互式脚本中传递参数,那么你可以使用以下几种方法来模拟交互式输入: 1....EOF 其中 arg1, arg2, 和 arg3 是对应于脚本中每一个 read 提示的输入。...,-e 会启用对反斜杠转义的解释,\n 用于模仿输入键(ENTER)的效果。...如果只是一系列简单的输入,方法 1 和 2 是最简便的。但是,如果脚本需要更复杂的交互,expect 更合适。
引号有两个作用: 控制字符替换 和 执行将单词包含在一起的功能 我们已经使用过引号。在我们的脚本里面,将文本信息赋值给常量的赋值操作就使用了引号: ? 在上面这个例子中,文本信息是被双引号包括住的。...我们使用双引号的原因是—我们要把所有单词包括住,当作一个整体来对待。如果我们没有使用引号,那么bash解释器,就会将所有位于第一个单词后面的单词,解释为其他的命令(第一个单词被解释为命令)。...引用单个字符 还有另外一种引用字符你会碰到的。 它就是反斜杠。The backslash tells 反斜杠告诉shell解释器忽略反斜杠符后面的第一个字符。比如: ?...反斜杠的其他使用技巧 如果,你阅读过任何软件的使用手册,并且这手册是由GNU项目完成的,那么,你会发现,在软件的命令选项中,除了以一个下划线_加一个字母的形式出现之外,还有,以两个下划线加一个完整的单词的形式出现...这样使用反斜杠,可以让我们将每行的内容包含在一个单独的命令中。让这个技巧可以应用,要注意的地方:换行,必须在反斜杠后面马上出现(也就是,在输入了反斜杠之后,就必须换行了)。
/addem 10 30 10 和 30 就是传递的命令行参数 14.1.1 读取参数 bash shell会将一些称为位置参数的特殊变量分配给输入到命令行中的所有参数。...可以用for遍历所有的参数值。 例子: 这里的反斜杠是为了转义美元符 1 #!...分离参数和选项 如果需要在shell脚本中同时使用选项和参数。 解决方案是用特殊字符来将二者分开。 shell会用双破折线来表明选项列表结束。在双破破折现之后脚本就可以放心的将剩下的命令当做参数了。...而不是选项 运行脚本时, -- 之前的是选项和选项的参数。 -- 的之后就是命令行参数。 3. 处理带值的参数 有时候选项会带上一个额外的参数值。...方法是:用getopt命令生成的格式化后的版本来替换已有的命令行参数和选项。 用set命令可以做到。需要的选项之一就是 双破折号 --。它会将命令行参数替换成set命令的命令行值。
-s, --shell SHELL 将引用约定设置为指定的 Shell。如果没有给出-s选项,则使用BASH约定。目前有效的参数是 sh,bash,csh 和 tcsh。...这个列表中的选项会按照标准的格式排列,例如,将所有选项和它们的参数放在一起,并处理掉单破折号和双破折号分隔符。...eval 命令 eval 是一个 Bash 内置命令,用于执行一个字符串作为 Bash 命令。它的主要作用是解析并执行传递给它的命令行。...– 双破折号 – 是一个特殊标记,用于告诉 set 命令后面的参数是位置参数,而不是选项。这个标记也用于在命令行中分隔选项和位置参数。...set -- 设置位置参数,使得脚本可以使用标准的 1, 2, … 来访问命令行参数。 (2)带长选项的解析。 #!
echo 命令是 Linux 中最基本和最常用的命令之一。 传递给 echo 的参数被打印到标准输出中。 echo 通常用于 shell 脚本中,用于显示消息或输出其他命令的结果。...echo 命令 echo 是 Bash 和其他大多数流行的 shell,如 Zsh 和 Ksh 中的一个 shell 内置程序。 它的行为在不同的 shell 中略有不同。...echo 命令的语法如下: echo [-neE] [ARGUMENTS] 当-n 选项,则取消尾随换行符 如果-e 选项,则将解释以下反斜杠转义字符: \ 显示反斜杠字符 \a 警报(BEL) \b...若要打印双引号,请将其包含在单引号内,或用反斜杠字符进行转义。...以彩色显示 使用 ANSI 转义序列更改前景色和背景色或设置文本属性,如下划线和粗体。
为了在使用基本正则表达式时保持元字符的特殊含义,必须使用反斜杠(\)对字符进行转义。稍后我们将解释这些和其他元字符的含义。 通常,您应始终将正则表达式括在单引号中,以避免shell解释和扩展元字符。...以下将同时匹配“bright”和“right”。 ? 字符以反斜杠转义,因为我们使用的是基本正则表达式: $grep 'b\?...使用基本正则表达式时,必须用反斜杠(\)对括号进行转义。 下面的示例同时匹配“ fearless”和“ less”。 ? 量词使(fear)组成为可选的: $grep -E '(fear)?...less' file.txt 反斜杠特殊表达式 GNU grep包含几个元字符,由反斜杠和常规字符组成。...在搜索文本文件,编写脚本或过滤命令输出时,了解如何构造正则表达式将非常有帮助。
/bin/bash指名bash为脚本解释器 运行方式: 作为可执行文件: chmod +x test.sh使脚本具有可执行权限 ....(不包括文件名) $*:由所有参数构成的用空格隔开的字符串,整体为字符串用双引号括起来 $@:每个参数分别用双引号括起来的字符串(@和*都是取所有的意思) $$:脚本当前运行的进程ID $?...##说明: 用空格隔开每一项 用反斜杠放在shell特定的字符前面,发现表达式运行错误时,可以试试转义 包含空格和其他特殊字符的字符串要用引号括起来 expr会在stdout中输出结果,如果结果为真...,如果转化失败则会报错 * / % 乘除取余运算,两端参数会转化为整数(*在shell中有特殊含义,所以需要转义) ()可以表示优先级,但是需要用反斜杠转义 逻辑表达式 | 或(c++中是||,少一半...=判断s1和s2是否不相等 >和<判断(需要用反斜杠转义),结果等于使用strcmp(逐个字符的ascii码进行比较) 多重条件判定 命令格式:test -r filename -a -x filename
image.png 本文最先发布在:https://www.itcoder.tech/posts/bash-printf-command/ 通常,在写 Bash 脚本的时候,我们使用echo来打印标准输出...一、printf 命令 printf 是一个Bash 和其他流行的 shell,例如 Zsh 和 Ksh 等内建的 shell 命令。...这里是一些常用的转义字符: \\ - 显示一个反斜杠符号 \b - 显示一个后退字符 \n - 显示一个换行符 \r - 显示一个回车符 \t - 显示一个横向制表符 \v - 显示一个竖向制表符 三、...下面是一个列表,显示各种类型转换符,以及他们的作用: %b - 将参数中支持的反斜杠转义字符转义以后再打印 %q - 将参数按可以作为shell输入重用的格式打印 %d, %i - 将参数按有符号十进制整数打印...%c - 将参数作为一个单个字符打印 %f - 将参数作为一个浮点型数字打印 %s - 将参数作为一个字符串打印 %% - 仅仅打印一个%符号 3.2 符号指令 符号指令是可选修饰符,被用来调整,补0
这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。 Bash附带了许多内置命令,您可以在命令行或Shell脚本中使用它们。 在本文中,我们将探讨内置的read命令。...read var1 var2 单词被分配给作为参数传递给read命令的名称。 使用echo或printf进行验证: echo $var1 Hello, World!...Var3: 默认情况下,read将反斜杠解释为转义符,有时可能会导致意外行为。 要禁用反斜杠转义,请使用-r选项调用该命令。...更改定界符here doc read的默认行为是使用一个或多个空格,制表符和换行符作为分隔符,将行拆分为单词。 要将另一个字符用作分隔符,请将其分配给IFS变量(内部字段分隔符)。...以下是使用_和-作为分隔符的示例: echo 'Linux_is-awesome.' | (IFS="-_" read -r var1 var2 var3; echo -e "$var1 \n$var2
cap(int n) 第n个组的内容(0代表匹配自身) cap()参数缺省值为0。...例如c匹配字符c \c 除以下指定的字符外,反斜杠后面的字符与字符本身匹配。...注意: C ++编译器将反斜杠转换为字符串。要将\包含在正则表达式中,请输入两次,即\\。要匹配反斜杠字符本身,请输入四次,即\\\\。...- 破折号表示字符范围。[W-Z]与“ W”或“ X”或“ Y”或“ Z”匹配。 通配符匹配,大多数命令外壳(如bash或cmd.exe)都支持“文件通配”,即使用通配符标识一组文件的能力。...在完整的正则表达式中。 * 匹配零个或多个任何字符。与完整正则表达式中的。*相同。 […] 字符集可以用方括号表示,类似于完整的正则表达式。在字符类中,与外部一样,反斜杠没有特殊含义。
和大家通常说的shell是一门编程语言的说法其实是不完全正确的。 ...】 -e 表示支持反斜杠控制的字符转换,也就是转义字符。...,这是一个约定的标记,它告诉系统这个脚本需要用什么解释器去执行,即使用哪一种 shell,所以学习 bash,第一行固定都是 #!/bin/bash。这是不能省略的。 ...创建完毕之后,接下来执行该脚本,有如下两种方式: ①、作为可执行程序 cd /tmp #进入到脚本所在的目录 chmod +x ....②、作为解释器参数 也就是直接运行解释器,其参数就是 shell 脚本的文件名,如下: /bin/sh hello.sh 或者 bash hello.sh 注意:这种方式执行脚本,并不需要第一行写上
要在使用基本正则表达式时保留元字符的特殊含义,必须使用反斜杠(\)对字符进行转义。我们稍后将解释这些元字符和其他元字符的含义。...下面的内容将同时匹配“bight”和“right”。 ?字符使用反斜杠进行转义,因为我们使用的是基本正则表达式: grep 'b\?...组是使用括号()创建的。使用基本正则表达式时,括号必须用反斜杠(\)转义。 下面的示例同时匹配“fearless”和“less”。?量词使(fear)组成为可选的: grep -E '(fear)?...less' file.txt 特殊转义符 GNU grep包括几个元字符,这些元字符由一个反斜杠后跟一个常规字符组成。 下表展示了一些最常见的特殊反斜杠表达式: \b 匹配单词边界。...在搜索文本文件、编写脚本或筛选命令输出时,了解如何构造正则表达式非常有用。
,有空格则有歧义,最好使用双引号 反引号,引用命令执行结果,等于$()用法 特殊参数变量 shell的特殊变量,用在如脚本,函数传递参数使用,有如下特殊的,位置参数变量 $0 获取shell脚本文件名...,以及脚本路径 $n 获取shell脚本的第n个参数,n在1~9之间,如$1,$2,$9,大于9则需要写${10},参数空格隔开 $# 获取执行的shell脚本后边的参数总个数 $*...$* 和 $@ 都表示传递给函数或脚本的所有参数 当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据, 彼此之间以空格来分隔。...shell for循环的知识 反斜杠 '\' ,是转义符号 ubuntu@VM-12-16-ubuntu:~$ cat different.sh #!...上一次后台进程的PID $_ 再次之前执行的命令,最后一个参数 查找方式 man bash 搜索 Special Parameters 脚本返回值指脚本执行完毕了,会返回一个数字
领取专属 10元无门槛券
手把手带您无忧上云