跟阿铭学习Linux- 第二课 文件 系统管理

2.1系统 目录结构(上)
root 家目录在根目录/下
用户家目录在 /home/username/下


2.2系统 目录结构(下)
(1) tree 的用法
<yum install -y tree > 安装tree 命令,必须联网状态下
<tree --hep> 查看常用用法
<man tree> 查看指令的说明
<tree -L 2 /> 以树型显示根目录,显示两层
跟阿铭学习Linux-  第二课 文件 系统管理
(2)Linux常用目录结构
/bin 普通用户可以用的指令
/sbin 超级用户即root用户可以用的指令
/boot 启动时使用的核心文件grup
/dev 外部设备文件-鼠标、键盘等
/etc 系统配置文件
/home 用户家目录
/lib /lib64 动态链接共享库、
/media 自动识别的设备文件--如光驱、U盘
/mnt 用户临时挂载的文件系统
/opt 空 (有些将oracal装在这里)
/proc 进程
/root root的家目录
/run 进程的临时文件,关机后会消失
/srv 服务产生的文件
/sys 系统内核相关文件
/tmp 系统临时文件
/usr 用户应用文件和程序存放目录
/var 产生的日志log
<ldd /bin/ls> 查看指令依赖的库
跟阿铭学习Linux-  第二课 文件 系统管理


2.3 ls 指令
语法-- ls(选项)(参数)br/>选项--
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为隐藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;即显示自己
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件; --file-type:与“-F”选项的功能相同,但是不显示“*”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序,越早越靠前;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
--full-time:列出完整的日期与时间;
--color[=WHEN]:使用不同的颜色高亮显示不同类型的。
(1)< ls -l >== <ll > 列出详细信息
跟阿铭学习Linux-  第二课 文件 系统管理
共显示了七列信息,从左至右依次为:文件类型,权限、文件数、归属用户、归属群组、文件大小B、创建日期、文件名称
(2)查看inode,inode相同的两个文件实际时一个文件,称为硬链接。
跟阿铭学习Linux-  第二课 文件 系统管理

(3)文件数为3,表示下面有3个子目录跟阿铭学习Linux-  第二课 文件 系统管理

跟阿铭学习Linux-  第二课 文件 系统管理

(4)<le -d>

跟阿铭学习Linux-  第二课 文件 系统管理


2.4 文件类型
文件类型:
d :蓝色表示目录
绿色表示可执行文件,具有x权限;
红色表示压缩文件
l :浅蓝色表示链接文件
灰色表示其它文件
红色闪烁表示链接的文件有问题了
b :×××是设备文件,包括block, char, fifo。

  • :白色文件:一般性文件,如文本文件,配置文件,源码文件等 ,可以使用cat打开
    灰色:表示其他文件
    c:×××字符串设备 鼠标键盘
    s :粉红色:图片文件或是socket文件(进程间通信)
    p : 管道文件

2.5 alias指令
(1)<which ls > 查看别名----从环境变量中找
有 alias 表示带有选项的别名
跟阿铭学习Linux-  第二课 文件 系统管理
(2)<alias> 查看系统所有含有alias的命令

跟阿铭学习Linux-  第二课 文件 系统管理

(3)环境变量 PATH
<echo $PATH> 查看PATH变量的内容
跟阿铭学习Linux-  第二课 文件 系统管理

(4)自定义命令别名
< alias aming='ls -lha ' > 起一个别名 ,注意使用的时单引号
< unalias aming > 取消别名
跟阿铭学习Linux-  第二课 文件 系统管理


2.6 相对和绝对路径
<pwd > 查看当前处于的目录
绝对路径:一个从根开始的路径。
相对路径:相对当前目录下的一个路径。
<pwd> 查看当前处于root路径下,所以可以直接用相对路径查看文件authorized_keys

-----跟阿铭学习Linux-  第二课 文件 系统管理


2.7 cd指令

<cd lib> 进入目录
<cd ->跳转回上一次目录(可实现交替跳转)
<cd >=<cd ~> 回家目录
<cd ..> 回上级目录


2.8 mkdir 创建和删除目录指令
(1)创建目录
<mkdir /tmp/aminglinux> 创建目录
<mkdir -p /tmp/aminglinux/1/2> 级联创建目录
<mkdir -pv /tmp/aminglinux/1/2/3/4> 级联创建可视化目录
(2)移除目录
<rmdir /tmp/aminglinux/1/2/3> 移除空目录
<rmdir -pv /tmp/aminglinux/1/2/3> 级联删除空目录 (删掉后面的空目录为止)

