目录
umask
首页 运维 linux运维 Linux文件与目录管理的介绍(附代码)

Linux文件与目录管理的介绍(附代码)

Mar 12, 2019 pm 05:10 PM
linux linux运维

本篇文章给大家带来的内容是关于Linux文件与目录管理的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

基础命令

基本命令

pwd命令
作用:显示当前工作目录的名称
选项:-p 显示链接的真实路径

cd命令
作用:切换当前工作目录
常用:

cd 切换到根目录cd - 返回到前一个工作目录cd .. 切换工作目录到当前目录的上一级目录cd /usr/local 切换工作目录到/usr/local

ls命令
作用:显示目录与文件信息
常用选项:

-a 显示所有文件,包括以.开头的隐藏文件-h 人性化显示容量信息-l 长格式显示文档的详细信息-u 显示文件或目录最后被访问的时间-t 以修改时间排序,ls默认按文件名称排序-R 递归显示子目录

touch命令
作用:创建文件或者修改文件时间
如:$ touch hello.txt
如果hello.txt文件不存在,则创建文件,如果存在,则修改hello.txt所有的时间为当前系统的时间。

mkdir命令
作用:创建目录
选项:-p 创建多级目录
如:$ mkdir -p /tmp/data/mysql
假如/tmp/data目录不存在,就会自动创建/data目录再创建mysql目录。

cp命令
作用:复制文件或者目录
选项:

-r 递归,复制子文件与子目录(复制目录必加)-a 复制时保留源文档的所有属性

rm命令
作用:删除文件或者目录
选项:

-f 不提示,强制删除-i 删除前,提示是否删除-r 递归删除,删除目录以及目录下的所有内容

需谨慎:rm -rf *

mv命令
作用:移动或者重命名文件或目录
如:

重命名文件$ mv hello.txt hello.doc移动文件到指定目录$ mv hello.txt /usr/local/src移动文件到指定目录并改名$ mv hello.txt /usr/local/src/hello.doc

du命令
作用:计算文件或目录的大小(容量)
选项:

-h 人性化显示容量信息-a 查看所有目录以及文件的容量信息-s 仅显示总容量

查看文件内容命令

cat命令
作用:查看文件内容
选项:

-b 显示行号,空白行不显示行号-n 显示行号,包含空白行

示例:

[root@moli_linux1 ~]$ cat -b hello.txt 
     1    one:hello world

     2    two:hello world
[root@moli_linux1 ~]$ cat -n hello.txt 
     1    one:hello world
     2    
     3    two:hello world
登录后复制

tac命令
作用:倒序查看文件内容(与cat相反)

[root@moli_linux1 ~]$ tac  hello.txt 
two:hello world

one:hello world
登录后复制

head命令
作用:查看文件头部内容,默认显示前10行。
选项:

-c nK 显示文件前nKB的内容-n 显示文件前n行内容

示例:head -5 /etc/passwd 显示/etc/passwd文件前5行内容。

tail命令
作用:查看文件尾部内容,默认显示末尾10行。
选项:

-c nK 显示文件前nKB的内容-n 显示文件前n行内容

示例:tail -5 /etc/passwd 显示/etc/passwd文件后5行内容。

less命令
作用:分页查看文件内容
说明:按空格键查看下一页,q键退出查看,ctrl b向上翻页,ctrl f向下翻页,g跳到第一行,G跳到最后一行。
示例:less  /var/log/jenkins/jenkins.log

more命令
作用:分页查看文件内容
说明:按空格键查看下一页,q键退出查看,ctrl b向上翻页,ctrl f向下翻页
示例:`more  /var/log/jenkins/jenkins.log
`

wc命令
作用:显示文件行,单词与字节统计信息
选项:

-c 显示文件字节统计信息-l 显示文件行数统计信息-w 显示文件单词统计信息

示例:

[root@moli_linux1 ~]$ wc hello.txt 
 3  4 33 hello.txt
[root@moli_linux1 ~]$ wc -c hello.txt 
33 hello.txt
[root@moli_linux1 ~]$ wc -l hello.txt 
3 hello.txt
[root@moli_linux1 ~]$ wc -w hello.txt 
4 hello.txt
登录后复制

权限管理

Linux下文件的权限一般包括读、写、可执行三种控制,可用字母或者数字表示。

字母表示为为r、w、x数字表示为4、2、1

也就是r=4,w=2,x=1。
我们可以使用ls -l命令查看文件或者目录的权限。

[root@moli_linux1 ~]$ ls -l
总用量 8
drwxr-xr-x. 3 root root   23 6月   6 2018 192.168.229
-rw-------. 1 root root 1538 5月  19 2018 anaconda-ks.cfg
drwxr-xr-x. 3 root root   18 7月  27 2018 git_data
-rw-r--r--  1 root root   33 3月   5 13:37 hello.txt
drwxr-xr-x. 4 root root   33 7月   4 2018 server
drwxr-xr-x  4 root root   68 10月  2 15:48 shell-100
drwxr-xr-x  4 root root   67 11月 16 21:29 test-find
登录后复制

