Linux文件系统、结构目录和常用命令

文件目录结构


  • 文件和目录被组织成一颗倒置的树状结构
  • 文件系统从根开始“/”
  • 文件名称严格区分大小写
  • 隐藏文件以“.”开头
  • 路径分隔符为“/”

文件命名规范


  • 文字字符最长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 显示从没有重复果的行

diff 对比文件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值