Linux的文件系统
- 根文件系统(rootfs):
root filesystem - LSB:FHS(filesystem heirache standard)
/etc,/usr,/var,/root,/home,/dev
/boot:引导文件存放目录,内核文件(vmlinuz),引导加载器(bootloader,grub)都存放于此目录
/bin:供所有用户使用的基本命令,不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令,不能关联至独立分区,OS启动即会用到的程序
/lib:基本共享库文件,以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放的位置
/etc:主机特有的配置文件目录(大多数都是纯文本文件)
/home/USERNAME:普通用户的家目录
/root:管理员的家目录
/media:便携性移动设备挂载点(u盘)
/mnt:临时文件系统挂载点
/opt ;第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存放位置
/usr:universal shareable read-only databin:保证系统拥有完整功能而提供的应用程序,所有用户都拥有权限
sbin:管理员拥有权限
lib:库文件
lib64:64位库文件
include:C程序的头文件存放位置(.h结尾),头文件(header file)就是用来描述库文件的打开方式
share :结构化独立的数据;例如doc,man等;
src:源代码
local:本地层级结构(基本安装完之后是空的);第三方应用程序的安装位置;bin,sbin,lib,lib64,etc,share/dev:特殊文件和设备文件目录
b: block device,随机访问
c: character device,线性访问/var:可变数据文件
cache:应用程序缓存数据目录
lib:应用程序可变状态信息数据
local:专用于位/usr/local下的应用程序存储可变数据
lock:应用程序的所文件
log:日志目录及文件
opt:专用于位/opt下的应用程序存储可变数据
run:运行中的进程相关的数据,通常用于存储进程的pid文件
spool:应用程序缓冲数据池
tmp:系统重启过程中产生的临时文件/proc:用于输出内核与进程信息相关的伪(虚拟)文件系统
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统
/misc:备用的杂项文件
/selinux:security enhanced Linux:Linux的安全增强机制。selinux相关的安全策略等信息的存储位置
Linux上的应用程序的组成部分:
- 二进制程序
/bin;/sbin;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin; - 库文件
/lib;/lib64;/usr/lib;/usr/lib64;/usr/local/lib;/usr/local/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
系统管理类命令
- halt
关机 - poweroff
关机 - reboot
重启
上述3个命令共同选项:
-f,--force:强制,不使用shutdown关机
-p,--poweroff:使用poweroff命令关机,关机后切断电源
--verbose:显示详细信息
- shutdown
shutdown [OPTION]... TIME [MESSAGE]
选项
-r:reboot,重启
-h :halt,关机,切断电源
-c : 取消关机或重启操作
TIME:
now:(立刻);
+m:相对时间(从命令提交开始多少分钟之后命令执行,例+3是3min之后执行);
hh:mm:绝对时间表示(指明具体时间)
用户登录信息查看命令
- whoani
显示有效的用户id信息,显示当前登陆的有效用户 - who
显示当前系统有哪些用户登陆;不同终端同一用户登录也是不同的登陆信息
显示当前系统上所有的登陆会话 - w
显示当前系统有哪些用户登陆并且其正在执行的操作
显示当前系统上所有的登陆会话及所做的操作
bash的基础特性(1)
- 命令历史
history
环境变量:
HISTSIZE:命令历史记录的条数
HISTFILE:~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数history -d OFFSET history -c history 10 #显示历史中最近的10条命令 history -a #手动追加当前会话缓冲区的命令历史至历史文件中
调用历史中的命令:
- !# :调用第#号命令
- !!:调用上一条命令
- !string :调用最近一个以string开头的命令
调用上一条命令的最后一个参数
- !$
- ESC,. (两者分开按)
- Alt + .
控制命令历史的记录方式:
环境变量:HISTCONTROL
- ignoredups :忽略重复的命令
- ignorespace :忽略以空白开头的命令
- ignoreboth :以上两种都生效
echo $HISTCONTROL ignoredups export HISTCONTROL="ignorespace" #修改环境变量值的方式,只对当前进程有效 echo $HISTCONTROL ignorespace
export 变量名=“值” :修改环境变量值的方式
=:变量赋值符号,把赋值符号后面的数据存储于变量名指向的内存空间
- 命令补全
tab键
bash执行命令:
- 内部命令
- 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的即为要执行的命令
直接补全:Tab,用户给定的字符串只有一条唯一对应的命令
以用户给定的字符串开头对应的命令不唯一,则再次Tab会给出列表
- 路径补全
把用户给出的字符串当作路径的开头,并在其指定的上级目录下搜寻以指定的字符串开头的文件名
如果唯一,则直接补全
否则,再次Tab,给出列表 - 命令行展开
~:展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{} :可承载一个以,分隔的列表,并将其展开为多个路径
/tmp/{a,b} = /tmp/a , /tmp/b
/tmp/{a,b}/hi = /tmp/a/hi , /tmp/b/hi
- 命令的执行结果状态
成功
失败
bash使用特殊变量$?来保存最近一条命令的执行状态结果
0:成功
1-255 :失败
程序的执行有两类结果:
程序的返回值:
程序的运行状态结构
目录管理类命令
cd ,pwd,ls
mkdir,rmdir
- mkdir
mkdir [OPTIONS] path/to/somewhere
选项:
-p :即使目录已存在也不报错,根据需要创建一个目录需要的所有父目录
-v,--verbose:显示详细信息
-m MODE :创建目录时直接指定权限
可以次创建多个目录
- rmdir :删除空目录
rmdir [OPTIONS] path/to/somewhere
选项:
-p : 递归删除
mkdir -p ./Downloads/test1/x/y tree ./Downloads/ ./Downloads/ ├── gdc-client └── test1 └── x └── y 3 directories, 1 file rmdir -p ./Downloads/test1/x/y rmdir: failed to remove directory ‘./Downloads’: Directory not empty tree ./Downloads/ ./Downloads/ └── gdc-client 0 directories, 1 file
-v : 显示过程
- tree 显示目录的层结构
选项:
-d :仅显示目录,不显示文件
-P pattern :只显示有指定pattern匹配到的路径
-L level:指定显示的层级数目
练习
- 如何创建/tmp/x/y1; /tmp/x/y2; /tmp/x/y1/a; /tmp/x/y1/b; /tmp/x/y2/a; /tmp/x/y2/b;
mkdir -p /tmp/x/{y1,y2}/{a,b} #对
mkdir -p /tmp/x/{y1/{a,b},y2}
- 如何创建x_m , y_m , x_n , y_n
mkdir {x,y}_{m,n}
- 如何创建 /tmp/bin ; /tmp/sbin ; /tmp/usr ; /tmp/usr/bin ; /tmp/usr/sbin ;
mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}
文本文件查看类命令
cat ,tac
more,less,tail,head
- more
more [OPTION] FILE...
选项:
-d:显示翻页及退出提示
- less
less [OPTION] FILE...
- head
获取文件的前多少行
head [OPTION] FILE...
选项:
-c q :指定获取前q个字节
-n q :指定获取前q行 = -q
默认前10行
- tail
获取文件的后多少行
tail [OPTION] FILE...
选项:
-c q :指定获取后q个字节
-n q :指定获取后q行 = -q
默认后10行
-f ,--follow :跟踪显示文件新追加的内容;退出使用Ctrl +c
文件的时间戳管理工具
touch
文件:metdata,data
查看文件状态 :stat
3个时间戳:
access time:(最近一次)访问时间 atime,读取文件内容
modify time :(最近一次)修改时间mtime,改变文件内容(数据)
change time :(最近一次)改变时间ctime,时间元数据发生改变
touch:手动指定修改atime和mtime
touch [OPTION]... FILE...
选项:
-a :只改访问时间戳
-m :只改修改时间戳
-t [[CC]YY]MMDDhhmm[.ss] :指明修改为哪个时间戳
-c :如果文件存在就touch,如果不存在就不创建它