shell介绍 、命令历史、命令补全和别名 、 通配符、输入输出重定向
2018-03-07 19:31
751 查看
Shell介绍
shell是一个命令解释器,提供用户和机器之间的交互支持特定语法,比如逻辑判断、循环(if for whell)
每个用户都可以有自己特定的shell
CentOS7默认shell为bash(Bourne Agin Shell)
还有zsh、ksh等
命令历史
history命令bash_history
最大1000条
变量HISTSIZE
/etc/profile中修改
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
永久保存 chattr +a ~/.bash_history
!!
!n
!word
1 .history 命令
显示历史命令[root@localhost ~]# history 1 mkdir /tmp/222 2 rmdir /tmp/111/ /tmp/222/ . . . 995 echo $? 996 ls /usr/local/apache2/ 997 init 0 998 ls ./.bash_history 999 vim ./.bash_history 1000 history
3. .bash_history 文件
历史命令保存在用户家目录的.bash_history文件中4. history –c
清空内存中的历史记录;不会清除.bash_history文件中的记录。[root@localhost ~]# history -c [root@localhost ~]# history 2 history [root@localhost ~]# head -10 .bash_history mkdir /tmp/222 rmdir /tmp/111/ /tmp/222/ ls lsls tmp ls /tmp mkdir /tmp/111 mkdir /tmp/222 ls ls /tmp rmdir /tmp/111/ /tmp/222/只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。
5. 定义HISTSIZE值,在配置文件/etc/profile中修改
[root@localhost ~]# vim /etc/profile 搜索HISTSIZE 默认值是1000,可以修改成5000条,然后按esc,:wq 保存退出。 然后运行命令:source /etc/profile [root@localhost ~]# source /etc/profile [root@localhost ~]# echo $HISTSIZE 5000
6. 定义格式:HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
在配置文件/etc/profile中修改,在HISTSIZE=5000下面,添加一行HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "[root@localhost ~]# vim /etc/profile [root@localhost ~]# source /etc/profile [root@localhost ~]# history 2 2017/11/15 21:49:44 history 3 2017/11/15 21:50:20 head -10 .bash_history 4 2017/11/15 21:55:05 vim /etc/profile 5 2017/11/15 21:57:52 source /etc/prfile 6 2017/11/15 21:58:04 source /etc/profile 7* 2017/11/15 21:58:16 echo $HIST 8 2017/11/15 22:01:02 vim /etc/profile 9 2017/11/15 22:03:49 history 10 2017/11/15 22:03:57 source /etc/profile 11 2017/11/15 22:03:59 history 12 2017/11/15 22:04:20 vim /etc/profile 13 2017/11/15 22:05:14 source /etc/profile 14 2017/11/15 22:05:17 history
6. 永久保存 chattr +a ~/.bash_history
给.bash_history加一个a权限,不能删除,可以追加[root@localhost ~]# chattr +a .bash_history
7. !!:连续两个!表示执行上一条命令。
[root@localhost ~]# pwd /root [root@localhost ~]# !! pwd /root
8. !n:这里的n是数字,表示执行命令历史中的第n条命令。
[root@localhost ~]# history 2 2017/11/15 21:49:44 history 3 2017/11/15 21:50:20 head -10 .bash_history 4 2017/11/15 21:55:05 vim /etc/profile 5 2017/11/15 21:57:52 source /etc/prfile 6 2017/11/15 21:58:04 source /etc/profile 7* 2017/11/15 21:58:16 echo $HIST 8 2017/11/15 22:01:02 vim /etc/profile 9 2017/11/15 22:03:49 history 10 2017/11/15 22:03:57 source /etc/profile 11 2017/11/15 22:03:59 history 12 2017/11/15 22:04:20 vim /etc/profile 13 2017/11/15 22:05:14 source /etc/profile 14 2017/11/15 22:05:17 history 15 2017/11/15 22:07:56 chattr +a .bash_history 16 2017/11/15 22:08:10 vim .bash_history 17 2017/11/15 22:09:25 pwd 18 2017/11/15 22:10:31 history [root@localhost ~]# !17 pwd /root
9. !字符串: !pw表示执行命令历史中最近一次以pw开头的命令。
[root@localhost ~]# !pw pwd /root
命令和文件名补全
tab键,敲一下,敲两下参数补全,安装bash-completion
alias别名给命令重新起个名字
各用户都有自己配置别名的文件 ~/.bashrc
ls /etc/profile.d/
自定义的alias放到~/.bashrc
按tab键可以帮我们补全一个指令,一个路径或者一个文件名
Centos6中tab键只能补全本身;Centos7中tab键支持命令参数补全,需要安装一个包bash-completion
[root@localhost ~]# yum install -y bash-completion 重启服务器 reboot
别名
Alias也是bash所特有的功能之一;直接执行alias命令会看到目前系统预设的所有别名。[root@localhost ~]# 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文件中只配置了几个alias
# .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi其他的很多别名在/etc/profile.d/目录下,有很多.sh文件中定义;
[root@localhost ~]# ls /etc/profile.d/ 256term.csh colorgrep.csh colorls.sh less.csh vim.sh 256term.sh colorgrep.sh lang.csh less.sh which2.csh bash_completion.sh colorls.csh lang.sh vim.csh which2.sh root@linux-128 ~]# vim /etc/profile.d/colorls.sh
通配符
ls *.txtls ?.txt
ls [0-9].txt
ls {1,2}.txt
*用来匹配零个或多个任意字符
[root@localhost ~]# ls *txt 11.txt 1a.txt 23.txt 321.txt ab.txt a.txt b.txt 工号.txt [root@localhost ~]# ls 1* 11.txt 11.txt.bak 12 1a.txt 1.log 123: [root@localhost ~]# ls *1* 11.txt 11.txt.bak 12 1a.txt 1.log 321.txt 321.txt.bak 123: [root@localhost ~]# ls *a* 11.txt.bak 1a.txt 321.txt.bak ab.txt anaconda-ks.cfg a.txt
?用来匹配一个字符
[root@localhost ~]# ls ?.txt a.txt b.txt
ls [0-3].txt [ ]里面表示范围,只要是在这个范围内都列出来
[root@localhost ~]# ls [0-3].txt 1.txt 2.txt [root@localhost ~]# ls [a-z].txt a.txt b.txt [root@localhost ~]# ls [0-9a-zA-Z].txt 1.txt 2.txt a.txt b.txt
ls {1,2}.txt { }花括号里面要用“,”隔开,1.txt或者2.txt;
[root@localhost ~]# ls {1,2}.txt 1.txt 2.txt [root@localhost ~]# ls {1,2,3}.txt ls: 无法访问3.txt: 没有那个文件或目录 1.txt 2.txt
输入输出重定向
cat 1.txt >2.txtcat 1.txt >> 2.txt
ls aaa.txt 2>err
ls aaa.txt 2>>err
wc -l < 1.txt
command >1.txt 2>&1
>输出重定向
[root@localhost ~]# echo "112233">1.txt [root@linux-128 ~]# cat 1.txt 112233
>>追加重定向
[root@localhost ~]# echo "aabbcc">>1.txt [root@localhost ~]# cat 1.txt 112233 Aabbcc
2> 错误重定向
[root@localhost ~]# ls aaa.txt 2>2.txt [root@localhost ~]# cat 2.txt ls: 无法访问aaa.txt: 没有那个文件或目录
2>>错误追加重定向
[root@localhost ~]# ls aaa.txt 2>>2.txt [root@localhost ~]# cat 2.txt ls: 无法访问aaa.txt: 没有那个文件或目录 ls: 无法访问aaa.txt: 没有那个文件或目录
&> == >+2>正确和错误重定向
[root@localhost ~]# ls 1.txt aaa.txt &> 1.txt [root@localhost ~]# cat 1.txt ls: 无法访问aaa.txt: 没有那个文件或目录 1.txt
&>>
[root@localhost ~]# ls 1.txt aaa.txt &>> 1.txt [root@localhost ~]# cat 1.txt ls: 无法访问aaa.txt: 没有那个文件或目录 1.txt ls: 无法访问aaa.txt: 没有那个文件或目录 1.txt
可以将正确输出到一个文件中,错误输入到另一个文件中,也可以同时输出到一个文件中(用&>)。
[root@localhost ~]# ls 1.txt aaa.txt > 1.txt 2>2.txt [root@localhost ~]# cat 1.txt 1.txt [root@localhost ~]# cat 2.txt ls: 无法访问aaa.txt: 没有那个文件或目录
< 输入重定向
[root@localhost ~]# wc -l < /etc/passwd 27 左边只能是命令,不能是文件。
相关文章推荐
- shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向
- shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向
- shell介绍,命令历史,命令补全和别名 ,通配符, 输入输出重定向
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
- shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
- linux学习第二十三篇:shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
- 5周第3次课 shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
- shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
- 8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向
- shell介绍,命令历史,命令补全和别名,通配符 ,输入输出重定向
- 11.15 shell介绍 ,命令历史,命令补全和别名,通配符,输入输出重定向
- shell介绍、命令历史、 命令补全和别名 、通配符 、输入输出重定向
- shell介绍、命令历史、命令补全和别名、通配符和输入输出重定向
- 五周第三次课(11月15日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向
- shell介绍、历史命令、命令补全和别名、通配符、输入输出重定向
- 五周第三次课 2017.11.15 shell介绍、命令历史、命令补全和别名、通配符、输入输出重定向
- 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向