• 8.1 shell介绍
  • 8.2 命令历史
  • 8.3 命令补全和别名
  • 8.4 通配符
  • 8.5 输入输出重定向
  • 什么是shell?

  1. shell是一个命令解释器,提供用户和及其之间的交互
  2. 致辞特定语法,比如逻辑判断、循环
  3. 每个用户都可以有自己特定的shell
  4. CentOS7默认shell为bash (Bourne Agin Shell)
  5. 还有zsh  、ksh等

查找zsh、ksh 包

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

autojump-zsh.noarch                       22.3.0-3.el7                 epel

zsh.x86_64                                5.0.2-28.el7                 base

zsh-html.x86_64                           5.0.2-28.el7                 base

zsh-lovers.noarch                         0.9.0-1.el7                  epel

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

ksh.x86_64                                20120801-34.el7              base

mksh.x86_64                               46-5.el7                     base

python-XStatic-Rickshaw.noarch            1.5.0.0-4.el7                epel

python-moksha-common.noarch               1.2.3-2.el7                  epel

python-moksha-hub.noarch                  1.5.3-2.el7                  epel

python-moksha-wsgi.noarch                 1.2.2-2.el7                  epel

[root@localhost ~]#

  • 命令历史

命令存放位置:

[root@localhost ~]# ls /root/.bash_history

/root/.bash_history

history 查看之前存放的命令,最大默认存放5000条,可以调整

查看存放命令大小:

[root@localhost ~]# echo  $HISTSIZE

1000

清空内存记录

[root@localhost ~]# history -c

[root@localhost ~]# history

1  history

只有当退出终端的时候命令才能保存到文件中去,/root/.bash_history

环境变量 HISTSIZE 大小在哪个地方存呢?z

vi  /etc/profile

找到 HISTSIZE, 可以修改存放大小:5000等等

执行生效: source  /etc/profile

设置命令类型:

命令时间类型:年月日时分秒

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

这个环境变量只能在当前窗口存在,再打开一个窗口就会变了

