命令解释符--shell

命令解释符--shell

一、概述

  • 概念:

    • shell:壳,命令解释器,负责解析用户输入的命令
    • 图:
  • 分类:

    • 内置命令 (shell内置),shell为了完成自我管理和基本的管理,不同的shell内置不同的命令,但是大部分都差不多
    • 外置命令,在文件系统的某个目录下,有个与命令名称相同的文件
  • type命令:

    • 作用:查看命令是内置命令、外置命名、alias命令

    • 格式:

      复制代码
      type	-参数		命令名
    • 参数:

      参数 解释
      -a 列出当前命令可以如何执行
      -t 仅列出命令按照哪种方式执行
    • 例:

      复制代码
      [root@localhost Desktop]# type -a cat
      cat is /usr/bin/cat
      [root@localhost Desktop]# type -t cat
      file
      [root@localhost Desktop]# type -t ls
      alias
      [root@localhost Desktop]# type -a ls
      ls is aliased to `ls --color=auto'
      ls is /usr/bin/ls
      [root@localhost Desktop]# type -a type
      type is a shell builtin
      type is /usr/bin/type
      [root@localhost Desktop]# type -a echo
      echo is a shell builtin
      echo is /usr/bin/echo
  • 执行原理:

    • 系统为了让用户在命令行快速方便地执行命令,将可执行文件的路径存储在环境变量PATH中,使得shell知道命令的可执行文件位置.

    • PATH环境变量:当用户每次执行外部命令的时候都会去该变量所记录的路径下搜索和命令同名的二进制文件,如果有则执行该二进制文件,如果没有则提示命令找不到。

    • 查询环境变量

      复制代码
      [root@localhost Desktop]# echo $PATH
      /root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
    • 修改环境变量

      • 临时修改环境变量

        复制代码
        # 将/mnt添加刀片环境变量中(临时修改)
        [root@localhost Desktop]# PATH=$PATH:/mnt
        [root@localhost Desktop]# echo $PATH
        /root/.local/bin:/root/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/mnt
      • 永久修改环境变量:修改配置文件 ~/.bash_profile

        复制代码
        # 1. 使用命令 vim 进入编辑模式
        vim		~/.bash_profile
        # 2. 在编辑模式下,在末尾进行环境变量声明
        export	PATH=$PATH:/mnt
        # 3. 使用source命令执行~/.bash_profile
        # source:是一个 shell 内置命令,也可以用 . 来表示。它的作用是读取并执行指定文件中的命令,在当前 shell 进程中生效,而不是在子 shell 中执行。
        # 在当前 shell 环境中执行 ~/.bash_profile 文件中的命令,以更新当前 shell 的环境变量和配置。
        source	~/.bash_profile

二、Linux中的特殊符号

特殊符号 功能 说明
可以使用分号分隔多条命令 在一行输入和执行多条较短的命令,可使用分号来分隔命令
* 匹配任意零个或多个字符 不能用于创建文件
? 匹配任意单个字符 不能用于创建文件
\[\] 匹配方括号中的任意一个字符,表示范围可以用"-" 不能用于创建文件
\[:alpha:] 匹配字母(不分大小写) 不能用于创建文件
\[:lower:] 匹配小写字母 不能用于创建文件
\[:upper:] 匹配大写字母 不能用于创建文件
\[:digit:] 匹配数字 不能用于创建文件
\[:punct:] 匹配符号 不能用于创建文件
\[:space:] 匹配空格 不能用于创建文件
\[:alnum:] 匹配字母和数字 不能用于创建文件
\^或者! 匹配方括号中的任意一个字符或数字后进行取反 用于查找和删除文件,不能用于创建文件
{string,string} 匹配括号中的任意一个字符串,表示范围时,字符之间用"..." 可用于创建、查看、删除文件
\ 转义符号,使\后面的特殊字符失效 例如:可以在命令行后面加一个\,再按回车键时并不表示执行该命令,而是表示换行,通过此方式将一个较长的命令分成多行表达,增强命令的可读性。换行后系统自动显示提示符 >
` 反引号,一般用于引用命令,执行的时候反引号里的命令会被执行,与$()作用相反 例:touch redhat-`date +%m-%d`,
' ' 单引号,将单引号内的所有内容原样输出 所有特殊字符在单引号里面都会失去特殊含义
" " 双引号,除了几个特殊字符外,将双引号内的几乎所有内容都原样输出 "$"、"\"、"`"、"!" 等在双引号里面仍然保留自己的特殊含义
  • \[:space:\] \[:punct:\]

    • 匹配空格或符号
    • 只能匹配一个字符,匹配范围是空格或者符号
    • 第一组中括号\[\]是一个集合,匹配一个字符,中间的每一个\[\]表示集合中的一个元素, 是匹配的范围。

三、命令别名

  • 作用:命令的快捷方式,对于需要经常执行,且要很长时间输入的长命令很有用

  • 格式:

    复制代码
    alias 别名='原命令 - 参数'
  • 查看别名

    复制代码
    [root@localhost Desktop]# 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 xzegrep='xzegrep --color=auto'
    alias xzfgrep='xzfgrep --color=auto'
    alias xzgrep='xzgrep --color=auto'
    alias zegrep='zegrep --color=auto'
    alias zfgrep='zfgrep --color=auto'
    alias zgrep='zgrep --color=auto'
  • 设置命令别名(临时)

    复制代码
    [root@localhost Desktop]# alias ping='ping -c1 -w1'
  • 删除别名

    复制代码
    [root@localhost Desktop]# unalias ping
  • 永久设置命令别名

    • 对所有用户生效,修改etc/bashrc文件,在etc/bashrc文件下添加别名

      复制代码
      # 进入/etc/bashrc的编辑模式
      vim		/etc/bashrc
      # 在编辑模式下添加别名
      alias ping='ping -c1 -w1'
      # 在当前shell环境中执行/etc/bashrc文件,以更新当前shell的环境变量和配置
      source /etc/bashrc
    • 对当前用户生效,修改 ~/.bashrc文件

      复制代码
      # 进入 ~/.bashrc的编辑模式
      vim		 ~/.bashrc
      # 在编辑模式下添加别名
      alias ping='ping -c1 -w1'
      # 在当前shell环境中执行 ~/.bashrc文件,以更新当前shell的环境变量和配置
      source  ~/.bashrc

四、历史命令

  • 作用:history命令可以查阅命令历史记录

  • 格式:

    复制代码
    history -参数
  • 命令:

    • history 查看历史命令
    • echo $HISTSIZE 查看记录命令的最大条数1000
    • history -c 清空当前进程的历史命令
    • ! 历史id 调用当前id的历史命令
    • ctrl + r 关键字 调用包含关键字的最近一次命令,按左右键进行修改,回车进行调用
  • 参数:

    • number:显示最近number条命令历史
    • -c:清空当前shell历史命令
  • 设置history记录命令条数

    复制代码
    [root@server ~]# vim /etc/profile
    # 定位:HISTSIZE=1000
    #退出后重启:reboot或者source  /etc/profile
  • 历史命令记录在 ~/.bash_history文件下

  • 例:

    复制代码
    [root@localhost Desktop]# history
        1  touch hhj
        2  stat hhj
        3  touch hhj
        4  stat hhj
        5  mkdir HHJ
        6  mkdir HHJ1 HHJ2 HHJ3
        7  touch hhj
    .............
    [root@localhost Desktop]# echo $HISTSIZE
    1000
    
    [root@localhost Desktop]# !231
    echo $HISTSIZE
    1000
    
    #CTRL+r  HIS
    (reverse-i-search)`HIS': echo $HISTSIZE

