交流群:692356620,有不同的问题或见解可以来群里讨论,或者私聊我
qq:1251611916
文章目录
1.shell
shell(外壳),广义的shell可以理解为用户的工作环境,常见的shell由两种,一种是图形界面(GUI),一种是命令行终端(CLI).
常见的GUI(Graphic User Interface);
windows,x-window
常见的CLI(Command Line Interface);
bash,shell,cshell,zshell,kshell,kshell ,tcshell.
2.basht特性
bash支持以下特性
支持命令历史(history),命令补全(tab键);
其中可以用!(英语的!)加数字查看执行第几条历史命令。即 !n。-
!-n查看执行倒数第n行历史命令。
!!执行上一条命令。
history -c //清空命令历史
history -d n //删除指定位置的历史
! +字符串 执行命令历史中最近一个以指定字符串开头的命令
!$// 引用前一个命令的最后一个参数,可用于其他命令中等价于Esc 加 .
支持管道,重定向
管道就像一个纱网,用来过滤前一条命令的结果,输出需要的结果
重定向是通过各种方法将各种数据请求重新定个方向转到其它位置
例如:
覆盖重定向 > (原文件会被覆盖)
追加重定向>>(原文件不会覆盖,新内容在原内容之后)
支持命令别名;
当一条命令很长且需要重复使用时,可给命令取别名来更加便捷,使用alias命令 (别名只能在规定的shell范围内使用,且在shell关闭后不能使用,为一次性的)
例:alias a='命令'
支持命令行编辑(即快捷命令);
快捷命令
ctrl +l 清屏
ctrl + u 删除光标到句首的内容
ctrl + k 删除光标到句尾的内容
ctrl + w 删除光标前一个单词
ctrl + a 光标跳到句首
ctrl + e 光标跳到句尾
ctrl + 左右方向键 向指定位置跳动
支持命令行展开;
~ //为用户家目录的展开
~ user name //指定用户的家目录
{} //可承载一个以逗号分隔的列表,并将其展开为多个路径
例:创建这样一个文件,a是一个大文件,里面包含b,c,d两个文件,其中c包含1,2两个文件,d包含4,5两个文件,4里面包含A文件。
mkdir -p a/{b,c/{1,2},d/{4/A,5}}
支持文件名通配
*// 匹配任意长度的任意字符
?//匹配任意单个字符
[] // 匹配指定范围内的任意单个字符
[[:space:]] //表示空白字符[[:punct:]] //表示标点符号
[[:lower:]] //表示小写字母
[[:upper:]] //表示大写字母
[[:alpha:]] //表示大小写字母
[[:digit:]] //表示数字
[[:alnum:]] //表示数字和大小写字母
[^] //取反
支持变量;
环境变量:
PATH //命令搜索路径
HISTSIZE //命令历史缓冲区,默认为1000
SHELL // 当前shell
bsah 内置变量
RANDOM //保存0~32768之间的随机数
支持编程(shell脚本);
bash支持的引导
``//反引号,用于命令替换(只能替换命令,Esc下面的键)等价于$()
" "//双引号,弱引用,可实现变量替换,会把变量的值打印出来。
' '//单引号,强引用,不可实现变量替换,不会把变量的值打印出来。
总结
学习之道,贵在坚持