文件目录结构
- 文件和目录被组织成一颗倒置的树状结构
- 文件系统从根开始“/”
- 文件名称严格区分大小写
- 隐藏文件以“.”开头
- 路径分隔符为“/”
文件命名规范
- 文字字符最长255个字符
- 包括路径在内文件名最长4095个
- 颜色表示
- 蓝色———> 文件夹
- 绿色———> 可执行文件
- 红色———> 压缩文件
- 蓝绿色———> 链接文件
- 灰色————> 其他文件
- 白色————> 文件
- 除了斜杠和Null,其他字符都可以使用
- 对大小写敏感
文件系统结构
- /boot 引导文件存放位置、内核文件、引导加载器都在此目录
- /bin 所有用户都可以使用的命令
- /sbin 管理类的命令system
- /lib 启动时程序使用的基本库文件.so结尾
- /lib64 专门存放x86_64系统上的辅助库文件
- /etc 存放配置文件
- /home/USERNAME 普通用户的家目录
- /root 管理员的家目录
- media 便携式移动设备的挂载点
- /mnt 临时文件的挂载点
- /dev 设备文件和特殊文件的存放位置
- /opt 第三方应用的安装位置
- /tmp 临时文件,设备重启或一定时间清空
- /usr 安装程序
- /var 存放经常变换的文件,如日志
- /proc 存放内核启动和进程相关的虚拟文件
- /sys 输出当前系统上的硬件相关的文件
- /srv 系统上允许的服务用到的数据
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/name
- /usr/local
- 帮助文件
- /usr/share/man
- /usr/share/doc
- /usr/local/share/man
- /usr/local/share/doc
绝对路径和相对路径
- 绝对路径
- 以根开始
- 完整的文件的存放位置
- 可以读取到任何一个文件或文件夹
- 相对路径
- 不以根开始
- 相对当前的位置来决定
- 可以剪短的表示一个文件或文件夹
- .当前目录
- …父级目录
显示当前的工作目录
[root@localhost lib]# pwd 查看当前工作目录
/lib
[root@localhost lib]# pwd -P 查看当前链接的真正目录
/usr/lib
列出目录或者文件
ls -a 显示所有文件
[root@localhost lib]# ls -l 以长格式显示
total 40
drwxr-xr-x. 3 root root 18 Aug 5 22:14 alsa
权限 磁盘的引用次数 属主 属组 大小 访问时间 文件名称
ls -R 递归显示目录
ls -d 显示目录本身
ls -1 文件分行显示
ls -S 安装大小排序
ls -r 倒序显示
ls -t 按照时间来排序
ls -lh 显示人类易读的方式
ls -d */ 显示当前目录下的文件夹
l. 只显示隐藏文件
linux下的目录类型
- -用来表示文件
- d 用来表示目录
- b 块设备
- c 字符设备
- l 表示符号链接文件
- s socket套接字
touch
创建空文件和刷新时间,如果文件存在,则刷新时间,如文件不存在,则创建文件
-a 只修改atime和ctime
-m 只修改mtime和ctime
文件通配符
- *所有
- ?匹配任意单个字符
- [123] 其中一个
- [^123] 取反
- ls file[a-z] 字母(有坑)缺少Z
- file[A-Z] 字母(有坑)缺少a
- [:lower:] 小写字母
- [:upper:] 大写字母
- [:alpha:] 所有字母a-zA-Z
- [:alnum:] 表示字母和数字
- [:digit] 表示数字
创建目录
mkdir 创建目录
- -p 递归创建 mkdir -p a/b/c/d
- -v 显示详细过程
显示目录树
安装:yum install -y tree
tree 显示目录树
-d 只显示文件夹
-L # 只显示指定层数目录 tree -dL 3
删除目录
rmdir 智能删除非空目录
-p 递归删除空父目录
-v 显示删除过程 rmdir -pv a/b/c/d
-rm -rf 删除非空目录
复制文件和文件夹
cp copy 默认情况下是别名,原来本身命令是不提示覆盖的
-i 显示详细信息
-n 不覆盖
-r 递归复制
-d 只复制链接文件,不复制源文件
-a 归档
-v 显示复制过程
-b 备份原来的文件
–backup=number 备份文件加上数字
-p 保留原来的属性
- 如果源文件是文件的话
- 目标文件是文件
- 目标文件如果不存在的话,则新建目标文件,并且把内容写到目标文件中
- 如果目标文件存在的话,本来的命令是直接覆盖,建议使用-i来提示用户
- 目标是文件夹
- 在文件夹中新建一个同名的文件,并把文件内容写到新文件中
- 目标文件是文件
- 如果源文件为多个文件时
- 目标必须是文件夹,文件夹必须存在,其他情况都会报错
- 如果源文件是文件的话
- 目标文件是文件:不可以
- 目标文件必须是文件夹,必须使用-r选项
- 如果目标文件不存在,则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹
- 如果目标文件存在
- 如果是文件的话,则报错
- 如果是文件夹,则在目标文件夹中创建重名文件夹,并把所有数据都复制到新文件夹
移动
mv move
-i 提示
-f 强制
-b 备份
–backup=number 备份后面加数字
-v 显示过程
删除
rm remove
-i 提示
-r 递归删除
-f 强制删除
-rm -rf 慎用
-rm -rf /*
链接
软链接
- 相当于windows的快捷文件
- 创建命令ln -s 源文件 目标文件
- 可以对目录做软连接
- 指向另外一个文件或目录的路径,大小是路径长度的字符
- 对磁盘引用次数没有影响
- 可以跨分区
- 源文件发生改变,软链接会跟着发生改变
- 源文件删除,软链接不能访问
硬链接 - 磁盘引用次数会发生变化
- 指向的是硬盘上的同一块区域
- 磁盘的引用数会随着硬链接次数来增加
- 不能对目录做链接
- 不能跨越分区
- 源文件发生改变,硬链接也会跟着发生改变
- 源文件删除以后,硬链接可以访问
查看文件类型
file
输入和输出
- 标准输入 默认是来自键盘的输入 stdin 0
- 标准输出 默认输出到终端窗口 stdout 1
- 标准错误输出 默认输出到终端窗口 stderr 2
I/O重定向
>覆盖
- >将标准输出重定向到文件中
- 2>将错误输出重定向到文件中
- &>将所有输出都重定向到文件中
禁止和允许覆盖 - 禁止覆盖set -C
- 允许覆盖set +C
>>追加
\2>>将标准输出追加到文件中
&>>将所有输出追加到文件中
标准输入和错误输入分开保存
[root@localhost ~]# ls f 45yuio > log.log 2> error.log
[root@localhost ~]# cat log.log
f
[root@localhost ~]# cat error.log
ls: cannot access 45yuio:No such file or directory
合并所有的输出
- &>覆盖重定向
- &>>最佳重定向
- command > file 2>&1
- command >> file 2
- ():合并多个文件的输出
- /dev/null 黑洞
从文件导入stdin
tr文字替换
-t 截断
-d 删除
-s 压缩,去重
-c 取反
[root@localhost ~]# tr 'a-z' 'A-Z' < /etc/issue
\S
KERNEL \R ON AN \M
[root@localhost ~]# tr abc 12
ab
12
abc
122
abccc
12222
[root@localhost ~]# tr ab 123
ab
12
abb
122
aba
121
abab
1212
[root@localhost ~]# tr -t abc 12
abc
12c
ab
12
[root@localhost ~]# tr -d abc
abcdef
def
[root@localhost ~]# tr -s a
aaaaaaaaaaab
ab
[root@localhost ~]# tr -sc a
aaaaaaaabbbbbbbbbccccccccc
aaaaaaaabc
多行发送给stdin
[root@localhost ~]# cat > f1
qwer
abcd
[root@localhost ~]# cat > f2 <<EOF
> ASDF
> ZXCV
> EOF
....
管道
管道使用"|"来表示
命令1|命令2|命令3
- 把命令1的输出结果当做命令2的输入结果,把命令2的输出结果当成命令3的输入结果
- 默认情况下,管道只能传送标准输出
- 如果需要把错误输出也传递,则需要|&
- 一般用来组合多个命令
- 有一些命令是不接受管道的
cat 显示文本
-E 显示结尾的$符
-n 对显示的每一行进行编号
-b 对非空行进行编号
-s 对连续的红行进行压缩
tac倒序显示
less分屏显示文本
向下翻一屏 空格
向上翻一行 回车
q 退出
/ 文本 搜素文本
n 向下查找 N 向上查找
less是man命令的默认分页器
more 分页显文本
默认情况下显示读取的百分比
读取完成自动退出
q退出
-d 显示翻屏和退出的提示
head显示文件的前面的内容
默认显示前10行
-# 显示前#行
-n # 显示前#行
-c # 显示前#个字符
tail显示文件后面的内容
默认显示后10行
-# 显示后#行
-n # 显示后#行
-c # 显示后#个字符,换行符也是一个字符
cut 切割
cut OPTION… [FILE]…
-c 按照字符切割
tail passwd |cut -c2-5
-d 指定切割符,默认是tab
-f # 显示第#个字段
#, #, # 显示离散的多个
#-# 表示连续的
1-5,7 可以结合使用
tail passwd |cut -d: -f1-5,7
tail passwd |cut -d: -f1-5
tail passwd |cut -d: -f1,3,5
paste 合并
默认是相同行合并到一起,默认是tab键
-d 执行间隔符
-s 将所有的行按列来显示
paste -d: a.txt b.txt
paste -s a.txt b.txt
wc用来对文本进行统计
[root@localhost test]#wc b.txt
4 5 20 b.txt
行数 单词数 字节数 文件名
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
-m 只显示字符数
-L 显示文件中最长行的长度
sort 排序
Usage: sort [OPTION]… [FILE]…
or: sort [OPTION]… --files0-from=F
默认是按照字母排序
-r 倒序
-R 随机排序
-n 按照数字排序
-f 忽略大小写
-t 指定分隔符
-k # 指定按照第#个字段进行排序
sort -t: -k3 passwd
sort -nt: -k3 passwd
uniq合并相同的行
- 完全一样
- 相邻
-c 显示相同行出现的次数
-d 只显示重复的行
-u 显示从没有重复果的行