跟阿铭学习Linux-  第二课 文件 系统管理
跟阿铭学习Linux-  第二课 文件 系统管理


2.9 rm删除目录和文件指令
rm [选项]... 文件...
删除 (unlink) 文件。
-f, --force 强制删除。忽略不存在的文件,不提示确认
-r, -R, --recursive 级联删除目录及其内容
-v,可视化删除

<rm /tmp/aminglinux/1/2/1.txt> 删除一个文件(有询问),不能删除目录
<rm -f /tmp/aminglinux/1/2/1.txt> 强制删除一个文件(不询问) 也可用于删除目录
<rm -rfv /tmp/aminglinux/1> 强制删除目录,并去掉询问

跟阿铭学习Linux-  第二课 文件 系统管理

<!tree > 运行最近一次tree 指令, 其它指令相同
<history > 查看之前使用过的指令的历史记录


2.10 环境变量PATH
< echo $PATH> //显示你的环境变量值,查找指令的路径,在这个路径下的指令可以直接敲出来,省略掉路径。
PATH 这个就是变量名, echo是用于在控制台显示信息的命令
$在这里是取得某个变量的值, PATH就是变量名,合起来就是在控制台显示PATH环境变量的值
(1)拷贝出一个 /tmp/ls2
(2)加入路径
(3)ls2 已支持但是临时的
(4)编辑文件Profile <vi /etc/profile > 在最后一行加入 PATH=$PATH:/tmp/ 保存成为永久的。
(5) 取消 /tmp环境变量, 输入 PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
(6) 打开文件双击 dd 删除Profile 文件加入的最后一行 保存。
跟阿铭学习Linux-  第二课 文件 系统管理
跟阿铭学习Linux-  第二课 文件 系统管理
PATH=$PATH:/tmp/ 指令等号左右不能有空格 shell中变量赋值,等于号两边不允许有空格。

2.11 cp 拷贝指令
<cp /etc/passwd /tmp/1.txt > 拷贝文件
<cp -r /tmp/aminglinux/ /tmp/aminglinux2 > 拷贝目录 注意目录 加-r 和/
跟阿铭学习Linux-  第二课 文件 系统管理
<tree !$> 调用上面最后一行命令的最后一个参数跟阿铭学习Linux-  第二课 文件 系统管理
cp 和rm 和mv 一样实际有-i 拷贝目录时会问 是否覆盖 想不提示可以使用绝对路径</usr/bin/cp >
cp拷贝目录时 若当前目录已经存在会在当前目录下生产新的目录。

跟阿铭学习Linux-  第二课 文件 系统管理

跟阿铭学习Linux-  第二课 文件 系统管理


2.12 mv 移动指令
同一目录下,mv 等于更改文件名。
<mv /tmp/1.txt /tmp/aminglinux/2.txt> 移动文件并改名字
<mv /tmp/aminglinux/2.txt /tmp/> 移动文件到目录下
(1)移动文件夹
移动时若目标目录不存在会改名字并移动更改名字;
移动时若目标目录存在会移动到该目录下并更改名字;

跟阿铭学习Linux-  第二课 文件 系统管理

移动目录时 若当前目录下已经存在该目录会提示是否覆盖,空目录可以覆盖,但是非空的不可以覆盖。

跟阿铭学习Linux-  第二课 文件 系统管理

可以使用绝对路径指令不会提示直接覆盖。
(2)移动文件
移动文件时,若目录下没有同名文件,则正常移动到该文件下。
移动文件时,若目录下已存在该文件则直接覆盖。

跟阿铭学习Linux-  第二课 文件 系统管理


2.13 查看文本
(1)cat 看文件内容 tac 倒叙查看文件内容
<cat -A initial-setup-ks.cfg > 行尾+$
<cat -n initial-setup-ks.cfg > 显示行号

跟阿铭学习Linux-  第二课 文件 系统管理

(2)more
<more initial-setup-ks.cfg > 一屏显示内容
<cat /etc/passwd >>anaconda-ks.cfg> 追加文件到另一文件
空格 :向下 ctr+b : 向上
(3)wc
<wc -l anaconda-ks.cfg > 显示文件行数
(4)less 最好用
和more 差不多但是支持鼠标、方向键
用q 退出 ; /system 高亮显示 n 向后显示高亮 shitf+n 向前 ;
?system 从后往前看;
shitf g 定位到行尾; g 定位到行首;
(5)head
<head -n 2 anaconda-ks.cfg > 查看文件头两行 没有参数n时默认为10行。

跟阿铭学习Linux-  第二课 文件 系统管理

