Linux从来都不是一下直就变成这样的,而是处在不断的演化中,在Linux中有各种shell版本,往往都是历史上一点点的进步的痕迹又或者是为了完成不同任务,当然图形界面也是shell的一种形式。现在主流的shell是Bash,这是很多发行版所默认安转的,所以这里也使用bash。
shell:
GUI:GNOME,KDE,XFace
CLI:sh,csh,ksh,bash,tcsh,zsh
shell就是内核的外壳,是和我们进行交互的接口,Linux允许一个或多个用户同时登录,并且不会相互干扰。在每一个进程看来,当前主机只存在内核和自己,进程是程序的副本,进程是程序执行的实例化。这里要说明Bash是外部程序,bash可以在自己当前下创建子shell,exit可用于退出当前的shell。
bash作用和特性:
1、命令历史,命令补全(tab键)
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程
命令行编辑时用到的快捷键
ctrl+A 到行首
ctrl+E 到行尾
ctrl+D 向后删
Ctrl+K 删到结尾
ctrl+U 删到开始
Ctrl+左右键 一个单次的移动
环境变量
PATH 命令搜索路径
HISTSIZE 默认缓存命令的数量
histry 命令执行的历史和管理
-c 清空命令历史
-d n 删除第n个
-d n m 删除n后的m个
-w 手动写入缓存(存放在.bash_history中)
!n 执行第n个历史命令
!-n 执行倒数第n个历史命令
!! 执行上一个历史命令
!string 最近一个以string开头的
alias 显示和创建命令
[root@localhost ~]# alias a=ls
[root@localhost ~]# alias
alias a='ls'
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#
unalias 撤销命令别名
命令替换的使用
[root@localhost ~]# touch ./file-$(date +%F-%H-%M-%S).txt
[root@localhost ~]# ll
total 80
drwxr-xr-x 2 root root 4096 Dec 23 18:48 Desktop
-rw------- 1 root root 884 Dec 24 02:44 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 Dec 28 06:34 file-2015-12-28-06-34-40.txt
[root@localhost ~]# echo "This is $(pwd)"
This is /root
各种引号
`` 命令替换和$()效果一样
"" 弱引用(变量可以进行替换)
'' 强引用(不进行命令替换)
pstree 来查看进程之间的关系。
[root@localhost ~]# pstree
init-+-acpid
|-atd
|-auditd-+-audispd---{audispd}
| `-{auditd}
|-automount---4*[{automount}]
|-avahi-daemon---avahi-daemon
文件通配
* 任意长度的任意字符
? 任意单个字符
[] 匹配任意范围的单个字符
[^] 指定范围外的任意字符
[[:space:]] 空白字符
[[:punct:]] 所有的标点符号
[[:lower:]] 所有小写字母
[[:upper:]] 所有大写字母
[[:alpha:]] 所有大小写字母
[[:digit:]] 数字
[[:alnum:]] 数字及字母
bash就简单说到这里。