Linux系统上的文件类型
-:常规文件,即f
d:directory,目录文件
b:block device,块设备文件,支持以“block”为单位进行随机访问
c:character device,字符设备,支持以“character”为单位进行线性访问
major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
minor number:次设备号,用于标识同一类型中的不同设备,主设备号与次设备号用逗号分隔
l:符号链接文件,类似Windows的快捷方式
p:pipe,命名管道
s:socket,套接字文件
基本命令
命令根据其是否在文件系统上存在一个与之对应的同名的文件,可以将命令分为外部命令和内部命令
- 内部命令(shell内部命令):builtin
- 外部命令:显示为命令文件路径
- 注意:命令可以有别名,别名可以与原名相同,此时原名被隐藏,此时如果要运行原命令,则使用\COMMAND
如果就想运行命令本身该如何???
\ls
命令别名
获取系统上别名命令的列表
alias
定义别名
使用alias定义,定义的别名只对当前shell进程有效
alias NAME='COMMAND'
撤销别名
仅对当前shell有效(第一,有时间限定,shell进程终止即失效;第二,有范围限定,当前shell有效)
unalias NAME
which命令
- 显示命令的完整路径
- 使用格式
which [options] programname
which which
which ls
which --skip-alias ls #忽略别名
\which ls #which 本身就是忽略别名的
where命令
- 显示二进制程序的路径、源码文件及手册
- 使用格式
whereis [options] name…
常用选项
-b:仅搜索二进制程序
-m:仅搜索手册文件路径
whereis ls
whereis -b ls #只显示ls自身即可
whereis -m ls#只显示手册的路径
who命令
- 查看登录当前系统的相关用户信息
who -b #系统此次启动的时间
who -r #运行级别
w命令
- 可被认为是增强版的who命令。,用于显示谁登陆了,且正在干什么
bash shell的基础特性
命令历史
- shell进程会在其会话中保存此前用户提交执行过的命令
history #查看此前执行命令的列表
- 定制history的功能,可通过所谓的环境变量实现:
【1】HISTSIZE:shell进程可保留的命令历史的条数
【2】HISTFILE:持久保存命令历史的文件
shell启动以后它所执行的所有命令都保存在内存当中,只有用户登出时才会保留进去,所以使用history命令能看到的既包括这个文件中的又包括内存中的,但是打开文件的话只能看到文件中的看不到内存中的,每一个用户登录时,命令历史它的shell会首先从命令历史文件中加载此前所有的命令到内存中来,而后新的命令就补充在内存命令的后面,所以使用history看到的是整个内存中的历史
【3】HISTFILESIZE: 命令历史文件的大小
- history的很多功能特性也可以自己手动运行,history有很多选项可以完成对命令历史的管理功能
命令用法:
【1】history [-c] [-d 偏移量] [n]: 操作命令历史中的多少条命令
【2】history -anrw [文件名]:操作历史文件
【3】history -ps 参数 [参数…]:定义history命令自己的工作特性
-c:清空命令历史
-d offset: 删除指定命令历史
-d offset n: 从offset这个位置开始往后删除多少个
-r: 从文件读取命令历史至历史列表中
-w: 把历史列表中的命令追加至历史文件中 - history #:显示最近的#条命令
history -d 256 3 #从256条起删除三条
history 10 #只显示最近10条
如何调用命令历史列表中的命令:
【1】上下键,回车
【2】!#:再一次执行历史列表中的第#条命令
【3】!!:再一次执行上条命令
【4】!STRING:再依次执行命令历史列表中最近一个以STRING开头的命令
attention:命令的重复执行有时候需要依赖于幂等性(重复执行多次的效果是相同的)
如何调用上一条命令的最后一个参数:【】快捷键:ESC+, 【2】!$
控制命令历史记录的方式:
环境变量:HISTCONTROL,其取值有三个:
【1】ignoredups:忽略重复的命令
【2】ignorespace:忽略以空白字符开头的命令
【3】ignoreboth:以上两者同时生效
修改变量的值:NAME=‘VALUE’,这种修改仅对当前shell进程有效