Linux文件与目录管理

1. 相对路径与绝对路径

 

 相对路径:根据当前目录情况会变,不是由根目录写起,例如:

cd ../man

 绝对路径:写脚本,由根目录写起  (写程序来管理系统一定要从根目录写起!!!)例如:

/user/share/doc

 

2.目录的相关操作

.                     代表此层目录
..                    代表上一层目录
-                     代表一个工作目录
~                     代表[目前用户身份]所在的家目录
~account              代表account用户的家目录

*根目录下有上级目录,那个目录是它自己

cd:变换目录
pwd:显示当前目录
mkdir:建立一个新的目录
rmdir:删除一个空的目录

 

cd(变换目录):

cd ~dmtsai            即   /home/dmtsai
cd ~                  即   /root
cd          即 /root  (等同于cd ~)
cd-          回到刚才的目录
cd /var/spool/mail 切到这个位置/var/spool/mail

 

pwd(显示目前所在目录) :

pwd [-P]
-P:显示确实路径而不是连接路径
例:单纯显示出目前的工作目录:
[root@study ~]# pwd
/root

得进去之后才可以展示连接档的位置

输入:
[root@localhost /]# pwd -P
/
错误不显示
输入:
[root@localhost /]# cd bin
[root@localhost bin]# pwd -P
/usr/bin     展示当前真实位置,最终链接到的位置
不加-P展示从哪里进

 

mkdir(建立新目录):

-m :创建目录可以给它指定权限

-p  :加了它可以一层一层创一堆文件夹

建立权限为rwx--x--x的目录:
[root@study tmp]# mkdir -m 711 test2
[root@study tep]# ls -ld test*

[root@study tmp]# mkdir -p test1/test2/test3/test4

 

rmdir(删除[空]的目录)

 

rmdir [-p] 目录名称

[root@study tmp]#rmdir -p test1/test2/test3/test4

在home下建文件test
[root@study tmp]#rmdir -p /home/test
 

 