(6)tail
<tail -n 2 anaconda-ks.cfg > 查看文件尾两行
<tail -f anaconda-ks.cfg > 动态查看文件内容,不退出处于监听状态--常查看动态日志


2.14 文件和目录权限
chmod 修改权限
Eg: d rwx r-x r-x. r=4;w=2;x=1; 所以=755
d:目录 前3个:所属者权限 中间3 个:所属组权限 后面3个:除两者外其它人权限
rwx :读、写、执行
. :最后一位有个点 表示受制于selinux,当selinux开启时创建的文件都会有,只有将配置文件默认为关闭,然后重新再创建的文件才会没有点。
<vi /etc/selinux/config> 更改selinux配置文件
(1)修改1.txt 权限 注意 先显示权限, 然后是文件名
<chmod 777 /tmp/1.txt> 不管是对文件还是对目录,修改的只是目标本身的权限。

跟阿铭学习Linux-  第二课 文件 系统管理

(2)批量 修改目录及其目录下子内容权限
<chmod -R 666 /tmp/aminglinux/1/>

跟阿铭学习Linux-  第二课 文件 系统管理

(3) 直观方式修改权限
< chmod u=rwx,g=rwx,o=wxr /tmp/aminglinux//>

跟阿铭学习Linux-  第二课 文件 系统管理
(3) 所有权限+ 一项
< chmod a+x aming/> 同理 < chmod a=x aming/ >所有权限为x 同理 < chmod a-x aming/ >
同理 < chmod u-x aming/ >

![](https://s1.51cto.com/images/blog/201712/19/8975dd5c0c785f807899226e4c7273f5.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZ


2.15 更改所有者和组
<adduser iammalt> 增加用户iammalt
chown 修改所有者权限 change owner
chgrp 修改所属组权限
< cat /etc/passwd > 查看创建的用户,最后是创建的用户

跟阿铭学习Linux-  第二课 文件 系统管理

(1)< chown  iammalt  /tmp/aminglinux/>   只更改所属者
(2)<chgrp malt /tmp/aminglinux/> 只更改所属组
(3))< chown  malt:iammalt  /tmp/aminglinux/ >   同时更改所属者和组 
(4)<chown :root /tmp/aminglinux/> 只更改所属组
 (5)< chown  -R  malt:malt  /tmp/aminglinux >   更改所有者和组 包括他的内部文件

跟阿铭学习Linux-  第二课 文件 系统管理


2.16  umask 文件和目录的默认权限
  目录必须有x权限 即 执行权限;
      默认  umask  为022   更改后    
目录用 777(rwxrwxrwx)-umask得到当前默认目录权限;
文件用 666(rw-rw-rw-)--umask得到当前默认文件权限;
用符号减!!!不能用数字,因为若某个符号不存在还被减时会出错。
x在文件权限代表可执行,x在文件夹权限中代表可以进入文目录;
文件的删除与它所在的文件夹权限有关,而不是文件文件本身的写权限。
eg:开始 uamsk 为002
目录:777(rwxrwxrwx)-775(rwxrwxr-x) == 002
文件:666(rw-rw-rw-)--664(rw-rw-r--)== 002
更改为022后:
目录:777(rwxrwxrwx)-755(rwxrwxr-x) =022
文件:666(rw-rw-rw-)--644(rw-rw-r--)=022

跟阿铭学习Linux-  第二课 文件 系统管理


2.17  隐藏权限
 (1) chattr   设置文件隐藏权限    任何人对它的任何操作均不可以。
    <chattr +i /tmp/1.txt>    为 1.txt加 隐藏权限,文件将不可修改,即使root强制保存也无法成功。
  编辑时会创建一个 1.txt~文件,退出时会保存,会无法保存就会一直有1.txt。

跟阿铭学习Linux-  第二课 文件 系统管理

<chattr -i /tmp/1.txt>  去掉i权限,此后可以修改。
 <chattr +a /tmp/1.txt>  可追加权限,也可以touch修改时间信息,多用于日志。

跟阿铭学习Linux-  第二课 文件 系统管理
(2)  查看文件隐藏权限
     <lsattr    /tmp/1.txt>    
[root@aming-01 ~]# lsattr /tmp/1.txt
-----a---------- /tmp/1.txt
(3) 查看目录隐藏权限
<lsattr /tmp/aminglinux/> 实际查看的是 子目录和子文件的目录的隐藏权限。
<lsattr -d tmp/aminglinux/> 查看目录本身的隐藏权限
a权限的目录可以在内部新建文件和修改内部文件内容,都属于追加。
i权限的目录可以不修改文件,不可以新建文件,不能改名字,不能删除。

