Linux Shell特殊字符和控制字符大全

合集下载

linux shell powershell 语法对照

linux shell powershell 语法对照

Linux Shell和PowerShell是两种不同的命令行界面,它们的语法和功能也有所不同。

以下是一些常见的Linux Shell和PowerShell语法对照:文件路径:Linux Shell:使用正斜杠(/)作为路径分隔符,例如:/home/user/documents PowerShell:使用反斜杠(\)作为路径分隔符,例如:C:\Users\User\Documents命令提示符:Linux Shell:命令提示符通常为,例如:username@hostname:PowerShell:命令提示符通常为PS,例如:PS C:\Users\User>命令帮助:Linux Shell:使用man命令查看命令的帮助文档,例如:man lsPowerShell:使用Get-Help查看命令的帮助文档,例如:Get-Help Get-ChildItem管道操作符:Linux Shell:使用竖线(|)作为管道操作符,例如:ls | grep txtPowerShell:使用管道符号(|)作为管道操作符,例如:Get-ChildItem | Where-Object { $_.Extension -eq ".txt" }变量赋值:Linux Shell:使用等号(=)进行变量赋值,例如:name="John"PowerShell:使用赋值符号()进行变量赋值,例如:name = "John"引号的使用:Linux Shell:可以使用单引号(')或双引号(")来引用字符串,例如:echo 'Hello World' 或echo "Hello World"PowerShell:也可以使用单引号(')或双引号(")来引用字符串,例如:echo 'Hello World' 或echo "Hello World"通配符和正则表达式:Linux Shell:使用通配符(*、?、[])和正则表达式进行模式匹配和筛选,例如:ls *.txt 或grep '[0-9]' file.txtPowerShell:也支持通配符(*、?、[])和正则表达式进行模式匹配和筛选,例如:Get-ChildItem -Filter *.txt 或Select-String -Pattern '[0-9]' -Path file.txt这只是一些常见的Linux Shell和PowerShell语法对照示例,实际上还有许多其他的差异和特性。

linux中特殊符号大全

linux中特殊符号大全

在linux中你会用这些特殊符号吗?在shell中常用的特殊符号罗列如下:# ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == !=# 井号 (comments)这几乎是个满场都有的符号,除了先前已经提过的"第一行"#!/bin/bash井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。

# This line is comments.echo "a = $a" # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。

这常用在撰写过程中。

#echo "a = $a" # a = 0如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

~ 帐户的 home 目录算是个常见的符号,代表使用者的 home 目录:cd ~;也可以直接在符号后加上某帐户的名称:cd ~user 或者当成是路径的一部份:~/bin~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。

# echo ~+/var/log~- 上次的工作目录,这个符号代表上次的工作目录。

# echo ~-/etc/httpd/logs; 分号 (Command separator)在 shell 中,担任"连续指令"功能的符号就是"分号"。

譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.;; 连续分号 (Terminator)专用在 case 的选项,担任 Terminator 的角色。

linux shell 运算符

linux shell 运算符

linux shell 运算符Linuxshell运算符是在shell命令行界面下进行数学运算的工具。

它可以用来进行简单的数学计算,比如加减乘除、比较大小和逻辑运算等,为用户提供了方便和快捷的计算方式。

本文将会介绍几个常用的 Linux shell 运算符。

1. 基本运算符Linux shell 运算符中最基本的运算符是加减乘除等数学运算符。

在命令行界面下输入数学表达式,例如 3+2 或 5*6,使用 echo 命令输出结果即可。

例如:$ echo $((3+2))5$ echo $((5*6))30其中,双括号内的表达式会被 shell 解释器解析并计算出结果,然后 echo 命令会输出计算结果。

2. 比较运算符另一种常见的 Linux shell 运算符是比较运算符。

比较运算符可以用来比较两个数的大小关系,判断它们是否相等等。

常见的比较运算符有:- -eq:等于- -ne:不等于- -gt:大于- -lt:小于- -ge:大于等于- -le:小于等于这些运算符也可以用在 if 语句中,判断某个条件是否成立。

例如:if [ $a -eq $b ]thenecho 'a 等于 b'fi3. 逻辑运算符逻辑运算符在 Linux shell 中也很重要。

它们可以用来组合多个条件,判断复杂的逻辑关系。

常见的逻辑运算符有:- !:逻辑非- -o:逻辑或- -a:逻辑与例如:if [ ! $a -eq $b -o $a -lt $b ]thenecho 'a 不等于 b 或者 a 小于 b'fi上述代码中,逻辑或运算符 -o 表示只要其中一个条件成立就可以执行后面的代码。

总结一下,Linux shell 运算符是一个非常有用的工具,可以方便地进行数学计算和逻辑判断。

在日常使用中,可以结合 if 语句、for 循环等语句,编写出更加复杂的脚本,提高工作效率。

Shell命令中的特殊替换、模式匹配替换、字符串提取和替换的实现

Shell命令中的特殊替换、模式匹配替换、字符串提取和替换的实现

Shell命令中的特殊替换、模式匹配替换、字符串提取和替换的实现⽬录特殊替换模式匹配替换字符串提取和替换形式说明${var}变量本来的值${var:-word}如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。

${var:=word}如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。

${var:? message}如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以⽤来检测变量 var 是否可以被正常赋值。

若此替换出现在Shell脚本中,那么脚本将停⽌运⾏。

${var:+word}如果变量 var 被定义,那么返回 word,但不改变 var 的值。

特殊替换${var:-string},${var:+string},${var:=string},${var:?string}①${var:-string}和${var:=string}:若变量var为空,则⽤在命令⾏中⽤string来替换${var:-string},否则变量var不为空时,则⽤变量var的值来替换${var:-string};不同之处是${var:=string}常⽤于判断var是否赋值,没有的话则给var赋上⼀个默认值。

② ${var:+string}:替换规则和上⾯的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量 var的值,即空值。

(因为变量var此时为空,所以这两种说法是等价的)③${var:?string}:替换规则为:若变量var不为空,则⽤变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。

我们可利⽤此特性来检查是否设置了变量的值。

注意:在上⾯这五种替换结构中string不⼀定是常值的,可⽤另外⼀个变量的值或是⼀种命令的输出。

Shell特殊符号及条件判断

Shell特殊符号及条件判断

Shell特殊符号及条件判断一些特殊的符号$# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数。

与位置变量不同,此选项参数可超过9个$$ 脚本运行的当前进程ID号$! 后台运行的最后一个进程的进程ID号$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数$- 显示shell使用的当前选项,与set命令功能相同$? 显示最后命令的退出状态。

0表示没有错误,其他任何值表明有错误。

$0 脚本名称$1..$9 第N个参数$(uname -r)=`uname -r`echo $((1+2))显示3,$((算术运算))一些判断总结-b file 若文件存在且是一个块特殊文件,则为真-c file 若文件存在且是一个字符特殊文件,则为真-d file 若文件存在且是一个目录,则为真-e file 若文件存在,则为真-f file 若文件存在且是一个规则文件,则为真-g file 若文件存在且设置了SGID位的值,则为真-h file 若文件存在且为一个符合链接,则为真-k file 若文件存在且设置了"sticky"位的值-p file 若文件存在且为一已命名管道,则为真-r file 若文件存在且可读,则为真-s file 若文件存在且其大小大于零,则为真-u file 若文件存在且设置了SUID位,则为真-w file 若文件存在且可写,则为真-x file 若文件存在且可执行,则为真-o file 若文件存在且被有效用户ID所拥有,则为真-z string 若string长度为0,则为真-n string 若string长度不为0,则为真string1 = string2 若两个字符串相等,则为真string1 != string2 若两个字符串不相等,则为真int1 -eq int2 若int1等于int2,则为真int1 -ne int2 若int1不等于int2,则为真int1 -lt int2 若int1小于int2,则为真int1 -le int2 若int1小于等于int2,则为真int1 -gt int2 若int1大于int2,则为真int1 -ge int2 若int1大于等于int2,则为真!expr 若expr为假则复合表达式为真。

Linux下命令行通配符和特殊符号

Linux下命令行通配符和特殊符号

Linux下命令⾏通配符和特殊符号linux初学者经常会对命令⾏的通配符和正则表达式的特殊符号混淆.
通配符
*,代表0到⽆穷多个任意字符,
实例:
ls /*
,代表⼀定有⼀个任意字符
实例:
ls /
根⽬录下正好三个字符的⽂件名
[],代表⼀定有⼀个中括号内的字符,记住是⼀个
实例:
ls /*[a]*
[-],代表⼀个区间的所有数字,例如[0-9]
实例:
ls /etc/*[0-9]*
etc⽬录下⽂件名含有数字的⽂件或⽬录
[^],反选,和[]相反,指不包含[]⾥⾯的字符即可,例如[^0-9]指⼀定有⼀个字符,但不包含数字
实例:
ls /etc/*[^0-9]*
etc⽬录下⽂件名不包含数字的⽂件或⽬录
特殊符号
#,注释符号
\,转义符,可以把特殊字符和通配符还原成⼀般字符
|,管道符号,⽤于把两个命令的前执⾏结果进⾏重导向
;连续命令执⾏分隔符,例如ls; echo $PATH,可以同时执⾏两个命令,并且输出两个的执⾏结果
~,⽤户主⽬录,cd ~就能回到⽤户的主⽬录
$,变量前导符
!,逻辑⾮的意思
/,路径分隔符
>,数据流输出,覆盖式
>>,数据流输出,叠加式,在原有⽂件的末尾继续添加
<,数据流输⼊
<<,数据流输⼊
'',单引号,多个字符中间有空格是⼀⽤单引号当做⼀个整体,不具有保留变量能⼒
"",双引号,多个字符中间有空格是⼀⽤单引号当做⼀个整体,具有保留变量能⼒
``,反引号,中间的命令先执⾏,和$()相同。

linux shell --参数

linux shell --参数

linux shell --参数参数(parameter)是Linux shell中一个非常重要的概念,又称为选项(option)或标志flag。

它用于控制命令的行为并支持各种定制化的操作,是Linux系统中我们经常使用的一个基础功能。

本文将详细介绍Linux shell参数的概念以及其在命令行中的使用方法。

一、参数的基本概念在Linux shell中,参数是指用于修改命令行程序行为的关键字。

我们常常可以看到这种形式的命令:命令名 + 参数 + 参数值。

例如,ls -l命令中,-l就是参数,作用是指示ls命令输出长格式列表。

在命令行中,参数通常使用“-”或“--”开头。

单个字符的参数通常使用单个短划线(-")作为前缀,如ls -l命令中的-l;多个字符的参数通常使用双划线(--")作为前缀,如head --lines=10 file.txt命令。

参数的组合也是允许的,如ls -la。

参数分为两种:有参参数和无参参数。

有参参数是指需要输入额外数据作为参数值的参数,也就是获取用户输入的参数值。

无参参数则不需要输入额外数据作为参数值,直接使用即可。

二、常用的参数1. ls命令ls是用于显示文件列表的命令,常用的参数如下:-l:以列表形式显示文件信息,包括文件类型、权限、所有者、大小、创建日期、文件名等-a:显示隐藏文件,以“.”开头的文件被当做隐藏文件处理-h:以人类可读的形式显示文件大小-t:按照修改时间排序,最近修改的文件在最前面-S:按照文件大小排序,文件大小越大越靠前2. cd命令cd命令用于改变当前工作目录,常用的参数如下:..:返回上层目录.:表示当前目录-:返回上次所在的目录-r:复制整个目录,包括里面的文件和子目录-p:复制文件时保留原文件的属性,如权限、时间戳等-i:在复制前提示用户是否覆盖已有文件4. mv命令-f:强制执行,不进行提示-v:显示操作详细信息-r:递归删除,删除目录及其下所有文件和子目录-i:提示用户确认是否删除6. mkdir命令-p:递归创建目录,即如果所要创建的目录的上级目录不存在,将自动创建-n:显示行号-s:将多个连续的空白行压缩成一个空行8. tee命令tee命令可以将标准输入的内容复制到标准输出和指定的文件中,常用的参数如下:-a:追加输出到指定文件,不覆盖原内容-i:忽略信号中断,强制执行1. 多个参数的组合使用Linux shell支持多个参数的组合使用。

Linux 控制字符(快捷键组合)

Linux 控制字符(快捷键组合)

Linux控制字符(快捷键组合)修改终端或文本显示的行为.控制字符以CONTROL + key 组合.控制字符在脚本中不能正常使用.Ctl-B光标后退,这应该依赖于bash 输入的风格,默认是emacs 风格的.Ctl-C Break,终止前台工作.Ctl-D从当前shell 登出(和exit 很像)"EOF"(文件结束符).这也能从stdin 中终止输入.在console 或者在xterm window 中输入的时候,Ctl-D 将删除光标下字符.当没有字符时,Ctrl-D 将退出当前会话.在xterm window 也有关闭窗口的效果.Ctl-G beep.在一些老的终端,将响铃.Ctl-H backspace,删除光标前边的字符.如:1#!/bin/bash2# 在一个变量中插入Ctl-H34 a="^H^H" # 两个Ctl-H (backspaces).5 echo "abcdef" # abcdef6 echo -n "abcdef$a " # abcd f7 # 注意结尾的空格^ ^ 两个twice.8 echo -n "abcdef$a" # abcdef9 # 结尾没有空格没有backspace 的效果了(why?).10 # 结果并不像期望的那样11 echo; echoCtl-I 就是tab 键.Ctl-J新行.Ctl-K垂直tab.(垂直tab?新颖,没听过)作用就是删除光标到行尾的字符.Ctl-L clear,清屏.Ctl-M回车Ctl-Q继续(等价于XON 字符),这个继续的标准输入在一个终端里Ctl-S挂起(等价于XOFF 字符),这个被挂起的stdin 在一个终端里,用Ctl-Q 恢复Ctl-U删除光标到行首的所有字符,在某些设置下,删除全行.Ctl-V当输入字符时,Ctl-V 允许插入控制字符.比如,下边2 个例子是等价的echo -e '\x0a'echo <Ctl-V><Ctl-J>Ctl-V在文本编辑器中十分有用,在vim 中一样.Ctl-W删除当前光标到前边的最近一个空格之间的字符.在某些设置下,删除到第一个非字母或数字的字符.Ctl-Z终止前台工作.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux Shell特殊字符和控制字符大全Shell特殊字符
# 注释
∙表示注释 #注释
∙在引号中间和\#等表示#本身
∙echo ${PATH#*:} # 参数替换,不是一个注释
∙echo $(( 2#101011 )) # 数制转换,不是一个注释
; 分隔
∙命令分隔,在一行中写多个命令 echo "aa" ; echo "bb"
∙在条件中的if和then如果放在同一行,也用;分隔
;; case条件的结束
. 命令相当于source命令
∙命令:source
∙文件名的前缀,隐藏文件
∙目录:.当前目录,..父目录
∙正则表达式:匹配任意单个字符
"" 部分引用支持通配符扩展
' ‘ 全引用,不进行通配符扩展
\ 转义
/ 目录分隔符
, 多个命令都被执行,但返回最后一个
` 后置引用
: 操作符
∙空操作
∙死循环: while :
∙在if/then中表示什么都不做,引出分支
∙设置默认参数: : ${username=`whoami`}
∙变量替换: : ${HOSTNAME?} ${USER?} ${MAIL?}
∙在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如:
: > data.xxx #文件"data.xxx"现在被清空了. 与 cat
/dev/null >data.xxx 的作用相同然而,这不会产生一个新的进程,因为":"是一个内建命令.
在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影
响.
如果文件不存在,将创建.
* 匹配0个或多个字符;数学乘法;**幂运算
? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算
$
∙取变量的值 echo $PATH
∙正则表达式中表示行的结尾
∙${} 参数替换 ${PAHT}
∙$* 所有参数
∙$# 参数个数
∙$$ 进程的ID
∙$? 进程的返回状态
( )
∙命令组,在一个子Shell中运行 (a=3;echo $a) 其中定义的变量在后面不可用
∙数组初始化: array=(a,b,c)
{ } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用
{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;
[ ]
∙测试 [-z $1]
∙数组元素 a[1]='test'
∙[[]]表示测试使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.
∙(( ))数学运算
∙在正则表达式中表示范围 [a-z]
< << > 重定向和进程替换 ls -al > a.txt
> < 还用在ASCII比较 if [[ "$veg1" < "$veg2" ]]
\<,\> 正则表达式中的单词边界.如:bash$grep '\<the\>' textfile
| 管道
>| 强制重定向(即使设置了noclobber 选项--就是-C 选项).这将强制的覆盖
一个现存文件.
|| 逻辑或操作;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 false,继续执行下一个命令
&& 逻辑与;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为true,继续执行下一个命令
& 后台运行
-
∙参数选项
∙减号
∙重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
∙先前的工作目录 cd -
∙注:使用-开头的文件名和变量名可能会出现一些问题
+ 一个命令或者过滤器的选项标记.
~ home目录
~+ 当前工作目录
~- 先前工作目录
^ 正则表达式中表示行首
$IFS 用来做一些输入命令的分隔符, 默认情况下是空白.
控制字符
修改终端或文本显示的行为. . 控制字符以CONTROL + key这种方式进行组合(同时按下). 控制字符也可以使用8进制或16进制表示法来进行表示, 但是前边必须要加上转义符.
控制字符在脚本中不能正常使用.
Ctl-B退格(非破坏性的), 就是退格但是不删掉前面的字符.
Ctl-C终结一个前台作业.
Ctl-D 从一个shell中登出(与exit很相像).
"EOF"(文件结束). 这也能从stdin中终止输入.
在console或者在xterm窗口中输入的时候, Ctl-D将删除光标下字符. 当没有字符时, Ctl-D将退出当前会话, 在一个xterm窗口中, 则会产生关闭此窗口的效果.
Ctl-G "哔" (beep). 在一些老式的打字机终端上, 它会响一下铃.
Ctl-H "退格"(破坏性的), 就是在退格之后, 还要删掉前边的字符.
Ctl-I 水平制表符.
Ctl-J 重起一行(换一行并到行首). 在脚本中, 也可以使用8进制表示法 -- '\012' 或者16进制表示法 -- '\x0a' 来表示.
Ctl-K垂直制表符.
Ctl-L 清屏(清除终端的屏幕显示). 在终端中, 与clear命令的效果相同. 当发送到打印机上时, Ctl-L会让打印机将打印纸卷到最后.
Ctl-M 回车.
Ctl-Q 恢复(XON).在一个终端中恢复stdin.
Ctl-S 挂起(XOFF).
在一个终端中冻结stdin. (使用Ctl-Q可以恢复输入.)
Ctl-U 删除光标到行首的所有字符. 在某些设置下, 不管光标的所在位置
Ctl-U都将删除整行输入.
Ctl-V当输入字符时, Ctl-V允许插入控制字符.
Ctl-V主要用于文本编辑.
Ctl-W
当在控制台或一个xterm窗口敲入文本时, Ctl-W将会删除当前光标到左边最近一个空格间的全部字符. 在某些设置下, Ctl-W将会删除当前光标到左边第一个非字母或数字之间的全部字符.。

相关文档
最新文档