8.1 shell 介绍、8.2 命令历史、8.3 命令补全与别名、8.4 通配符、8.5 输入输出重定向

8.1 sehll 介绍

什么是shell

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

支持特定的语法,比如逻辑判断,循环.

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

centos7 默认的shell 为bash( Bourne Agin shell )

还有zsh ,ksh等

8.2 命令历史

/root/.bash_history ;命令历史放置文件

[[email protected] ~]# ls /root/.bash_history/root/.bash_history

[[email protected] ~]# cat !$cat /root/.bash_history

history ;查看系统存储的命令,最多可以存储1000条

[[email protected] ~]# history | tail
  995  make install  996  echo $?  997  ls /usr/local/apache2  998  init 0
  999  ls /root/.bash_history 1000  cat $! 1001  ls /root/.bash_history 1002  cat /root/.bash_history 1003  history 1004  history | tail
[[email protected] ~]#

可以看到有1004 条,是因为还没有写入到文件中,暂时存在于内存中

echo $HISTSIZE ; 查看变量的值

[[email protected] ~]# echo $HISTSIZE1000[[email protected] ~]#

history -c ; 清空内存中的历史命令,并不会清空 /root/.bash_history 中保存的命令

[[email protected] ~]# history -c[[email protected] ~]# history
    8  history
    [[email protected] ~]# cat .bash_history | tailcd ..lscd httpd-2.2.32 lsmakeecho $?make installecho $?ls /usr/local/apache2
init 0[[email protected] ~]#

当退出当前终端时,内存中保存的命令会保存到 /root/.bash_history 文件中去

vim /etc/profile ; 在配置文件中修改 HISTTORY 变量的值

[[email protected] ~]# vim /etc/profileHOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=2000if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth

source /etc/profile ; 重新加载文件之后,HISTSIZE 变量的值在会改变

[[email protected] ~]# echo $HISTSIZE1000[[email protected] ~]# source /etc/profile[[email protected] ~]# echo $HISTSIZE2000[[email protected] ~]#

HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " ; 设置命令历史显示格式

