shell基础 1 命令历史history 通符符 输入输出重定向 管道符 shell变量

1、什么是shell

  • shell是一个命令解释器,提供用户和机器之间的交互;
  • 支持特定语法,比如逻辑判断、循环
  • 每个用户都可以有自己特定的shell
  • CentOS7默认shell为bash(Bourne agin Shell)
  • 还有zsh、ksh等

2、命令历史

  • history命令;
  • .bash_history;
  • 默认最大1000条;
  • 变量HISTSIZE;
  • 修改命令历史参数文件:/etc/profile中修改;
  • 带时间显示命令历史:HISTTIMEFORMAT="%Y%m/%d%/%H:%M:%S "
  • 永久保存命令历史:chattr +a ~/.bash_history;
  • !!=上一条命令
  • !n=第n条历史命令
  • !word=上一条word命令

history命令历史

[root@bogon ~]# history |tail
  997  ngix -t
  998  nginx -t
  999  init 0
 1000  yum list |grep zsh
 1001  yum install zsh
 1002  yum install ksh
 1003  history
 1004  history |herd
 1005  history |head
 1006  history |tail

默认最大1000条;

[root@bogon ~]# echo $HISTSIZE
1000
  • -c 清除内存命令历史,但不会删除命令历史配置文件信息
[root@bogon ~]# history -c

/etc/profile中修改HISTSIZE;修改后需source /etc/profile后才生效;

[root@bogon ~]# vi /etc/profile
[root@bogon ~]# echo $HISTSIZE
1000
[root@bogon ~]# source /etc/pofile
-bash: /etc/pofile: 没有那个文件或目录
[root@bogon ~]# source /etc/profile
[root@bogon ~]# echo $HISTSIZE
10000

HISTTIMEFORMAT="%Y%m/%d%/%H:%M:%S " 环境变量带时间显示命令历史;

[root@bogon ~]# HISTTIMEFORMAT="%Y%m/%d%/%H:%M:%S "
[root@bogon ~]# echo $HISTTIMEFORMAT
%Y%m/%d%/%H:%M:%S
[root@bogon ~]# history |head
   12  201805/29%/21:37:30 q
   13  201805/29%/21:37:30 quit
   14  201805/29%/21:37:30 ex
   15  201805/29%/21:37:30 q!
   16  201805/29%/21:37:30 cd /etc/sysconfig/network-scripts
   17  201805/29%/21:37:30 ls
   18  201805/29%/21:37:30 vi ifcfg-ens33
   19  201805/29%/21:37:30 ZZ
   20  201805/29%/21:37:30 service network restart
   21  201805/29%/21:37:30 y

永久保存命令历史:chattr +a ~/.bash_history;

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

!!=上一条命令

[root@bogon ~]# history |head
   12  201805/29%/21:37:30 q
   13  201805/29%/21:37:30 quit
   14  201805/29%/21:37:30 ex
   15  201805/29%/21:37:30 q!
   16  201805/29%/21:37:30 cd /etc/sysconfig/network-scripts
   17  201805/29%/21:37:30 ls
   18  201805/29%/21:37:30 vi ifcfg-ens33
   19  201805/29%/21:37:30 ZZ
   20  201805/29%/21:37:30 service network restart
   21  201805/29%/21:37:30 y
[root@bogon ~]# !!
history |head
   12  201805/29%/21:37:30 q
   13  201805/29%/21:37:30 quit
   14  201805/29%/21:37:30 ex
   15  201805/29%/21:37:30 q!
   16  201805/29%/21:37:30 cd /etc/sysconfig/network-scripts
   17  201805/29%/21:37:30 ls
   18  201805/29%/21:37:30 vi ifcfg-ens33
   19  201805/29%/21:37:30 ZZ
   20  201805/29%/21:37:30 service network restart
   21  201805/29%/21:37:30 y

!n=第n条历史命令;例:第125条历史命令

[root@bogon ~]# !125
ls
anaconda-ks.cfg  linux  linux1  test  test3

!head=上一条head命令

[root@bogon ~]# !head
head -5 /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes

3、命令和文件名补全

  • tab键,唯一时敲一下,多选时敲两下
  • 参数补全,安装bash-completion,安装完后需重启
  • alias别名给命令重新起个名字;
  • 各用户都有自己配置别名的文件~/.bashrc
  • ls /etc/profile.d/
  • 自定义的alias放到~/.bashrc

参数补全,安装bash-completion,安装完后需重启