[root@localhost ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

[root@localhost ~]# echo $HISTTIMEFORMAT

%Y/%m/%d %H:%M:%S

[root@localhost ~]# history

1  2018/01/10 00:13:26history

2  2018/01/10 00:14:12clear

3  2018/01/10 00:26:13SETTIMEFARMAT="%Y%m%d %H:%M:%S"

4  2018/01/10 00:26:49$HISTTIMEFARMAT="%Y%m%d %H:%M:%S"

5  2018/01/10 00:27:01$HISTTIMEFARMAT="%Y/%m/%d %H:%M:%S"

6  2018/01/10 00:27:07HISTTIMEFARMAT="%Y/%m/%d %H:%M:%S"

7  2018/01/10 00:27:28echo $HISTTIMEFARMAT

8  2018

/01/10 00:27:34history

9  2018/01/10 00:28:07HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

10  2018/01/10 00:28:38echo $HISTTIMEFORMAT

11  2018/01/10 00:28:43history

永久生效:

vi  /etc/profile

/HISTSIZE

HISTSIZE=5000

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

source /etc/profile

永久保存 命令历史

只能增加不能删除

chattr  +a ~/.bash_history

当用户没有正常退出 exit/logout 直接把终端关闭   刚刚敲的命令就不会记录到文件中去。

!! 表示 上一条命令

!n 表示执行第n条命令

!echo    从命令历史从后往前找第一个以echo开头的命令。

!mkdir   从命令历史从后往前找第一个以mkdir开头的命令。

  • 命令补全和别名

tab 敲一下,敲两下

一个命令补全,敲一下

多个相同开头的命令,按两下选择

参数补全,安装bash-complete

yum install -y completion

查找是否安装

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

bash-completion-2.1-6.el7.noarch

按tab两下 参数补全

例如: systemctl  restart  network

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

[root@localhost ~]# alias restartnet='systemctl  restart network.service'

[root@localhost ~]# restartnet

输入alias回车,可以列出所有的别名

alias别名存在哪里?

vim   .bashrc 下

有三条alias别名

其它别名在 /etc/profile.d/下定义

vim  colors.ls 里面 有alias定义

vim  colors.grep 里面也有alias定义

取消自定义的别名:

unalias  别名名称

unalias restartnet

  • 通配符

列出所有txt类型文件,*是通配符

ls  *.txt

ls  1*

ls ?.txt  ?表示一个任意的字符

ls[0-3].txt  列出0.txt,2.txt,3.txt

ls [0-9a-z].txt  列出0-9.txt , a-z.txt

ls[0-9A-Z].txt

ls {1,2} .txt  相当于[12].txt  当中的一个或者1.txt,2.txt

  • 输入重定向和输出重定向

cat  1.txt  > 2.txt  把1.txt内容写入到2.txt 文件中;

把命令错误信息写入文件

lsaaaa 2> a.txt

cat a.txt

追加文件内容:

lslsls  2>>a.txt

&> 表示正确和错误信息 两者的结合

ls [12].txt aaa.txt &> a.txt

把1.txt 2.txt  和 错误的aaa.txt 文件 写入到a.txt

没有aaa.txt文件产生错误信息

ls[12].txt aaa.txt > 1.txt  2>a.txt

将 1.txt 2.txt 写入1.txt

把aaa.txt 产生的错误写入到a.txt

ls aaa.txt “没有那个文件” ,产生的错误信息 写入a.txt

后面的2 指定第二个 aaa.txt

aaa.txt > a.txt

wc  -l  < 1.txt 输入重定向

把右边的文件/文件内容输入到左边

wc  -l 查看文档行数

左边必须是命令!

wc -l > 1.txt  输出重定向

wc -l <1.txt  输入重定向(很少用)

随机推荐

  1. 【Linux】crontab 定时启动sh

    crontab -e 20点59分启动脚本 59 20 * * * sh /home/fzuir/xingye4crawl/endXingYe4Crawl.sh >/home/fzuir/xin ...

  2. 完美解决PHP中文乱码

    一.首先是PHP网页的编码 1. php文件本身的编码与网页的编码应匹配 a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; cha ...

  3. C# DIctionary:集合已修改,可能无法执行枚举操作

    C#中直接对集合Dictionary进行遍历并修改其中的值,会报错,如下代码就会报错:集合已修改;可能无法执行枚举操作.代码如下 public void ForeachDic() { Dictiona ...

  4. [watchdog]内核失败的重启方案

    1 在内核中配置看门狗驱动Linux-2.6.32.2 内核具有完善的S3C2440 的看梦狗驱动,我们只需配置一下就可以使用了.在内核源代码目录执行:make menuconfig,进入内核配置主菜 ...

  5. linux文件系统比较

    Linux上有许多可用的文件系统.每个文件系统都有其特定的用途,以便于特定用户解决不同的问题.本文的焦点集中在Linux平台上文件系统的主流选择.毫无疑问,其它的场景下还有一些别的选择. 文件系统:它 ...

  6. DRUPAL8模版命名规则

    DRUPAL8模版命名规则   xiaopang 星期一, 04/08/2013 - 20:04 发布 我想了半个小时,想怎么清楚简单的为大家解释drupal8的模版命名规则,但是很显然,我失败了,但 ...

  7. Hbase 学习(六) 配置文件调优

    这部分的内容,网上多了去了,都大同小异的,仅作为备忘录,省得需要的时候又要到处查. 1.zookeeper.session.timeout 默认3分钟,zookeeper和hbase通信的超时时间,设 ...

  8. UI设计 - 手机列表风格总结

    1       概述 1.1     背景 对UI设计过程中常见的列表风格进行总结.希望对后续的设计工作有所帮助 1.2     预期读者 UI设计师,用户体验设计师,项目经理,美工 1.3     ...

  9. symfony手动触发修饰html

    symfony会修饰一些标签,如input[type=file],input[type=checkbox],input[type=radio]等 有时html是页面生成后插入的,需要手动使symfon ...

  10. Form 表单验证

    #!/usr/bin/env python # -*- coding:utf- -*- import tornado.ioloop import tornado.web import re class ...