Linux(2)- linux目录结构、shell基本命令
一、Linux之文档与目录结构
1、Linux文件系统结构
Linux目录结构的组织形式和Windows有很大的不同。Linux没有“盘(如C盘、D盘、E盘)”的概念,而是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。
Linux与Windows系统目录有所不同,windows使用反斜杠"\"来作为目录分隔符,而Linux使用正斜杠"/"作为目录分隔符,如下:
Windows目录:

Linux目录:

登录linux系统,在终端输入如下命令:
[root@localhost ~]# ls /
查看结果如下:

在Linux系统中,所有的文件与目录都是由根目录开始,是目录与文件的源头,然后一个个的分支下来,如同树枝状,因此称为这种目录配置为:目录树。
2、目录树架构示意图

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/dev:dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/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的预设放置也是在这里。
3、目录的相关介绍
所有目录下都存在两个目录,【.】和【..】,分别代表当前目录和上级目录!如何证明它的存在?如下:

参数: -l 以列表形式显示文件
-a 显示所有隐藏文件(linux中以 . 开头的文件或者文件夹都是隐藏的)
4、cd命令切换目录
我们知道切换工作目录的指令是cd(change directory的缩写),那么首先要知道都有哪些目录,如下:
. 当前工作目录
.. 上一级工作目录
- 前一个工作目录
~ 当前【用户】所在的家目录

5、mkdir,建立新目录
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依次建立目录,是不是很方便。
也可以一次性创建多个文件,如下:

6、rmdir,删除空目录
rmdir命令用来删除目录,是remove directory的缩写,但是注意rmdir只能删除空目录。

rm -r 递归删除文件夹,会询问是否删除

rm -rf 强制(-f)递归(-r)删除文件夹和文件且没有提示,炸弹命令,谨慎使用!

VMware虚拟机有快照功能,可以拍下当前系统的状态,以便日后回复。
7、Linux的环境变量PATH
我们配置过windows下的环境变量(PATH),知道系统会按照PATH的设定,去每个PATH定义的目录下搜索可执行文件。
那么如何查看Linux下的PATH环境变量呢?

PATH一定是大写的,这个变量是由一堆目录组成,分隔符是冒号":",而不同于windows的分号";"
echo 相当于python中的print。。
8、绝对路径与相对路径
路径是Linux中非常重要的概念,它用来定位如何找到某个文件。
Linux下特别注意文件名/路径的写法,可以将所谓的路径(path)定义为绝对路径(absolute)和相对路径(relative)。这两种文件名/路径的写法依据是这样的:
- 绝对路径:由根目录(/)为开始写起的文件名或目录名称,如/tmp/oldboy/test.py;
- 相对路径:相对于当前路径的文件名写法,如./tmp/oldboy/exam.py或../../tmp/oldboy/exam.py,简单来说只要开头不是/,就是属于相对路径;
9、Linux的文件系统
用户在硬件存储设备中执行的文件建立,写入,读取,修改,转存与控制等操作都是依赖文件系统完成的。文件系统的作用是合理规划硬盘,保证用户正常使用。
Linux系统支持数十种文件系统,常见文件系统如下:
- Ext3 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,并能 自动修复数据的不一致与错误。
- Ext4 是Ext3的改进版本,作为 RHEL 6 系统中的默认文件管理系统,它支持的存储容 量高达 1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4 文件系统能够批量分配 block 块,从而极大地提高了读写效率。
- XFS 是一种高性能的日志文件系统,而且是 RHEL 7 中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的 日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为 18EB,这几乎满足了所有需求。
如何查看,/etc/fstab是用来存放文件系统的静态信息文件,命令如下:
cat /etc/fstab
二、shell基本命令
1、Linux命令行的组成结构

