20170714 linux入门(一)

内容简要

1.Shell简介
2.内部命令与外部命令
3.hash缓存表
4.别名alias


1.Shell简介

Shell提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

  • 显示当前使用的Shell
    echo $SHELL

  • 显示当前系统可以使用的Shell
    cat /etc/shells

2.内部命令与外部命令

Shell中可以执行的命令分为内部命令外部命令两种,内部命令内建于Shell中,外部命令是Shell外的可执行文件。

  • 区分内部命令与外部命令
    type COMMAND
  • 查看全部内部命令
    helpenable均可
  • 启用某个内部命令
    enable COMMAND
  • 禁用某个内部命令
    enable -n COMMAND
  • 查看所有禁用的内部命令
    enable -n

3.Hash缓存表

当一个Shell会话中第一次使用某个外部命令时,Shell会首先按照$PATH中的路径依次搜索,并将搜索到的路径缓存至hash表中。当此次会话再使用本命令时,直接使用内存中的hash表缓存,加快程序运行速度。

  • 显示所有hash缓存命令和被命中(Hit)的次数
    hash

  • 显示所有hash的命令
    hash -l

  • 将命令的全路径path起别名name
    hash -p path name

  • 打印name的hash缓存
    hash -t name

  • 删除name的hash缓存
    hash -d name
    此处需要注意name并非一定是命令,应该使用hash -l查看最后一列确认

  • 清空所有hash缓存
    hash -r

4.别名alias

  • 显示当前shell会话的所有别名
    alias

  • 命名别名NAME,等于执行命令VALUE
    alias NAME=VALUE

  • 撤销别名NAME,-a撤销所有别名
    unalias [-a] NAME

alias和unalias操作只在此会话中有效,若要每次登录时别名都生效,需要在配置文件中进行修改

  • 仅修改本用户的设置,~/.bashrc
  • 修改所有用户的设置,/etc/.bashrc

**编辑后的配置文件不会立即生效,需要bash重新读取配置文件 **
. ~/.bashrc 或者
source ~/.bashrc 均可

  • 若别名与原命令同名,强制使用原命令可以有如下三种方法
    1. 'COMMAND'
    2. \COMMAND
    3. /PATH/COMMAND 执行命令绝对路径

总结:命令在Shell中的执行过程

  1. 输入命令,回车执行
  2. 先判断本命令是否是别名:若是,则按照别名的定义解析后进入步骤3;若否,直接进入步骤3
  3. 判断命令是否为内部命令:若是,则直接运行;若否,则进入步骤4
  4. 查询hash缓存表中是否有记录:若有,则直接按照缓存记录的路径执行;若否,则进入步骤5
  5. 按照$PATH的路径顺序依次查询:若查询到,按照查询的地址执行命令并将地址缓存至hash表;若没有查询到,则报错。

你可能感兴趣的:(20170714 linux入门(一))