touch 创建新文件
touch + [OPTION] + FILE 若文件不存在,则创建一个空文件
touch test{1..6}
若文件存在,则更新三个时间戳
-a 更新atime和ctime 两个时间戳
-m 更新mtime和ctime 两个时间戳
-c 若文件存在,则更新三个时间戳,若不在,不会创建新文件,无作为。
mkdir 创建目录
-p 可以同时创建多级目录
mkdir -p dir2/dir{11..13} #创建目录dir2及下级目录dir11,dir12,dir13
-v 在创建目录时显示详细信息
-m xxx 创建同时指定权限
mkdir -m 777 dir3
手工创建家目录
mkdir /home/lisi1
cp -r /etc/skel/.[^.]* /home/lisi1
chown -R lisi1.lisi1 /home/lisi1
chmod -R 700 /home/lisi1
tree : 显示目录树
-d: 只显示目录
tree -d #显示当前目录下各子目录的结构,不显示文件
-L level:指定显示的层级数目(可与d组合使用)
tree -L 1
-P pattern: 只显示由指定pattern匹配到的路径
tree -p dir* #显示名称含有dir的目录
cp 复制文件
cp + [OPTION] + 源文件/目录 + 目标文件/目录
当源是一个文件时; 当目标文件不存时,则新建文件,并填充内容
当目标文件存在,且为一个文件时,则覆盖该文件
且为一个目录时,则将该文件放置入该目录
当源是多个文件时;当目标文件不存时,报错
当目标文件存在,且为一个文件时,报错
且为一个目录时,则将所有源目文件放置入该目录
当源是一个目录时, 要配合-r;
当目标不存在时,则创建指定名称的目录,并将源目录当中的文件复制到新目录当中
当目标文件存在,且为一个文件时,报错
且为一个目录时,则两个目录内容合并,如有同名文件,则源目录下的文件覆盖目标目录的文件。
-i 覆盖时交互式提示
-r 递归,可以复制目录
cp -r dir1 dir3/ #目录dir3已存在,目录dir1会复制到目录dir3下
-d 默认不加-d时,cp复制软链接会将源复制过去,加上-d保留链接属性,把软链接复制过去
ln -s file1 file2 #建立软链接 file2 -> file1
cp file2 file3 #file3直接复制原文件file1,file3
cp -d file2 file4 #file4将复制链接文件file2,file4 -> file1。此时不可夸目录复制,除非将源文件一起复制,因为未复制源文件,链接文件将打不开,
ll
file3
file4 -> file1
--preserv=
mode 权限不变
owner[ship] 权限及owner,group 不变
time 三个时间戳不变
xattr acl权限不变
links 链接不变
context 文件的selinux上下文关系不变
all 上述所有属性
-p 等于 --preserv=mode,owner,time
-a 等于 -rdp
-v 显示复制过程
-f 强制覆盖: 当普通用户对目标文件不可更改时,但对该目标文件所在的目录有创建及删除文件的权限,则使用-f可以强制覆盖,实际上是先删除文件,再创建
-u 只覆盖源文件比目标文件新的文件
--backup-numbered 覆盖前,先将旧文件改名为 文件名.~数字~
mv : 移动和重命名文件
mv + [OPTION] + 源文件/目录 + 目标文件/目录
源为文件,目标为目录时,将文件移到目录内,若目标目录不存在时则新建目录
源和目标同时为文件或目录时,若目标存在则覆盖,若不存在则新建目标(相当于修改源文件的名字)
常用选项:
-i: 交互式 (别名中有mv=mv-i)
-f: 强制 直接覆盖,不交互式,抵消i的作用
若要批量修改文件名可使用rename命令
rename 批量修改文件名
rename +a +b +c 把名称a改成名称b,c为需要修改的文件列表,如果一个文件就直接指定文件名
ls
1.doc 3.doc 5.doc 7.doc a.xls c.xls e.xls g.xls
2.doc 4.doc 6.doc 8.doc b.xls d.xls f.xls h.xls
rename doc txt *.doc
ls
1.txt 3.txt 5.txt 7.txt a.xls c.xls e.xls g.xls
2.txt 4.txt 6.txt 8.txt b.xls d.xls f.xls h.xls
rm : 删除
-i交互式提示(rm默认不提示,因别名中有rm='rm -i')
(在rm命令前加上路径,可直接执行,跳过别名,如:/bin/rm 命令。或在命令前加反斜杠也可,如:\rm)
-f 直接删除,不提示(与i相反)
-r 递归删除(目录与内容,直接rm只能删除文件,不能删除目录,与rf组合后可删除直接删除全部
rm dir2/* -rf #删除dir2目录下的全部文件
rm rf * #删除本目录下的全部内容
rm -rf / --no-preserve-root
rm 目录和文件的连接数递减删除,当链接数由1删到0时,对应的inode在位图中由占用变为空闲。
此时实际数据不会被马上删除,但当另一个文件使用此数据块时会被覆盖
bitmap 位图:inode bitmap block bitmap
硬链接与软链接
创建硬链接
ln + 源路径 + 目的路径 (注意:源与目的要在同一文件系统下)
创建硬链接会增加额外的记录项以引用文件 ,每个目录引用相同的inode号,创建时链接数递增
删除硬连接 rm
文件要存在,至少有一个链接数
当删除硬链接,链接数会递减删除,从而释放的inode号。
释放的inode号可以被重用;数据块也会被放在空闲列表中
当链接数为零时,该文件被删除
实际是删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
创建软链接:一个符号链接指向另一个文件
ln -s + 源路径 + 目的路径
软链接可以对目录进行也 可以跨分区
软链接指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
修改软连接指向:ln -nsf 新源路径 目的路径
mkdir dir1 dir2
ln -s dir1 dir #建立软链接:dir -> dir1
ln -nsf dir2 dir #修改软链接:dir -> dir2