Linux基础命令及命令历史

(一)Linux系统上的文件类型

使用ls命令的结果中,最左边一位表示文件类型:

  • -:常规文件,在其它程序中用f表示,可以继续使用file命令查看常规文件的类型
  • d:目录文件/directory
  • b:块设备文件/block device,支持以“block”为单位进行随机访问
  • c:字符设备文件/character device,支持以“character”为单位进行线性访问
    • ls命令查询设备文件时,结果中显示到的不是大小,而是两个数字,称为主号和次号,一般用8位二进制表示,逗号分隔
    • 主号:major number/主设备号,用于标识设备类型,进而确定要加载的驱动程序
    • 次号:minor number/次设备号,用于标识同一种类型下的不同的具体设备
  • l:符号链接文件/symbolic link
  • p:命名管道/pipe
  • s:套接字文件/socket

(二)基本命令

  • 命令类型
    • 外部命令:每个命令都有一个对应的文件,命令名就是文件名
    • 内部命令:Bash等shell命令自带很多命令,所以内部命令是指shell的内部命令,而shell本身是一个外部命令
    • 查看命令类型的方法是:type COMMAND。结果中,外部命令显示文件路径(但是未必总是如此,因为有些命令有别名),内部命令显示builtin。
    • 注:命令可以有别名,别名可以与原名相同,此时原名被隐藏,可以加反斜线使用原命令,比如ls其实是ls --color=auto,此时原来的ls被隐藏了,可以用ls调用原来的ls
    • 使用alias命令可以查看命令别名列表
    • 定义别名的方法是:alias 别名='命令';如果命令中间没有空格,可以不加引号,这种方式只对当前shell有效,登出之后就失效了(具有时间限制和范围限制)。如果想永久有效,需要添加到配置文件中。
    • 撤销别名的方法是:unalias 别名;
  • Which命令
    • 显示命令的完整路径
  • Whereis命令
    • 显示命令的二进制文件,源码文件,手册页的位置
    • -b:仅搜索二进制文件路径
    • -m:仅搜索手册页路径
  • who命令
    • 显示登陆系统的用户信息,例如下面表示有两个用户通过伪终端登陆,一个通过虚拟终端登陆。显示格式为:用户名,终端,时间,远程登陆主机的ip(本机登陆不显示ip)

        root   pts/0    2015-12-10 09:25(172.16.100.100)

        root   pts/1    2015-12-10 09:25(172.16.100.100)

        root   tty1    2015-12-10 09:25

    • who -b:显示系统此次启动的时间
    • who -r:显示系统运行级别
  • w命令
    • 增强版的who,不光能显示登陆系统的用户信息,还能显示他们当前正在干什么

(三)bash的基础特性

  • 命令历史:shell进程会在其会话中保存此前用户提交执行过的命令
    • 使用history命令即可查看命令历史
    • 定制history的功能,可以通过环境变量实现
      • HISTSIZE:shell进程可以保留的命令历史的条数
      • HISTFILE:持久保存命令历史的文件。每个用户的家目录里都有一个隐藏文件.bash_history,在每次用户登出时,都会将内存中的命令历史写进该文件。history命令显示的内容包括两部分,文件中的和当前内存中的。
      • HISTFILESIZE:文件所能保存的历史条数
    • history n:显示最近n条命令历史
    • -c:清空内存中的命令历史
    • -d offset n:清除指定命令历史
    • -r:从文件读取命令历史到内存中
    • -w:把内存中的命令追加到历史文件中
    • 调用命令历史列表中的命令:
      • !#:再一次执行历史列表中的第#条命令
      • !!:再一次执行上一条命令
      • !String:再一次执行历史列表中最近一次以string开头的命令
    • 调用上一条命令的最后一个参数:
      • 先按“esc”键,再按“.”号键
      • 或者在参数的位置输入“!$”
    • 控制命令历史记录的方式:
      • 环境变量:HISTCONTROL
      • 可以有三种取值:
        • 默认ignoredups:忽略重复,只有相邻一样才被认为是重复
        • ignorespace:忽略以空白字符开头的命令,所以我们可以在某个命令前面加空格从而让它不被记录
        • ignoreboth:以上两者同时生效
        • 改变HISTCONTROL值的方式:HISTCONTROL=ignorespace,因为值里没有空格,所以不需要加引号。只对当前shell会话有效。
原文地址:https://www.cnblogs.com/jacky1982/p/7617146.html