mkdir HHJ1 HHJ2 HHJ3

7 touch hhj

...

root@localhost Desktop# echo $HISTSIZE

1000

root@localhost Desktop# !231

echo $HISTSIZE

1000

#CTRL+r HIS

(reverse-i-search)`HIS': echo $HISTSIZE

复制代码
相关推荐
RisunJan6 小时前
Linux命令-pgrep (通过进程名查找进程 ID)
linux·运维
回忆2012初秋7 小时前
【Nginx】优雅地走进高性能 Web 服务器世界(1)
服务器·前端·nginx
信创工程师-小杨7 小时前
Linux内网环境如何解决依赖的问题
linux·运维·服务器
设计师小聂!7 小时前
宝塔 Linux 面板保姆级教程
linux·mysql·开源·运维开发
不吃土豆的马铃薯7 小时前
C++ 高性能网络缓冲区 Buffer 源码解析
linux·服务器·开发语言·网络·c++
java知路7 小时前
linux yum 下载docker安装包及依赖安装包,并离线安装
linux·运维·docker
小小龙学IT7 小时前
Go 泛型深度解析:从设计哲学到工程实践
服务器·数据库·golang
2601_955505257 小时前
自然人身份确权可信基础设施赋能 DID 身份合规
运维·金融·区块链·健康医疗·智能硬件·教育电商·政务
fanged7 小时前
设备树学习2--一个DTBO实验
linux·嵌入式开发
星间都市山脉8 小时前
Android STS(Security Test Suite)完整介绍与测试流程
android·java·linux·windows·ubuntu·android studio·androidx