Linux学习——Linux文件与目录管理

前言

为《鸟哥的私房菜》的读书笔记,别人的博客都是一推技术记录,而我的博客全都是读书笔记...........记录在这里一是加深印象,而是不想整天背着这么重的书..........

目录相关操作

.:当前目录
..:代表上一层目录
-:代表上一个工作目录
~:代表当前用户的主文件夹(即home目录)
~account:代表account用户的主文件夹

常用的目录处理命令:

cd 相对或是绝对路径:切换目录
显示当前所在目录
pwd [-P]
参数:
-P:显示当前路径,如果文件是连接文件,将会显示连接文件链接的文件
新建目录
mkdir [-mp] 目录
参数:
-m:配置该目录下新建文件的默认权限
-p:递归创建所有目录
删除空目录
rmdir [-p] 目录名称或是路径
参数:
-p:删除目录路径上的所有目录,例如test1\test2,test1下只有test2目录,test2为空目录,此时test1、test2均会被删除

目录需要一层一层的删除,被删除的目录里面不能存在其他的目录或是文件
在windows中,我们会设置环境变量,以便在命令行中使用对应命令,linux的$path的作用类似于windows的环境变量,
当我们执行一个命令时,系统会依照PATH的设置去对应的目录下查找命令对应的可执行文件,
PATH变量内容由一堆目录组成,每个目录中间用冒号分隔。

在Linux中添加环境变量的方式:
PATH="$PATH":/root

一般情况下不要将.作为环境变量,因为用户所处的目录时常发生变化,意味着可执行命令也会随时发生变化

不同用户默认的PATH不同,默认能执行的命令也不同
文件移动
mv 文件原地址 文件目的地址

文件与目录管理

查看文件与目录,ls默认不会显示隐藏文件
ls [-aAdfFhilnrRSt] 目录名称
参数:
-a:列出所有文件,包括隐藏文件,(包括.与..)
-A:列出全部文件,包括隐藏文件,(不包括.与..)
-d:仅列出目录
-f:直接列出结果,不排序,ls默认会根据文件名排序
-F:根据文件、目录的信息附加对应符号,例如*代表可执行文件,=:代表socket文件,|:代表FIFO文件
-h:以GB、KB等为基本单位显示文件容量,比较少用
-i:列出inode号码
-l:列出包括文件的属性与权限在内的数据
-n:列出UID与GID
-r:将排序结果反向输出
-R:将该目录下的所有文件全部显示出来(包括子目录)
-S:以文件容量大小排序
-t:依时间排序
--color=never:不依据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:系统自行判断是否给予颜色显示
--full-time:显示完整时间(年月日分)
--time={atime,ctime}:输出访问时间(atime)或是改变权限属性(ctime)的时间
复制文件或目录
cp [-adfilprsu] 源文件(目录) 目标文件(目录)
cp [可选参数] 源文件1、源文件2、源文件3......、目的目录
参数:
-a:相当于-pdr(即-p,-d,-r)
-d:若源文件为链接文件,则复制链接文件本身,而不是链接的文件
-f:若源文件存在,则覆盖源文件的内容
-i:若目的文件已经存在,覆盖时会先询问是否进行拷贝操作
-l:创建硬链接文件,而不是复制文件本身
-p:不仅复制文件的内容,还会复制文件的属性
-r:递归复制,多用于目录的复制
-s:复制为链接文件
-u:若目标文件比源文件旧才copy

默认情况下,目标文件与源文件只是内容相同,文件的权限可能不一致,目标文件的所有者为命令执行者,
如果想更改文件所有者,请使用chown指令
移除文件或是目录(文件或是目录名称允许使用通配符)
rm [-fir] 文件或目录
参数:
-f:强制删除,即使文件不存在
-i:在删除前会询问是否删除
-r:递归删除,用于删除目录
移动文件与目录,或更名
mv [-fiu] source destination
mv [options] source1 source2..... destination
参数:
-f:强制移动,即使目的文件或目录已经存在,会默认覆盖
-i:过目标文件已经存在,会询问是否覆盖
-u:若目标文件已经存在,且比源文件旧才会移动

