第九课 linux xhell基础知识 8.1~8.9

8.1shell介绍                                                  8.6管道符和作业控制

8.2命令历史                                                  8.7shell变量【上】

8.3命令补全和别名                                        8.8shell变量【下】

8.4通配符                                                      8.9环境变量配置文件

8.5输入输出重定向

{1}shell介绍

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

  • 搜索有没有zskksh

{2}命令历史

  • 使用过的命令,会存放在用户家目录下/root/.bash_history
  • history命令,可以查看使用过的命令历史,最多可存1000条。

  • history -c命令,可以将当前内存的命令历史清空,但是不会清空/root/.bash_history里面的命令。

  • 注意:刚刚敲过的命令,只有当用户正常退出终端时,才会保存到.bash_history文件中去。
  • 环境变量HISTSIZE/etc/profile中定义,可以vi /etc/profile,找到HISTSIZE并修改参数。

  • 然后执行命令# source /etc/profile,使修改马上生效。

  • 修改命令历史格式,可以更加方便我们能直观的查看。
  • 修改命令历史格式,可以更加方便我们能直观的查看。

  • 该格式只适用于当前终端,若想环境变量生效,需要# vim/etc/profile,在配置文件中添加。
  • HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S"

  • 然后source /etc/profile,打开其他终端,也会生效。

  • 要想命令历史永久保存并不被别人删除,运行chattr +a ~/.bash_history(只能追加,不能删除)
  • 如果不正常退出那你的命令保存的就不全。

  • !! 表示执行最后一条命令,上一次执行的命令。
  • !n 表示运行第几条命令(n代表数字)

  • !echo 表示会在命令历史里面,最近一次执行以 echo 开头的命令。

{3}命令补全和别名

  • 命令补全tab:按一次tab可以补全一个命令、一个路径或者是一个文件名;连续按两次tab键,则把所有的命令或者文件名都列出来。在centos7里支持参数自动补全,需要安装安装包bash-completion;然后重启下系统(reboot),才会生效。

  • alias别名:通过alias把一个常用且很长的命令另取名一个简单易记的指令,如果不想用了,也可以使用unalias取消别名,直接执行alias命令,则会看到系统中所有的别名。

  • alias存放:第一个在用户家目录下.bashrc文件下。
  • 第二个在 /etc/profile.d 目录下的 colorgrep.sh 、colorls.sh 这些脚本中定义的。

{4}通配符

  • 通配符*:星代表通配 ,星不仅可以放到前面也可以放到后面,列出零个或多个字符以txt结尾的文件。

  • 通配符,表示一个任意的字符。

  • 方括号[ ]:ls [0-9].txt表示0-9范围内的任意.txt文件。

  • 花括号 {}:ls {1,2,3}.txt表示括号内任意.txt文件。

{5}输入输出重定向

  • > 正确的输出
  • >>追加重定向
  • 2>错误重定向
  • 2>>错误追加重定向
  • >+2 == &> 结合正确和错误,也支持 &>>追加。
  • <输入到命令里面
  •  lsaaa 2> a.txt2大于号表示将命令产生的错误信息输入到一个文件里去。

  • lsaaa 2>>a.txt,表示错误信息追加重定向。

  • ls [12].txt aaa.txt &> a.txt 这里&>代表了把正确和错误的输出都输出到a.txt里,如图:

  • ls [12].txt aaa.txt &>> a.txt追加。

  • ls [12].txt aaa.txt > 1.txt 2>a.txt 把错误的和正确的分开输入。

  • wc -l < 1.txt 命令是1.txt的内容输入给wc -l 查看文件有多少行。不支持文件到文件,左边必须是一个命令。

{6}管道符,作业控制

  • 管道符|,将前一个指令的输出作为后一个指令的输入。
  • ls |wc -l  命令wc -l 统计文件数量。

  • Ctrl+z 暂停一个任务:当正在编辑一个文件时,可以通过Ctrl+z暂停(处于后台),回到命令窗口。

  • 使用fgforeground)命令恢复。

  • 如果暂停多个任务,可以用jobs查看在后台运行的任务。
  • jobs 可以把你停止的任务列出来。

  • 如果想重新调回,需要输入fg [id],同理也可以使用bg(background)命令放到后台运行去,用法bg [id]

  • sleep 命令;sleep 1000=意思相当于让机器休眠静止1000秒.

  • bg 1:bg放到后台运行 1是防止混淆加上好区别。

  • “&” 命令:后面加&相当于直接把任务调到后台运行。

需注意:只能当前终端下运行。

{7}shell变量【上】

  • 变量

  • env命令:查看系统常用的环境变量。

  • set命令:不仅可以查看系统内置的环境变量,还可以查看用户自定义的变量。
  • 自定义变量

  • 变量名规则:可以是字母、数字和下划线,首位不能为数字

  • 变量值有特殊符号时需要用单引号(脱义)括起来,比如带空格的 a='a b c'

  • 变量的累加,表示式复杂的时候,用双引号或者单引号引起来 如图:

{8}shell变量【下】

  • 当打开多个终端时,w可以查看当前用户。echo $SSH_TTY,可以查看当前所在终端。

  • 在终端1定义一个变量,在终端2中是查看不到

  • bashshell的一个子bash,相当于在打开一个终端,虽然也在pts1上,可以通过pstree查看在哪。

  • 远程登录sshd获得了一个bash,然后又在终端下运行了一个bash就是子,在新的的bash下运行了一个新的命令 pstree

  • 现在是在第二个bash下,第一个bash所设定的环境变量在第二个bash下不生效,如何让第一个bash的自定义环境变量在第二个bash下生效,利用全局变量:
  • 所谓的全局变量是向下的,向上不生效。

  • 想打开子sshd就用bash命令就可以。
  • 取消变量。

{9}环境变量配置文件

  • 环境变量配置文件可分为两个维度:系统层次配置文件和用户层次配置文件
  • 系统层次配置文件(/etc下的文件)如下
  1. /etc/profile 用户环境变量,交互,登录才执行
  2. /etc/bashrc 用户不用登录,执行shell就生效
  • 用户层次配置文件(用户家目录下的文件)如下
  1. ~/.bashrc
  2. ~/.bash_profile
  • 一般我们不要编辑系统层次的配置文件,在有需要时,可以编辑用户自己的配置文件.bash_profile
  • source .bash_profile. .bash_profile作用一样,加载配置文件里的配置。
  • ~/.bash_history,用来记录命令历史
  • ~/.bash_logout ,用来定义用户退出的时候需要做的一些操作。
  • ps1是在/etc/bashrc里面定义的,用于定义命令左边的字符串显示,如下图

  • 修改Ww,发现变成绝对路径

  • 去掉方括号,更换,普通用户是$表示,root用户是# 表示

  • 颜色显示

猜你喜欢

转载自blog.csdn.net/weixin_42604768/article/details/81185431