3.$PATH   环境变量(环境变量:让系统找到这个软件

 echo $PATH 可以打印出所有针对于用户的环境变量

 PATH这个变量的内容是由一堆目录所组成,每个目录中间以[:]为分隔,每个目录之间有顺序之分。

 无论是root还是dmtsai都有/bin或/usr/bin这个目录在PATH内,所以所可以在任何地方执行ls来找到/bin/ls执行档。因为/bin在CentOS7中,就是连接到这里面去的

 

 

 

 

 不加容易中病毒!

 

4. ls 文件与目录的检视

-a :全部的文件连同隐藏档
-A: 全部的文件连同隐藏档,但不包括.与..这两个目录
-d: 目录本身
-f : 列出结果,不排序
-F: 根据文件、目录等信息附加数据结构
-h: 文件容量
-i :列出inode号码
-l :列出详细数据
-n:列出UID和GID
-r: 反过来排序
-R:将子目录一起列出来,一个递归展示
-S:根据容量大小排序
-t : 根据时间排序
--color=never:不要根据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:让系统判断是否显示颜色
--full-time:展示完整时间
--time={atime,ctime}:分别表示输入access时间或者修改权限属性时间ctime

 

5.cp(复制文件或目录)

-a:完全复制
-d:用它就相当于复制超链接本身,不用它复制的是文件本身
-f:对于没办法复制的东西强制再试一下
-i:询问是否覆盖那个文件
-l:创建硬链接
-p:连同文件本身属性一起复制(备份)(普通属性复制)
-r:持续递归复制
-s:复制成为符号链接(软连接)
-u:做更新,复制过去的时候,如果这个文件比那个文件老就不会覆盖,这个文件比那个文件新就会覆盖。
--preserve==all :完全复制

 

6.rm(移除文件或目录

-f :强制删除

-r:递归删除   非常危险的一个指令 !

-i:互动模式  询问你删不删除

 

7.mv(移动文件或目录,更名)

-f:强制移动

-u:移动的时候只有比较新才会更新

-i:互动

 

mv  文件名  目录名:把这个文件移动到这个目录里面去

 

将mvtest改名为mvtest2:

mv mvtest mvtest2

 

建立两个文件,全部移动到/tep/mvtest2当中

cp ~/.bashrc bashrc1

cp ~/.bashrc bashrc2

mv bashrc1 bashrc2 mvtest2

 

8.取得路径的文件名与目录名称

[root@study ~]# basename /etc/sysconfig/network
network

[root@study ~]# dirname /etc/sysconfig/network
/etc/sysconfig

 

9.文件内容查询       使用的时候按执行顺序进行使用

cat  由第一行开始显示文件内容

tac  由最后一行开始显示文件内容

nl  显示的时候会显示行号

more  一页一页显示

less  往前翻页

head  看头几行信息

tail  看尾几行

od  以二进制方式读取

 

 cat:(ctrl+c退出)

-A:可列出一些特殊字符而不是空白
-b:列出行号,空白行不标行号
-E:将结尾的断行字符¥显示出来
-n:列出行号,空白行也会被列出
-T:将[Tab]以^I显示出来
-v:列出一些看不见的特殊字符

 

tac (反过来列)方便查找最新的东西

 

nl(添加行号打印)(不用记):

-b : -b a:不论是否空行,都列出行号
        -b t:有空行不列出行号
-n: -n ln:行号在屏幕最左边显示
        -n rn:行号在自己字段的最右端显示,不加0
        -n rz:行号在自己字段的最右端显示,加0
-w: 行号字段占用的字符数

 

more (一页一页翻

    空格:向下翻一页

    Enter:向下翻一行

    /字符串:在这个显示的内容中寻找这个字符串

    [:f]  :显示出文件名和目前显示的行数

    q  :离开more

    b或[ctrl]-b:往回翻页(用于文件)

 

less(一页一页翻动)

    空格:向下翻一页

    [pagadown]:向下翻一页

    [pageup]:向上翻一页

    /字符串:向下搜寻这个字符串功能

    ?字符串:向上搜寻这个字符串功能

    n:重复上一个搜寻

    N:反向重复前一个搜寻

    g:到这个资料第一行

    G:到这个数据的最后一行

    q:离开less这个程序

 

head(取出前面几行,默认前十行)

显示前20行:

[root@study ~]#head -n 20 /etc/man_db.conf

不显示后100行

[root@study ~]#head -n -100 /etc/man_db.conf

 

tail(取出后几行)

-n:接数字,表示显示几行

-f:表示连续预测后面接的档名   要按[Ctrl]-c才会停止侦测

列出/etc/man_db.conf100行以后

[root@study ~]# tail -n +100 /etc/man_db.conf

持续侦测/var/log/messages内容

[root@study ~]# tail -f /var/log/messages

显示/etc/man_db.conf的11行到20行

head  -n 20 /etc/man_db.conf | tail -n 10

管线(|)代表前面指令输出的讯息通过它交由后续的指令继续执行

 

10.修改文件时间或者建立新档  touch

modification time(mtime):更新时间    最关心的东西

status time(ctime):状态时间  记录这个文件最近的状态被修改的时间

access time(atime):文件内容被取用的时间

使用举例:

[root@study ~]#date;ls -l  /etc/man_db.conf;

为了让数据输出比较好看,三个指令中间可以用;隔开来进行输入

[root@study ~]#date;ls -l  /etc/man_db.conf;ls -l --time=atime /etc/man_db.conf;ls -l --time=ctime /etc/man_db.conf

默认情况下ls显示出来的是mtime

touch    修订日期和时间,还可以创立一个空的文件

-a:修订access time
-c:修改文件时间
-d:后面接想要修改的日期
-m:修改mtime
-t:加预修改的时间 格式:YYYYMMDDhhmm

修改badhrc文件,把日期调整为两天前

[dmtsai@study tmp]# touch -d "2 days ago" bashrc

当我们复制一个文件时,可以复制它所有的属性,但是没办法复制ctime属性

 

 

11.umask文件预设权限

[root@localhost ~]# umask
0022            看后三个数字
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx

7减去已经有的权限的数字放在umask -S下面表示默认的权限

umask 002代表  拥有者拥有全部权限 同组拥有全部权限 其他人拥有读和执行的权限

 

 文件默认权限是-rw-rw-rw-

12.文件隐藏属性

chattr(配置文件隐藏属性)

 

 

 尝试再/tmp底下建立文件,并加入i的参数,尝试删除

[root@localhost ~]# cd /tmp
[root@localhost tmp]# touch attrtest   //建立空文件
[root@localhost tmp]# chattr +i attrtest   //给予i的属性
[root@localhost tmp]# rm attrtest      //尝试删除
rm: remove regular empty file ‘attrtest’? y
rm: cannot remove ‘attrtest’: Operation not permitted
[root@localhost tmp]# chattr -i attrtest    //删除

 

lsattr(显示文件隐藏属性)

-a:将隐藏文件展示出来

-d:如果是目录,仅列出目录本身属性而不是目录内的文件名

-R:连同目录的数据一起列出来

[root@localhost tmp]# chattr +aiS attrtest
[root@localhost tmp]# lsattr attrtest
--S-ia---------- attrtest

 

13.文件特殊权限 SUID,SGID,SBIT

 

s这个标志出现在rwx中的x上,会替代x

这个s是一个特殊权限

 

Set UID(SUID)得到所有者的支持:

(1)仅对二进制有效,不可以用在脚本上,因为脚本可能执行的是二进制文件,但脚本本身可能不是二进制。

(2)需要对该文件有执行权限,需要有x

(3)本权限仅在执行该程序的过程中有效

(4)执行者拥有该程序拥有者的权限

 

Set GID(SGID)得到组的支持:

当文件在执行的时候拥有者x的项目为SUID,那s在群组里面被叫做SGID

当-rwx--s--x 

(1)对二进制有效

(2)程序执行者对该程序来说具备x权限

(3)执行者在执行中将会获得该程序组的支持

SGID也能用在目录树,当一个目录设定了SGID,他将有这几个功能:

(1)用户对此目录有r和x权限,用户可以进入这个目录

(2)用户对他的有效群组会变成该目录的群组

(3)如果在文件夹上有这个东西,在文件夹上面建的群组和外面是一个群组

 

Sticky Bit(SBIT):

有一个目录上面有这个权限之后,甲进来创建的文件归甲管,除了管理员别人都删除不了

 

SUID 4      SGID  2      SBIT 1

[root@localhost tmp]# cd /tmp
[root@localhost tmp]# touch test
[root@localhost tmp]# chmod 4755 test;ls -1 test

4755中的4就是由这几个特殊权限相加

除了数字,也可以用符号来处理

SUID为u+s

SGID为g+s

SBIT为o+t

将权限设定成-rws--x--x的样子
[root@localhost tmp]# cd /tmp
[root@localhost tmp]# touch test
[root@localhost tmp]# chomd u=rwxs,go=x test;ls -l test
bash: chomd: command not found...
Similar command is: 'chmod'
-rws--x--x. 1 root root 0 Jul 22 09:34 test

加上SGID和SBIT在上述的文件权限中:

[root@localhost tmp]# chmod g+s,o+t test;ls -l test
-rws--s--t. 1 root root 0 Jul 22 09:34 test

 

14.观察文件类型file     列出详细信息

[root@localhost tmp]# file ~/.bashrc
/root/.bashrc: ASCII text
[root@localhost tmp]# file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=1e5735bf7b317e60bcb907f1989951f6abd50e8d, stripped
[root@localhost tmp]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data

 

15.脚本文件名搜索

which(寻找[执行档]在哪个位置)  在一般情况下可执行程序的那几个文件夹下去搜寻

只能找二进制 找不到脚本 在几个特定目录下去搜索   优点:找的快,缺点 不一定找得到

 

16.文件档名搜寻

whereis (文件或目录名称)在几个特定的目录下去搜索     优点:找的快,缺点:不一定能找到

-l:列出whereis查询的几个主要目录
-b:只找binary格式文件
-m:找说明文档
-s:只找source来源文件
-u:搜寻不在上述三个项目中的其他特殊项目

 

locate      在一个数据库里面去找   

 

 经由数据库来搜寻,数据库默认每天更新一次

updatedb 可手动更新数据库

 

find(什么都可以搜索)

1.与时间有关
       -mtime n :n为数字,代表在n天之前的[一天之内]被更动过内容的文件
       -mtime +n:列出在n天之前(不含n天本身)被更动过内容的文件
       -mtime -n: 列出在n天之内(含n天本身)被更动过内容的文件档名
       -never file:file为存在的文件,列出比file还要新的文档名

find
/ -mtime 0 从当前这个时间点以前推24小时,0代表的目前时间
寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
find
/etc -newer /etc/passwd

2.与组名有关的参数
-user name:找出账号为name的文件
-group name :找所拥有组的
-nouser:寻找文件拥有者不存在/ete/passwd的人
-nogroup:找没有组的

3,与文件权限及名称有关的参数
-name filename:搜寻文件名为ilename的文件
-size [+-]SIZE:搜寻比SIZE还要大(+)或小(-)的文件,这个SIZE的规格有:
          c:代表byte k:代表1024bytes,
          要找比50KB还要大的文件,[-size +50k]
-tupe TYPE: 搜寻文件的类型为TYPE的,类型主要有:一般正规文件(f),装置文件(b,c),目录(d)
        连接档(l)
-perm mode :搜寻文件权限[刚好等于]mode的文件,这个类似chmod的属性值
-perm -mode:必须完全攘括mode权限
-perm /mode:包含任意mode权限

 

 不允许运用命令集

 

 

posted @ 2021-07-22 05:12  来自苏格兰  阅读(113)  评论(0)    收藏  举报