跟阿铭学习Linux-  第二课 文件 系统管理
<lsattr -R /tmp/aminglinux/>
可以查看多层的权限
跟阿铭学习Linux-  第二课 文件 系统管理


2.18  特殊权限set_uid
set_uid必须对二进制,可执行文件增加权限;set_uid必须对二进制,可执行文件增加权限;
  (1)  普通用户临时拥有所属用户所有者的身份  
     <  ls -l /usr/bin/passwd>    查看 passwd指令信息 
                    指令红色背景--具有 set_uid身份权限
       <ls -l /etc/shadow >  查看密码文件信息
跟阿铭学习Linux-  第二课 文件 系统管理

(1) 为ls命令增加 set_uid权限
     <su - iammalt>  //切换用户
     <$whoami     >  查看当前用户
    <chmod u+s/usr/bin/ls>     为ls增加set-uid权限 同理-s 为去掉该权限跟阿铭学习Linux-  第二课 文件 系统管理

<chmod u=rws /usr/bin/ls>     为ls增加set-uid权限,但是为大写S,因为没有了x权限跟阿铭学习Linux-  第二课 文件 系统管理


2.19  特殊权限set_gid
  普通用户临时拥有所属用户组的身份 ;
为文件创建set_gid,使普通用户执行文件时临时拥有所属组的身份;
为目录创建set_gid,在内部创建子文件时所属组与目录所属组保持一致;
    (1) <chmod g+s /usr/bin/ls >  为文件ls增加set_gid身份,普通用户可以临时拥有所属组root的身份。

跟阿铭学习Linux-  第二课 文件 系统管理

    (2)<chmod g+s  /root/22 >       为目录增加set_gid身份

         <chown  :malt  /root/22 >  修改目录的所属组
     为目录增加set_gid身份后,再在22目录里创建文件,文件所属组与目录保持一致,
跟阿铭学习Linux-  第二课 文件 系统管理


   
2.20  特殊权限stick_bit   粘滞位
       防删除位:防止别人删除自己的文件 ,但root用户除外。
(1)tmp/具有stick_bit   权限,可以修改不可以删除。

跟阿铭学习Linux-  第二课 文件 系统管理

(2)在 malt 创建文件888.txt并编辑,然后将文件属性修改为777,在iamalt上可以编辑,但是不可以删除,但是root 除外。
跟阿铭学习Linux-  第二课 文件 系统管理
(3)若在malt上建立的目录aming为777,在内部创建文件666.txt,修改为只读,在malt上是可以修改和删除。对于文件和目录只看它的上级目录有没有权限。
(4)chmod o+t  xxx   设置stick bit权限,针对目录 


2.21  软链接 
     不仅可以软链接文件也可以软链接目录,而且可以跨分区。
     软链接文件  如下:
跟阿铭学习Linux-  第二课 文件 系统管理
(1) < ln -s /root/yum.log  root/22/33.txt > 为 yum.log创建软链接,前面的是真正的文件,后面的软链接文件。yum.log必须存在,  33.txt必须不存在   前、后的链接最好为绝对路径!
跟阿铭学习Linux-  第二课 文件 系统管理
如果一个文件比较大且必须放在某处但是那个盘快满了 可以用软链接方式放在其它盘。
注意:源文件必须为绝对路径,否则创造出来的可能是失效的软链接红色闪烁。

跟阿铭学习Linux-  第二课 文件 系统管理
(2)< df -h>查看磁盘空间    
跟阿铭学习Linux-  第二课 文件 系统管理

若有一个文件一直再写d盘一个文件aming.log,但是d磁盘快满了,这个时候就可以将aming.log拷贝到一个大的磁盘然后将d盘的aming.log删除,然后做一个软链接即可。


2.22 硬链接文件
不能为目录做硬链接,只能为文件,而且不能跨分区。(有点类似指针,但是只是一个皮)
(1) <ln /tmp/5.txt 5_hard.txt > 创建一个硬链接,相互为硬链接
硬链接即两个都为皮,真正的内容在inode中,仅有一份,删除时是删的皮。
跟阿铭学习Linux-  第二课 文件 系统管理

(2)目录不能做硬链接,因为目录本身就有多个inode号 。

(3)不能跨分区做硬链接,因为每个分区都有独立的inode号,可能出现重复inode。
(4)硬链接 特性:
1 删除一个,还有一个,相对来说安全,但靠硬链接备份文件不合适,它是一个皮。
2 硬链接本质上还是一个文件,所以你建立多个硬链接文件,空间占用还是一份。所以说,它可以节省空间。


