Linux——文件和目录操作

pwd:显示当前所在位置

  • -L:logical首字母缩写,表示显示逻辑路径,取PWD系统环境变量的值
  • -P:physical 显示物理路径时如果当前目录路径是软链接文件,则会显示软链接文件的源文件

cd:切换目录

    • 只使用 - 选项时,将会从当前目录切换到系统环境变量 “OLDPWD”对应值的目录路径,即当前用户上一次所在的目录路径
  • ~ 只使用~选项时,将会从当前目录切换到系统变量 “HOME”对应值的目录路径,即当前用户的家目录所在的路径
  • .. 只使用..时,将会从当前目录切换到当前目录的上一级目录所在的路径

tree:以树形结构显示目录下的内容

  • -a 显示所有文件
  • -d 只显示目录
  • -f 显示每个文件的全路径
  • -i 不显示树枝
  • -L level 遍历目录的最大层数,level为大于0的正整数
  • -F 在执行文件、目录、Socket、符号连接、管道名称等不同类型的文件结尾,各自加上 “*”、"/"、"="、“@”、“|” 号

mkdir 创建目录

mkdir [选项] [目录]

  • -p 递归创建目录
  • -m 设置新建目录的默认目录对应的权限
  • -v 显示创建目录的过程
[root@linuxprobe probuing]# mkdir -pv ./{dir1_1,dir1_2}/{dir2_1,dir2_2}
mkdir: created directory './dir1_1'
mkdir: created directory './dir1_1/dir2_1'
mkdir: created directory './dir1_1/dir2_2'
mkdir: created directory './dir1_2'
mkdir: created directory './dir1_2/dir2_1'
mkdir: created directory './dir1_2/dir2_2'
[root@linuxprobe probuing]# tree -d
.
|-- dir1_1
|   |-- dir2_1
|   `-- dir2_2
|-- dir1_2
|   |-- dir2_1
|   `-- dir2_2
`-- test

touch:创建空文件或改变文件的时间属性

touch 选项 文件
  • -a 只更改指定文件的最后访问时间
  • -d STRING 使用字符串STRING代表的时间作为模板设置指定文件的时间属性
  • -m 只更改指定文件的最后修改时间
  • -r file 将指定文件的时间属性设置为与模板文件file的时间属性相同
  • -t STAMP 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间设置文件的时间属性。世纪、年、月、日、时、分、秒

ls 显示目录下的内容及相关属性信息

ls 选项 文件或目录
  • -l 使用长格式列出文件及目录信息
  • -a 显示目录下的所有文件
  • -t 按修改时间排序
  • -r 依相反次序排序
  • -F 在条目后加上文件类型的指示符号
  • -d 列出目录本身
  • -h 以人类可读的信息显示文件或目录大小
  • -A 列出所有文件 包括隐藏文件
  • -i 显示文件的inode值


  • 第一列 inode索引节点编号
  • 第二列 文件类型及权限 (第一个字符为类型 后9个字符为文件权限符号)
  • 第三列 硬链接个数
  • 第四列 文件或目录所属的用户
  • 第五列 文件或目录所属的组
  • 第六列 文件或目录的大小
  • 第七、八、九列:文件或目录的修改时间

cp:复制文件或目录

cp 选项 源文件 目标文件
  • -p 复制文件时保持源文件的所有者、权限信息及时间属性
  • -d 保留复制的符号链接所指向的目标文件或目录
  • -r 递归复制目录,即复制目录下的所有层级的子目录及文件
  • -a 等同于上面的 pdr三个选项功能的总和
  • -i 覆盖已有文件前提示用户确认
  • -t 可以是 cp -t 目标文件 源文件

mv:移动或重命名文件

mv 选项 源文件 目标文件
  • -f 若目标文件已经存在,则不会询问直接覆盖 强制覆盖
  • -i 若目标文件存在,则询问是否覆盖
  • -n 不覆盖已经存在的文件
  • -t 指定mv的目标目录 适用于移动多个源文件到一个目录的情况
  • -u 在源文件比目标文件新,或目标文件不存在时才进行移动

rm 删除文件或目录

rm 选项 文件或目录
  • -f 强制删除,忽略不存在的文件
  • -i 在删除前需要确认
  • -l 在删除超过三个文件或者递归前要求确认
  • -r 递归删除目录及内容

rmdir 删除空目录

rmdir命令用于删除空目录,当目录不为空时,命令不起作用

rmdir 选项 目录
  • -p 递归删除目录,当子目录删除后其父目录也为空时,也一并删除
  • -v 显示命令执行过程

ln:硬链接与软链接

ln 创建文件间的链接,包括硬链接和软链接

ln 选项 源文件或目录 目标文件或目录
  • 无参数 创建硬链接
  • -s 创建软链接(符号链接)

硬链接

硬链接是指通过索引节点来进行链接。多个文件名指向同一个索引节点时正常且允许的,这种情况下的文件就是硬链接。硬链接文件相当于文件的另外一个入口

  • 硬链接的节点号inode相同
  • 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
  • 只有删除源文件以及源文件所有对应的硬链接文件,文件实体才会被删除
  • 当所有的硬链接文件及源文件被删除之后,再存放新的数据时会占用这个文件的空间
  • 硬链接文件就是文件的另外一个入口
  • 可以通过给文件设置硬链接文件,防止误删
  • 当静态文件对应的硬链接数为0时,文件就会被删除
# 创建硬链接并查看硬链接文件内容
[root@linuxprobe lntest]# ln lnfile.txt lnfile_hard_link
[root@linuxprobe lntest]# cat lnfile_hard_link 
123
#删除源文件
[root@linuxprobe lntest]# rm -rf lnfile.txt 
# 查看硬链接文件 硬链接文件正常
[root@linuxprobe lntest]# cat lnfile_hard_link 
123
# 重新链接文件
[root@linuxprobe lntest]# ln lnfile_hard_link a.txt
# 查看源文件
[root@linuxprobe lntest]# cat a.txt 
123


软链接

ln -s 源文件 目标文件
  • 软链接类似于一个文本文件,里面存储的是源文件的路径,指向源文件实体
  • 即使删除了源文件,软链接文件也依然存在。指向失效
  • 失效时一般是白字红底闪烁提示

readlink 查看符号链接文件的内容

readlink能够帮助我们查看符号链接文件的内容

readlink [选项] [文件]

find查找目录下的文件

find [选项]  [路径] [操作语句]

用-name指定关键字查找

[root@linuxprobe lntest]# find /var/log/ -name '*.log'

xargs 将标准输入转换成命令行参数

xargs命令是向其他命令传递命令行参数的一个过滤器,能够将管道或者标准输入传递的数据转换成xargs命令后跟随的命令的命令行参数

xargs [选项]
  • -n 指定每行的最大参数量n
  • -d 自定义分隔符
  • -i 以{}替代前面的结果
  • -I 指定一个符号替代前面的结果
  • -p 提示让用户确认是否执行后面的命令
  • -0 用null代替空格作为分隔符
[root@linuxprobe lntest]# cat test.txt 
123\n234\n345\n456
321
432
543
   654    789
[root@linuxprobe lntest]# xargs < test.txt 
123n234n345n456 321 432 543 654 78
  • -n 指定每行的输出个数
[root@linuxprobe lntest]# xargs -n 3 < test.txt 
123n234n345n456 321 432
543 654 789
  • -type
    • b 块设备文件
    • c 字符设备文件
    • d 目录
    • p 管道文件
    • l 符号链接文件
    • f 普通文件
    • s socket文件
    • D door

结合find使用xargs的案例

  • 创建文件
[root@linuxprobe tmp]# touch hello\ everyone.txt

  • find . -type f -name "*.txt" -print0| xargs -0 rm

rename 重命名文件

rename 通过字符串替换的方式批量修改文件名
语法格式:

rename from to file
  • from 代表需要替换或者需要处理的字符
  • to 把前面的from代表的内容替换为to代表的内容
  • file 待处理的文件

basename 显示文件名或目录名

basename命令用于显示去除路径和文件后缀部分的文件名或目录
语法格式

basename name suffix
  • suffix 可选参数 指定要去除文件后缀字符串
[root@linuxprobe ~]# basename /data/dir/file1.txt 
file1.tx

dirname 显示文件或目录路径

  • 语法格式
    dirname [name]
    dirname 文件或目录
[root@linuxprobe ~]# dirname /data/dir/file1.txt 
/data/dir
[root@linuxprobe ~]# cd /data/dir/
[root@linuxprobe dir]# ls
file1.txt
[root@linuxprobe dir]# dirname file1.txt 
.

  • dirname后面的参数是相对路径,它也会返回相对路径

chattr 改变文件的扩展属性

chattr用于改变文件的扩展属性,与chmod这个命令相比,chmod只是改变文件的读、写、执行,更底层的属性控制是由chattr来改变的

chattr [选项] [模式] [<文件或目录>]
[root@linuxprobe dir]# chattr +a test  添加追加属性
[root@linuxprobe dir]# lsattr test  
-----a-------------- test
[root@linuxprobe dir]# rm -rf test  root用户也无法删除,只能追加
rm: cannot remove 'test': Operation not permitted
[root@linuxprobe dir]# echo test >> test 
[root@linuxprobe dir]# cat test 
test
[root@linuxprobe dir]# echo 222 > test  无法清空文件
-bash: test: Operation not permitted
  • -R 递归更改目录属性
  • -V 显示命令执行过程
    • 增加参数
    • 移除参数
  • = 更新为指定参数
  • A 告诉系统不要修改这个文件的最后访问时间
  • a 只能向文件中添加数据,不能删除
  • i 设定文件不能被删除、改名、写入或新增,只能是读取
[root@linuxprobe dir]# chattr +i test 
[root@linuxprobe dir]# lsattr test 
----i--------------- test
[root@linuxprobe dir]# vim test

lsattr 查看文件扩展属性

lsattr 选项 文件或目录

  • -R 递归查看目录的扩展属性
  • -a 显示所有文件包括隐藏文件的扩展属性
  • -d 显示目录的扩展属性

file显示文件的类型

file显示文件的类型

  • -b 输出信息使用精简格式,不输出文件名
[root@linuxprobe data]# file dir/file1.txt 
dir/file1.txt: empty
[root@linuxprobe data]# file dir/test 
dir/test: ASCII text

md5sum 计算和校验文件的MD5值

md5sum命令用于计算和校验文件的MD5值。

md5sum 选项 文件
[root@linuxprobe data]# md5sum dir/test
d8e8fca2dc0f896fd7cb4cb0031ba249  dir/test

chown 改变文件或目录的用户和用户组

chown [选项] [用户:用户组] [<文件或目录>]
  • -R 递归更改目录的用户和用户组
[root@linuxprobe dir]# ll
total 4
-rw-r--r--. 1 root root 0 Dec 19 08:51 file1.txt
-rw-r--r--. 1 root root 5 Dec 19 09:00 test
[root@linuxprobe dir]# chown linuxcool:linuxcool file1.txt 
[root@linuxprobe dir]# ll
total 4
-rw-r--r--. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
-rw-r--r--. 1 root      root      5 Dec 19 09:00 tes

chmod改变文件或目录权限

chmod命令是用来改变文件或目录权限的命令,只有文件的属主和超级用户root才能够执行该命令

chmod [选项] [模式] [<文件或目录>]
  • -R 递归处理指定目录以及其子目录下的所有文件


    权限对应信息
权限位 全称 含义 对应数字
r read 可读 4
w write 可写 2
x execute 可执行 1
- 没有任何权限 0
备注 一些特殊权限位:t、T、s、S、X、x
用户类型 其他用户:o 所有:a,等效于u、g、o的总和
操作字符 +:加入 -:减去 =:设置
[root@linuxprobe dir]# ll
total 4
----------. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
-rw-r--r--. 1 root      root      5 Dec 19 09:00 test
[root@linuxprobe dir]# chmod u+x file1.txt 
[root@linuxprobe dir]# ll
total 4
---x------. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
-rw-r--r--. 1 root      root      5 Dec 19 09:00 test
[root@linuxprobe dir]# chmod g+w file1.txt 
[root@linuxprobe dir]# ll
total 4
---x-w----. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
-rw-r--r--. 1 root      root      5 Dec 19 09:00 test
[root@linuxprobe dir]# chmod o+r file1.txt 
[root@linuxprobe dir]# ll
total 4
---x-w-r--. 1 linuxcool linuxcool 0 Dec 19 08:51 file1.txt
-rw-r--r--. 1 root      root      5 Dec 19 09:00 test

Linux读、写、执行权限说明

普通文件的权限说明

  • 可读r:表示具有读取/阅读文件内容的权限
  • 可写w:表示具有新增、修改文件的权限(删除文件的权限是受父目录的权限控制,和文件本身无关)
  • 可执行:表示具有执行文件的权限
  1. 文件本身要能够执行
  2. 普通用户必须还要有r权限才能够执行,无r就不能执行
  3. root没有r权限 只要有x权限就可以执行
  4. root用户位没有执行权限,但只要其他权限位还有x权限,就能执行

Linux目录的读、写、执行权限说明

  • 可读r:表示具有浏览目录下面文件及子目录的权限
    • 没有x不能进到目录里
    • ls列表可以看到所有的文件名,会提示无权访问目录下的文件
    • ls -l 则所有的属性会带问号。也会提示无权访问目录下的文件
  • 可写w:表示具有增加、删除或修改目录内文件名的权限
    • 增加的不是文件内容,而是创建一个新的文件
    • 修改的不是文件内容,只能修改文件名、重命名文件
    • 删除也是删除文件而不是看文件本身的权限,是看目录的权限,如果没有x则不能删除
  • 可执行x 表示具有进入目录的权限
    • 没有r则无法列表
    • 没有w则无法新建文件

chgrp 更改文件用户组

chgrp只能更改文件的用户组,功能已经被chown取代

umask 显示或设置权限掩码

umask是通过八进制的数值来定义用户创建文件或目录的默认权限

umask [参数] [模式]
  • -p 输出的权限掩码可直接作为命令来执行
  • -S 以字符方式输出权限掩码

通过umask计算文件目录权限

  • 创建文件默认最大的权限为666(-rw-rw-rw-),默认创建的文件是没有可执行x权限位
    对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask的掩码数值,如果得到3位数字其每一位都是偶数,那么这就是最终结果。如果有若干位的数字是奇数,那么这个奇数位需要加1变成偶数,最后得到全是偶数的结果
  • 创建目录默认最大权限777(-rwx-rwx-rwx)默认创建的目录属主是有x权限的,允许用户进入
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容