[root@bogon ~]#yum install -y bash-completion
[root@bogon ~]#shutdown -r now
[root@bogon ~]# systemctl restart network.service 
[root@bogon ~]# alias restart="systemctl restart network.service"
[root@bogon ~]# 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 restart='systemctl restart network.service'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@bogon ~]# cd /etc/profile.d/
[root@bogon profile.d]# ls
256term.csh  bash_completion.sh  colorgrep.sh  colorls.sh  lang.sh   less.sh  vim.sh      which2.sh
256term.sh   colorgrep.csh
[root@bogon profile.d]# cd
[root@bogon ~]# unalias restart
[root@bogon ~]# restart
-bash: restart: 未找到命令

4、通配符

  • ls *.txt
  • ls ?.txt
  • ls [0-9].txt
  • ls {1,2}.txt
[root@bogon ~]# mkdir 1.txt
[root@bogon ~]# mkdir 2.txt
[root@bogon ~]# mkdir 3.txt
[root@bogon ~]# ls
1.txt  2.txt  3.txt  anaconda-ks.cfg  linux  linux1  test  test3
[root@bogon ~]# ls *.txt
1.txt:

2.txt:

3.txt:
[root@bogon ~]# ls ?.txt
1.txt:

2.txt:

3.txt:
[root@bogon ~]# touch 4.txt
[root@bogon ~]# ls ?.txt
4.txt

1.txt:

2.txt:

3.txt:
[root@bogon ~]# ls [0,3].txt
[root@bogon ~]# ls [0-3].txt
1.txt:

2.txt:

3.txt:
[root@bogon ~]# ls [0-3].txt
1.txt:

2.txt:

3.txt:
[root@bogon ~]# ls [234].txt
4.txt

2.txt:

3.txt:
[root@bogon ~]# ls {1,3}
[root@bogon ~]# ls {1,3}.txt
1.txt:

3.txt:

5、输入输入出重定向

  • cat 1.txt > 2.txt
  • cat 1.txt >> 2.txt
  • ls aaa.txt 2>err
  • ls aaa.txt 2>>err
  • wc -l <1.txt
  • command >1.txt 2>&1
  • <输入重定向;
  • 输出重定向;

  • 2>错误重定向;
  • 追加输出重定向;


[root@bogon ~]# lsaaa
-bash: lsaaa: 未找到命令
[root@bogon ~]# lsaaa 2>4.txt
[root@bogon ~]# cat 4.txt
-bash: lsaaa: 未找到命令
[root@bogon ~]# lsaaa 2>>4.txt
[root@bogon ~]# cat 4.txt
-bash: lsaaa: 未找到命令
-bash: lsaaa: 未找到命令
[root@bogon ~]# touch a.txt
[root@bogon ~]# touch b.txt
[root@bogon ~]# wc -l < a.txt
0
[root@bogon ~]# ls [12].txt a.txt &> b.txt
[root@bogon ~]# cat a.txt
[root@bogon ~]# cat b.txt
a.txt

1.txt:

2.txt:

6、管道符后作业控制

  • | 将前一个指令的输出作为后一个指令的输入
[root@bogon ~]# ls
1.txt  2.txt  3.txt  4.txt  anaconda-ks.cfg  a.txt  b.txt  err  linux  linux1  test  test3
[root@bogon ~]# ls |wc -l
12
  • ctrl z暂停一个任务
  • jobs查看后台的任务
  • bg[id]把任务调到后台
  • fg[id]把任务调到前台
  • 命令后面加&直接丢到后台
[root@bogon ~]# vim a.txt

[1]+  已停止               vim a.txt
[root@bogon ~]# cat b.txt
a.txt

1.txt:

2.txt:
[root@bogon ~]# fg
vim a.txt

[1]+  已停止               vim a.txt
[root@bogon ~]# jobs
[1]+  已停止               vim a.txt
[root@bogon ~]# vim b.txt

[2]+  已停止               vim b.txt
[root@bogon ~]# fg 2
vim b.txt

[2]+  已停止               vim b.txt
[root@bogon ~]# bg 1
[1]- vim a.txt &

7、shell 变量

  • PATH,HOME.PWD,LOGNAME
  • env命令 查看系统常用变量
  • set命令多了很多变量,并且包括用户自定义的变量
  • 自定义变量a=111
  • 变量名规则:字母、数字下划线,首位不能为数字
  • 变量值有特殊符号时需要用单引号括起来
  • 变量的累加
  • 全局变量export b=2
  • unset变量

env命令 查看系统常用变量 [root@bogon ~]# env XDG_SESSION_ID=1 HOSTNAME=bogon SELINUX_ROLE_REQUESTED= TERM=xterm SHELL=/bin/bash HISTSIZE=10000 SSH_CLIENT=192.168.10.1 56991 22 SELINUX_USE_CURRENT_RANGE= SSH_TTY=/dev/pts/0 USER=root

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.10.1 56991 192.168.10.100 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env

