shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向

8.1 shell介绍

•shell是一个命令解释器,提供用户和机器之间的交互

• 支持特定语法,比如逻辑判断、循环

• 每个用户都可以有自己特定的shell

• CentOS7默认shell为bash(Bourne Agin Shell)

• 还有zsh、ksh等

查看当前用户shell:

1.env命令

SHELL=/bin/zsh

2.echo $SHELL

➜ ~ echo $SHELL

/bin/zsh

zsh和ksh安装:

[root@localhost ~]# yum list | grep zsh

zsh.x86_64 5.0.2-25.el7_3.1 updates

zsh-html.x86_64 5.0.2-25.el7_3.1 updates

[root@localhost ~]# yum install -y zsh

[root@localhost ~]# yum list |grep ksh

ksh.x86_64 20120801-26.el7 base

mksh.x86_64 46-5.el7 base

[root@localhost ~]# yum install -y ksh

查看linux系统中支持哪些shell:

[root@localhost ~]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/zsh

/bin/ksh

/bin/rksh

修改当前用户shell:

1.chsh命令

[root@localhost]~# chsh

Changing shell for root.

New shell [/usr/bin/zsh]: /bin/bash

Shell changed.

2.vim /etc/passwd

root:x:0:0:root:/root:/bin/zsh 修改第七段用户的bash

3.usermod -s /bin/zsh root

[root@localhost]~# usermod -s /bin/zsh root

[root@localhost]~# head -n1 /etc/passwd

root:x:0:0:root:/root:/bin/zsh

8.2 命令历史

• history命令:查看历史使用命令

• .bash_history:命令历史存放目录

• 最大1000条:默认存放1000条

• 变量HISTSIZE:echo $HISTSIZE 产看历史命令记录最大值

HIASTSIZE变量的配置在/etc/profile里

• /etc/profile中修改

• HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

指定变量的模式,显示命令运行的时间

vim /etc/profile 加到HISTSIZE下面一行

source /etc/profile

1000 2017/06/29 20:09:09 history

1001 2017/06/29 20:13:31 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

1002 2017/06/29 20:13:35 history

• 永久保存 chattr +a ~/.bash_history

• !!

运行上一条命令

• !n

运行第n条命令

• !word

命令历史中最近的word开头的命令

history -c 晴空内存中的历史命令,存命令的.bash_history不会被删除。

打开终端运行的命令,都是暂存在内存中,只有退出终端时才会写入.bash_history文件。

8.3 命令补全和别名

• tab键,敲一下,敲两下

• 参数补全,安装bash-completion

centos 6中只支持补全命令;

centos 7中支持,需要安装bash-completion后重启;

yum install -y bash-completion

init 6

[root@localhost ~]# rpm -qa bash-completion

bash-completion-2.1-6.el7.noarch

[root@localhost ~]# systemctl res

rescue reset-failed restart

[root@localhost ~]# systemctl restart network

network-online.target network.service network.target

[root@localhost ~]# systemctl restart network.service

• alias别名给命令重新起个名字

alias 查看系统中所有的别名文件

• 各用户都有自己配置别名的文件 ~/.bashrc

• ls /etc/profile.d/

• 自定义的alias放到~/.bashrc

8.4 通配符

•* 任意个任意字符

ls *.txt

• ?一个任意字符

ls ?.txt

• [ ] 方括号中的任意一个字符,或的意思

ls [0-9].txt

ls [a-z].txt

ls [123].txt

ls [A-Z].txt

ls [0-9a-zA-Z].txt

• {} 花括号中的任意一个,也是或的意思,中间用,分开

ls {1,2}.txt

ls {a,c,3}.txt

8.5 输入输出重定向

• > 重定向到指定文件,覆盖已存在文件;命令错误时,错误信息不重定向,若目标文件存在,则

目标文件重置为空,目标文件不存在时新建文件。

cat 1.txt >2.txt

• >> 追加重定向;当命令错误时,错误信息不追加到文件,目标文件不存在时新建目标文件。

cat 1.txt >> 2.txt

• 2> 错误信息重定向到文件;当命令正确时,目标文件存在则重置为空,目标文件不存在则新

建目标文件。

ls aaa.txt 2>err

• 2>> 错误追加重定向;当命令正确时,目标文件存在则不追加重定向保持原样,目标文件不存

在则新建目标文件。

ls aaa.txt 2>>err

• 目标文件参数可以写成:>file1 2>file2 正确的输出重定向到file1,错误的输出重定向到file2

ls [1-3].txt 123.fie >file1 2>file2

• &> 不管正确还是错误都重定向;

• &>> 不管正确还是错误都追加重定向;

• < 输入重定向左边的命令执行

wc -l < 1.txt

 

转载于:https://my.oschina.net/u/3803404/blog/1799515

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值