linux的文件系统
根文件系统(rootfs):root filesystem
FHS: (FileSystem Heirache Standard)
/etc , /usr , /var , /root , /home , /div
/boot: 引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub)都存放于此目录
/bin: 所有用户使用的基本命令,不能关联至独立分区,OS启动即会用到的程序
/sbin: 管理类的基本命令,不能关联至独立分区,OS启动即会用到的程序
/lib: 基本的共享库文件,以及内核模块文件
/lib64: 专用于x86_64系统上的辅助共享库存放位置(在64位系统下,库文件实际的存放位置)
/etc: 配置文件目录(纯文本文件)注:可以使用文件编译器修改大部分配置
/home/USERNAME : 普通用户家目录
/root: 管理员家目录
/media: 便携式移动设备挂载点
/mnt: 临时文件系统挂载点
/dev: 设备文件及特殊文件存放位置
b: block device 块设备(可随机访问)
c: character device 字符设备(线性访问 例:键盘)
/opt: 第三方应用程序的安装位置
/srv: 系统上运行的服务用到的数据
/tmp: 临时文件
/usr: universal shared , read-only data
bin: 保证系统拥有完整功能而提供的应用程序(所有用户都能使用)
sbin: 同上(管理员使用的)
lib: lib64:
include: C程序的头文件(header files):
share: 结构化独立数据,例如:doc,man等
local: 第三方应用程序的安装位置
/var: variable data files 可变数据文件
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local: 专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 转用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关的数据,通常用于存储进程的pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统(尾文件系统)
/sys: 用于输出当前系统上硬件设备相关的虚拟文件系统
/selinux: security enhanced Linux selinux 相关的安全策略等信息的存储位置
Linux上的应用程序的组成部分:
二进制程序:/bin , /sbin , /usr/bin , /usr/sbin , /usr/local/bin , /uer/local/sbin
源文件:/lib , /lib64 , /usr/lib , /usr/lib64 ,
配置文件:/etc , /etc/DIRECTORY , /usr/local/etc
帮助文件:/usr/share/man , /usr/share/doc , /usr/local/share/man , /usr/local/share/doc
Linux下的文件类型
-(f): 普通文件
d: 目录文件
b: 块设备
c: 字符设备
l: 符号链接文件(软链接)
p: 管道文件
s: 套接字文件 socket(用来实现通信 IP+端口号)
系统管理类命令:
关机:
halt , poweroff , shutdown , init 0
重启:
reboot , shutdown , init 6
跟用户登录相关:
who , whoami , w
关机或重启:
halt poweroff reboot
-f: 强制 不调用shutdown
-p: 切断电源
shutdown:
shutdown [OPTION]... TIME [MESSAGE]
-r: reboot重启
-h: halt
-c: cancel 取消关机操作
TIME:
now: 立刻
+m: 相对时间表示法,从命令提交开始多久之后 例:+3
hh:mm 绝对时间表示,指明具体时间
用户登录信息查看命令:
whoami: 显示当前登录有效用户
who: 系统当前所有的登录会话
w: 系统当前所有的登录回话及所做的操作
02
bash 的基础特性
(1)命令历史
history
环境变量:
HISTSIZE: 命令历史记录的条数
HISTFILE: ~/.bash_history
HISTFILESIZE: 命令历史文件记录历史的条数
history -d OFFSET 清空条数
history # : 显示历史中最近的#条命令
-a : 手动追加当前会话缓冲区的命令历史至历史文件中
调用历史中的命令:
!# :重复执行第#条命令
!! : 重复执行最后一条命令
控制命令历史的记录方式:
环境变量:HISTCONTROL
ignorespace:忽略命令历史中以空格开头的指令
ignoredups:忽略重复的命令,连续且相同为“重复”
ignoreboth: 上述两者
修改环境变量值的方式:export 变量名=”值”(只对当前shell进程有效)
变量赋值:把赋值符号后面的数据存储于变量名指向的内存空间
(2)命令补全
bash执行命令
内部命令:bshell自带的命令
外部命令:bash根据PATH环境变量定义的路径,自左向右在每个路径受训以给定命令名的文件,第一次找到即为要执行的命令。
直接补全:Tab键,用户给定的字符串只有一条唯一对应的命令
当用户给定的字符串为开头的命令不唯一,则再次Tab 则给出列表
(3)路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以其开头的文件名
如果唯一,则直接补全
否则,再次Tab,给出列表
(4)命令行展开
~: 展开围用户的主目录
~USERNAME: 展开围指定用户的主目录
{}: 可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp{a,b} = /tmp/a , /tmp/b
练习:
(1)创建/tmp/x/y1 , /tmp/x/y2 , /tmp/x/y1/a , /tmp/x/y1/b , /tmp/x/y2/a , /tmp/x/y2/b
mkdir /tmp/x/{y1,y2}/{a,b}
(2)创建 x_m , x_n , y_m , y_n
mkdir {x,y}_{m,n}
(5)命令的执行结果状态
bash使用特殊变量$? 保存最近一条命令的执行状态结果
成功: 0
失败: 1~255
查看命令执行结果:echo $?
程序的执行有两类结果:
程序的返回值
程序的执行状态结果
目录管理类命令:
mkdir , rmdir
mkdir [options] /path/to/somewhere 可以一次创建多个目录
-p: 如果文件存在不报错,且可自动创建父目录
-v: 显示详细信息
-m: 创建目录是直接指定权限
rmdir [option] DIRECTORY
只能删除目录,且目录为空
tree :显示树状结构
-d: 只显示目录
-l level: 指定显示的层及数目
-p pattern: 只显示由指定pattern匹配到的路径
文本文件查看类命令:
cat , tac , more , less , tail , head
more [options..] FILE
-d: 显示翻页及退出提示
less [options..] FILE
使用man查看帮助文档用的就是less
head tail
-c #: 指定获取前(后)#个字节
-n #: 指定获取前(后)#行
tail -f:跟踪显示文件新追加的内容(Ctrl+c 退出)
文件的时间戳管理工具:
查看文件状态:stat
三个时间戳:
access time: 访问时间 简写:atime 读取文件内容
modify time: 修改时间 mtime 改变文件内容(数据)
change time: 改变时间 ctime 元数据发生改变
touch命令:修改文件时间或创建新文件
-a: 仅修改访问时间
-c: 仅修改文件的时间,若文件不存在则不创建新文件
-t: 后面可以接欲修改的时间而不用目前的时间,格式为[YYMMDDHhhmm]