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表;若没有查询到,则报错。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、用户登录 root 用户一个特殊的管理帐户也被称为超级用户。 Centos7中root的id是0 普通(非特权...
    不知岁月惜阅读 868评论 0 0
  • 1. 命令的概念 命令的执行过程 系统第一次执行外部命令时Hash缓存表为空,系统会先从PTAH路径下寻找命令,找...
    Aubin阅读 637评论 0 2
  • Linux学习任重道远,对于初学者来说,看到多如繁星的命令,就让人望而却步,接下来就说说Linux命令的一些入门学...
    靜默阅读 411评论 0 0
  • linux基础入门 linux是一门开源稳定性高实用的全文本的操作系统,一般实用于服务器,我们国家大多数互联网公司...
    数据革命阅读 343评论 0 0
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,203评论 2 33