Linux系统目录结构与more、less基础命令

Linux目录结构: 根目录/主目录: /boot:内核(vmlinuz)和初始化文件(initrd.img),建议单独分区。
/bin:常用命令(ls、cp)、二进制命令。
/sbin:系统管理命令(reboot、fdisk),仅适用于 root。
/dev:设备文件(/dev/sda)。
/etc:配置文件(/etc/passwd)。
/home:普通用户的主目录。
/root:root用户的主目录。
/usr:用户应用程序,子目录如/usr/bin(命令)、/usr/lib(库)。
/var:动态数据(/var/log、/var/mail)。
子目录规格: /var/log:日志文件(/var/log/messages)。
/usr/local:本地安装软件(手动编译程序)。

查看文件命令: Cat:直接显示整个文件,对于小文件。
语法:cat 文件的路径(例如cat /etc/passwd)。
缺点:大文件无法移动。

更多:页面展示、交互操作。
操作:逐行输入,空格移动,b后退,q退出。
屏幕:左下角百分比(--5 0%--)。
语法:more文件路径(如more/var/log/messages)。

less:网站的改进版本,具有更多功能。
操作:PageUp/PageDown、/search(错误)、n/N跳转。
显示:左下角的文件名。
语法:less文件路径(如less/etc/httpd/conf/httpd.conf)。

head:显示文件的开头,默认为1 0行。
语法:行号为 head-n 的文件的路径(例如 head-n5 /etc/passwd)。

tail:显示文件末尾,默认为1 0行。
语法:tail-n行号文件的路径(如tail-n5 /etc/passwd)。
tail -f:跟踪实时日志更新(例如tail -f /var/log/messages)。

统计及文件接收: wc:计算行数、字数和字节数。
选项:-c 字节数、-l 行数、-w 字数。
默认情况下,显示三列。
语法:wc 文件路径[选项](如wc-cfile.txt)。

grep:搜索指定的字符串。
选项:-i 忽略大小写,-v 反向匹配,-n 显示行号。
语法:字符串文件路径grep [选项](如grep -i "error" log.txt)。

备份和恢复工具: 压缩工具: gzip/gunzip: 压缩:gzip (.gz) 文件。
zhzip:gunzip .gz 文件或 gzip-d .gz 文件。
选项:-9 最高压缩比。

bzip2 /bunzip2 : 压缩:bzip2 (.bz2 ) 文件。
zhzip:bunzip2 .bz2 文件或 bzip2 -d .bz2 文件。

tar:打包和压缩: 软件包:tar-cvf 软件包名称。
tar 目录/文件(例如 tar-cvfbackup.tar/home)。
打包+gzip:包名tar-zcvf.tar.gz目录/文件。
包+bzip2 :包名tar-jcvf.tar.bz2 目录/文件。

减压减压: 解压:包名tar-xvf.tar。
解压(gzip):包名tar-zxvf.tar.gz。
解压(bzip2 ):包名tar-jxvf.tar.bz2
选项:-t 查看列表(例如 tar-tvfbackup.tar)。
-C 指定解压目录(如tar-xvfbackup.tar-C/tmp)。
摘要: 目录结构:FHS规范,主要目录分工明确。
文件查看:小猫文件、更多/更少分页、头/尾。
统计检索:wc统计、grep搜索。
备份工具:gzip/bzip2 压缩、tar归档、高效组合管理。

Linux硬盘GPT分区和MBR分区

MBR分区的硬盘最多只能有4 个主分区,也可以划分为小于或等于3 个主分区加1 个扩展分区。
一个扩展分区可以包含多个逻辑分区。

GPT分区硬盘对主分区数量没有限制,可以识别大于2 TB的硬盘空间,每个分区的大小可以超过2 TB。
但是,GPT 分区需要操作系统支持,例如 Windows XP 6 4 位、Windows Vista、Windows 7 、Windows 8 和较新的 Linux 发行版。

要从GPT分区的硬盘启动,主板必须使用EFI,硬盘必须使用GPT分区,并且操作系统支持GPT和EFI。
这三个条件缺一不可。

LVM(逻辑卷管理)允许动态调整分区大小。
可以将多个硬盘分区或整个硬盘标记为物理卷(PV),然后创建卷组(VG),最后对卷组进行分区。
每个分区称为逻辑卷 (LV)。

当主板仅支持EFI时,Ubuntu会自动将硬盘分区为GPT分区。
第一个分区是5 3 7 M的FAT3 2 文件系统,用于存储EFI文件。
其余部分根据需要进行定制。

如果需要更灵活的分区管理,可以在安装Ubuntu后使用Ubuntu的LiveCD通过Parted命令和lvm命令手动管理硬盘分区。

/sys/class和/dev的区别

需要明确的是,/sys/class 和 /dev 在 Linux 系统中非常不同。
复杂性在于它们的文件类型、功能状态、注册方法和内容结构不同。

我们先来说说最重要的事情。
/sys/class/是伪文件系统(sysfs)中的符号链接,指向/sys/devices/下的特定设备路径。
例如,/sys/class/leds/rgb-led-r可以链接到../../devices/platform/leds/leds/rgb-led-r,这反映了设备与内核的层次关系。
去年我们跑的项目规模在3 000左右。
我最初以为 /sys/class/ 中的链接是固定的,但后来发现这是错误的。
它们是动态生成的。

还有一点,/dev/是一个设备节点文件,属于POSIX标准文件系统,通过主、辅设备号映射到内核设备驱动程序。
例如/dev/tty0的主设备号是4 ,次设备号是0。
很多人没有注意到这一点。
事实上,主设备号和副设备号决定了设备的规格。

等等,还有一件事,/sys/class/是由驱动程序通过class_create()函数注册的,而/dev/是由驱动程序通过device_create()或cdev_add()函数注册的。
也可以手动生成(需要指定主设备号和从设备号)。
这种注册方式的不同,导致了地位和实现方式的不同。

从内容和结构上来说,/sys/class/包含符号链接和属性文件,代表了设备在内核中的抽象模型,而/dev/仅包含设备节点,每个节点由主设备号和次设备号唯一标识。
我觉得值得尝试一下,通过实际操作感受一下差异。

最后,一个很容易陷入的陷阱是不要混淆 sysfs 和 devtmpfs。
虽然它们都是与设备相关的,但一个是伪文件系统,另一个是POSIX标准文件系统,它们具有不同的功能状态。