2、Linux系统命令操作语法格式
命令 空格 参数 空格 【文件或路径】需要处理的内容
rm -rf /tmp/*
ls -la /home
1) 一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的;
2) 参数:同一个命令,跟上不同的参数执行不同的功能;
3、特殊符号
> 重定向,覆盖写入,清空原文件所有内容,然后把文字写入文件
>> 追加重定向,追加写入,把文字追加到文件的结尾

4、查看文件内容
cat命令用于查看纯文本文件

5、more命令
more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容。
more /etc/passwd 查看passwd文件内容
空格 翻页
b 上一页
回车键 向下读取内容
6、Linux快捷键
tab键 用于自动补全命令/文件名/目录名
ctrl + l或clear或cls 清理终端显示
ctrl + c 终止当前操作
7、复制(拷贝)命令
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
8、mv命令
mv a.log b.log 将文件a.log改名为b.log
mv /home/test /tmp 将/home下的test文件移动到/tmp目录下
9、查找命令
find 从哪里找(目录) 查找文件的类型 查找的文件名
参数:
-name 按照文件名查找文件
-type 查找如下类型的文件,文件类型有以下几种:
b 块设备文件
d 目录
c 字符设备文件
p 管道文件
l 符号链接文件
f 普通文件
s socket文件
示例如下:
find /tmp/ -type f -name "*.txt" 找出/tmp所有以 .txt 结尾的文件
find /etc -name 'host*' 找到/etc下所有名字以host开头的文件
find /opt -name 'settings.py' 找到/opt上一个名为settings.py
10、grep命令
global search regular expression(RE) and print out the line,即全面搜索正则表达式并把行打印出来,grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,如下:
语法:grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择
--color = auto : 给关键词部分添加颜色
示例:
grep "what" /tmp/test.txt 从/tmp下的test.txt文件中查找what字符串所在行
grep -v "what" /tmp/test.txt -v反向选择,即查找除上条命令结果之外的其他所有行
11、管道符
Linux提供的管道符“|”将两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法如下:
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用户所在行,以及行号,显示颜色
12、head、tail命令
head显示文件前几行,默认前10行,tail显示文件后几行,默认后10行,示例如下:
head -2 /tmp/test.txt 查看前两行
tail -2 /tmp/test.txt 查看后两行
tail -f xx.log 持续刷新显示,实时监控,可用于监控日志文件
head -30 /tmp/test.txt |tail -21 显示文件10-30行
13、别名alias命令

14、为rm设置别名
alias rm='echo do not use rm' 设置rm别名,当使用rm命令时,让系统显示 do not use rm
unalias rm 取消别名
15、which命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which pwd pwd命令在哪儿,结果为/usr/bin/pwd
which python python命令在哪儿,结果为/usr/bin/python
16、scp命令
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。用于Linux之间复制文件和目录。
语法:scp [可选参数] 本地源文件 远程文件标记
参数:
-r:递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
示例:
传输本地文件到远程地址
scp /tmp/test.py root@192.168.1.155:/home/
scp /tmp/test.py root@192.168.1.155:/home/test_python.py
复制远程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/
17、du命令
du会显示指定的目录或文件所占用的磁盘空间。
语法:du [参数] [文件或目录]
参数:
-s:显示总计
-h:以k,M,G为单位显示,可读性强
示例:
du 不加参数,代表显示当前目录所有文件大小
du -sh /home 显示/home的总大小且以k,M,G为单位显示
18、top命令
top 命令用于动态地监视进程活动与系统负载等信息,输入命令显示如下:

上图中信息解释如下:
第一行:(uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,,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:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
19、chattr命令、lsattr命令
chattr命令可以给文件加锁,则文件只能写入数据,无法删除文件,用法如下图:

20、linux时间同步
linux的date命令可以显示当前时间或者设置系统时间。
date查看当前时间,如下:

如果时间不正确,可使用如下命令进行时间同步:
ntpdate -u ntp.aliyun.comm
21、wget命令
wget命令用于在终端下载网络文件。
语法:wget [参数] 下载地址
示例:
wget http://pythonav.cn/av/girl.jpg
递归下载路飞所有资源,保存到www.luffycity.com文件中
wget -r -p http://www.luffycity.com
补充:
linux如何与windows传输文件?
通过一个lrzsz(上传下载)的工具包
安装软件的方式是执行如下命令:
yum install lrzsz -y
22、其他命令
man 命令 查看命令帮助手册
ps -ef 查看进程
23、vim
所有的 Unix Like 系统都会内建 vi 文本编辑器,相当于windows的记事本,其他的文本编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器,相当于notepad++。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
Linux(2)- linux目录结构、shell基本命令的更多相关文章
- (大数据工程师学习路径)第一步 Linux 基础入门----目录结构及文件基本操作
Linux 目录结构及文件基本操作 介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录 ...
- Linux文件系统的目录结构
Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...
- Linux文件系统的目录结构详解
Linux文件系统的目录结构详解 一.前 言 文章对Linux下所有目录一一说明,对比较重要的目录加以重点解说,以帮助初学者熟练掌握Linux的目录结构. 二.目 录 1.什么是文件系统 2.文件 ...
- Linux 文件系统的目录结构
http://www.jb51.net/LINUXjishu/151820.htmlLinux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些 ...
- Linux学习之二-Linux系统的目录结构
Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...
- 深入理解linux系统的目录结构(总结的非常详细)
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- linux系统的目录结构
前言 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要 ...
- linux分区,文件系统,目录结构概述
1.Linux中如何表示硬盘,分区 Linux内核读取光驱,硬盘等资源时均通过“设备文件”的形式进行,因此在linux系统中,将硬 盘和分区表示为不同的文件.具体表述形式如下: 硬盘:对于IDE接口的 ...
- Linux 01 Liunx目录结构及文件基本操作
Linux目录结构及文件基本操作 1.Linux的文件组织目录结构(遵循FHS标准) FHS(Filesystem Hierarchy Standard)标准:多数Linux版本采用这种文件组织形式, ...
- Linux系统的目录结构及常见目录总结
Linux系统的目录结构(必须掌握的内容) 所有目录只有一个顶点/(根),所有目录的起点. 只有一棵树 Linux的目录结构也是有规律的,而且也是按照类别组织的. 应用程序 /usr/bin 数据文件 ...
随机推荐
- Flask系列:数据库
这个系列是学习<Flask Web开发:基于Python的Web应用开发实战>的部分笔记 对于用户提交的信息,包括 账号.文章 等,需要能够将这些数据保存下来 持久存储的三种方法: 文件: ...
- JVM Specification 9th Edition (3) Chapter 2. The Structure of the Java Virtual Machine
Chapter 2. The Structure of the Java Virtual Machine 内容列表 2.1. The class File Format (class文件的格式) 2. ...
- 【活动】上线了|带你直击react年度盛会
明后两天,ReactEurope 2016大会在巴黎举行,本次大会演讲主题有: React Native(动画及运行性能优化) Flux-like 数据架构(GraphQL 最佳实践与展望.Redux ...
- web.py使用要点
这几天有一个构建restful services的需求,我采用了web.py,之前并没有使用过,但在使用中确实给我带来了很多惊喜.当然,最大的惊喜就是简单,方便.之前开发restful服务的时候,采用 ...
- chpasswd 更简单的更改密码的方式
[root@m01 .ssh]# useradd test[root@m01 .ssh]# echo "test:123"|chpasswd Linux命令:chpasswd 批量 ...
- (推荐JsonConvert )序列化和反序列化Json
在Json文本和.Net对象之间转换最快的方法是试用JsonSerializer. JsonSerializer通过将.Net对象属性名称映射到Json属性名称,并为其复制值,将.Net对象转换为其J ...
- 在Windows端安装kafka 提示错误: 找不到或无法加载主类 的解决方案
在配置好kafka的server.properties文件后,cmd进入命令窗口输入命令:.\bin\windows\kafka-server-start.bat config\server.prop ...
- pycharm 授权/激活
License server: http://elporfirio.com:1017/ http://idea.imsxm.com/
- 编写高质量代码--改善python程序的建议(三)
原文发表在我的博客主页,转载请注明出处! 建议十三:警惕eval()的安全漏洞 相信经常处理文本数据的同学对eval()一定是欲罢不能,他的使用非常简单: eval("1+1==2" ...
- cascade(级联)和inverse关系详解
序言 写这篇文章之前,自己也查了很多的资料来搞清楚这两者的关系和各自所做的事情,但是百度一搜,大多数博文感觉说的云里雾里,可能博主自己清楚是怎么一回事,但是给一个不懂的人或者一知半解的人看的话,别人也 ...