Linux——一切皆文件。开篇须知,在 Linux 中一切都是文件,包括光驱、键盘、鼠标、服务等等。
Linux命令格式
命令名称 命令参数 命令对象
eg.
注意:这三者中间用空格间隔,且严格区分大小写
命令名称:相当于语法中的动词,即你想做什么
命令参数:对命令进行调整或补充
参数格式有两种:长格式(eg. --help)和短格式(eg. -h),可以认为短格式就是长格式的简写。
文件类型
1. 普通/常规文件:
包括可读文件、二进制文件、图像文件、压缩文件等。
2. 特殊文件:
-
块文件 ( block ):用于与设备驱动程序通信的设备文件。
-
字符设备文件 ( Character ):提供非缓冲的串行接口,与设备逐字节通信。
-
符号链接 ( Symbolic link ):指向其他文件的引用,相当于快捷方式。
-
命名管道 ( Named pipe ):用于进程间通信的文件。
-
套接字 ( socket ):用于进程间通信,尤其是在不同系统或网络之间。
3. 目录文件:
是⼀种特殊文件,即文件夹,既可以包含普通文件也可以包含其他特殊文件,构成了 Linux 的文件系统结构。
各目录的作用
-
/bin :存放系统常用的二进制可执行文件,例如常见的命令 ls 、 cp 等。
-
/boot :存放启动 Linux 系统所需的核心文件,包括内核和启动引导程序(如 grub )的配置
-
文件。
-
/dev :存放设备文件,Linux 将外部设备(如硬盘、光驱等)作为文件来管理。
-
/etc :存放系统配置文件和子目录,例如用户账号信息、启动脚本、系统服务配置等。
-
/home :⽤户的主⽬录,每个⽤户都有⾃⼰的⼦⽬录,存放个⼈数据和配置。
-
/lib 和 /lib64 :存放系统最基本的共享库文件, lib64 用于 64 位系统。
-
/media 和 /mnt :用于挂载外部设备或临时挂载文件系统的目录。
-
/opt :用于存放第三方软件包或额外安装的软件。
-
/proc :虚拟文件系统,包含当前内核运行状态的各种信息,系统进程信息等。
-
/root :超级用户(root)的主目录(家目录)。
-
/run :存放系统启动以来的信息,通常为临时文件系统,系统重启后会清空。
-
/sbin :存放系统管理员使用的系统管理程序,普通用户⼀般无权限使用。
-
/srv :存放服务启动后需要提取的数据。
-
/sys :存放系统设备的文件信息,是内核对象子系统的直观反映。
-
/tmp :存放临时文件的目录,系统或用户程序运行过程中会在此放置临时文件,系统重启后可能
-
会被清空。
-
/usr :存放⽤户级别的应⽤程序和⽂件,包括命令、库⽂件、⽂档等。
-
/var :存放经常变化的⽂件,如⽇志⽂件、邮件队列、缓存⽂件等。
在 Linux 系统中,某些目录(如 /etc 、 /bin 、 /sbin 、 /usr/bin 、 /usr/sbin 、 /var 等)非常重要,误删或随意更改可能会导致系统无法正常运行或无法启动。这些目录包含了系统的核心文件和配置文件,需要特别注意小心处理。
常用命令
每个命令后有时会跟一些形如 “-a” “-p” 这样的内容,叫做选项或参数,是对命令的补充或调整。
cd 命令
语法:
cd [选项] 目标目录
cd命令后可以跟两种路径:绝对路径和相对路径。
-
绝对路径就是从根目录 “ / ” 开始的完整路径,这可以保证不论当前处于那个目录之下,都能直接切换到目标路径,例如 /root/ Desktop / test / file 。
-
相对路径是站在当前目录看目标路径的位置。比如:我要打开绝对路径为 /root/ Desktop / test / file 的 file 文件夹,若此时我正处于 Desktop 目录下,使用 cd test / file,若我处于 root 目录下,则只需要 cd Desktop / test / file 。
//使用绝对路径切换到file目录
cd /root/Desktop/test/file
//先使用绝对路径切换到Desktop目录,再使用相对路径切换到file目录
cd /root/Desktop
cd test/file
常用参数
-
-P :物理路径模式,也就是目标目录的真实路径。如果目标目录包含符号链接,使用这个选项cd会直接切换到链接指向的实际目录。
-
-L :逻辑路径模式。如果目标目录包含符号链接,则cd会切换到符号链接本身的路径,而不是它要指向的实际目录。
-
~ :切换到当前用户的主目录。
-
- :切换到上一次所在的目录。
-
.. :切换到当前目录的父目录(上一级目录)。
-
../.. :切换到当前目录的上两级目录。
ls命令
语法
ls [参数] [目标文件或目录]
// 如果没有指定, ls 会列出当前工作目录的内容。
蓝色:表示目录;
浅蓝色:表示链接文件;
灰色:表示其他文件;
绿色:表示可执行文件;
红色:表示压缩文件或归档文件。;
红色闪烁:表示链接的文件有问题;
黄色:表示设备文件或套接字文件,包括block、char、fifo。
常见选项
-
-a :列出所有文件和目录,包括隐藏文件。
-
-A :列出所有文件和目录,但不包括当前目录(.)和父目录(..)。
-
-l :使用长格式列出文件,显示详细信息,包括权限、所有者、文件大小、修改时间等。
-
-t :根据文件的修改时间排序,最近修改的文件排前面。常与“ -l ”结合为“ -lt ”显示详细信息并按照修改时间排序。
-
-S :根据文件大小排序,由大到小排列。通常与“ -l ”参数结合使用。
-
-R :递归列出目录下的所有内容,包括子目录及其内容。
-
-h :以人类可读的方式显示文件大小(例如 KB, MB, GB),通常与“ -l ”参数结合使用。
[root@root /]# ls -l
total 102
dr-xr-xr-x. 2 root root 4096 Sep 26 11:29 bin
dr-xr-xr-x. 5 root root 1024 Sep 26 10:03 boot
drwxr-xr-x 21 root root 3880 Sep 26 10:32 dev
drwxr-xr-x. 121 root root 12288 Sep 26 14:38 etc
drwxr-xr-x. 3 root root 4096 Sep 26 10:05 home
dr-xr-xr-x. 2 root root 4096 Sep 26 11:29 bin
第 1 位为文件类型:
d 代表文件类型为目录
- 代表普通文件
l 符号链接
第 2 位~第 10 位为身份权限:
第 2、3、4 位为 owner(所属主)的权限
第 5、6、7 位为 group(所属组)的权限
第 8、9、10 位为 other(其他人)的权限
这些位置上的字符代表权限:
r --只读;w--写;x--执行;没有的权限以“ - ”代替
注意 : root 拥有最高权限
之后的数字表示文件个数:
如果是普通文件,数字位为1;
如果查看的是目标目录,则该数字代表目录下文件的个数
第一个 root 表示所属主 / 拥有者
第二个 root 表示所属组
之后的数字(4096)表示文件大小
后面的(Sep 26 11:29)表示最后一次修改的时间
bin 为名字
mkdir命令
语法
mkdir [选项] ⽬录名
常用选项
-
-p :递归创建多级目录。如果上级目录不存在,会⼀并创建。例如, mkdir -p /path/to/directory 会在 /path/to 不存在时同时创建。
-
-m :在创建目录的同时,指定目录的权限。
- -v :显示创建过程的详细信息。每创建一个目录都会显示一条消息。
//在当前目录下创建一个目录aa
mkdir aa
//当前在根目录下,要在桌⾯上创建⽬录AAA
mkdir /root/Desktop/AAA
//在当前目录下创建多个目录aa、bb、cc
mkdir aa bb cc
//在当前目录下创建目录aa,在aa下创建bb,在bb下创建cc
mkdir -p aa/bb/cc
//以 755 权限创建目录aa
mkdir -m 755 aa
这里权限 755 解释一下:
上文中提到某个身份的权限依次有rwx三种
按照这个顺序(按位),如果拥有该权限,则该位为 1,若没有该权限,该位为 0
然后将这三位数字构成的数字由二进制转化为十进制,则这个数字就是这个身份的权限数。
7:7=4+2+1 ,则rwx为111,表示所属主的权限为rwx
7:7=4+2+1 ,则rwx为111,表示所属组的权限为rwx
5:5=4+0+1 ,则rwx为101,表示其他用户的权限为r-x
touch命令
用于创建新的空文件和修改已有文件的时间属性。
1.创建新的空文件: 如果指定的文件不存在, touch 命令会创建⼀个新的空文件。
2. 修改已有文件的时间属性: 如果指定的文件已经存在, touch 命令会修改该文件的时间属性。
时间属性:
atime(访问时间):文件最后一次被读取的时间。Access
mtime(修改时间):文件内容最后一次被修改的时间。Modify
ctime(状态改变时间):文件的权限或属性最后⼀次被修改的时间。Change
修改文件的时间属性时,用户必须是文件的所有者,或者拥有写权限。
在 Linux 系统中, ctime (Change Time,状态改变时间)是无法直接通过用户命令进行修改的。 ctime 是⼀个文件属性,表示文件的元数据(如权限、所有者、链接数等)最后一次被修改的时间。如:修改文件权限、修改文件所有者、修改文件的链接、修改文件的大小时,ctime 会自动更新。
常用选项
-
-a :只修改访问时间(atime)。
-
-m :只修改修改时间(mtime)。
-
-d :同时修改访问时间和修改时间。
-
-c :不创建新文件(如果文件不存在,则不创建新文件,也不报错)。
-
-t :指定时间,格式为 [[CC]YY]MMDDhhmm[.ss] ,用于设置文件的访问时间和修改时间。
cat命令
用于查看文件的内容,特别适合查看内容较少的文件(内容多查看不方便)。它的基本功能是将文件内容输出到终端屏幕上。
语法
cat [选项] ⽂件名
常见选项
-
-n :显示行号(空行也会计算在内)。
-
-s :合并多余的空行,多个空行只显示为一行。
-
-b :显示行号,但不包括空行。
-
-E :在每行的末尾显示 $ 符号,这样可以清楚地看到行尾。
-
-T :将文件中的制表符(Tab)显示为 ^I(大写的 i) 。
// 查看文件 file
cat file
// 显示编号查看 file
cat -n file
// 查看 file 但合并空行
cat -s file
// 持续写⼊⽂件,当输⼊ end 时⾃动退出。即定义结束符为 end。
cat >file <<end
// 删除⽂件内容,但是不删除⽂件本身 重定向之后有时间写一下,这里先这样了!
cat /dev/null > /root/Desktop/file
tac命令
是 cat 命令的反向版本,用于以反序查看文件的内容。它的作用是将文件的内容从最后一行开始向第一行显示,即将文件内容逆序输出。
tac 命令非常适合用于需要查看日志文件的最后几行内容的情况,尤其是当最新的内容往往是最重要的。
语法
tac [选项] ⽂件名
常见选项
-
-b :在行前而不是行后添加分隔符。
-
-r :将分隔符作为正则表达式进行解析,而不是简单的字符串。
-
-s :指定一个字符串作为行的分隔符,而不是默认的换行符。
more命令
用于查看较大文件的内容,特别适合用于一次无法完全显示的文件。它能够分页显示文件内容,便于用户逐页浏览。
在屏幕下方显示百分比,提示当前已经阅读的内容占整个文件的百分比。
使用空格键可以逐页翻阅文件内容。
使用回车键可以逐行翻阅文件内容。
b:返回上一页。
q:退出查看。
语法
more [选项] ⽂件名
常见选项
-
-c :指定行数显示。
-
-d :显示文件内容,之前会清屏,并附加百分比。
-
-p :先清屏再显示内容。
// 基础⽤法
more /etc/shadow
// 以 5 行为单位显示
more -c -5 /etc/shadow
// 从第3⾏开始显示
more +2 file
// 显示⽂件内容,每 5 ⾏显示⼀次,之后清屏
more -p -5 file
head命令
语法
head [选项] ⽂件名
常见选项
-
-n :指定显示的行数。
-
-c :指定显示的字符数。 -c 50 显示⽂件的前 50 个字符。
-
-v :显示文件名或头部信息,通常在处理多个文件时使用。
// 显示⽂件的前 10 ⾏。
head -n 10 file
// 显示前 10 个字符
head -c 10 file
// 显示文件头部信息以及前 2 行内容
head -v -n 2 file
tail命令
用于查看文件的最后几行内容,它的功能和 head 命令类似,但 tail 显示的是文件末尾的部分。
这个命令特别适用于监控日志文件等需要实时查看文件末尾内容的场景。
语法
tail [选项] ⽂件名
常用选项
-
-n :指定显示的行数。
-
-f :实时跟踪文件的变化,尤其适用于查看日志文件的实时更新内容。
-
-c :指定显示的字符数。
// 查看⽂件的最后 10 ⾏(默认⾏为)
tail file
// 查看⽂件的最后 20 ⾏
tail -n 20 file
// 实时跟踪⽂件的末尾内容(例如⽇志⽂件)
tail -f file
// 查看⽂件的最后 50 个字符
tail -c 50 file
stat命令
用于查看文件的存储细节信息,包括文件的时间属性( atime、mtime、ctime )等。它提供了比 ls 命令更详细的信息。
语法
stat [选项] ⽂件名
常见选项
-
-f :显示文件系统的信息,而不是文件的详细信息。
-
-t :简洁格式显示信息。
-
--format :自定义输出格式。
// 查看⽂件的详细信息
// 会显示⽂件的⼤⼩、权限、时间戳信息(atime mtime ctime)、硬链接数等详细信息。
stat file
//查看⽂件系统的信息
stat -f file
// 简洁格式显示⽂件信息
stat -t file
cp命令
用于在 Linux 系统中将文件或目录从⼀个地方复制到另一个地方。
如果目标文件为目录,将源文件复制到目录内。
如果目标文件为普通文件,系统会询问是否覆盖该文件。
如果目标文件不存在,则直接复制。
语法
cp [选项] 源⽂件 ⽬标⽂件
常见选项
-
-f :强制执行覆盖。如果目标文件已经存在, cp 命令将不询问而直接覆盖它。
-
-i :交互式复制。如果目标文件已存在,在覆盖前会提示用户确认。
-
-r 或 -R :递归复制目录及其内容。使用此选项可以复制整个目录树。
// 将 aa ⽬录复制到 /tmp下
cp -r aa /tmp/
// 再将 aa 复制到 /tmp/ (强制执⾏ ,没有提示)
cp -rf aa /tmp/
// 将 aa 和 bb 复制到 /root/Desktop的 cc 下
cp aa bb /root/Desktop/cc
// 将 dir1 下的所有内容都复制到 dir2 下
cp -r dir1/ dir2/
mv命令
用于在 Linux 系统中移动文件或目录、剪切文件或目录、以及重命名文件或目录。本质上, mv 命令的所有操作都是重命名或移动文件。
如果目标路径与源路径相同, mv 命令会将源文件或目录重命名。
如果目标路径不同, mv 命令会将源文件或目录移动到目标路径。
语法
mv [选项] 源⽂件 ⽬标⽂件
常见选项
-
-i :交互模式。如果目标文件已存在,会提示用户确认是否覆盖。
-
-f :强制模式。如果目标文件已存在, mv 命令将不询问直接覆盖。
-
-b :在覆盖目标文件前,先备份被覆盖的文件。
-
-u :只在源文件比目标文件新,或者目标文件不存在的情况下执行移动。
// 将文件 file.txt 改名为 file_new.txt
mv file.txt file_new.txt
// 剪切⽂件 file_new.txt 到⽬录 /tmp/aa 下
mv file_new.txt /tmp/aa
// 将目录 dir2 剪切到 dir3
mv dir2 dir3
rm命令
语法
rm [选项] ⽬标⽂件或⽬录
常见选项
-
-f :强制删除文件或目录,忽略不存在的文件,并且不提示确认。
-
-i :在删除前进行提示,询问用户是否确认删除文件或目录。
-
-r :递归删除目录及其内容。这个选项通常用于删除目录及其下的所有文件和子目录。
-
-v :显示删除过程,输出删除的文件或目录的名称。
// 强制删除根下所有内容 ,并且显示过程,千万不要在真实机上用!!
rm -rf /*
今天就写到这里,之后可能还会出 Linux 高阶命令的~
感谢阅读~