mv也可用于更新文件,为
mv 旧名称 新名称
取得文件名
basename

取得目录名
dirname

文件内容查询

查看文件内容,顺序查看
cat [-AbEnTv] 文件或是目录名称
参数:
-A:相当于-vET的整合
-b:列出行号,仅针对非空白行做显示
-E:显示换行符
-n:打印行号,包括空白行
-T:将tab键以^I显示出来
-v:列出一些看不出来的特殊字符
反向查看文件,即先输出最后一行,在输出倒数第二行
tac 文件名称
添加行号打印
nl [-bnw] 文件
参数:
-b:指定行号显示方式,有两种形式
1、-b a:列出行号(包括空白行)
2、-b t:列出行号(不包括空白行)

-n:指定行号的位置,有三种方式
1、-n ln:在屏幕的最左方显示
2、-n rn:在屏幕的最右方显示,不加0
3、-n rz:在屏幕的最右方显示,加0

-w:行号字段的位数,例如nl -w 3 xxx,则第一行为000
一般情况下,cat已经够用了
一页一页翻动
more 文件名或是文件路径

空格键:代表向下翻一页
Enter:代表向下滚动一页
/字符串:向下查询“字符串”这个关键字
:f:显示文件名以及目前显示行数
q:离开more
b:往回翻页,对管道无作用
n:重复查询同一个字符串
一页一页翻动
less 文件名或是路径

空格键:向下翻一页
[pagedown]:向下翻一页
[pageup]:向上翻一页
/字符串:向下查询字符串
?字符串:向上查询字符串
n:重复前一个查询,前一个查询是向上就向上查询,向下就向下查询
N:反向重复前一个查询
q:离开less
取出前面几行
head [-n number] 文件
参数:
-n:后接数字,表示显示几行,若为负数,表示不包括后几行,例如-100表示不包括最后的100行
取出后面几行
tail [-n number] 文件
参数:
-n:后接数字,代表显示几行,在数字前面加+表示显示多少行后的内容,例如+100表示显示100行后的内容
-f:若文件被更改,随时显示更改后的文件
上述命令都是读取文本文件,读取二进制文件使用od
od [-t TYPE] 文件
TYPE的值:
a:利用默认的字符输出
c:使用ascll字符输出
d:利用十进制输出字符
f:利用浮点数输出数据
o:利用八进制输出数据
x:利用十六进制输出数据

默认情况下以十六进制数值显示
修改文件时间或是创建新的文件
touch [-acdmt] 文件
参数:
-a:修改访问时间(即atime:读取文件的时间)
-c:仅修改文件的创建时间
-d:后接欲修改的日期
-m:修改mtime,即上次修改文件的时间
-t:后接欲修改的时间而不是目前的时间,格式为[YYMMDDhhmm]

默认情况下,若touch后面只接文件名,则文件的atime、ctime、mtime都会修改为目前的时间,若该文件不存在,则会创建该文件

需要注意的是,即使我们复制了一个文件的所有属性,也没办法复制ctime(记录文件的属性或是权限何时被更改)这个值,新创建文件的ctime为创建时的时间

文件与目录的默认权限与隐藏权限

当前用户在新建文件或目录时的默认权限值
umask
输出:
0022 与权限相关的是后面三个数字,这三个数字表示应该除去的权限,这里表示除去用户组与其他人的w权限,第一个数字是特殊权限
参数:
-S:以字符串的形式显示创建文件或目录的默认权限

文件的默认权限为:-rw-rw-rw
目录的默认权限为-rwx-rwx-rwx
umask的值表示应该除去的权限,root用户的umask默认为022,一般用户为002
umask后接数字可以更改这个默认值
设置文件的隐藏属性
chattr [+-=][ASacdistu] 文件或是目录名
参数
+:增加一个特殊参数
-:删除一个特殊参数
=:设置参数
A:访问文件或目录时,atime不会被更改
S:将修改的内容同步写入磁盘
a:只能增加,不能修改或是删除数据,连root也无法删除
c: 将文件压缩后存储,在读取时解压
d:防止该文件被dump指令备份
i:是一个文件不能被删除、该命,无法创建连接
s:文件被删除时,将完全从硬盘中删除
u:文件被删除时,硬盘仍然存在文件,只是设置为用户不可见
显示文件隐藏属性
lsattr [-adR] 文件或目录
参数
-a:显示文件的隐藏属性
-d:如果接的是目录,仅显示目录的属性
-R:连同子目录的隐藏属性也显示出来

