Linux基础总结

Linux的哲学思想

  1. 一切皆文件
    把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等,便于统一管理和定义;对文件的操作有:open,read,write,close,delete,create
  2. 由众多功能单一的小程序组成
    一个程序只做一件事,并且做好,保证了Linux内核的高效运行
  3. 组合小程序完成复杂任务
    通过连接多个简单的程序实现复杂的功能
  4. 尽量避免和用户交互
    更贴近编程,易于以编程的方式实现自动化任务
  5. 使用文本文件保存配置信息
    修改配置信息只需要任意一款文本编辑器就可以进行

文件系统与目录结构

Linux基础总结

  • 文件和目录被组织成一个单根倒置树结构
  • 文件系统从根目录下开始,用“/”表示
  • 根文件系统(rootfs):root filesystem
  • 文件名称区分大小写
  • 以.开头的文件为隐藏文件
  • 路径分隔的 /
  • 文件有两类数据:
    • 元数据:metadata(用于存放索引信息)
    • 数据:date

文件系统结构

  • /boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)、initramfs都存放于此目录
  • /bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
  • /sbin:基本的管理类命令;不能关联至独立分区,OS启动即会用到的程序
  • /lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
  • /lib64:专用于x86_64系统上的辅助共享库文件存放位置
  • /etc:配置文件目录
  • /home/USERNAME:普通用户家目录
  • /root:管理员的家目录
  • /media:便携式移动设备挂载点
  • /mnt:临时文件系统挂载点
  • /dev:设备文件及特殊文件存储位置
    • b: block device,随机访问
    • c: character device,线性访问
  • /opt:第三方应用程序的安装位置
  • /srv:系统上运行的服务用到的数据
  • /tmp:临时文件存储位置
  • /usr: universal shared, read-only data(全局共享只读数据)
    • bin: 保证系统拥有完整功能而提供的应用程序
    • sbin:
    • lib:32位使用
    • lib64:只存在64位系统
    • include: C程序的头文件(header files)
    • share:结构化独立的数据,例如doc, man等
      • local:第三方应用程序的安装位置
      • bin, sbin, lib, lib64, etc, share
  • /var: variable data files
    • cache: 应用程序缓存数据目录
    • lib: 应用程序状态信息数据
    • local:专用于为/usr/local下的应用程序存储可变数据;
    • lock: 锁文件
    • log: 日志目录及文件
    • opt: 专用于为/opt下的应用程序存储可变数据;
    • run: 运行中的进程相关数据,通常用于存储进程pid文件
    • spool: 应用程序数据池
    • tmp: 保存系统两次重启之间产生的临时数据
  • /proc: 用于输出内核与进程信息相关的虚拟文件系统
  • /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
  • /selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
    • getenforce:查询是否关闭命令
    • setenforce 0:关闭selinux(只是暂时的修改)
    • 永久修改方法:nano /etc/selinux/config

命令行扩展

括号扩展:{ }

  • 打印重复字符串的简化形式

    echo file{1,3,5}
    file1 file3 file5
    rm -f file{1,3,5}
    echo {1..10}
    echo {a..z}
    echo {000..20..2}

    Linux基础总结
    Linux基础总结

Linux的文件权限

Linux基础总结

  • 上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件。
  • 接下来的九个字符以三个为一组分别是
    • rwx:属主的权限。
    • r-x:属组的权限。
    • r-x:其他人的权限。
    • r(read):可读取
    • w(write):可写入
    • x(execute):可执行

Linux下的文件类型

  • -:普通文件
    d: 目录文件
    b: 块设备
    c: 字符设备
    l: 符号链接文件
    p: 管道文件pipe,FIFO(First In,First Out)
    s: 套接字文件socket

硬链接

  • 创建硬链接会增加额外的记录项以引用文件
    对应于同一文件系统上一个物理文件
    每个目录引用相同的inode号
  • ls -i :显示文件的innode编号
    创建时链接数递增
  • 删除文件时:
    rm命令递减计数的链接
    文件要存在,至少有一个链接数
    当链接数为零时,该文件被删除
    不能跨越驱动器或分区
  • 语法:
    ln filename [linkname ]

软链接

  • 一个符号链接指向另一个文件
  • ls - l的 显示链接的名称和引用的文件
  • 一个符号链接的内容是它引用文件的名称
    可以对目录进行
    可以跨分区
    指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数;
  • 语法:
    ln -s filename ​​[linkname]

管道

  • 管道(使用符号“|”表示)用来连接命令
  • 命令1 | 命令2 | 命令3 | …
    将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
    STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
    最后一个命令会在当前shell进程的子shell进程中执行用来
    组合多种工具的功能
  • ls | tr ‘a-z’ ‘A-Z’
  • less :一页一页地查看输入
    • ls -l /etc | less
  • mail: 通过电子邮件发送输入
  • lpr:把输入发送给打印机
    • echo “test print” | lpr -P printer_name

标准输入和输出

  • 程序:指令+数据
    读入数据:Input
    输出数据:Output
  • 打开的文件都有一个fd: file descriptor (文件描述符)
  • Linux给程序提供三种I/O设备
    • 标准输入(STDIN)-0 默认接受来自键盘的输入
    • 标准输出(STDOUT)-1 默认输出到终端窗口
    • 标准错误(STDERR)-2 默认输出到终端窗口
  • I/O重定向:改变默认位置