set命令多了很多变量,并且包括用户自定义的变量

[root@bogon ~]# set

自定义变量a=111

[root@bogon ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@bogon ~]# a=111
[root@bogon ~]# echo $a
111
  • 变量名规则:字母、数字下划线,首位不能为数字
  • 变量值有特殊符号时需要用单引号括起来
  • 变量的累加
[root@bogon ~]# a_1=3
[root@bogon ~]# echo $a_1
3
[root@bogon ~]# 1a=2
-bash: 1a=2: 未找到命令
[root@bogon ~]# a=a b c
-bash: b: 未找到命令
[root@bogon ~]# a='a b c '
[root@bogon ~]# echo $a
a b c
[root@bogon ~]# a="a b c"
[root@bogon ~]# echo $a
a b c
[root@bogon ~]# a="a$bc"
[root@bogon ~]# echo $a
a
[root@bogon ~]# a='a$bc'
[root@bogon ~]# echo $a
a$bc
[root@bogon ~]# a=1
[root@bogon ~]# b=2
[root@bogon ~]# echo $a$b
12
[root@bogon ~]# a='a$bc'
[root@bogon ~]# echo $a$b
a$bc2

pstree命令会把linux系统中的所有进程以树形结构显示出来。安装命令:yum install -y psmisc

[root@bogon ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon───{dbus-daemon}
        ├─firewalld───{firewalld}
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
  • 全局变量export ;仅在当前 shell 里有效
  • unset变量
[root@bogon ~]# export b=2
[root@bogon ~]# echo $b
2
[root@bogon ~]# unset b
[root@bogon ~]# echo $b

[root@bogon ~]#

8、环境变量配置文件

系统环境变量配置文件

  • /etc/profile 用户环境变量,交互,登录才执行
  • /etc/bashrc 用户不用登录,执行shell就生效

用户环境变量配置文件

  • ~/.bashrc 该文件包含专属于自己的shell的bash信息,当登陆或每次打开新的shell时,该文件被读取
  • ~/.bash_profile
  • ~/.bash_history 记录命令历史文件
  • ~/.bash_logout shell退出时,需要执行的动作,如删除命令历史记录
[root@bogon ~]#vim .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
~                                                                                                                                          
".bash_profile" 12L, 176C

source =. 加载配置文件生效

[root@bogon ~]# vim .bash_profile
[root@bogon ~]# source .bash_profile
[root@bogon ~]# ..bash_profile^C
[root@bogon ~]# vim .bashrc
计算机网络期末复习题 201708-201801计算机网络复习指导发布-校考学生!!下载截止于12.5日晚上9点 2017-12-04 23:07 计算机网络复习指导-校内考试 §1.名词解释: 1. 计算机网络 2.网络体系结构 3.高速以太网 4.静态路由选择 5. 动态路由选择 6.子网掩码 8.动态主机配置协议 9.套接字 10.客户/服务器模型(C/S模型) 11.域名系统(DNS) 12.光纤分布式数据接口FDDI §2.简答题: 1.试谈你对网络安全的威胁和防病毒技术的认识。(线下教学课件) 2.简述物理层的四个特性。(线下教学课件) 3.计算机网络的组成(P2-P3) 4.计算机网络的功能(P3) 5.计算机网络标准化的相关组织(P4+线下教学课件) 6.计算机网络的性能指标(P8+线下教学课件) 7.简述你所知道的网络传输介质(P33-34) 8.物理层的四个特性(P34) 9.简述四种帧边界的划分方法(即组帧方法)。(P52-54+线下教学课件) 10.简述停止-等待流量控制(协议)。(P59+P62-P64+线下教学课件) 11.简述时分多路复用(P69+线下教学课件) 12.简述频分多路复用(P68+线下教学课件) 13.简述IPv4地址的分类(P122-123) 14.UDP数据报与IP分组的区别(P187) §3.论述题: 1.试说明数据链路层原语和协议的转换。(线下教学课件) 2.描述常规释放的过程,并画出其示意图。(线下教学课件) 3.奈奎斯特定理公式和香农定理公式的主要区别是什么? 4.试比较电路交换、报文交换和分组交换等三种数据传输方式。(P27-29) 5.谈谈你对差错控制方法的理解。(P54-58+线下教学课件) 6.谈谈域名解析过程(P225-226) 7.ARP和DNS是否有些相似?它们有何区别?(P227) 8.FTP的工作原理。(P228)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值