编辑
2023-03-09
Linux
00
请注意,本文编写于 622 天前,最后修改于 612 天前,其中某些信息可能已经过时。

目录

文件与目录操作
linux 系统各文件用途
查询路径
查询当前目录路径 pwd
查询命令对应执行文件路径 which
查看和切换目录
切换目录 cd
查看目录中文件 ls
查看当前目录详情 du
创建文件、创建目录
创建文件 touch
创建目录 mkdir
查看文件
查看完整文件内容 cat
分页显示文件内容 less
显示文件前几行 head
显示文件结尾几行 tail
文件复制、移动、删除
拷贝文件和目录 cp
剪切文件、重命名文件 mv
文件的删除 rm
文件的链接
硬链接 ln
软链接 ln -s
查找文件
全局搜索 locate
范围搜索 find
根据文件名查找 find -name
根据文件大小查找 find -size
根据文件最近访问时间查找 find -atime
指定查找文件类型 find -type
查找后操作
用户与权限
用户操作
以 root 身份运行
添加用户 useradd
修改用户密码 passwd
删除用户 userdel
切换用户 su
用户群组管理
创建群组 groupadd
删除群组 groupdel
查看用户所在群组 groups
修改用户所属群组 usermod
文件归属修改
修改文件所属用户 chown
修改文件所属用户群组 chgrp
文件权限管理
查看文件或目录权限
权限数值
修改文件访问权限 chmod
通过三位权限数值修改权限
通过字母分配权限

文件与目录操作

linux 系统各文件用途

image.png

查询路径

查询当前目录路径 pwd

# 显示当前目录的路径 pwd

image.png

查询命令对应执行文件路径 which

Linux 下,每一条命令其实都对应一个可执行程序,在终端中输入命令,按回车的时候,就是执行了对应的那个程序

# 查看命令的可执行文件所在路径 which 命令

查看和切换目录

切换目录 cd

cd / --> 跳转到根目录 cd ~ --> 跳转到家目录 cd .. --> 跳转到上级目录 cd ./home --> 跳转到当前目录的home目录下 cd /home/lion --> 跳转到根目录下的home目录下的lion目录 cd --> 不添加任何参数,也是回到家目录

相关信息

输入cd /ho

  • 单次 tab 键会自动补全路径
  • 两次 tab 键会列出所有可能的目录列表

查看目录中文件 ls

  • -a 查看目录下所有文件,包括隐藏文件
  • -l 显示详细信息的列表
  • -h 适合人类阅读的排版
  • -t 根据文件最近修改时间排序
  • -i 显示文件的 inode ( inode 是文件内容的标识)

image.png

image.png

image.png

查看当前目录详情 du

默认列举当前目录下所有子目录信息

  • -h 适合人类阅读的(文件大小会变成 k、M 等适合阅读的形式)
  • -a 同时列举目录下所有文件的大小信息(同 du)
  • -s 只显示当前目录总大小,不显示其他具体信息

image.png

image.png

image.png

创建文件、创建目录

创建文件 touch

touch [文件名]

image.png

创建目录 mkdir

  • -p 递归创建目录结构,可以直接创建多层目录
mkdir [目录名称] mkdir -p dir1/dir2/dir3

image.png

image.png

查看文件

查看完整文件内容 cat

cat 会一次性显示文件的所有内容,如果文件行数过多,可能会受命令行显示行数限制,无法看到前面的部分

所以 cat 更适合查看小文件

  • -n 查看内容显示行号
cat [文件名或路径] cat -n [文件名或路径]

image.png

image.png

分页显示文件内容 less

less [文件路径]

【快捷操作】

  • 空格键:前进一页(一个屏幕);
  • b 键:后退一页;
  • 回车键:前进一行;
  • y 键:后退一行;
  • 上下键:回退或前进一行;
  • d 键:前进半页;
  • u 键:后退半页;
  • q 键:停止读取文件,中止 less 命令;
  • = 键:显示当前页面的内容是文件中的第几行到第几行以及一些其它关于本页内容的详细信息;
  • h 键:显示帮助文档;
  • / 键:进入搜索模式后,按 n 键跳到一个符合项目,按 N 键跳到上一个符合项目,同时也可以输入正则表达式匹配。

显示文件前几行 head

  • -n 指定行数
# 默认显示 10 行 head [文件路径] # 指定显示行数 head [文件路径] -n [行数]

image.png

显示文件结尾几行 tail

  • -n:指定行数
  • -f:会每过1秒检查下文件是否有更新内容
  • -s:基于 -f 基础上,指定间隔时间
# 默认显示 10 行 tail [文件路径] # 指定显示行数 tail [文件路径] -n [行数] # 动态更新,一般用于查看日志 tail [文件路径] -f -s [时间间隔]

image.png

文件复制、移动、删除

拷贝文件和目录 cp

  • -r: 递归的拷贝,常用来拷贝一整个目录
