linux—文件系统与目录结构、目录操作、输入输出

文件目录结构

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

文件命名规范

  • 文件字符最长为255个字符
  • 包括路径在内文件名最长为4095个
  • 颜色表示
    • 蓝色:文件夹或目录
    • 绿色:可执行文件
    • 红色:压缩文件
    • 蓝绿色:链接文件
    • 灰色:其他文件
    • 白色:文件
  • 文件名:除了斜杠和NULL其他的所有字符都可以使用。
  • 对大小写敏感

文件系统结构

  • /boot:引导文件的存放位置,内核文件、引导加载器都在这里。
  • /bin:所有的用户都可以使用的命令
  • /sbin:管理类的命令
  • /lib:启动时程序使用的基本库文件,以.so结尾
  • /lib64:专门存放X86_64系统上的辅助库文件
  • /etc:存放配置文件的目录
  • /home/username:普通用户的家目录
  • /root:管理员的家目录
  • /media:便携式移动设备的挂载点
  • /mnt:临时文件的挂载点
  • /dev:设备文件和特殊文件的存放位置
  • /opt:第三方的安装应用
  • /tmp:存放临时文件
  • /usr:存放安装程序
  • /var:存放经常变化的文件,比如日志
  • /proc:存放内核启动和进程相关的虚拟文件
  • /sys:输出当前系统上的硬件相关的一些文件
  • /srv:系统上允许的服务用到的数据

Linux应用程序的组成

  • 二进制文件
    • /bin
    • /sbin
  • 库文件
    • /lib
    • /lib64
  • 配置文件
    • /etc
    • /etc/name
  • 帮助文件
    • /usr/share/man
    • /usr/share/doc

绝对路径和相对路径

  • 绝对路径
    • 以根开始
    • 完整的文件的存放位置
    • 可以读取到任何一个文件
  • 相对路径
    • 不以根开始
    • 相对于当前的位置来决定的
    • 可以简短的表示一个文件或者文件夹
    • .当前目录
    • …父级目录、

目录名和基名

[root@localhost ~]# basename /etc/sysconfig/network-scripts/ifcfg-ens33 
ifcfg-ens33
[root@localhost ~]# basename /etc/sysconfig/network-scripts
network-scripts
[root@localhost ~]# dirname /etc/sysconfig/network-scripts/ifcfg-ens33 
/etc/sysconfig/network-scripts
[root@localhost ~]# dirname /etc/sysconfig/network-scripts
/etc/sysconfig

切换目录

  • cd 切换目录 change directory

    • 可以使用相对路径
    • 可以使用绝对路径
  • cd 切换到家目录

  • cd - 回到上一次的目录

  • pwd 显示当前的工作目录

  • # 查看链接的真正目录
    [root@localhost lib]#pwd -P
    /usr/lib
    

列出目录或文件

ls list

ls -a   显示所有文件
ls -l 	以长文件格式显示文件列表
[root@localhost lib]#ls -l
total 48
drwxr-xr-x.  3 root root    18 Dec  7 03:36 alsa
权限 硬盘的引用次数 属主 属组   大小  访问时间     文件名称
ls -R 	递归显示目录
ls -d	显示目录本身
ls -1	(数字1)文件分行显示
ls -S	按照文件的大小排序
ls -r 	倒序显示
ls -t	按照时间来排序
ls -lh	显示人类易读的方式
ls -d	显示当前目录下的文件夹
l.		只显示隐藏文件

linux下的目录类型

  • -用来表示文件
  • d用来表示目录
  • b块设备
  • c字符设备
  • l表示符号链接文件
  • s套接字socket

查看文件的状态

stat 'filename'

touch创建文件

touch a		创建一个空文件和刷新时间,有就只刷新修改时间,如果没有就创建
touch -a a  只修改访问时间和改动时间
touch -m a  修改修改时间和改动时间

