文件目录管理
系统目录结构
查看目录含义
man hier
查看网络信息
netstat -nltp
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 tree
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'
相对和绝对路径
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 可以看到隐藏的文件
特殊权限set_uid
作用是保证普通用户临时拥有root用户的身份,文件必须是二进制文件。
1.
2.切换到某个用户下
[root@sunyujun01 ~]# su - sunyujun
3.当用户sunyujun想看root目录下文件时权限时不够的,这是我们可以用set_uid命令
这时/usr/bin/ls也变红了,也可以用chmod u=rws /usr/bin/ls修改
再切换到sunyujun目录这是就可以查看了
4.去掉set_uid权限 chmod u-s /usr/bin/ls
特殊权限set-gid
和set-uid相识普通用户临时拥有所属组的身份
1.当给一个目录设置了set-gid权限之后,再在目录里创建目录或文件,目录或文件的所属组为设置的所属组
特殊权限stick_bit
1.(防止别人删除自己的文件)root除外,权限中的t是防删除位 tmp目录下的文件可以修改,但是没有删除权限
2.一个目录的权限是777,他下面的文件及时用户没有执行的权限也可以删除,因为能不能删除不是看到对文件的权限而是,文件所在的目录的权限,用上stick_bit之后用户就不能删除了。
软链接文件
1.软连接相对与Windows中的快捷方式,支持对文件和目录做软连接,命令为ln -s 源文件 目标文件
2.给dir目录下的123.txt文件创建软连接 ln -s /dir/123.txt 123
3.注意的是做软连接尽量使用绝对路径
硬链接
1.不支持对目录做硬链接,只支持对文件做硬链接,命令格式为ln 源文件 目标文件
2.硬链接创建的文件两个文件的inode信息一样,删除文件另一个文件不受影响,还是存在的,硬链接也不会占用多余的空间。
3.不能跨分区做硬链接
find命令
1.查找相关命令 whereis ls locate ls which ls
2.find命令格式find 目录路径(不指定默认为当前目录) -type f(文件) d(目录) -name “字符串”
3. find -name "*.php" -exec grep 'sunyujun' -H {} \; 查找所有包含sunyujun字符串的php文件并将文件目录和文件名列出来
3.stat 命令查看文件的具体信息
4.访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
5.查找一天以内更改过的文件
6.-o 是或者的意思 -size 文件大小
7.查找inode号和dir文件相同的文件(硬链接)
8.查找一小时以内修改过的文件
9.格式 find path -option [ -print ] [ -exec -ok command ] {} \;
查找当前目录下的所有文件并列出来 find ./ -type f -exec ls -l {} \;