文件与目录管理

目录相关操作

切换目录(cd)

cd ~acount:回到该账户的家目录

cd ~: 回到当前目录的家目录,cd不加任何参数功能等同cd ~

cd ..: 回到上层目录

通过相对路径选择目录

显示路径(pwd)

-P: 显示目录真实路径

创建目录(mkdir)

-m: 指定权限创建目录

-p: 递归创建目录

参数p和m连接使用的时候,m在后面

删除目录(rmdir)

待删除的目录需要是空目录才能删除成功

-p:递归删除目录 

环境变量

问:系统是怎么执行ls的呢?

答:输入ls后,系统会去环境变量所定义的目录中查找ls文件;找到就执行成功,否则失败,查找顺序是从左到右

打印环境变量目录, 注意PATH是大写

添加目录到环境变量中

文件与目录管理

文件与目录的查看(ls)

-l:列出详情(常用)

-a:显示全部文件,包含隐藏文件(常用)

-A:显示全部文件,包含隐藏文件,但是不包含.和..两个目录 

 -d:列出目录本身,不列出目录中的文件(常用)

-F:列表文件的类型

-h:以容量单位列出文件(常用)

 

-i:列出文件的inode号

-n:列出UID与GID,不列出用户和用户组

-r : 文件名反向排序列出,默认是正向排序

-R:递归列出所有文件 

-S:以容量排序列出文件

--full –time:列出文件修改时间

--time=atime:列出文件的权限改变时间 

--time=ctime:列出文件创建时间

复制(cp)

复制.bashrc文件到tmp目录并命名为bashrc

 复制/etc目录到tmp目录并命名为etc1

复制多个文件到目录

复制到当前目录:目标目录写点号 

由于没加-a参数,目标和原始文件的属性会变化;目标文件的权限会变成命令执行则的权限 

-a: 目标文件原始或目录的属性一致(常用),等同-dr --perserve=all

-r:递归复制目录

-d: 原文件为链接文件时,属性也被复制

--perserve=all:复制所有属性

-i:带提示的复制

-s: 生成一个链接文件,是符号链接,相当于快捷方式

-l:生成一个链接文件,是硬链接,属性与原始文件一致

 -u:原始文件比目标文件新时,才复制

-d: 原文件为链接文件时,属性也被复制 

-f:强制复制

注意:复制文件时,当执行者非root账户,即使使用-a参数,目标文件的属性也有可能改变,因为只有root账户才能修改所有文件的属性

删除(rm)

-f:强制删除文件

 -r:递归删除文件,默认带提示

 -i:带提示删除文件,root执行rm时,默认加上参数i

 删除带-的文件方式

移动(mv)

-f:不带提示,强制移动

-i:带提示移动

-u:源文件或目录新,才移动

 移动文件到目录

移动多个文件到目录

 修改名称

获取文件名与文件路径(basename|dirname)

文件内容查看

直接文件内容查看

cat

-b:显示行号,空白行不显示(常用)

 -n:显示行号,空白行显示

-A: 显示所有的特殊字符;$表示换行符,^I表示Tab符号

tac(反向打印)

与cat显示内容相反,从最后一行打印

nl(添加行号打印)

-b a:添加行号打印

-b t:添加行号打印,空白行不添加行号

-n ln:行号不添加0显示,行号在最左

-n rn:行号不添加0显示,行号在最右

 -n rz:行号添加0显示,行号在最右

-w:设置行号位数

翻页查看

more

空格键:向下翻页

回车键:向下翻一行

/字符串:查询字符

:f:显示当前文件名和行号

q:离开

b:向前翻页

less

空格键:向下翻页

[pagedown]:向下翻一行

[pageup]:向下翻一行

/字符串:向下查找字符串,输入n继续查找下一个,N反向查找

?字符串:向上查询字符串

g:跳到第一行

G:跳到最后一行

q:离开

截取文本

head(取前面几行)

默认显示10行

-n:指定显示的行数 

tail(取后面几行)

默认显示10行

 -n: 指定显示的行数

-f:动态打印

组合截取

非存文本文件

od:读取数据流或二进制文件

-t:指定类型输出

-t a:利用默认的字符来输出

-t d:以十进制来输出

-t f:以浮点型来输出

-t o:以八进制来输出

-t x:以16进制来输出

-t c:以ASCII字符来输出

-t oCc:列出ASCII和八进制对照表,c要写在后面

Ascii与进制转换,c要写在后面

修改文件时间或创建文件

Linux文件的三个时间属性:修改时间,状态时间,读取时间

修改时间(mtime):当文件数据内容变化时,更新该时间,ll显示的就是该时间

状态时间(ctime):当文件状态,既是属性和权限发生变化时,更新该时间

读取时间(atime):当文件被访问时,改时间发生变化

 

touch 文件名:文件的三个属性时间都会更新为执行命令的时间点,若文件不存在,则创建 

touch -t 文件名

 注意:touch不能修改文件的citme

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

默认权限

umask:设置文件或目录的默认权限