# 将文件拷贝至目标路径下,根据目标路径命名新文件 cp [被拷贝的文件路径] [目标文件路径] # 将文件拷贝至目标目录下,目标路径如果只有目录路径,则文件名不变 cp [被拷贝的文件路径] [目标目录路径] cp *.txt folder --> 把当前目录下所有 txt 文件拷贝到 folder 目录下

image.png

image.png

image.png

image.png

剪切文件、重命名文件 mv

mv 使用方法与 cp 完全相同,可参考上方 cp 使用方法

当目标目录为当前目录时,会覆盖当前文件,即完成重命名

文件的删除 rm

注意

由于 Linux 下没有回收站,一旦删除非常难恢复,因此需要谨慎操作

  • -i 向用户确认是否删除;
  • -f 文件强制删除;
  • -r 递归删除文件夹,著名的删除操作 rm -rf 。
# 删除文件 rm [文件路径] # 删除多个文件 rm [文件 1] [文件 2] # 递归删除,用于删除文件夹 rm -r [路径]

文件的链接

Linux 文件的存储方式分为3个部分:文件名文件内容权限

  • 文件名的列表是存储在硬盘的其它地方,和文件内容是分开存放的
  • 每个文件名通过 inode 标识绑定到文件内容,这个绑定方式就是链接

linux 中有两种链接方式: 硬链接、软链接

硬链接 ln

image.png

硬链接是将一个文件的 inode(类似指针) 共享给链接的文件。这样两个文件就共享了内容

  • 一个文件修改,其他链接的文件内容也会被修改

  • 删除链接的一个文件,不会影响其他文件,因为文件内容还存在。只有把链接的所有文件都删除,文件内容才会消失

  • 硬链接指向的是 inode,所以不能直接链接目录

# 创建文件 2,为文件 1 的硬链接 ln [文件 1] [文件 2]

软链接 ln -s

软链接类似一个快捷方式,指向的是被链接的文件

image.png

# 创建文件 1 的软链接: 文件 2 ln -s [文件 1] [文件 2]
  • 文件 2 指向文件 1,显示内容为文件 1 的内容
  • 文件 2 的 inode 与文件 1 的 inode 不相同
  • 删除文件 2 对文件 1 无影响
  • 删除文件 1,文件 2 会变成死链接

相关信息

执行 ls -l 查看目录下文件具体信息时,可以看到链接状态

image.png

查找文件

全局搜索 locate

locate 可以搜索包含关键字的所有文件和目录。

linux 本身不具备 locate,需要安装该软件

# 安装 locate yum install mlocate # 扫描系统文件,更新文件数据库 updatedb # 搜索文件 file.txt locate file.txt # 支持正则匹配 locate fil*.txt

相关信息

locate 命令会去文件数据库中查找命令,而不是全磁盘查找.

因此刚创建的文件并不会更新到数据库中,所以无法被查找到,可以执行 updatedb 命令去更新数据库。

image.png

范围搜索 find

find 用于查找文件,会实时遍历实际硬盘,允许对每个找到的文件进行后续操作

find 只能找到符合查找内容的文件,而locate 可以查找所有包括关键词的文件

find [路径范围] [目标] [做什么]
  • 何处:指定在哪个目录查找,此目录的所有子目录也会被查找
    • 不指定则为当前目录。
  • 何物:查找什么
    • 可以根据文件的名字来查找
    • 也可以根据其大小来查找
    • 还可以根据其最近访问时间来查找。
  • 做什么:找到文件后,可以进行后续处理,
    • 不指定则只会显示找到的文件。
根据文件名查找 find -name
# 不指定范围,默认为当前目录及子目录 find -name "file.txt" # 当前目录及子目录,通过文件名查找 find . -name "file.txt" # 整个硬盘查找 find / -name "file.txt" # 指定目录下查找 find /var/log -name "access.log" # 正则匹配 find /var/log -name "*.log" # 查找文件名包含指定内容的文件 find /var/log -name "*access*"
根据文件大小查找 find -size
# /var 目录下查找文件大小超过 10M 的文件 find /var -size +10M # /var 目录下查找文件大小小于 50k 的文件 find /var -size -50k # /var 目录下查找文件大小查过 1G 的文件 find /var -size +1G # /var 目录下查找文件大小等于 1M 的文件 find /var -size 1M
根据文件最近访问时间查找 find -atime
# 近 7天内访问过的.txt结尾的文件 find -name "*.txt" -atime -7
指定查找文件类型 find -type
  • type f: 只查找文件
  • type d: 只查找目录
# find . -name "file" -type f # find . -name "file" -type d
查找后操作
# 找出所有后缀为 txt 的文件,并按照 %p - %u\n 的格式打印出来 # %p: 文件名 # %u: 文件所有者 find -name "*.txt" -printf "%p - %u\n" # 找到当前目录及子目录下所有.jpg文件,并直接删除,不会提示 find -name "*.jpg" -delete # 对每个文件名以 .c 结尾的文件都执行 exec 后的指令 # {} 会被查找到的文件替代 # \; 是固定结尾 find -name "*.c" -exec chmod 600 {} \; # 同上, -ok 会增加确认提示 find -name "*.c" -exec chmod 600 {} \;