其中第一列的第一个字符表示文件类型,之后的9个字符就是权限了,而第一列最后一个字符有的是一个点.,有的没有,这个点代表这个文件受selinux所限制。
以上面的drwxr-xr-x.为例:

第一个字符是字母d,表示文件类型是目录,常见的有:字母l代表链接文件、字母b或者c代表设备、字母s代表socket文件等。第二个字符到第九个字符代表权限。三位一组分别为所有者(a)权限,所属组(g)权限、其他用户(o)权限。这个文件的权限为所有者权限可读可写可执行、所属组权限为可读可执行不可写、其他用户权限可执行不可读不可写。最后一个字符是点,表示受selinux限制。

关于权限的表示可看下表:

数字 字母 文件 目录
4 r 查看文件内容 查看目录下的文件与目录名称
2 w 修改文件内容 在目录下增、删、改文件与目录名称
1 x 可执行,一般为程序或者脚本 可用cd命令进入目录

Linux默认权限

文件默认权限

文件默认最大权限为644 (rw-r--r--)一般会给文件644权限

目录默认权限

目录默认最大权限为755(rwxr-xr-x)一般会给目录755权限

chmod命令

作用:修改文件或者目录的权限
格式:chmod [选项] 权限 文件或目录
选项:-R 递归将权限应用于所有的子目录与子文件
其中权限的表示可用数字或者字母,也可以用a(所有人)、u(代表所有者)、g(所属组)、o(其他用户)。
示例:
环境准备,test目录下有3个文件和1个目录test-1,子目录test-1里有文件hello.txt。各个文件目录权限如下:

[root@moli_linux1 test]$ ll -R
.:
总用量 0
-rw-r--r-- 1 root root  0 3月   7 14:43 1.txt
-rw-r--r-- 1 root root  0 3月   7 14:43 2.txt
-rw-r--r-- 1 root root  0 3月   7 14:43 3.txt
drwxr-xr-x 2 root root 23 3月   7 14:44 test-1

./test-1:
总用量 0
-rw-r--r-- 1 root root 0 3月   7 14:44 hello.txt
[root@moli_linux1 test]$ tree
.
├── 1.txt
├── 2.txt
├── 3.txt
└── test-1
    └── hello.txt

1 directory, 4 files
登录后复制

修改1.txt文件的权限为600

$ chmod 600 1.txt 或者 $ chmod u=rwx,g-r,o-r 1.txt
登录后复制

对1.txt文件的所有人权限添加可执行权限

$ chmod a+x 1.txt 或者 $ chmod u+x,g+x,o+x 1.txt
登录后复制

对test目录下的所有文件设置所有人可读可写

$ chmod -R a=rw test
登录后复制

建议:修改权限能用数字就用数字...

chown命令

作用:修改文件或目录的所有者与所属组
格式:chown [选项] [所有者]:[所属组] 文件名/目录名
选项:-R 递归将权限应用于所有子目录与子文件
使用ls -l命令查看文件或目录的时候,第三列和第四列就是文件或目录的所有者与所属组。

[root@moli_linux1 test]$ ls -l 1.txt 
-rwx------ 1 root root 0 3月   7 14:43 1.txt
登录后复制

比如上面1.txt文件的所有者是root用户,所属组是root组。

修改1.txt文件的所有者为mori,所属组为mail

[root@moli_linux1 test]$ chown mori:mail 1.txt 
[root@moli_linux1 test]$ ll 1.txt 
-rwx------ 1 mori mail 0 3月   7 14:43 1.txt
# 所有者与所属组已改变
登录后复制

umask

Linux默认权限控制,也就是说umask的作用是设置用户创建文件或者目录时,这个文件或目录的默认权限。
在Linux终端输入umask时,出现数字0022这个就是默认的umask值。

[root@moli_linux1 test]$ umask
0022
登录后复制

修改umask    
我们可以通过输入命令$ umask 0032修改系统默认的umask值

[root@moli_linux1 test]$ umask 0032
[root@moli_linux1 test]$ umask
0032
登录后复制

umask反掩码计算
当umask掩码是偶数的时候,默认权限=最大权限-umask值

文件最大权限是666,因此创建文件的默认权限是666-022=644目录最大权限是777,因此创建目录的默认权限是777-022=755

当umask掩码是奇数的时候,计算文件的默认权限的时候,要在奇数位加1
如:umask=032

对于文件:666-032=634,然后奇数位+1,634+010=644对于目录:777-032=745,然后奇数位+1,745+010=755

文件系统权限

设置文件系统权限命令chattr

chattr +a(append) 只能追加chattr +i 无敌,不能进行任何操作

查看文件系统权限命令lsattr
示例:

