本文共 2095 字,大约阅读时间需要 6 分钟。
一个操作系统的组成中,shell是与用户最接近的部分
shell:外壳,也是一种程序GUI:Gnome,KDE,XfaceCLI:sh,csh,ksh,bash,tcsh,zshLinux中大多使用bash既然shell也是一种程序,那么shell在什么时候启动?
当用户登陆时,shell就会被打开。如果有两个用户同时使用shell,那么需要几个可执行的shell程序?
程序只有一个,但进程可以有多个。因此进程可以看作程序的副本。Linux允许一个用户登录多次,开启多个shell,每个进程互不相干。进程:在每个进程看来,当前主机上只存在内核和当前进程。进程是程序的副本,进程是程序执行实例用户的工作环境:
bash:shell,子shell:用pstree可以看到
bash——bash子shell和父shell之间没有任何关系,谁也不会影响谁bash的特性:
1、支持命令历史2、支持管道,重定向3、支持命令别名4、支持命令行编辑5、支持命令行展开6、支持文件名通配7、支持使用变量8、支持编程命令行编辑:
光标跳转:
Ctrl+a:跳到命令行首Ctrl+e:跳到命令行尾Ctrl+d:删除Ctrl+u: 删除光标至命令行首的内容Ctrl+k: 删除光标至命令行尾的内容Ctrl+l: 清屏查看命令历史:history(显示在此执行过的所有命令)
用户使用过的命令历史在运行时都在内存缓冲区里面!-c:清空整个命令历史-d n: 删除指定位置的命令(删除第n个命令)-d a b:删除第a个命令后的b个命令-w:保存命令历史至历史文件中 ls -a (显示隐藏文件)有个.bash_history环境变量
PATH:命令查找路径HISTSIZE: 命令历史缓冲区大小,可以保存过去多少条命令。命令历史的使用技巧:
!n:执行命令历史中的第n条命令;!-n:执行命令历史中的倒数第n条命令; !!: 执行上一条命令;!string:执行命令历史中最近一个以指定字符串开头的命令!$:引用前一个命令的最后一个参数; Esc, .Alt+.路径补全:【tab】或两下【tab】
命令别名:比如Windows清屏为cls,Linux清屏为clear
alias CMDALIAS=COMMAND [options] 如alias cls=clear同时也可以将cd /。。。一些经常用到的文件目录取一个别名!提高效率!!!单打一个命令 alias可以显示系统上的所有别名在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;如果想永久有效,可以将这个命令写在bash的配置文件中。unalias可以撤销命令别名。有些命令的别名与命令本身同名,只不过在后面加了些选项,此时可以用"\COM"使用命令本身。命令替换:把命令中某个子命令替换为其执行结果的过程
$(COMMAND) 或者反引号COMMAND
比如说:echo the current directory is $(pwd)就会打印出一行:the current directory is /root (/root就是所在的目录)比如:touch ./file-$(date +%F-%H-%M-%S).txt会在当前目录下创建 file-2018-4-15-12-34.txt (以当前时间为固定格式的一个文件) *bash支持的引号:``: 命令替换" ": 弱引用,可以实现变量替换' ': 强引用,不完成变量替换
文件名通配:globbing
星号 * : 可以匹配任意长度的任意字符?:匹配任意单个个字符[ ] :匹配指定范围内的任意单个字符比如在当前目录下有这些文件:a abc a123 ab123 x12 xyz xyz123ls a*: a abc a123 ab123ls a*3 : a123 ab123ls *b* : abc ab123。。。。。。(mkdir一个空目录 在空目录里面touch几个文件自己练一下)
[abc],[a-m],[a-z],[A-Z],[a-zA-Z],[0-9],[0-9a-zA-Z]
[^] : 匹配指定范围之外的任意单个字符[^0-9]:非数字转载于:https://blog.51cto.com/13691207/2103469