文件目录管理

时间:2021-09-10 17:00:45

 系统目录结构

文件目录管理

 

1.ls就是list的意思,列举目录或者文件

2.home目录是家目录,每个用户都有一个家目录

3.root用户的家目录是根root,普通用户的家目录在/home/下   例如/home/sunyuju

4.useradd 添加普通用户,用useradd命令创建的普通用户,在/home目录下都有一个对应的用户名文件及是用户的家目录

为什么配置密钥登录的时候要配置到/root/.ssh/authorized_keys文件中?

答:因为ssh的配置文件中指定了这个文件 /etc/ssh/sshd_config

5.如果某个命令没有安装用yum 命令安装

例如:tree 命令没有安装 yum install -y treee

6.tree命令是以树形展示目录结构,查看命令怎么用 tree --help

7.man命令是显示命令的帮助文档 man tree

8.想查看目录的两层用 命令 tree -L 2

9.bin sbin  usr/bin  usr/sbin  目录下保存的都是常用命令 例如 ls  tree  vi 

为什么我们能直接用这些命令呢,因为PATH环境变量的作用

bin目录下的命令和  sbin下的命令有什么区别?

sbin下面的命令都是root用户用的 普通用户没有权限用

bin下是普通用户用的命令 

10 .boot是启动目录

11.dev目录是设备文件目录 鼠标 键盘

12.etc目录是配置文件目录

13.home目录是用户的家目录

14.lib 和lib64目录是系统的库文件,相当于Windows下面的dll文件

15.查看一个命令依赖那些库? 用ldd /bin/ls

16.media 媒见目录 mnt挂载目录 opt  proc进程

17.root 目录 root用户的家目录

18.run 进程目录

19.srv服务产生的文件

20.sys目录系统内核相关的文件

21.tmp 系统的零时目录

22.usr 用户相关的目录 通常将apach放到这里

23.var目录 日志相关的放在这里

ls命令

 ls 

inode:储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

文件目录管理

 

1.-rw-------表示权限   1 有多少个文件用同一个inode  

文件目录管理

 

2.ls -i 查看inode号 

3.- 代表文件类型   root 表示所有者,后面的root表示所有组 1422 表示文件大小,单位是b 后面是时间和文件名

4.ls -a 查看所有文件,包括隐藏文件。

5.文件目录管理

这三个目录的inode号是一样的

6.ls -alt 

t表示正序排2.

别名alias

1.which  ll    查看ll命令的路径

2.alias  查看系统哪些命令有别名

3.创建:alias aming='ls -lah' 

4.删除:unalias

相对和绝对路径

1.绝对路径:从根开始的都是绝对路径

/root/   /usr/

2.相对路径是,相对当前所在位置的路径

文件目录管理

相当于.根的路径

cd命令

1.cd 的意思是 change directory

2.cd - 回到上一目录

cd .. 到上一目录

cd  ~ 到家目录

mkdir和rmdir

mkdir创建目录,目录不存在不能创建用 -p 参数强制创建目录

文件目录管理

-v 参数显示创建目录的过程

文件目录管理

rmdir的用途是删掉目录。他的功能比较鸡肋,它只能删除空的目录。

rm

1.rm -f 强制删除文件

2.rm -r级联的删除目录和文件

3.rm -v查看删除过程

文件目录管理

 

4.!su 表示执行最近执行的已su开头的命令

环境变量$PATH

1.环境变量指$PATH

[root@sunyujun01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@sunyujun01 ~]#

2.为什么我们可以执行ls命令,就是因为ls位于环境变量下面的某个文件下面,下面例子中ls命令位于/usr/bin/目录下

 

[root@sunyujun01 ~]# which ls
alias ls
='ls --color=auto'
/usr/bin/ls

 

 3.临时增加命令,将ls1命令放到dir目录下并将dir目录添加到环境变量中,然后测试ls1命令和ls命令完全一样。

