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.也可以直接拖动。