2.23 Find 指令

(1) <which  ls >   去环境变量中找    
 (2) <locate ls >  模糊搜索
      <yum  install -y mlocate>  安装包 支持 locate 指令

跟阿铭学习Linux-  第二课 文件 系统管理
 (3) <whereis ls>

跟阿铭学习Linux-  第二课 文件 系统管理

  (4) Find
在实际工作中我们会用find命令来做数据库的自动备份脚本
<find $bak_dir -name "*.dmp" -mtime +7 -exec rm -rf {} \;>
如果不加-r是没法删除目录的,-f加不加都能删除,因为这里的rm并不是直接在系统里执行的那个rm,系统里直接执行rm其实是rm -i,这里的rm不带-i。

       --1. -name  按名字搜索
     <find /etc/   -name   "sshd_config">   在etc/下搜索文件名  "sshd_config"
               <find /etc/   -name   "sshd">  模糊搜索
      --2. -type   按类型搜索
               <find /etc/   -type   d  -name     "sshd
"> 搜索文件目录名 diratory
               <find /etc/   -type   f  -name     "sshd*"> 搜索文件名 file
               同理还有 类型   l(软连接) s(socket) c(字符文件) b(块文件)
跟阿铭学习Linux-  第二课 文件 系统管理

    --3. -mtime  -atime  -ctime    按time搜索     最小单位 一天
                <find /etc/   -type   f  -mtime  -1 >    一天以内更改过的文件     +1:一天以前   
跟阿铭学习Linux-  第二课 文件 系统管理
    <find /etc/   -type   f -name   "sshd_config" -o -mtime  -1 >   -o  或者
跟阿铭学习Linux-  第二课 文件 系统管理
  --4.-inum     按inode号所有文件
                   <find -inum 231231231  >按inod号搜索

跟阿铭学习Linux-  第二课 文件 系统管理
  --5. -mmin  分钟内修改过的   
                    <find /root/   -type f -mmin -120>   两小时以内
                    <find /root/ -type f -mmin -120 -exec  ls -l {} \; >  查到的信息列出来
跟阿铭学习Linux-  第二课 文件 系统管理

<find /root/ -type f -mmin -120 -exec  mv {} {}.bak \;  >   查到的信息输出到文件中,并更改名字
有两个{}符号:
第一个{}表示的是前面find /root/ -type f -mmin 120查找出来的文件的总概括:
第二个{}表示的是把他更改成bak时候的前缀了。

跟阿铭学习Linux-  第二课 文件 系统管理

     --6. -size   大小
                    <find /root/ -type f -size  +10k -exec  ls -lh {} \;  >    大于10k的文件    注意 k 要小写     M要用大写  b要小写

(5) stat     查看文件的3个time 
 <stat /tmp/1.txt> 查看文件详细信息
access time 最近访问:访问文件内容 查看,打开不保存<cat> <vim> <less> <more>
modify time 最近更改:更改文件内容 追加<echo "123132" >>/tmp/5.txt>
change time 最近改动:更改文件inode,权限、大小、内容、组等 <chown 666 /tmp/5.txt>

vim 只打开不保存只更改atime,只要保存了便会更改3个time;
修改 mtime 时,ctime一定变了 ;改了 ctime时,mtime不一定变;
跟阿铭学习Linux-  第二课 文件 系统管理

跟阿铭学习Linux-  第二课 文件 系统管理

常用快捷键:
ctrl  +L 清屏
ctrl + d 命令行无字符时 退出,有字符时向后一个个删除
ctrl + c 取消
ctrl + u 删除 光标前面的行内容
ctrl + k 删除光标后面的行内容
ctrl + d 命令行有字符时往后删一个
ctrl + e 将光标挪到命令行尾
ctrl + a 将光标挪到命令行首


2.26  文件后缀

(1)区别大小写;
(2)linux下  后缀名 并不代表它是什么文件
(3)<echo $LANG > 查看当前语言


2.27  linux 与windows 文件互传
-在Xshell 或 securect下可以用,需要一个工具包 ; putty不支持文件互传
<yum install -y lrzsz> 安装包支持工具 !!!
从linux传输到windows: <sz a.txt>
从windows传输到 linux 传到 当前目录 :1. <rz > ;2. 还可以在 Xshell点击工具栏的【新建文件传输】快捷键是ctrl+alt+f。这可能需要用的xshell包含xftp组件才行;3.也可以直接拖动。

转载于:https://blog.51cto.com/iammalt/2051517

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值