Linux目录结构的组织形式和Windows有很大的不一样。Linux没有“盘(如C盘、D盘、E盘)”的概念,而是创建一个根"/"文件系统,全部的目录也都是由根目录衍生出来。python
Linux与Windows系统目录有所不一样,windows使用反斜杠"\"来做为目录分隔符,而Linux使用正斜杠"/"做为目录分隔符,以下:mysql
Windows目录:linux
Linux目录:nginx
登陆linux系统,在终端输入以下命令:正则表达式
1
|
[root@localhost ~]
# ls /
|
查看结果以下:sql
在Linux系统中,全部的文件与目录都是由根目录开始,是目录与文件的源头,而后一个个的分支下来,如同树枝状,所以称为这种目录配置为:目录树。shell
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。数据库
/bin:bin是Binary的缩写, 这个目录存放着最常用的命令。express
/dev:dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。vim
/etc:这个目录用来存放全部的系统管理所须要的配置文件和子目录。
/home:用户的主目录,在Linux中,每一个用户都有一个本身的目录,通常该目录名是以用户的帐号命名的。
/lib:这个目录里存放着系统最基本的动态链接共享库,其做用相似于Windows里的DLL文件。几乎全部的应用程序都须要用到这些共享库。
/lost+found:这个目录通常状况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,咱们能够将光驱挂载在/mnt/上,而后进入该目录就能够查看光驱里的内容了。
/opt:这是给主机额外安装软件所摆放的目录。好比你安装一个ORACLE数据库则就能够放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,咱们能够经过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,咱们也能够直接修改里面的某些文件。
/root:该目录为系统管理员,也称做超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,相似于windows的防火墙,可是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:该目录存放一些服务启动以后须要提取的数据。
/sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs 文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被建立的时候,对应的文件和目录也在内核对象子系统中被建立。
/tmp:这个目录是用来存放一些临时文件的。
/var:这个目录中存放着在不断扩充着的东西,咱们习惯将那些常常被修改的目录放在这个目录下。包括各类日志文件。
/usr:这是一个很是重要的目录,用户的不少应用程序和文件都放在这个目录下,相似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
在linux系统中,有几个目录是比较重要的,平时须要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,若是你更改了该目录下的某个文件可能会致使系统不能启动。
/bin, /sbin, /usr/bin,/usr/sbin: 这是系统预设的执行文件的放置目录,好比 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。
/var: 这是一个很是重要的目录,系统上跑了不少程序,那么每一个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
全部目录下都存在两个目录,【.】和【..】,分别表明当前目录和上级目录!如何证实它的存在?以下:
参数: -l 以列表形式显示文件
-a 显示全部隐藏文件(linux中以 . 开头的文件或者文件夹都是隐藏的)
咱们知道切换工做目录的指令是cd(change directory的缩写),那么首先要知道都有哪些目录,以下:
. 当前工做目录 .. 上一级工做目录 - 前一个工做目录 ~ 当前【用户】所在的家目录
mkdir命令用来创建新目录,是make directory的缩写,默认状况下,目录要一级一级的创建,例如要创建/tmp/oldboy/python目录,就必须有/tmp,而后/tmp/oldboy,最后/tmp/oldboy/python,若是没有/tmp/oldboy,则不能创建python目录!
可见高效的建立目录用上-p参数,能够直接执行命令【mkdir -p /tmp/oldboy/python】,系统会自动添加上/tmp,/tmp/oldboy,/tmp/oldboy/python依次创建目录,是否是很方便。
也能够一次性建立多个文件,以下:
rmdir命令用来删除目录,是remove directory的缩写,可是注意rmdir只能删除空目录。
1
|
rm
-
r 递归删除文件夹,会询问是否删除
|
1
|
rm
-
rf 强制(
-
f)递归(
-
r)删除文件夹和文件且没有提示,炸弹命令,谨慎使用!
|
VMware虚拟机有快照功能,能够拍下当前系统的状态,以便往后回复。
咱们配置过windows下的环境变量(PATH),知道系统会按照PATH的设定,去每一个PATH定义的目录下搜索可执行文件。
那么如何查看Linux下的PATH环境变量呢?
PATH必定是大写的,这个变量是由一堆目录组成,分隔符是冒号":",而不一样于windows的分号";"
echo 至关于python中的print。。
八、绝对路径与相对路径
路径是Linux中很是重要的概念,它用来定位如何找到某个文件。
Linux下特别注意文件名/路径的写法,能够将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative)。这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)为开始写起的文件名或目录名称,如/tmp/oldboy/test.py;
- 相对路径:相对于当前路径的文件名写法,如./tmp/oldboy/exam.py或../../tmp/oldboy/exam.py,简单来讲只要开头不是/,就是属于相对路径;
九、Linux的文件系统
用户在硬件存储设备中执行的文件创建,写入,读取,修改,转存与控制等操做都是依赖文件系统完成的。文件系统的做用是合理规划硬盘,保证用户正常使用。
Linux系统支持数十种文件系统,常见文件系统以下:
- Ext3 是一款日志文件系统,可以在系统异常宕机时避免文件系统资料丢失,并能 自动修复数据的不一致与错误。
- Ext4 是Ext3的改进版本,做为 RHEL 6 系统中的默认文件管理系统,它支持的存储容 量高达 1EB(1EB=1,073,741,824GB),且可以有无限多的子目录。另外,Ext4 文件系统可以批量分配 block 块,从而极大地提升了读写效率。
- XFS 是一种高性能的日志文件系统,并且是 RHEL 7 中默认的文件管理系统,它的优点在发生意外宕机后尤为明显,便可以快速地恢复可能被破坏的文件,并且强大的 日志功能只用花费极低的计算和存储性能。而且它最大可支持的存储容量为 18EB,这几乎知足了全部需求。
如何查看,/etc/fstab是用来存放文件系统的静态信息文件,命令以下:
1
|
cat
/
etc
/
fstab
|
命令 空格 参数 空格 【文件或路径】须要处理的内容 rm -rf /tmp/* ls -la /home
1) 通常状况下,【参数】是可选的,一些状况下【文件或路径】也是可选的;
2) 参数:同一个命令,跟上不一样的参数执行不一样的功能;
> 重定向,覆盖写入,清空原文件全部内容,而后把文字写入文件 >> 追加剧定向,追加写入,把文字追加到文件的结尾
cat命令用于查看纯文本文件
more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容。
1
|
more
/
etc
/
passwd 查看passwd文件内容
|
空格 翻页 b 上一页 回车键 向下读取内容
tab键 用于自动补全命令/文件名/目录名 ctrl + l或clear或cls 清理终端显示 ctrl + c 终止当前操做
1
2
|
cp xxx.py
/
tmp 复制xxx.py到
/
tmp目录下
cp xxx.py
/
tmp
/
my.py 复制xxx.py到
/
tmp
/
目录下而且更名为my.py
|
Linux下面不少命令,通常没有办法直接处理文件夹,所以须要加上参数 cp -r 递归,复制目录以及目录的子孙后代 注意:cp是个好命令,操做文件前,先备份,以下: cp main.py main.py.bak
1
2
|
mv a.log b.log 将文件a.log更名为b.log
mv
/
home
/
test
/
tmp 将
/
home下的test文件移动到
/
tmp目录下
|
find 从哪里找(目录) 查找文件的类型 查找的文件名 参数: -name 按照文件名查找文件 -type 查找以下类型的文件,文件类型有如下几种: b 块设备文件 d 目录 c 字符设备文件 p 管道文件 l 符号连接文件 f 普通文件 s socket文件
示例以下:
1
2
3
|
find
/
tmp
/
-
type
f
-
name
"*.txt"
找出
/
tmp全部以 .txt 结尾的文件
find
/
etc
-
name
'host*'
找到
/
etc下全部名字以host开头的文件
find
/
opt
-
name
'settings.py'
找到
/
opt上一个名为settings.py
|
global search regular expression(RE) and print out the line,即全面搜索正则表达式并把行打印出来,grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,以下:
语法:grep [参数] [--color=auto] [字符串] filename 参数详解: -i : 忽略大小写 -n : 输出行号 -v : 反向选择 --color = auto : 给关键词部分添加颜色
示例:
1
2
|
grep
"what"
/
tmp
/
test.txt 从
/
tmp下的test.txt文件中查找what字符串所在行
grep
-
v
"what"
/
tmp
/
test.txt
-
v反向选择,即查找除上条命令结果以外的其余全部行
|
Linux提供的管道符“|”将两条命令隔开,管道符左边命令的输出会做为管道符右边命令的输入。
常见用法以下:
1
2
3
4
5
|
ps
-
ef|grep python 检查python程序是否启动
ls
/
tmp|grep .txt 找到
/
tmp目录下全部txt文件
netstat
-
tunlp |grep nginx 检查nginx的端口是否存活
cat
/
etc
/
passwd |grep
'mysql'
-
n 找到
/
etc
/
passwd的全部与mysql有关行,行号
cat
/
etc
/
passwd |grep
'^root'
-
-
color
=
auto
-
n 找出
/
etc
/
passwd下root用户所在行,以及行号,显示颜色
|
head显示文件前几行,默认前10行,tail显示文件后几行,默认后10行,示例以下:
1
2
3
4
|
head
-
2
/
tmp
/
test.txt 查看前两行
tail
-
2
/
tmp
/
test.txt 查看后两行
tail
-
f xx.log 持续刷新显示,实时监控,可用于监控日志文件
head
-
30
/
tmp
/
test.txt |tail
-
21
显示文件
10
-
30
行
|
1
2
|
alias rm
=
'echo do not use rm'
设置rm别名,当使用rm命令时,让系统显示 do
not
use rm
unalias rm 取消别名
|
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时须要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就能够看到某个系统命令是否存在,以及执行的究竟是哪个位置的命令。
1
2
|
which pwd pwd命令在哪儿,结果为
/
usr
/
bin
/
pwd
which python python命令在哪儿,结果为
/
usr
/
bin
/
python
|
scp是 secure copy的缩写, scp是linux系统下基于ssh登录进行安全的远程文件拷贝命令。用于Linux之间复制文件和目录。
语法:scp [可选参数] 本地源文件 远程文件标记 参数: -r:递归复制整个目录 -v:详细方式输出 -q:不显示传输进度条 -C:容许压缩
示例:
传输本地文件到远程地址
1
2
|
scp
/
tmp
/
test.py root@
192.168
.
1.155
:
/
home
/
scp
/
tmp
/
test.py root@
192.168
.
1.155
:
/
home
/
test_python.py
|
复制远程文件到本地
1
2
|
scp root@
192.168
.
1.155
:
/
home
/
oldboy.txt
/
tmp
/
oldboy.txt
scp
-
r root@
192.168
.
1.155
:
/
home
/
oldboy
/
home
/
|
du会显示指定的目录或文件所占用的磁盘空间。
语法:du [参数] [文件或目录] 参数: -s:显示总计 -h:以k,M,G为单位显示,可读性强
示例:
1
2
|
du 不加参数,表明显示当前目录全部文件大小
du
-
sh
/
home 显示
/
home的总大小且以k,M,G为单位显示
|
top 命令用于动态地监视进程活动与系统负载等信息,输入命令显示以下:
上图中信息解释以下:
第一行:(uptime) 系统时间 主机运行时间 用户链接数(who) 系统1,5,15分钟的平均负载 第二行:进程信息 进程总数 正在运行的进程数 睡眠的进程数 中止的进程数 僵尸进程数 第三行:cpu信息 0.0 us:用户空间所占CPU百分比 0.3 sy:内核空间占用CPU百分比 0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比 99.7 id:空闲CPU百分比 0.0 wa:等待输入输出的CPU时间百分比 0.0 hi:硬件CPU中断占用百分比 0.0 si:软中断占用百分比 0.0 st:虚拟机占用百分比 第四行:内存信息(与第五行的信息相似与free命令) total:物理内存总量 used:已使用的内存总量 free:空闲的内存总量(free+used=total) buffers:用做内核缓存的内存量 第五行:swap信息 total:交换分区总量 used:已使用的交换分区总量 free:空闲交换区总量 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,可是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可没必要再对交换区写入。
chattr命令能够给文件加锁,则文件只能写入数据,没法删除文件,用法以下图:
linux的date命令能够显示当前时间或者设置系统时间。
date查看当前时间,以下:
若是时间不正确,可以使用以下命令进行时间同步:
1
|
ntpdate
-
u ntp.aliyun.comm
|
wget命令用于在终端下载网络文件。
语法:wget [参数] 下载地址
示例:
1
|
wget http:
/
/
pythonav.cn
/
av
/
girl.jpg
|
递归下载路飞全部资源,保存到www.luffycity.com文件中
1
|
wget
-
r
-
p http:
/
/
www.luffycity.com
|
补充:
linux如何与windows传输文件?
经过一个lrzsz(上传下载)的工具包
安装软件的方式是执行以下命令:
1
|
yum install lrzsz
-
y
|
1
2
|
man 命令 查看命令帮助手册
ps
-
ef 查看进程
|
全部的 Unix Like 系统都会内建 vi 文本编辑器,至关于windows的记事本,其余的文本编辑器则不必定会存在。可是目前咱们使用比较多的是 vim 编辑器,至关于notepad++。
vim 具备程序编辑的能力,能够主动的以字体颜色辨别语法的正确性,方便程序设计。