[root@sunyujun01 ~]# ls
anaconda-ks.cfg dir
[root@sunyujun01 ~]# cp /usr/bin/ls ./dir/ls1
[root@sunyujun01 ~]# PATH=$PATH:dir/ 将某个目录添加到环境变量中
[root@sunyujun01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:dir/
[root@sunyujun01 ~]# ls1
anaconda-ks.cfg dir

4.永久加ls1命令编辑profile文件在文件尾加上PATH=$PATH:/root/dir/

[root@sunyujun01 ~]# vi /etc/profile

 

文件目录管理

5.删除ls1命令 直接重新设置环境变量,第二种删除profile文件中的PATH=$PATH:/root/dir/

[root@sunyujun01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

cp命令 

 1.copy 拷贝文件或目录

[root@sunyujun01 ~]# cp anaconda-ks.cfg dir/
[root@sunyujun01 ~]# ls dir/
a anaconda-ks.cfg ls ls1

2.拷贝目录用-r 参数

[root@sunyujun01 ~]# mkdir dir1
[root@sunyujun01 ~]# ls
anaconda-ks.cfg dir dir1
[root@sunyujun01 ~]# cp dir dir1
cp: 略过目录"dir"
[root@sunyujun01 ~]# cp -r dir dir1
[root@sunyujun01 ~]# ls
anaconda-ks.cfg dir dir1
[root@sunyujun01 ~]# cd dir1/
[root@sunyujun01 dir1]# ls
dir

3.!$上条命令的最后一个参数,以空格分割

[root@sunyujun01 dir1]# ls dir
a anaconda-ks.cfg ls ls1
[root@sunyujun01 dir1]# tree !$
tree dir
dir
├── a
│   └── b
│   └── c
├── anaconda-ks.cfg
├── ls
└── ls1

3 directories, 3 files

4.-i 表示 安全参数,会问是否创建

[root@sunyujun01 dir1]# which rm
alias rm='rm -i'
/usr/bin/rm

5.拷贝目录的时候如果目标目录已存在,会将拷贝的目录放到目标目录下面

mv命令

1.移动文件或目录,如果在同一目录下是重命名

2.移动同时改名字

[root@sunyujun01 ~]# mv dir/ls1 dir1/ls2
[root@sunyujun01 ~]# tree
.
├── anaconda-ks.cfg
├── dir
│   ├── a
│   │   └── b
│   │   └── c
│   └── anaconda-ks.cfg
└── dir1
├── dir
│   ├── a
│   │   └── b
│   │   └── c
│   ├── anaconda-ks.cfg
│   ├── ls
│   └── ls1
├── ls
└── ls2

3.mv命令也有i选项,所以当移动的文件在目标目录已经存在则会询问是否覆盖

[root@sunyujun01 ~]# which mv
alias mv='mv -i'
/usr/bin/mv

文档查看cat_more_less_head_tail

1.cat命令:查看文件内容,加-n选项 显示行号

文件目录管理

2.tac命令 和cat命令相反,倒序查看文件内容

文件目录管理

3.more命令查看文件内容,只是显示一屏,按空格键显示剩下的,按ctr+b往上翻,ctr+f往下翻

 

4.wc -l 显示文件行数

文件目录管理

5.将一个文件的内容追加到另一个文件内容后

文件目录管理

6.less命令和more命令类似,支持方向键往上看,可以在文件中用/+(?加关键字搜索是从后往前搜)关键字进行搜索,对搜索的内容按n查看下一个,按shift+n看上一个

文件目录管理

7.按小g定位到行首,大g定位到行尾

8.head命令查看文件的头10行,指定查看几行用 -n +行数

9.tail命令查看文件的尾10行,可以查看动态文件 用 tail -f  文件名

文件或目录权限chmod

1.rw-r--r--(644)   rwx:读写执行,rw-:所有者 r--:所属组 r--  其他用户的权限 r用数字4 w用数字2 x 用数字1表示

2.chmod命令更改文件权限,有的目录或文件权限后面有一个.这个点号表示文件受制于selinux,关闭selinux之后再创建文件就不会有这个点了。

3.零时关闭selinux: setenforce 0,开启selinux:setenforce 1 查看selinux状态:getenforce 彻底关闭selinux编辑/etc/selinux/config,将SELINUX=enforcing改为disabled,然后重启selinux

文件目录管理

4.chmod 命令更改目录权限只是针对目录本身,目录里面的文件的权限还是之前的权限,如果想将文件内部的文件也同时更改权限可以用 -R 选项 chmod -R 777 目录名,也可以用u、g、o改权限

文件目录管理

更改所有者和所属组chown

1.chown修改文件所有者,将dir目录的所有者有root改为了sunyujun

文件目录管理

2.修改文件的所属组chown sunyujun:sunyujun  dir 或者用chgrp命令,chown命令也支持 -R 参数 chown -R sunyujun:sunyujun  filename

文件目录管理

umask

1.umask 决定了我们默认建立一个文件或者目录的默认权限755  664。

2.umask u=, g=w, o=rwx 执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消,
应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。

不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令umask u=, g=w, o=rwx,虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录或者通过编译程序创建的一个可执行文件,将不受此限制。在这种情况 下,会设置文件的执行权限。 也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。

目录:rwxrwxrwx 减去 ----w--w- = rwxr-xr-x。 777 - 022 = 755

文件没有执行权限,为rw-r--r--所以就是644了。 666- 022 = 644

1.touch命令创建文件默认权限为644  mkdir 创建目录默认权限为755

2.root 的umask的值为0022

3.特殊情况umask设置为003,创建文件。

文件目录管理

4.特殊情况umask设置为003,创建目录

文件目录管理

隐藏权限lsattr_chattr

1.chattr设置隐藏权限,用ls -l 是看不到的,

文件目录管理

2. chattr + i 文件 :设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

3.lsattr是查看文件权限的。

文件目录管理

4.用chattr -i 是减去i权限 

文件目录管理

5.chattr +a 权限是只能追加和修改时间信息,不能删除,不能修改,只能往后追加内容,

文件目录管理

6.chattr -a 去掉权限 

7.给一个目录加了i权限或a权限,目录下面的文件可以写

8.lsattr -R 列出目录多层结构,不加-R只是列出一层。

9.lsattr -a 可以看到隐藏的文件