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


2.2系统 目录结构(下) (1) tree 的用法 <yum install -y tree > 安装tree 命令,必须联网状态下 <tree --hep> 查看常用用法 <man tree> 查看指令的说明
<tree -L 2 /> 以树型显示根目录,显示两层 (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> 查看指令依赖的库


2.3 ls 指令 语法-- ls(选项)(参数) 选项-- -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 > 列出详细信息 共显示了七列信息,从左至右依次为:文件类型,权限、文件数、归属用户、归属群组、文件大小B、创建日期、文件名称 (2)查看inode,inode相同的两个文件实际时一个文件,称为硬链接。

(3)文件数为3,表示下面有3个子目录

(4)<le -d>


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

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

2.5 alias指令 (1)<which ls > 查看别名----从环境变量中找 有 alias 表示带有选项的别名 (2)<alias> 查看系统所有含有alias的命令

(3)环境变量 PATH <echo $PATH> 查看PATH变量的内容

(4)自定义命令别名 < alias aming='ls -lha ' > 起一个别名 ,注意使用的时单引号 < unalias aming > 取消别名


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

-----


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> 级联删除空目录 (删掉后面的空目录为止)


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> 强制删除目录,并去掉询问

<!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 文件加入的最后一行 保存。 PATH=$PATH:/tmp/ 指令等号左右不能有空格 shell中变量赋值,等于号两边不允许有空格。

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


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

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

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


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

(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行。

(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> 不管是对文件还是对目录,修改的只是目标本身的权限。

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

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

(3) 所有权限+ 一项 < chmod a+x aming/> 同理 < chmod a=x aming/ >所有权限为x 同理 < chmod a-x aming/ > 同理 < chmod u-x aming/ >

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


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

(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 >   更改所有者和组 包括他的内部文件


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


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

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

(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权限的目录可以不修改文件,不可以新建文件,不能改名字,不能删除。

<lsattr -R /tmp/aminglinux/>
可以查看多层的权限


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

(1) 为ls命令增加 set_uid权限      <su - iammalt>  //切换用户      <$whoami     >  查看当前用户     <chmod u+s/usr/bin/ls>     为ls增加set-uid权限 同理-s 为去掉该权限

<chmod u=rws /usr/bin/ls>     为ls增加set-uid权限,但是为大写S,因为没有了x权限


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

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

         <chown  :malt  /root/22 >  修改目录的所属组      为目录增加set_gid身份后,再在22目录里创建文件,文件所属组与目录保持一致,


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

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


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

(2)< df -h>查看磁盘空间    

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


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

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

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


2.23 Find 指令

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

 (3) <whereis ls>

  (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(块文件)

    --3. -mtime  -atime  -ctime    按time搜索     最小单位 一天                 <find /etc/   -type   f  -mtime  -1 >    一天以内更改过的文件     +1:一天以前        <find /etc/   -type   f -name   "sshd_config" -o -mtime  -1 >   -o  或者   --4.-inum     按inode号所有文件                    <find -inum 231231231  >按inod号搜索

  --5. -mmin  分钟内修改过的                        <find /root/   -type f -mmin -120>   两小时以内                     <find /root/ -type f -mmin -120 -exec  ls -l {} ; >  查到的信息列出来

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

     --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不一定变;

常用快捷键: 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.也可以直接拖动。