文件的特殊权限:SUID、SGID、SBIT

SetUID(SUID,例如-rwsr-xr-x):

  • SUID只对二进制程序有效
  • 执行者对该文件必须具有x权限,在执行程序的过程中,执行者将会短暂称为文件的所有者

SetGID(SGID,例如-rwx--s--x):

对于文件来说:

  • 对二进制程序有效
  • 若执行者对该文件具有x权限,则在文件执行过程中将会获得用户组对该文件的权限

对目录来说:

  • 若用户对该目录具有r与x权限,则进入到目录后,该用户的用户组会短暂更改为目录的用户组
  • 若用户对目录具有w权限,则创建的文件或目录的用户组与该目录的用户组相同

SBIT(例如-rwxrwxrwt):

  • 只对目录有效
  • 若用户对目录具有w和x权限,则用户在该目录下创建的文件或是目录,仅有用户自己与root有权限删除

之前umask显示四个数字,第一个数字就是上述三个特殊权限,4为SUID,2为SGID,1为SBIT,可以通过chmod来设置特殊权限,例如:chmod 7666 test

查看文件类型,是文本还是二进制文件
file

命令与文件的查询

在PATH指定的目录中查找可执行文件
which [-a] command
参数
-a:将PATH中找到的所有命令列出
通过数据库查询文件名
whereis [-bmsu] 文件或目录名
参数
-b:只找二进制文件
-m:只找在说明文件manual路径下的文件
-s:只找源文件
-u:查找不在上述三个选项当中的其他特殊文件
在数据库中查找文件
locate [-it] keyword(文件的部分名称)
参数:
-i:忽略大小写的差异
-r:后面接正则表达式

whereis与locate查找的数据库每隔一天自动刷新一次,也可以输入updatedb手动刷新,从而将新创建的文件或目录加入到数据库中

查找文件
find [PATH] [option] [action]
PATH表示文件的路径
参数
与时间有关的参数:
-mtime n:n天之前的一天之内被更改的文件
-mtime +n:列出在n天之前(不含n天本身)被更改的文件名
-mtime -n:列出在n天之内(包含n天)被更改的文件名
-newer file:file为一个存在的文件,列出比file还要新的文件名

与用户或用户组名有关的参数,查找对应权限的文件:
-uid n:n为数字,n为用户的账号ID
-gid n:n为数字,n为用户的用户组
-user name:name为用户账号名称
-group name:name为用户组名
-nouser:寻找文件的所有者不存在于/etc/passwd的人
-nogroup:寻找文件的用户组不存在于/etc/group中的文件

从网络上下载或是文件所有者的账号或用户组被删除,则nogroup、nouser将会派上用场

与文件权限及名称有关的参数
-name filename:查找文件名为filename的文件
-size [+-]SIZE:查找比SIZE大(+)或小(-)的文件,SIZE的单位有c:代表byte,k:代表1024bytes
-type TYPE:按文件类型查找,包括f(一般文件),b、c(设备文件),d(目录),l(连接),s(socket)
以及p(FIFO)
-perm -mode:查找文件权限等于mode的文件
-perm -mode:查找文件权限包括mode的文件
-perm +mode:查找文件权限包括mode中任意一个权限的文件

其他操作
-exec command:find后面可以接其他命令来处理查找到的结果,
例如:find / -perm +7000 -exec ls -l {}\;,
{}代表find指令执行的结果,执行的指令在exec到\;之间,由于分号在bash下有特殊意义,所以需要转义一下
-print:将查找结果打印到屏幕上,这是默认操作

猜你喜欢

转载自blog.csdn.net/dhaiuda/article/details/82740817