【shell基础知识】部分的 1 - 5 小节课程。

1 Shell是什么

shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕返回给用户。这种对话方式可以是交互的方式(从键盘输入命令,可以立即得到shell的回应),或非交互(脚本)的方式。换句话说,Shell是一个命令行解释器,它为用户提供一个像Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动,挂起,停止甚至是编写一些程序。
Shell还是一个功能相当请打的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
linux操作系统:Bourne Again shell(bash);

    编写脚本的时候我们通常会在第一行指定当前脚本所用的解释权,我们写脚本的时候一般都是调用bash,所以第一行我们要写上这么一行:"#!/bin/bash",要注意的是这可不是注释行哟~而是告诉内核我们用的是哪种解释器,下面的所有行,如果在出现类似的内核都会认为是注释行。

 

2 命令历史

[root@master ~]# history 

 

最大可以存储1000条命令

[root@master ~]# echo $HISTSIZE
1000

 

清空内存上的记录 

注意:.bash_history  不会删除

[root@master ~]# history -c
[root@master ~]# history 
    1  history 

 

修改默认参数

 

[root@master ~]# vim /etc/profile
HISTSIZE=1500   
[root@master ~]# source /etc/profile    #或者退出 重新登录中断

 

 

 

history 添加命令执行时间

vim /etc/profile
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[root@master ~]# source /etc/profile
%Y/%m/%d %H%:%M:%S

%Y  年份(以四位数来表示)
%m  月份(以01-12来表示)
%d  日期(以01-31来表示)
%H  小时(以00-23来表示)。
%M  分钟(以00-59来表示)
%S  秒(以本地的惯用法来表示)

 

 

历史命令永久保存

[root@master ~]# chattr +a ~/.bash_history

 

chatter: 锁定文件,不能删除,不能更改
        +a:  只能给文件添加内容,但是删除不了,
              chattr +a  /etc/passwd
        -d:      不可删除
        加锁:chattr +i  /etc/passwd       文件不能删除,不能更改,不能移动
        查看加锁: lsattr /etc/passwd      文件加了一个参数 i 表示锁定
        解锁:chattr -i /home/omd/h.txt    - 表示解除
        隐藏chattr命令:

注意:终端非正常退出 保存的记录不全

 

 

 

[root@master ~]# !!
#表示最后一跳命令

[root@master ~]# !100
#执行第N条命令 比如执行第100命令

[root@master ~]# !dig
#执行最后条(从大数到小数) dig命令

 

 

 

3 命令补全和别名

 

自动补全是Bash自带的一个强大的功能,允许通过编码指定命令参数如何补全。通常,补全脚本会放在/etc/bash_completion.d/ 目录下,方便统一启用所有补全脚本。

centos 7 下可自动补全 参数

[root@master ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.4.1708 (Core) 
Release:        7.4.1708
Codename:       Core

[root@master ~]#  yum install -y bash-completion
#安装后需要重启机子

 

 

 

 

Linux alias命令用于设置指令的别名。

用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。

 
[root@master ~]# 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'

 

alias[别名]=[指令名称]
[root@master ~]# alias lx=ls
[root@master ~]# lx

 

 

[root@master ~]# unalias lx
#删除自定义别名

 

 

4 通配符

“*”

代表任意多个字符

 

“?”

代表任意单个字符

 

“[]”

代表“[”和“]”之间的某一个字符,比如[0-9]可以代表0-9之间的任意一个数字,[a-zA-Z]可以代表a-z和A-Z之间的任意一个字母,字母区分大小写

 

“^”

表示匹配结果取反的意思,注意这个通配符必须要在[]中使用

 

 

“{}”

表示符合括号内包含的多个文件

 

 

“.”这个符合比较特殊,如果匹配的条件加上了该符合那么说明查询结果文件就包含带“.”的文件



删除1-9以.txt结尾的文件

 

格式

command [OPTION]{>,>>} [File]

 

*   匹配文件名中的任何字符串,包括空字符串。

? 匹配文件名中的任何单个字符。

[...]   匹配[ ]中所包含的任何字符。

[!...]   匹配[ ]中非感叹号!之后的字符。和^的效果一样

 

 重定向符号

>               输出重定向到一个文件或设备 覆盖原来的文件
>!              输出重定向到一个文件或设备 强制覆盖原来的文件
>>             输出重定向到一个文件或设备 追加原来的文件
<               输入重定向到一个程序

  

标准错误重定向符号

2>             将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件  b-shell
2>>           将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1         将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
>&             将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件  c-shell
|&              将一个标准错误 管道 输送 到另一个命令作为输入
在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:
1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>

 

[root@master ~]# ls -al  > list.txt

 将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!

 

[root@master ~]# ls -al >> list.txt

 将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!

 

[root@master ~]#  ls -al  1> list.txt   2> list.err

 将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err

 

[root@master ~]# ls *.log aaa.txt &> list.txt

 将显示的数据,正确的和错误的数据都输出到list.txt


[root@master ~]#  ls -al 1> list.txt 2> /dev/null

 将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。




command {<} [File] {<<} [Word]


[root@master ~]# wc -l < newfile 

  将newfile 的数据,输入到 wc -l

 





posted on 2018-12-22 22:19  彼de潘  阅读(116)  评论(0)    收藏  举报