Linux shell特殊字符

20 篇文章 0 订阅

Linux shell特殊字符

通配符

  1. 星号(*)

匹配任意字符
try*c //匹配: try1.c try.c try.basic

  1. 问好(?)

匹配任意单个字符

  1. 方括号([])

匹配括号里所限定的任何一个字符

[Mm]akefile //匹配Makefile makefile

file[1-5] //匹配file1 file2 file3 file4 file5

* file[1-20] //匹配file1 file2 *

  1. 感叹号(!)

如果在方括号内,表示不匹配括号内所限定的任何单个字符

file[!2-4].c //不匹配文件: file2.c 、file3.c 、 file4.c

引号

  1. 双引号(”)
    消除元字符的特殊含义
    除 $ ’ ” 三个元字符外,均作为普通字符
    保留空白 字符
  2. 单引号(’)
    消除元字符的特殊含义
    除单引号自身以外,其它元字符都作为普通字符
    用“\”消除单引号的特殊含义
  3. 倒引号(`)
    命令替换, 将一个命令的输出作为另一个命令的参数
  4. 元字符
    指的是在Sheel中含有特殊含义的字符
    < > | ; ! ? * [ ] $ \ ” ’ ` { } ( ) ^

输入重定向

  1. <
    让命令从指定文件中取得输入数据
    wc < fileinfo //将fileinfo作为wc命令的输入

  2. <<
    改变输入结束的分隔符。以哪个分隔符开始,以哪个分割符结束

管道(|)

(进程通信)通过管道把一个命令的输出传递给另一个命令作为输入

后台命令(&)

将当前命令送到后台执行。给前台命令后加上&就可以使之变成后台命令。

命令执行操作符

顺序执行(;)

格式:
命令1;命令2;…命令n
各条命令从左往右依次执行

逻辑与

格式:
命令1 && 命令2
功能:
先执行命令1,如果成功,才执行命令2;否则不执行命令2

逻辑或

格式:
命令1||命令2
功能:
先执行命令1,如果不成功,就执行命令2;如果成功,就不执行命令2

成组命令

格式:
{命令序列}
(命令序列)
功能:
配对括号之间的所有命令作为一个整体执行
例子:

$ date;who>tmp1
$ (date;who)>tmp2
$ { date;who;}>tmp

tmp1 中只有用户信息
tmp2 中有时间和用户的信息
tmp 中有时间和用户的信息

实际上大括号和小括号在运行时是有区别的,但是它们的输出结果一样。

shell变量

shell支持两种类型的变量:环境变量和局部变量

环境变量

由系统定义,用来保留系统的内容。
环境变量可以被用户修改,当用户注销后,环境变量随之复原(用户修改的环境变量只在当前shell下起作用)

常用的环境变量

查看环境变量

echo HOMEecho H O M E e c h o PATH

使用env命令显示所有的环境变量
使用set命令显示所有本地定义的shell变量(局部变量)
使用readonly命令设置只读变量
修改环境变量

HISTSIZE=500
PS1=here:

局部变量

由用户定义、修改或删除。

命名规则

格式同C语言

变量赋值
  1. 赋值时等号两边不能有空格
  2. 变量做右值时要加 a=1b=date//c= , 才 表 示 右 值 的 值 例 子 : a = 1 b = ′ d a t e ′ / / 将 命 令 的 结 果 作 为 变 量 值 c = a //将一个变量的值赋给另一个变量
引用变量

变量名前面要加 echo 符 号 e c h o a $b

查看所有变量–set命令
清除变量–unset命令

unset a

说明

shell变量没有存储类和类型的限制(可以理解为全是字符串变量);
如果值中包含空格,赋值时必须用引号括起来;
如果变量出现在长字符串的开头或中间,为了避免混淆,应该用花括号将该变量名括起来

位置变量

功能: 存放命令行参数
cat file1 file2 file3 file4 …
0 0 1 2 2 3 $4 …

shift命令–移动位置参数

当脚本的参数多于9个时,用shift命令来使用多于9个参数

格式:
shift [n] n表示移动的位数;
若不指定n的值,则默认n为1

set命令–修改位置参数的值
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shell中,有一些特殊字符具有特殊的含义和功能。以下是一些常见的shell特殊字符: 1. #:表示注释的开始,后面的内容将被忽略。 2. ;:用于分隔多个命令,可以在一行中执行多个命令。 3. ;;:用于在case语句中分隔不同的模式。 4. .:表示当前目录,也可以用于执行脚本文件。 5. ,:用于在数组中分隔不同的元素。 6. /:表示路径的分隔符。 7. \:用于转义特殊字符,使其失去特殊含义。 8. 'string':单引号内的内容将被视为纯文本,不进行变量替换和转义。 9. "string":双引号内的内容可以进行变量替换和转义,但某些特殊字符仍保持特殊含义。 10. $:用于引用变量的值。 11. ${}:用于引用变量的值,并可以进行进一步的操作。 12. $?:用于获取上一个命令的退出状态。 13. $$:表示当前shell进程的PID。 14. $*:表示所有位置参数的列表。 15. "string"*:表示以"string"开头的文件名列表。 16. **:用于匹配任意层级的目录和文件。 17. ?:用于匹配单个字符。 18. ::用于空命令或作为占位符。 19. ^:用于表示行的起始位置。 20. $#:表示位置参数的个数。 21. $@:表示所有位置参数的列表。 22. `command`:用于执行命令并将其输出作为字符串返回。 23. {}:用于创建代码块或进行字符串替换。 24. \[\]:用于条件测试或字符范围匹配。 25. \[\[\]\]:用于高级条件测试。 26. ():用于创建子shell或进行命令组合。 27. (()):用于进行算术运算。 28. ||:表示逻辑或。 29. &&:表示逻辑与。 30. {xx,yy,zz,...}:用于生成多个值的列表。 31. ~:表示当前用户的主目录。 32. ~+:表示当前工作目录。 33. ~-:表示上一个工作目录。 34. &:用于后台执行命令。 35. \<...\>:用于匹配整个单词。 36. +:用于表示正数或开启某些选项。 37. -:用于表示负数或关闭某些选项。 38. %=:用于进行模式替换。 39. ==:用于比较两个字符串是否相等。 40. !=:用于比较两个字符串是否不相等。 这些特殊字符shell脚本中具有重要的作用,可以用于控制命令的执行流程、变量的引用和替换、字符串的处理等。 #### 引用[.reference_title] - *1* *3* [linux特殊符号大全](https://blog.csdn.net/weixin_33712881/article/details/92939882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [shell中特殊符号](https://blog.csdn.net/weixin_34216036/article/details/92412548)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值