1.shell
Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。
Shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种类众多,常见的有:
①Bourne Shell(/usr/bin/sh或/bin/sh)
②Bourne Again Shell(/bin/bash)
③C Shell(/usr/bin/csh)
④K Shell(/usr/bin/ksh)
2.命令历史
在命令行模式下输入的命令会保存在内存中,在用户退出终端的时候,将命令历史保存进/用户家目录/.bash_history这一文件中。
可以通过history命令来查看。history -c 可以青春清除内存中的命令历史,但是不会影响文件中的内容。
[[email protected]_01 ~]# history 1 cat /root/.bash_history 2 history
也可以查看文件内容查看命令历史
[[email protected]_01 ~]# cat /root/.bash_history ls cd / ls dhclient ip add
但是此处保存的命令历史数量是有限的,¥HISTZIZE的值则是命令数量的值
[[email protected]_01 ~]# echo $HISTSIZE 1000
这一环境变量可以在配置文件/etc/profile中更改
HISTSIZE=1000
在使用history命令的时候,一般只会显示命令历史遗迹默认的编号。
如果需要记录命令执行的时间等信息,可以修改HISTTIMEFORMAT变量
[[email protected]_01 ~]# history 1 cat /root/.bash_history 2 history 3 echo $HISTZIZE 4 echo $HISTSIZE 5 cat /root/.bash_history 6 vi /etc/profile 7 history [[email protected]_01 ~]# vi /etc/profile [[email protected]_01 ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " [[email protected]_01 ~]# history 1 2017/11/26 20:58:48 cat /root/.bash_history 2 2017/11/26 21:04:48 history 3 2017/11/26 21:08:10 echo $HISTZIZE 4 2017/11/26 21:08:12 echo $HISTSIZE 5 2017/11/26 21:12:43 cat /root/.bash_history 6 2017/11/26 21:16:18 vi /etc/profile 7 2017/11/26 21:19:27 history 8 2017/11/26 21:19:31 vi /etc/profile 9 2017/11/26 21:20:31 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 10 2017/11/26 21:20:35 history
但是需要注意的是,这种修改只是临时更改,正在重新登陆终端后则不再有同样效果。
如果需要永久生效,同样编辑/etc/profile文件并将
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "加入
HISTSIZE=1000 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
完成后,需要执行source以生效
[[email protected]_01 ~]# source /etc/profile [[email protected]_01 ~]# echo $HISTTIMEFORMAT %Y/%m/%d %H:%M:%S
※使用技巧
①执行上一条命令:!!
[[email protected]_01 ~]# echo $HISTTIMEFORMAT %Y/%m/%d %H:%M:%S [[email protected]_01 ~]# !! echo $HISTTIMEFORMAT %Y/%m/%d %H:%M:%S
②执行第n条命令:!n
③执行上一个ls命令:!ls
3.别名
查看系统中的别名可以使用alias命令
[[email protected]_01 ~]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
这些别名分别被定义在~/.bashrc文件以及/etc/profile.d下的各个文件中
[[email protected]_01 ~]# ls /etc/profile.d 256term.csh colorgrep.sh lang.sh vim.sh 256term.sh colorls.csh less.csh which2.csh bash_completion.sh colorls.sh less.sh which2.sh colorgrep.csh lang.csh vim.csh
4.通配符
* - 通配符,代表任意字符(0到多个)
? - 通配符,代表一个字符
# - 注释
/ - 跳转符号,将特殊字符或通配符还原成一般符号
| - 分隔两个管线命令的界定
; - 连续性命令的界定
~ - 用户的根目录
$ - 变量前需要加的变量值
! - 逻辑运算中的"非"(not)
/ - 路径分隔符号
> 重定向
>> 追加重定向
2> 错误重定向
2>>错误追加重定向
&> 错误&正确信息都进行重定向操作
' - 单引号,不具有变量置换功能
" - 双引号,具有变量置换功能
` - quote符号,两个``中间为可以先执行的指令
() - 中间为子shell的起始与结束
[] - 中间为字符组合
{} - 中间为命令区块组合
Ctrl+C - 终止当前命令
Ctrl+D - 输入结束(EOF),例如邮件结束的时候
Ctrl+M - 就是Enter
Ctrl+S - 暂停屏幕的输出
Ctrl+Q - 恢复屏幕的输出
Ctrl+U - 在提示符下,将整行命令删除
Ctrl+Z - 暂停当前命令
&& - 当前一个指令执行成功时,执行后一个指令
|| - 当前一个指令执行失败时,执行后一个指令