文件权限 = (rw-rw-rw-) - 默认权限

目录权限 = (rwxrwxrwx) - 默认权限

一定是权限相减,不是数字权限相减,数字权限相减有问题

查询默认权限

设置默认权限

 例子

test1权限=rw-r--r--

原因:

test1是文件,利用公式:文件权限 = rw-rw-rw- - 默认权限, 进入如下转换后计算

(rw-rw-rw-) - (----w--w-) = rw-r--r--

test2是目录,利用公式:文件权限 = 777 - 默认权限, 进入如下转换后计算

(rwxrwxrwx) - (----w--w-) = rwx-r-x-r-x

文件隐藏属性

设置文件隐藏属性

chattr +a 文件:设置a参数后,文件只能增加数据,不能删除和修改数据,只有root才能设置

chattr +i 文件:设置i参数后,不能对文件做任何操作

lsattr文件:查看文件的隐藏属性

chattr -i 文件:删除文件的i属性

文件特殊权限

SUID

当s出现在文件拥有则x的位置上时,此时就被叫着Set UID,简称SUID权限

SUID限制与功能

  1. 仅对二进制文件有效(不能用在shell脚本上)
  2. 执行者可以执行该程序
  3. 在程序执行过程中,执行者将具有该程序拥有者权限,执行完毕后就权限收回

SGID

当s出现在用户组x的位置上时,此时就被叫着Set GID,简称SGID权限

 

SGID对文件

  1. 对二进制程序有用
  2. 执行者对该文件具备可以执行权限
  3. 在程序执行过程中,执行者将会获得该程序用户组的支持

SGID对目录

  1. 若用户对于该目录有rx权限,用户可以进入到该目录
  2. 若用户在此目录下具有w权限,用户就可以在该目录下创建文件,则该文件的用户组就是此目录的用户组

SBIT

仅对目录有效

  1. 用户对于此目录具有wx权限
  2. 用户在该目录下新建文件或目录时,仅有root和用户自己具备删除该文件

SUID,SGID,SBIT设置

4:表示SUID权限

2:表示SGID权限

1:表示SBIT权限

方式1:数字方法进行设置

因为用户,用户组,其他人都么有可以x权限,所以下面的SUID,SGID,SBIT为大写,大写表示么有SUID,SGID,SBIT权限

用户加上SUID权限

用户组加上SGID, 其他人加上SBIT权限 

 

注意:权限添加直接没有空格

观察文件类型(file)

file 文件路径

命令和文件查找

脚本文件查找(which)

which 文件/命令, 该命令仅能找PATH目录下进程查找

-a:列出所有在PATH中找到的目录

 不加-a, 只列出第一个找到的目录

别名:意思是输入which,等价于输入后面的一串命令

文件的查找(whereis|locate|find)

whereis

whereis系统中某些特定目录下查找

 -m:在说明文件目录下查找

-l:列出找出的目录 

 -b:只查询对应二进制文件的目录

-s: 查找source源文件 

locate

locate:通过关键字进行查找, 数据来源是从已建立的数据库,为了防止数据没有被更新到数据库中,可以通过命令updatedb进行更新,然后再查找

-l:指定回显多少条记录

-S:列出查找的数据库文件名以及文件个数

-i:忽略大小写

 -c:仅列出文件的数量

 

-r:通过正则表达式进行查找

find

用法:find [目录] [参数][动作]

时间相关的参数有

-ctime

-atime

-mtime

以-mtime为例

-mtime n: n为数字,表示在前n天之内(24H)被修改过的文件

-mtime +n: 列出在n天(不含n天本身)之前被修改过的文件

-mtime -n: 列出在n天(含n天本身)之内被修改过的文件

如:find / -mtime -1:表示列出1天前被修改过的文件

-newer file: 列出比file 更新的文件

用户,用户组相关参数

-uid n:n表示用户的账号ID, ID记录在/etc/passwd文件中

-gid n:n表示用户组的账号ID记录在/etc/group文件中

-user name: name为用户的账号

-group name: name为用户的账号 

-nouser: 查找文件的拥有者不在/etc/passwd中

 -nogroup:查找文件的拥有则不在/etc/group中

用户权限及文件相关参数

-name 文件名:通过文件名查找

-size 文件大小[c|k|M], c为字节

        -size +50k:查找大于50K的文件

        -size -50k:查找小于50K的文件

        -size +50c:查找大于50字节的文件

        -size -50c:查找小于50字节的文件

-type [f|b,c|d|l|s|p]

        f: 表示文件

        b,c:表示设备文件

        d:表示目录

        l:表示链接文件

        s:表示socket文件

p:表示FIFO文件

-perm [mode|-mode|/mode] 

        mode: 查找文件权限刚好等于mode的文件

       -mode:查找文件的权限包含mode权限,文件权限比mode大

       /mode:查找文件权限在mode中,文件权限比mode小

额外可进行的操作

-exec command: commond为处理find出来的结果的命令 

 


版权声明:本文为qq_25500415原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。