Linux学习02--有关文件的命令
1、Linux的文件系统
1.1、根文件系统 rootfs
这是文件系统的具体介绍但我没有看 0.0
LSB规范中的FHS规定,Linux的每个发行版都应该遵循这些文件命令
/ect /usr /var /root /home /dev
1.1.1、/boot
引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放在此目录
1.1.2、/bin
供所有用户使用的基本命令 || 不能关联至独立分区,OS启动即会用到的程序
1.1.3、/sbin
管理类的基本命令 || 不能关联至独立分区,OS启动即会用到的程序
1.1.4、/lib
基本共享库文件,以及内核模块文件(/lib/modules)
1.1.5、/lib64
专用于x86_64系统上的辅助共享库文件存放位置
1.1.6、/etc
配置文件目录(大多数是纯文本文件)
1.1.7、/home
用户的主目录也是家目录
- 普通用户
/home/USERNAME
- 管理员用户
/root
1.1.8、/media
便携式移动设备挂载点
1.1.9、/mnt
临时文件系统挂载点
1.1.10、/dev
设备文件以及特殊文件存储位置
dev中的文件类型
-
b :
block device
特点 : 随机访问
-
c :
character device
特点 : 线性访问
1.1.11、/opt
第三方应用程序的安装位置
1.1.12、/srv
系统运行时需要的数据存放位置
1.1.13、/temp
存放临时文件的目录
1.1.14、/usr
共用存放的只读数据
usr目录下必须包含 bin include lib local sbin share
bin
: 保证系统拥有完整功能而提供的应用数据 || 所有人都可用sbin
: 保证系统拥有完整功能而提供的应用数据 || 管理员可用lib
:lib64
:include
: C程序的头文件存放位置share
: 结构化独立的数据 例如 doc manlocal
: 第三方应用程序的安装位置
1.1.15、/var
变量数据文件
-
cache
: 应用程序缓存数据目录 -
lib
: 应用程序状态信息数据 -
local
: 转为/usr/local
下的应用程序存储可变数据 -
lock
: 锁文件 -
log
: 日志目录及文件 -
opt
: 专用于为/opt
下的应用程序存储可变文件 -
run
: 运行中的进程相关的数据,通常用于存储进程的pid文件 -
spool
: 应用池文件 -
tmp
: 保存系统两次重启之间的临时数据
1.1.16、/proc
用于输出内核与进程信息相关的虚拟文件系统
1.1.17、 /sys
用于输出当前系统上硬件设别相关信息的虚拟文件系统
1.2、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
1.3、Linux下的文件类型:
- - : 普通文件
- d : 目录文件
- b : 块设备
- c : 字符设备
- l : 符号链接文件
- p : 管道文件
- s : 套接字文件 socket
2、bash
的基本特性
2.1、history
命令历史
-
环境变量
-
HISTSIZE : 命令历史记录的条数
-
HISTFILE :
~/.bash_history
-
HISFILESIZE : 命令历史文件记录历史的条数
-
-
相关命令
-
history -d OFFSET
删除历史记录的偏移量
-
history -c
删除所有历史记录
-
history #
显示历史中最近的#号条命令
-
history -a
手动追加当前会话缓存区的命令历史至历史文件中
-
-
调用历史中的命令
!#
: 重读执行第#条命令!!
: 重复执行上一条命令!String
: 执行最近的以String开头的命令
-
调用上一条命令的最后一个参数
- !$ :
esc , .
先按esc 再按.号
-
控制命令历史的记录方式
-
环境变量 :
HISTCONTROL
- ignoredups : 忽略连续且完全重复的命令
- ignorespace : 忽略所有以空白字符开头的命令
- ignoreboth : 上述两种都生效的命令
切换
HISTCONTROL
变量的值[root@192 ~]# export HISTCONTROL="ignorespace"
-
修改环境变量值的方式 : export 变量名 = "值"
-
变量赋值 : 把赋值符号后面的数据存储与变量名指向内存空间
注:仅本次登录修改有效
-
-
2.2、命令补全
-
bash执行命令
-
内部命令
bash自带的命令
-
外部命令
bash根据PATH环境变量定义的路径自左向右在每个路径搜寻以给定命令名命名的文件,如果找到就不会向右的搜索了,有先后顺序
-
命令补全机制
- 直接补全 :
tab
要求用户给定的字符串 对应唯一的命令 - 间接补全 :
tab tab
以用户给定的字符出啊那位开头对应的命令不唯一,则两次tab会给出列表
- 直接补全 :
-
2.3、路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
- 如果唯一,直接补全
- 否则再次
tab
给出列表
2.4、命令行展开
-
~
: 展开为用户的主目录 -
~USERNAME
: 展开为指定用户的主目录 -
{}
: 可承载一个以都好分隔的列表,并将其一多个路径展开/tmp/{a,b}
==>/tmp/a /tmp/b
/tmp/{a,b}/hi
==>/tmp/a/hi /tmp/b/hi
2.5、命令的执行结果状态
- bash使用特殊变量
$?
保存最近一条命令的结果状态[root@192 ~]# echo $? 127
- 0 : 成功
- 1-255 : 失败
- 程序执行有两类结果
- 程序的返回值
- 程序的执行状态结果
3、目录管理命令
3.1、mkdir
-
mkdir /PATH1/PATH2
-
必须保证PATH1存在不然会报错
[root@192 ~]# mkdir /tmp/test/test1 mkdir: cannot create directory ‘/tmp/test/test1’: No such file or directory
-
目录已经存在,再次创建不会覆盖
[root@192 ~]# mkdir /tmp/test1 mkdir: cannot create directory ‘/tmp/test1’: File exists
-
目标目录下有同名文件,也会创建失败
[root@192 tmp]# ls | grep yum.log yum.log [root@192 tmp]# mkdir yum.log mkdir: cannot create directory ‘yum.log’: File exists
-
-
重要的
OPTION
mkdir [OPTIONS] /path/to/somewhere
-
-p
: 如果父目录不存在就创建父目录[root@192 ~]# mkdir /tmp/test/wwx mkdir: cannot create directory ‘/tmp/test/wwx’: No such file or directory [root@192 ~]# mkdir -p /tmp/test/wwx
注 : 如果目录存在,不报错也不会覆盖
[root@192 tmp]# mv 1.txt test1/ [root@192 tmp]# ls test1/ 1.txt [root@192 tmp]# mkdir -p test1 [root@192 tmp]# !ls ls test1/ 1.txt
-
-v
: 显示生活[root@192 ~]# mkdir -pv /tmp/test/wwx mkdir: created directory ‘/tmp/test/wwx’
-
-m MODE
: 创建目录时直接指定权限
-
3.2、rmdir
删除空目录,目录非空报错
[root@192 ~]# rmdir /tmp/
rmdir: failed to remove ‘/tmp/’: Device or resource busy
rmdir [OPTION] /path/to/somewhere
- -v : 显示过程
3.3、tree
下载 tree
因为CentOs目前没有tree
yum -r install tree
- 常用的
OPTION
-d
: 只显示目录-L
: 指定显示的层级数目-P
: 只显示由指定pattern
匹配到的路径
小练习
- 如何创建
/tmp/x/y1 /tmp/x/y2 /tmp/x/y1/a /tmp/x/y1/b /tmp/x/y2/a /tmp/x/y2/b
[root@192 ~]# mkdir -p /tmp/x/{y1,y2}/{a,b}
[root@192 ~]# tree -d /tmp/
└── x
├── y1
│ ├── a
│ └── b
└── y2
├── a
└── b
- 如何创建
x_m, y_m, x_n, y_n
[root@192 ~]# mkdir /tmp/{x,y}_{a,b}
[root@192 ~]# tree -d /tmp/
├── x_a
├── x_b
├── y_a
└── y_b
- 如何创建
/tmp/bin /tmp/sbin /tmp/usr /tmp/usr/bin /tmp/usr/sbin
[root@192 tem]# mkdir -p ./tmp/{bin,sbin,usr/{bin,sbin}}
[root@192 tem]# tree -d
.
└── tmp
├── bin
├── sbin
└── usr
├── bin
└── sbin
6 directories
4、文本文件查看命令
4.1、more
more [OPTION] FILE
- 常用选项
-d
: 显示翻页及推出提示
4.2、less
less [OPTION] file
同man
相关操作,因为man
是基于less
实现的
4.3、head
-
head [OPTION] file
-
常用选项
- -c #: 指定获取前#个字节
- -n # : 指定获取前#行
4.4、tail
tail [OPTION] file
- 常用选项
-c
#: 指定获取后#个字节-n
# : 指定获取后#行-f
: 跟踪显示文件新追加的内容
5、文件的时间戳管理工具
文件:metadata,data
- 查看文件状态:
stat
- 三个时间戳
- 访问时间 |
atime
|| 读取文件内容就叫修改 - 修改时间 |
mtime
|| 改变文件内容(数据) - 改变时间 |
ctime
|| 改变文件元数据
- 访问时间 |
5.1、touch
touch [OPTION]... FILE...
touch file
如果文件不存在就创建文件
常用选项:
-
-a
: 只改atime -
-m
: 只改mtime -
-t
STAMP :
根据时间戳STAMP
修改时间时间戳格式 :
[[CC]YY]MMDDhhmm[.ss]
-
-c
: 如果文件不存在,则不创建