一、目录相关知识
windows:目录顶点或者入口盘符:C/D/E
Linux:目录顶点或者入口:/,称为根。所有的目录都在根下面。
Linux系统目录结构具有以下基本特点:
1.一切从"根"开始,"/"是所有目录的起点(顶点)。
2.Linux根下面的目录是一个有层次的树状结构。
3.酷似一棵倒挂着的树。
[root@oldboy ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── oldboy
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
路径分隔符区别:
Windows的目录形式为c:\windows\,路径分隔符是“\”(撬棍,反斜线),d、e等盘的目录结构与之类似。
Linux的目录形式为/etc/hosts,路径分割符为"/" (斜线)。
目录层次标准:
http://www.pathname.com/fhs/
二、"/"下目录介绍
root@oldboy oldboy]# tree -L 1 /
/
├── bin -> usr/bin #/bin等同/usr/bin #普通用户二进制命令目录,ls,cp,cat,rm。
├── sbin -> usr/sbin #/sbin/等同/usr/sbin #root管理员使用的二进制命令目录(破坏程度更 大,fdisk,mkfs分区格式化)
├── boot #内核程序及引导程序所在的目录,100M
├── dev #设备目录(光驱 磁盘)
/dev/hd[a-t]IDE设备
/dev/sd[a-z] SCSI设备
/dev/cdrom 光驱
/dev/null #无限数据接收设备,相当于黑洞
/dev/zero #无限零资源,要多少有多少
├── etc***** #系统基础服务核心配置文件所在的目录(yum rpm安装的软件)
1)/etc/sysconfig/network-scripts/ifcfg-eth1:网卡配置文件,第二块ifcfg-eth0
2)/etc/resolv.conf:Linux系统过时的DNS客户端配置文件
3)/etc/hostname:主机名配置文件
4)/etc/hosts:系统本地的域名解析文件(局域网;域名和IP解析文件)
5)/etc/fstab:配置开机设备自动挂载的文件
6)/etc/rc.local:存放开机自启动程序命令的文件
7)/etc/issue 软件bug,和特定版本有关。
8)/etc/motd:配置用户登录系统之后显示提示内容的文件
9)/etc/redhat-release:声明Red Hat版本号和名称信息的文件
10)/etc/sysctl.conf:Linux内核参数设置文件(系统优化)
11)/etc/profile、/etc/bashrc ,.bashrc,.bash_profile配置系统的环境变量/别名等的文件
├── home #普通用户的家目录(三间茅草房) /home/oldboy,~
├── root #管理员的家目录(皇宫)
├── lib -> usr/lib #库文件所在目录,系统调用(内核提供接口给应用程序使用)
├── lib64 -> usr/lib64 #库文件所在目录
├── media #媒体 光驱等挂载点。
├── mnt #临时的挂载点(u)
├── opt #第三方程序目录
├── proc***** #虚拟的文件系统,内核、进程等配置和运行信息的目录。汽车仪表盘。
汽车仪表盘:车况\油耗\跑了公里数\速度
/proc/cpuinfo 当前cpu信息文件
/proc/meminfo 当前内存信息文件
/proc/loadavg 当前系统的平均负载文件
/proc/mounts 当前设备挂载列表信息文件
/proc/interrupts 当前系统中断信息文件
├── sys #虚拟的文件系统
├── tmp #临时目录,所有用户都可以进入这里做各种操作(黑客跳板目录),监 控目录。
1)堵上漏洞。2)防止放木马文件。3)防止修改关键文件(suid vim)。 4)提权到root(/etc/sudoers),为所欲为。
├── usr #c:/program file 应用程序所在目录,编译方式安装软件默认是这个目 录/usr/local
1)/usr/local/ #编译安装软件默认的位置路径,c:\Program files。
2)/usr/src #源代码目录
└── var #变化的目录,日志文件、缓存等文件存放的目录。
例: /var/log/dmesg #记录硬件信息加载情况的日志文件(dmesg) /var/log/messages 系统日志文件,系统故障可以去看看。
/var/log/secure 登录日志 (ssh日志记录到这里)监控日志
/var/log/lastlog 有哪些用户登录lastlog
三、和磁盘相关的知识
挂载 : 给硬盘安个门
挂载点: 门 (目录 /mnt)
mount /dev/cdrom /mnt 临时挂载
[root@oldboy ~]# ls /dev/cdrom
/dev/cdrom
#cdrom是设备,不是目录。
[root@oldboy ~]# mount /dev/cdrom /mnt #给磁盘/dev/cdrom开一个门,门是/mnt目录,/mnt就是挂载点
mount: /dev/sr0 写保护,将以只读方式挂载
[root@oldboy ~]# ls /mnt/
CentOS_BuildTag LiveOS/
.discinfo Packages/
EFI/ repodata/
EULA RPM-GPG-KEY-CentOS-7
GPL RPM-GPG-KEY-CentOS-Testing-7
images/ TRANS.TBL
isolinux/ .treeinfo
[root@oldboy ~]# ls /mnt/Packages/
四、路径相关知识
相对路径和绝对路径区别:
绝对路径:从根开始找
银河系-太阳系-地球---亚洲---中国---北京---昌平沙河
cd /etc/.. #前面带"/"的
相对路径:相对于提示符
中国---北京---昌平沙河
例:
[root@oldboy ~]# mkdir oldboy -p
[root@oldboy ~]# cd oldboy #相对路径 相对当前用户所在的路径为前提,,前面不带"/"。
[root@oldboy oldboy]# cd ../ #相对路径
[root@oldboy ~]# cd /root/oldboy #绝对路径,和当前路径没有关系。
区别:
[root@oldboy ~]#cd /oldboy #绝对路径,有跟"/"。
[root@oldboy ~]# oldboy #相对路径
Linux核心字符
(1)* 表示所有
[root@oldboy ~]# ls
a.txt oldboy1.txt oldboy.log oldboy.txt oldgirl shell练习题.rar
[root@oldboy ~]# rm -fr *
[root@oldboy ~]# ls
(2)~ 家目录
(3). 当前目录
(4).. 上一级目录
(5)| 管道
(6) 重定向
#一般情况下,我们都是从键盘读取用户输入的数据,然后再把数据拿到程序(C语言程序、Shell 脚本程序等)中使用;这就是标准的输入方向,也就是从键盘到程序。
反过来说,程序中也会产生数据,这些数据一般都是直接呈现到显示器上,这就是标准的输出方向,也就是从程序到显示器。
我们可以把观点提炼一下,其实输入输出方向就是数据的流动方向:
输入方向就是数据从哪里流向程序。数据默认从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。
输出方向就是数据从程序流向哪里。数据默认从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向。
输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。
输入重定向就是改变输入的方向,不再使用键盘作为命令输入的来源,而是使用文件作为命令的输。
1)>或1> #标准输出重定向 清空已有文件内容,加入新的内容
[root@oldboy ~]# echo 123 >a.txt
[root@oldboy ~]# cat a.txt
123
[root@oldboy ~]# echo 456 >a.txt
[root@oldboy ~]# cat a.txt
456
[root@oldboy ~]# grep mysql /etc/services >oldboy.txt
/etc/services 苹果树
mysql 苹果
> 筐里的东西清空
oldboy.txt 装到筐里
2)1>> 标准输出追加重定向 只加入新的内容到文件结尾
[root@oldboy ~]# echo 123 >>a.txt
[root@oldboy ~]# echo 123 >>a.txt
[root@oldboy ~]# echo 123 >>a.txt
[root@oldboy ~]# cat a.txt
456
123
123
123
3)2> 错误输出重定向
若是执行正确命令,命令不进入文件
[root@oldboy ~]# echo oldboy >a.txt 2>b.txt
[root@oldboy ~]# cat a.txt
oldboy
[root@oldboy ~]# cat b.txt
若是执行错误命令,命令进入b.txt
[root@oldboy ~]# cho oldboy >a.txt 2>b.txt
[root@oldboy ~]# cat a.txt #清空了
[root@oldboy ~]# cat b.txt #错误命令进入
-bash: cho: 未找到命令
4)&> 正确的和错误的都放到c.txt
[root@oldboy ~]# cho oldboy &>c.txt
[root@oldboy ~]# cat c.txt
-bash: cho: 未找到命令
[root@oldboy ~]# echo oldboy &>c.txt
[root@oldboy ~]# cat c.txt
oldboy -bash: cho: 未找到命令
5)<或0< 输入重定向
<<或0<< 追加输入重定向
批量插入多行文本
[root@oldboy ~]# cat >/oldboy.txt<<EOF
> 10.0.0.7
> 10.0.0.8
> 10.0.0.9
> EOF
[root@oldboy ~]# cat /oldboy.txt
10.0.0.7
10.0.0.8
10.0.0.9
# 先清空/oldboy.txt里面的内容,再把后面的全部写进去
6)/dev/null 黑洞设备
[root@oldboy ~]# cat c.txt &>/dev/null
#垃圾桶,所有产生的都扔掉
/dev/zero 零设备,(白洞) #源源不断的产生东西