文件通配符

  • *所有
  • ?1个
  • ~表示用户的家目录
  • [123] 其中一个
  • [^123] 取反
  • [0-9] 表示数字
  • [a-z] 字母(有坑)缺少Z
  • [A-Z] 缺少a
  • [:lower:] 小写字母
  • [:upper:] 大写字母
  • [:alpha:] 所有字母
  • [:alnum:] 字母和数字

创建删除目录

mkdir  filename   创建目录
mkdir -p filenameA/B/C   递归创建
mkdir -pv filenameA/B/C   递归创建  -v显示详细过程
# 显示目录树
yum install -y tree

tree  显示目录树
tree -d  只显示文件夹
tree -L 2  只显示2层

rmdir  只能删除空目录
rmdir -p 递归删除  只能删除空的父目录
rmdir -pv 递归删除  只能删除空的父目录 -v显示详细过程

rm -rf 删除非空目录

复制文件和文件夹

cp copy 默认情况下时别名,原来本身命令时不提示覆盖的

cp --help
Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...

cp a b  把acopy到b
-i  显示提示信息
-n  不覆盖
-r/-R  递归复制
-b  备份原来的文件
-p  保留原来的属性
  • 如果源文件是文件的话
    • 目标是文件
      • 目标文件不存在,则新建目标文件,并把内容写道目标文件中
      • 如果目标文件存在,直接覆盖
    • 目标是文件夹
      • 在文件夹中新建一个同名文件,并把文件写到文件中
  • 如果源文件是多个文件的话
    • 目标必须是个文件夹,文件夹必须存在,其他情况都会报错

移动

mv move

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
mv a b
-i 		提示
-b 		备份
-f 		强制
-v 		显示过程

删除

rm remove

Usage: rm [OPTION]... FILE...
Remove (unlink) the FILE(s).

rm file
-r	递归删除
-f	强制
rm -rf  慎用

链接

软链接

  • 相当于windows的快捷方式
  • 创建的命令 ln -s f1 f2 给f1创建一个链接f2
  • 源文件改变它也会随着改变
  • 源文件删除,他也没了

硬链接

  • ln f1 f2
  • 磁盘引用次数会发生变化
  • 指向的是硬盘上的同一块区域
  • 不能对目录做硬链接
  • 源文件改变它也会随着改变
  • 源文件删除,它还可以用

file 查看文件的类型

输入和输出

  • 标准输入 默认是来自键盘的输入 stdin 0
  • 标准输出 默认输出到终端窗口 stdout 1
  • 标准错误输出 默认输出到终端窗口 stderror 2

I/O重定向

> 覆盖

  • >将标准输出重定向到文件中
  • 2> 将错误输出到重定向文件中
  • &> 将所有的输出到重定向文件中

禁止、允许覆盖

  • 禁止覆盖set -C
  • 允许覆盖set +C

>> 追加

  • >>将标准输出追加到文件中

  • 2>>

  • &>>

分开保存

ls f sdas > log.log 2> error.log

合并所有的输出

  • &>覆盖重定向
  • &>>追加重定向
  • ls f dsadas > r 2>1 相当于 &>
  • (command1;command2)2> f1 多个错误输出到一个文件
  • /dev/null 黑洞

< 输入

从文件导入stdin

tr 字符替换

tr 'a-z' 'A-Z'  小写换大写
tr -t abc 12    -t截断  abc 替换为12c
tr abc 12       abc替换为122
tr -d abc       -d 删除abc
tr -s a         -s 去重
tr -sc a        -c 取反

处理完成后 不能协会源文件,要写到新的文件中。

多行发送给stdin

# 方式2
cat > f1
dsada
dasda
dsadas

# 方式2
cat > f2 <<EOF
>dasdas
>dasdas
>EOF
EOF不是必须的,可以自己随便写,两次相同即可

管道

管道使用“|”来表示

命令1|命令2|命令3

  • 把命令1的输出当命令2的输入
  • 把2的输出当3的输入
  • 默认情况只能传输标准输出,如果像输出错误信息则需要加上 |&
  • 一般用来组合多个命令
  • 有一些命令是不接受管道的
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