Linux系统目录和命令介绍
1、描述Linux发行版的系统目录名称命名规则以及用途。
目录命名规则:
(1)文件名最长255个字节
(2)包括路径在内文件名称最长4095个字节
(3)除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,有些字符需要用引号来引用它们
(4)标准Linux文件系统(如ext4),文件名称大小写敏感
系统目录名称及用途
[root@centos7 /]# tree -d -L 1 /
/
├── bin -> usr/bin //所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
├── boot //引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
├── data //此文件夹为用户自建
├── dev //设备文件及特殊文件存储位置
├── etc //配置文件目录
├── home //普通用户家目录
├── lib -> usr/lib //启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
├── lib64 -> usr/lib64 //专用于x86_64系统上的辅助共享库文件存放位置
├── media //便携式移动设备挂载点
├── mnt //临时文件系统挂载点
├── opt //第三方应用程序的安装位置
├── proc //用于输出内核与进程信息相关的虚拟文件系统
├── root //管理员的家目录
├── run //是各种各样数据的家园,为了在 Linux 文件系统中更好地组织运行时数据。
├── sbin -> usr/sbin //管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
├── srv //系统上运行的服务用到的数据
├── sys //用于输出当前系统上硬件设备相关信息虚拟文件系统
├── tmp //临时文件存储位置
├── usr //universal shared, read-only data
└── var //包括系统运行时要改变的数据
2、描述文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息?
查看文件元数据
[root@centos7 data]# stat test.txt
File: ‘test.txt’ --文件名
Size: 0 --大小 Blocks: 0 --占用的磁盘块数 IO Block: 4096 --磁盘块大小 regular empty file --文件类型
Device: fd02h/64770d --所在设备 Inode: 67 --inode号 Links: 1 --被硬链接次数
Access: (0644/-rw-r--r--) --访问权限 Uid: ( 0/ root) --属主 Gid: ( 0/ root)--属组
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2020-02-13 19:46:00.164949782 +0800 --文件最近一次的访问时间
Modify: 2020-02-13 19:46:00.164949782 +0800 --文件的修改时间
Change: 2020-02-13 19:46:00.164949782 +0800 --文件的改变时间
Birth: -
修改文件时间戳
touch [OPTION]... FILE...
OPTION:
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]指定atime和mtime的时间戳
3、总结软连接和硬连接区别,并用实例操作说明。
硬链接 | 软链接 | |
---|---|---|
本质 | 同一个文件多个名字 | 不同文件,软链接只是指向相应的文件,类似于windows中的快捷方式 |
能否跨磁盘分区 | 不能 | 能 |
能否链接目录 | 不能 | 能 |
相互关系 | 平等 ,相对独立 | 有主次之分 |
文件类型 | 与源文件相同 | 链接文件 |
链接数 | 被链接后增加链接数 | 被链接后不增加链接数 |
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
pwd 显示当前shell CWD的绝对路径
语法:
pwd(选项)
选项:
-P 显示真实物理路径
-L 显示链接路径(默认)
实例:
[root@localhost ~]# pwd
/root
cd 改变目录
语法:
cd (选项) (参数)
选项:
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
实例:
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。
ls 列出当前目录的内容或指定目录
语法:
ls(选项)(参数)
实例:
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
stat 用于显示文件的状态信息。
语法:
stat(选项)(参数)
选项:
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
实例:
[root@localhost ~]# stat myfile
file: “myfile”
Size: 0 Blocks: 8 IO Block: 4096 一般空文件
Device: fd00h/64768d Inode: 194805815 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-12-12 12:22:35.000000000 +0800
Modify: 2010-10-09 20:44:21.000000000 +0800
Change: 2010-10-09 20:44:21.000000000 +0800[root@localhost ~]# stat -f myfile
File: "myfile"
id: 0 Namelen: 255 type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 241555461 free: 232910771 Available: 220442547
Inodes: Total: 249364480 Free: 249139691[root@localhost ~]# stat -t myfile
myfile 0 8 81a4 0 0 fd00 194805815 1 0 0 1292127755 1286628261 1286628261 4096
touch 创建空文件和刷新时间
语法:
touch [OPTION]... FILE...
选项:
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
cp 复制文件和目录
语法:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
实例:
cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。
mv 移动和重命名文件
语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
选项:
-i 交互式
-f 强制
-b 目标存在,覆盖前先备份
实例:
将文件ex3改名为new1
mv ex3 new1
将目录/usr/men中的所有文件移到当前目录(用.表示)中:
mv /usr/men/* .
rm 删除
语法:
rm [OPTION]... FILE...
选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/
实例:
交互式删除当前目录下的文件test和example
rm -i test example
Remove test ?n(不删除文件test)
Remove example ?y(删除文件example)
删除当前目录下除隐含文件外的所有文件和子目录
rm -r *
5、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
cp /etc/profile /tmp //复制/etc/profile至/tmp/目录
vim /tmp/profile //用vim打开profile文件
:%s/^\s*//g //扩展命令模式下输入
6、在vim中设置tab缩进为4个字符
vim ~/.vimrc //vim打开用户家目录下.vimrc,如需改全局变量的话修改/etc/vimrc文件
set tabstop=4 //加入如下字段