用户与权限

Linux 是一个多用户的操作系统。

在 Linux 中,我们可以创建无数个用户,但是这些用户是被划分到不同的群组里面的,有一个用户,名叫 root ,是一个很特殊的用户,它是超级用户,拥有最高权限。

image.png

用户操作

以 root 身份运行

自己创建的用户是有限权限的用户,这样大大提高了 Linux 系统的安全性,有效防止误操作或是病毒攻击,但是我们执行的某些命令需要更高权限时可以使用 sudo 命令

# 以 root 身份运行命令 sudo [命令]

添加用户 useradd

  • 该命令需要 root 权限
# 添加用户 useradd [用户名]

创建后,可以在 /home 中看到该用户的文件夹

修改用户密码 passwd

  • 该命令需要 root 权限
# 修改某个用户的密码 passwd [用户名]

删除用户 userdel

  • 该命令需要 root 权限
# 只删除用户,不删除对应/home下文件夹 userdel [用户名] # 删除用户,及对应/home下文件夹 userdel [用户名] -r

切换用户 su

# 切换为root 用户 sudo su # 切换为普通用户 su [用户名] # 切换为 root 用户 su -

用户群组管理

创建群组 groupadd

groupadd [群组名]

删除群组 groupdel

groupdel [群组名]

查看用户所在群组 groups

groups [用户名]

修改用户所属群组 usermod

  • -l 对用户重命名。需要注意的是 /home 中的用户家目录的名字不会改变,需要手动修改。
  • -g 修改用户所在的群组
    • 例如 usermod -g friends lion 修改 lion 用户的群组为 friends 。
  • -G 一次性让用户添加多个群组
    • 例如 usermod -G friends,foo,bar lion 。
  • -a -G 会让你离开原先的群组,如果你不想这样做的话,就得再添加 -a 参数,意味着 append 追加的意思。
# 对用户重命名,home 中文件夹不会变动 usermod -l [新用户名] [原用户名] # 修改用户所在群组 usermod -g [群组名] [用户名] # 为用户添加多个群组,并离开当前群组 usermod -G [使用 ,间隔的群组名] [用户名] # 为用户追加多个群组,不离开当前群组 usermod -a -G [使用 ,间隔的群组名] [用户名]

文件归属修改

修改文件所属用户 chown

  • -R 递归转让子目录和子文件
# 将文件转让给指定用户 chown [用户名] [文件路径] # 指定新的文件归属用户及群组 chown [用户名]:[群组名称] [文件路径] # 转让目录及子目录 chown -R [用户名] [文件路径]

修改文件所属用户群组 chgrp

chgrp [群组名称] [文件路径]

文件权限管理

查看文件或目录权限

使用 ls -l 可以查看文件和目录的详情

image.png

文件权限组成为 10 位,排布顺序如下

image.png

  • 第一位 :
    • d 表示目录,就是说这是一个目录
    • - 普通文件
    • l 链接是
  • r : read 表示文件可读。
  • w : write 表示文件可写,一般有写的权限,就有删除的权限。
  • x : execute 表示文件可执行。
  • - :表示没有相应权限。

相关信息

举例:

权限 drwxr-xr-x 的意思:

  • 它是一个文件夹
  • 它的所有者具有:读、写、执行权限;
  • 它的群组用户具有:读、执行的权限,没有写的权限;
  • 它的其它用户具有:读、执行的权限,没有写的权限。

权限数值

权限
r4
w2
x1

文件的权限数值,就是把每一位的值加起来

相关信息

举例:

640

  • 6 = 4 + 2 + 0 表示所有者具有 rw 权限
  • 4 = 4 + 0 + 0 表示群组用户具有 r 权限
  • 0 = 0 + 0 + 0 表示其它用户没有权限

对应文字权限为:-rw-r-----

修改文件访问权限 chmod

通过三位权限数值修改权限
# 通过权限三位数值修改权限 chmod [权限数值] [文件路径]
通过字母分配权限

建议使用数字分配权限,字母方式比较复杂

  • u : user 的缩写,用户的意思,表示所有者。
  • g : group 的缩写,群组的意思,表示群组用户。
  • o : other 的缩写,其它的意思,表示其它用户。
  • a : all 的缩写,所有的意思,表示所有用户。
  • + :加号,表示添加权限。
  • - :减号,表示去除权限。
  • = :等于号,表示分配权限。
# 文件file的所有者增加读和运行的权限 chmod u+rx file # 文件file的群组用户增加读的权限 chmod g+r file # 文件file的其它用户移除读的权限 chmod o-r file # 文件file的群组用户增加读的权限,其它用户移除读的权限 chmod g+r o-r file # 文件file的群组和其他用户移除读的权限 chmod go-r file # 文件file的所有用户增加运行的权限 chmod +x file # 文件file的所有者分配读写和执行的权限,群组其它用户分配读的权限,其他用户没有任何权限 chmod u=rwx,g=r,o=- file

本文作者:Silon汐冷

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!