[[email protected] ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " [[email protected] ~]# echo $HISTTIMEFORMAT%Y/%m/%d %H:%M:%S
[[email protected] ~]# history
    8  2017/06/25 12:27:07 history    9  2017/06/25 12:31:05 cat .bash_history   10  2017/06/25 12:31:14 cat .bash_history | tail   11  2017/06/25 12:35:08 cat /etc/profile   12  2017/06/25 13:10:00 vim /etc/profile   13  2017/06/25 13:14:38 echo $HISTORY   14  2017/06/25 13:15:34 echo $HISTTORY   15  2017/06/25 13:16:10 echo $HISTSIZE   16  2017/06/25 13:16:47 source /etc/profile   17  2017/06/25 13:17:13 echo $HISTSIZE   18  2017/06/25 13:19:55 history   19  2017/06/25 13:25:16 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 
   20  2017/06/25 13:25:37 echo $HISTTIMEFORMAT   21  2017/06/25 13:25:49 history
[[email protected] ~]#

只在当前终端生效,如果要在别的中终端生效,需要将变量加入到/etc/profile中

[[email protected] ~]# vim /etc/profileHISTSIZE=2000HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "[[email protected] ~]# source /etc/profile

chattr +a /root/.bash_history ; 给文件设置 a 权限,防止被删除

[[email protected] ~]# chattr +a /root/.bash_history[[email protected] ~]# lsattr /root/.bash_history-----a---------- /root/.bash_history
[[email protected] ~]#

!! 表示执行上一条命令,也就是命令历史中的最后一条命令

[[email protected] ~]# ls111.txt  1.txt  1.txt.1  2.txt  3.txt  anaconda-ks.cfg  httpd-2.2.32.tar.gz
[[email protected] ~]# !!ls111.txt  1.txt  1.txt.1  2.txt  3.txt  anaconda-ks.cfg  httpd-2.2.32.tar.gz

[[email protected] ~]# w
 13:43:44 up  5:12,  2 users,  load average: 0.00, 0.01, 0.05USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.86.1     08:32    8.00s  0.21s  0.06s w
root     pts/1    192.168.86.1     13:33    9:04   0.03s  0.03s -bash
[[email protected] ~]# !!w 13:43:46 up  5:12,  2 users,  load average: 0.00, 0.01, 0.05USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.86.1     08:32    2.00s  0.16s  0.01s w
root     pts/1    192.168.86.1     13:33    9:06   0.03s  0.03s -bash
[[email protected] ~]#

!n ;表示执行命令历史里的第n条命令,n 表示第几条命令

[[email protected] ~]# history
    8  2017/06/25 12:27:07 history    9  2017/06/25 12:31:05 cat .bash_history   10  2017/06/25 12:31:14 cat .bash_history | tail   11  2017/06/25 12:35:08 cat /etc/profile   12  2017/06/25 13:10:00 vim /etc/profile   13  2017/06/25 13:14:38 echo $HISTORY   14  2017/06/25 13:15:34 echo $HISTTORY   15  2017/06/25 13:16:10 echo $HISTSIZE   16  2017/06/25 13:16:47 source /etc/profile   17  2017/06/25 13:17:13 echo $HISTSIZE   18  2017/06/25 13:19:55 history   19  2017/06/25 13:25:16 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S " 
   20  2017/06/25 13:25:37 echo $HISTTIMEFORMAT   21  2017/06/25 13:25:49 history   22  2017/06/25 13:31:12 vim /etc/profile   23  2017/06/25 13:33:21 source /etc/profile   24  2017/06/25 13:39:08 chattr +a /root/.bash_history   25  2017/06/25 13:39:38 lsattr /root/.bash_history   26  2017/06/25 13:43:18 ls   27  2017/06/25 13:43:40 W   28  2017/06/25 13:43:43 w   29  2017/06/25 13:45:46 history
[[email protected] ~]# !17echo $HISTSIZE2000[[email protected] ~]#

!+字符串 ;表示执行以字符串开头的,history中最近的一条命令

[[email protected] ~]# history | tail -n 7
   29  2017/06/25 13:45:46 history   30  2017/06/25 13:46:00 echo $HISTSIZE   31  2017/06/25 13:50:11 w   32  2017/06/25 13:53:03 history | tail   33  2017/06/25 13:53:18 history | tail -n 3
   34  2017/06/25 13:53:32 history | tail -n3   35  2017/06/25 13:53:47 history | tail -n 7[[email protected] ~]# [[email protected] ~]# !echoecho $HISTSIZE2000[[email protected] ~]# !ww 13:50:11 up  5:19,  2 users,  load average: 0.00, 0.01, 0.05USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.86.1     08:32    3.00s  0.17s  0.01s w
root     pts/1    192.168.86.1     13:33   15:31   0.03s  0.03s -bash
[[email protected] ~]#

8.3 命令补全与别名

tab 键命令补全

  • 敲一下 补全命令或路径
  • 敲两下 列出当前目录下的所有文件

yum install -y bash-completion ;安装包之后tab键可以补全命令的参数

  • 安装完之后需要重新启动系统,才能生效
[[email protected] ~]# rpm -q bash-completionbash-completion-2.1-6.el7.noarch
[[email protected] ~]# systemctl restart network

alias restartnet=‘systemctl restart network.service‘ ; 设置别名

[[email protected] ~]# alias restartnet=‘systemctl restart network.service‘[[email protected] ~]# restartnet[[email protected] ~]#

alias ; 列出系统所有的别名

[[email protected] ~]# aliasalias 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 restartnet=‘systemctl restart network.service‘alias rm=‘rm -i‘alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘[[email protected] ~]#

/root/.bashrc /etc/profile.d ; 定义alias 的文件

  • /root/.bashrc
[[email protected] ~]# cat /root/.bashrc# .bashrc# User specific aliases and functionsalias rm=‘rm -i‘alias cp=‘cp -i‘alias mv=‘mv -i‘# Source global definitionsif [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi
[[email protected] ~]#
  • /etc/profile.d 下的脚本文件中
[[email protected] ~]# ls /etc/profile.d256term.csh         colorgrep.csh  colorls.sh  less.csh  vim.sh256term.sh          colorgrep.sh   lang.csh    less.sh   which2.csh
bash_completion.sh  colorls.csh    lang.sh     vim.csh   which2.sh

unalias restartnet ; 取消自定义的别名

[[email protected] ~]# unalias restartnet[[email protected] ~]# restartnet-bash: restartnet: 未找到命令
[[email protected] ~]#

8.4 通配符

* 任意个任意字符

[[email protected] ~]# ls *.txt111.txt  1.txt  2.txt  3.txt

[[email protected] ~]# ls *txt*111.txt  1.txt  1.txt.1  2.txt  3.txt

[[email protected] ~]# ls 1*111.txt  1.txt  1.txt.1[[email protected] ~]#

? ;表示一个任意字符

[[email protected] ~]# ls ?.txt1.txt  2.txt  3.txt
[[email protected] ~]#

ls [1-9].txt ; 列出包含数字的文件 [0-9],[123],[23],[a-z],[A-Z],[0-9a-zA-Z]

[[email protected] ~]# ls [0-9].txt1.txt  2.txt  3.txt
[[email protected] ~]# le [23].txt-bash: le: 未找到命令
[[email protected] ~]# ls [23].txt2.txt  3.txt
[[email protected] ~]#

ls {1,2,3}.txt ; 列出包含花括号当中的文件

[[email protected] ~]# ls {1,2}.txt1.txt  2.txt

[[email protected] ~]# ls {1,2,3}.txt1.txt  2.txt  3.txt
[[email protected] ~]#

8.5 输入输出重定向

cat 1.txt > 2.txt ;重定向,将前一个命令的结果重定向到后面的文件中

[[email protected] ~]# cat  2.txt1234567890[[email protected] ~]# cat 1.txtchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin

[[email protected] ~]# cat 1.txt > 2.txt[[email protected] ~]# cat 2.txtchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
[[email protected] ~]#

cat 1.txt >> 2.txt ; 追加重定向,将前面命令的输出追加到后面的文件中

[[email protected] ~]# cat 1.txtchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin

[[email protected] ~]# cat 2.txtchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin

[[email protected] ~]# cat 1.txt >> 2.txt[[email protected] ~]# cat 2.txtchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin
[[email protected] ~]#

lsaa 2> a.txt ; 错误重定向

[[email protected] ~]# touch a.txt[[email protected] ~]# lsaaa -bash: lsaaa: 未找到命令
[[email protected] ~]# lsaaa 2> a.txt[[email protected] ~]# cat a.txt-bash: lsaaa: 未找到命令
[[email protected] ~]#

lsaa 2>> a.txt ; 追加错误重定向

[[email protected] ~]# cat a.txt-bash: lsaaa: 未找到命令
[[email protected] ~]# lsaaa 2>> a.txt[[email protected] ~]# lsaaa 2>> a.txt[[email protected] ~]# cat a.txt-bash: lsaaa: 未找到命令
-bash: lsaaa: 未找到命令
-bash: lsaaa: 未找到命令
[[email protected] ~]#

ls [23].txt aaa.txt &> a.txt ; &> 相当于 2> + >

[[email protected] ~]# ls [23].txt  aaa.txt  &> a.txt[[email protected] ~]# cat a.txtls: 无法访问aaa.txt: 没有那个文件或目录
2.txt3.txt[[email protected] ~]#

ls [23].txt aaa.txt &>> a.txt ; &>> 相当于 2>> + >>

[[email protected] ~]# ls [23].txt  aaa.txt  &>> a.txt[[email protected] ~]# cat a.txtls: 无法访问aaa.txt: 没有那个文件或目录
2.txt3.txtls: 无法访问aaa.txt: 没有那个文件或目录
2.txt3.txt[[email protected] ~]#

ls [23].txt aaa.txt > 1.txt 2> a.txt ; 将正确输出和错误输出到不同的文件中

[[email protected] ~]# ls [23].txt  aaa.txt  > 1.txt  2> a.txt[[email protected] ~]# cat 1.txt2.txt3.txt
[[email protected] ~]# cat a.txtls: 无法访问aaa.txt: 没有那个文件或目录
[[email protected] ~]#

wc -l <2.txt ; 输入重定向,左边一定是一个命令,不能是文件

[[email protected] ~]# cat 2.txtchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologinchrony:x:997:995::/var/lib/chrony:/sbin/nologinaming:x:1000:1000::/home/aming:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bashtcpdump:x:72:72::/:/sbin/nologinnginx:x:996:994:Nginx web server:/var/lib/nginx:/sbin/nologin

[[email protected] ~]# wc -l <2.txt10[[email protected] ~]#
时间: 2024-10-03 13:38:48

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 输入输出重定向 # Linux shell 基础 # 8.1 shell 介绍 - 什么是shell 1. shell 是一个命令解释器,提供用户和机器之间的交互 2. 支持特定语法,比如逻辑判断.循环 3. 每个用户都可以有自己特定的shell 4. CentOS7 默认shell 为bash (Bourne Agin Shell) 5. 还有zsh.ksh等 ``` [[email protected]

五周第三次课(1月10日) 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.5 输入输出重定向

五周第三次课(1月10日)8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 history命令: 用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件. 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令.例如,要执行第2个历史命令,则输入!2. 历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取.在内存中,历史命令仅能够存储1000条历史命

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

8.1 shell介绍.查找一下有没有这2个安装文件8.2 命令历史环璄1000,所以只能存1000条记录'有时候查到比1000多了,那是因为输入的命令还没有写进这个文件,只存在内存中history -c 是删除内存的记录,不会删除存命令的配置文件只有退出终端的时候才会保存到配置文件里vi /etc/profile修改HISTSIZE=5000,保存退出后要source一下值才会更改改更变量的模式,只在当前的终端生效%Y年份%m月%d日 %H时%M分%S秒要使其它终端生效,就要添加到profil

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

8.1 shell介绍 1. shell是一个命令解释器,提供用户和机器之前的交换 2. 每个用户都可以有自己特定的shell 3. CentOS7默认shell是bash(Bourne Agin Shell); shell还有zsh.ksh等 zsh.ksh这两种shell命令没有安装, 可以用yum list搜索下这两个命令的安装包: [[email protected] ~]# yum list |grep zsh [[email protected] ~]# yum list |grep

五周第三次课 8.1 shell介绍 8.2 命令历史 8.3 命令补全和别名 8.4 通配符 8.

8.1 shell介绍8.2 命令历史8.3 命令补全和别名8.4 通配符8.5 输入输出重定向 8.1 shell介绍 shell是一个命令解释器,提供用户和机器之间的交互支持特定语法,比如逻辑判断.循环(if for whell)每个用户都可以有自己特定的shellCentOS7默认shell为bash(Bourne Agin Shell)还有zsh.ksh等 yum list |grep zsh 搜索yum 中是否有zsh # yum list |grep ksh 8.2 命令历史 she

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

shell介绍 shell是一个命令解释器,提供用户和机器之间的交互,支持特定语法,比如逻辑判断.循环,每个用户都可以有自己特定的shell CentOS7默认shell为bash(Bourne Agin Shell) 还有zsh.ksh等 命令历史 查看历史命令 [[email protected] ~]# cat .bash_history 修改历史记录条数: vi /etc/profile HISTSIZE=1000 修改查看历史记录的格式: /etc/profile中新增: HISTTI

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

8.1 shell介绍 shell 是一个命令解释器,提供用户和机器之间的交互 支持特定语法,比如逻辑判断,循环 每个用户都可以有自己特定的shell CentOS7默认shell 为bash(Bourne Agin Shell) 还有zsh.ksh等 yum zsh和ksh [[email protected] ~]# 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

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

一.shell介绍 shell是系统跟计算机硬件交互使用的中间介质,它只是系统的一个工具.shell和计算机硬件之间还有一层东西--系统内核.若把计算机硬件比作人的躯体,那系统内核就是大脑,shell就是五官.用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作. shell是一个命令解释器,提供用户和机器之间的交互. 每个用户都可以有自己特定的shell. centos7默认的shell为bash(Bou

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

一.shell介绍 shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员. shell是系统跟计算机硬件交互使用的中间介质,一个系统工具.实际上在shell和计算机硬件之间还有一层--系统内核.如果吧计算机比作人的躯体,那系统内核就是人的大脑,至于shell,把它比做人的五官更贴切. 其实,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传给系统内核,接着内核再去支配计算机硬件去执行各种操作. CentOS安装的she