[root@moli_linux1 test]$ ll 2.txt 
-rw-r--r-- 1 root root 0 3月   7 14:43 2.txt

[root@moli_linux1 test]$ chattr +a 2.txt # 添加隐藏权限

[root@moli_linux1 test]$ echo "hello world" > 2.txt # 不允许重定向
-bash: 2.txt: 不允许的操作

[root@moli_linux1 test]$ echo "hello world" >> 2.txt # 允许追加重定向

[root@moli_linux1 test]$ mv 2.txt helloworld.txt # 不允许移动 
mv: 无法将"2.txt" 移动至"helloworld.txt": 不允许的操作

[root@moli_linux1 test]$ rm -f 2.txt # 不允许删除
rm: 无法删除"2.txt": 不允许的操作

[root@moli_linux1 test]$ lsattr 2.txt  #查看隐藏权限
-----a---------- 2.txt

[root@moli_linux1 test]# chattr -a 2.txt # 去除隐藏权限 

[root@moli_linux1 test]$ lsattr 2.txt  # 没有隐藏权限
---------------- 2.txt
[root@moli_linux1 test]$ rm -f 2.txt # 再次删除,成功
登录后复制

链接文件

Linux中链接文件分为软连接和硬链接。软连接可以跨分区,但源文件不可删除。硬链接不可以跨分区,但可以将源文件删除。
创建软硬链接使用命令ln 
创建软连接:ln -s 文件名 链接名
创建硬链接:ln 文件名 链接名

软连接

软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。
因此软链接的创建与使用没有类似硬链接的诸多限制:

软链接有自己的文件属性及权限等;可对不存在的文件或目录创建软链接;软链接可交叉文件系统;即,可跨分区。软链接可对文件或目录创建;创建软链接时,链接计数 i_nlink 不会增加;删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling
 link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

示例:

[root@moli_linux1 ~]$ ln -s /test/hello.txt /tmp/hi.txt        #创建文件软连接
[root@moli_linux1 ~]$ ln -s /test/ /var/test                #创建目录软连接
[root@moli_linux1 ~]$ rm /test/hello.txt;cat /tmp/hi.txt    #删除源文件后,链接无法使用
登录后复制

硬链接

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

文件有相同的 inode 及 data block;只能对已存在的文件进行创建;不能交叉文件系统进行硬链接的创建;不能对目录进行创建,只可对文件创建;删除一个硬链接文件并不影响其他有相同 inode 号的文件。

示例:

[root@moli_linux1 ~]$ ln /test/hello.txt /tmp/hi.txt    #创建文件硬链接
[root@moli_linux1 ~]$ rm /test/hello.txt             #删除源文件后依旧可用
登录后复制

以上是Linux文件与目录管理的介绍(附代码)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

怎么看docker进程 怎么看docker进程 Apr 15, 2025 am 11:48 AM

Docker 进程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目录(Linux)。

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

vscode 无法安装扩展 vscode 无法安装扩展 Apr 15, 2025 pm 07:18 PM

VS Code扩展安装失败的原因可能包括:网络不稳定、权限不足、系统兼容性问题、VS Code版本过旧、杀毒软件或防火墙干扰。通过检查网络连接、权限、日志文件、更新VS Code、禁用安全软件以及重启VS Code或计算机,可以逐步排查和解决问题。

vscode 可以用于 mac 吗 vscode 可以用于 mac 吗 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有强大的扩展功能、Git 集成、终端和调试器,同时还提供了丰富的设置选项。但是,对于特别大型项目或专业性较强的开发,VS Code 可能会有性能或功能限制。

vscode是什么 vscode是干什么用的 vscode是什么 vscode是干什么用的 Apr 15, 2025 pm 06:45 PM

VS Code 全称 Visual Studio Code,是一个由微软开发的免费开源跨平台代码编辑器和开发环境。它支持广泛的编程语言,提供语法高亮、代码自动补全、代码片段和智能提示等功能以提高开发效率。通过丰富的扩展生态系统,用户可以针对特定需求和语言添加扩展程序,例如调试器、代码格式化工具和 Git 集成。VS Code 还包含直观的调试器,有助于快速查找和解决代码中的 bug。

notepad怎么运行java代码 notepad怎么运行java代码 Apr 16, 2025 pm 07:39 PM

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

Linux的主要目的是什么? Linux的主要目的是什么? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

VSCode怎么用 VSCode怎么用 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) 是一款跨平台、开源且免费的代码编辑器,由微软开发。它以轻量、可扩展性和对众多编程语言的支持而著称。要安装 VSCode,请访问官方网站下载并运行安装程序。使用 VSCode 时,可以创建新项目、编辑代码、调试代码、导航项目、扩展 VSCode 和管理设置。VSCode 适用于 Windows、macOS 和 Linux,支持多种编程语言,并通过 Marketplace 提供各种扩展。它的优势包括轻量、可扩展性、广泛的语言支持、丰富的功能和版

See all articles