一、Linux之文档与目录结构

1、Linux之文档与目录结构

 Linux目录结构的组织形式和Windows有很大的不同。Linux没有“盘(如C盘、D盘、E盘)”的概念,而是建立一个根"/"文件系统,所有的目录也都是由根目录衍生出来。

  Linux与Windows系统目录有所不同,windows使用反斜杠"\"来作为目录分隔符,而Linux使用正斜杠"/"作为目录分隔符,如下:

  Windows目录:

  Linux目录:

  

  登录linux系统,在终端输入如下命令:

1
[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只能删除空目录。

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

  

1
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是用来存放文件系统的静态信息文件,命令如下:

1
cat  /etc/fstab

二、shell基本命令

1、Linux命令行的组成结构

2、Linux系统命令操作语法格式

  命令     空格     参数       空格      【文件或路径】需要处理的内容
  rm -rf /tmp/*
  ls -la /home

  1) 一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的;

  2) 参数:同一个命令,跟上不同的参数执行不同的功能;

3、特殊符号

  >        重定向,覆盖写入,清空原文件所有内容,然后把文字写入文件
  >> 追加重定向,追加写入,把文字追加到文件的结尾

4、查看文件内容

  cat命令用于查看纯文本文件

5、more命令

  more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容。

1
more /etc/passwd         查看passwd文件内容
空格           翻页
b 上一页
回车键 向下读取内容

6、Linux快捷键

tab键                  用于自动补全命令/文件名/目录名
ctrl + l或clear或cls  清理终端显示
ctrl + c 终止当前操作

7、复制(拷贝)命令

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

8、mv命令

1
2
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文件

  示例如下:

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

10、grep命令

  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 -"what" /tmp/test.txt       -v反向选择,即查找除上条命令结果之外的其他所有行

11、管道符

  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用户所在行,以及行号,显示颜色

12、head、tail命令

  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

13、别名alias命令

14、为rm设置别名

1
2
alias rm='echo do not use rm'   设置rm别名,当使用rm命令时,让系统显示 do not use rm
unalias rm      取消别名

15、which命令

  which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。

  which指令会在环境变量$PATH设置的目录里查找符合条件的文件。

  也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

1
2
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:允许压缩

  示例:

  传输本地文件到远程地址

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/

17、du命令

  du会显示指定的目录或文件所占用的磁盘空间。

语法:du [参数] [文件或目录]
参数:
  -s:显示总计
  -h:以k,M,G为单位显示,可读性强

  示例:

1
2
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查看当前时间,如下:

  如果时间不正确,可使用如下命令进行时间同步:

1
ntpdate -u ntp.aliyun.comm

21、wget命令

  wget命令用于在终端下载网络文件。

语法:wget  [参数]  下载地址

  示例:

1
wget  http://pythonav.cn/av/girl.jpg

  递归下载路飞所有资源,保存到www.luffycity.com文件中

1
wget --p http://www.luffycity.com

  补充:

  linux如何与windows传输文件?

  通过一个lrzsz(上传下载)的工具包

  安装软件的方式是执行如下命令:

1
yum install lrzsz -y

22、其他命令

1
2
man 命令                   查看命令帮助手册
ps -ef                       查看进程

23、vim

  所有的 Unix Like 系统都会内建 vi 文本编辑器,相当于windows的记事本,其他的文本编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器,相当于notepad++。

  vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

最新文章

  1. Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime
  2. Mybatis与Hibernate的区别
  3. Presenting view controllers on detached view controllers is discouraged <CallViewController: 0x14676e240>.
  4. TextView 字数限制
  5. Arcgis10.2 破解注意问题
  6. flasCC技术点记录
  7. java生成随机字符串uuid
  8. test命令的用法
  9. jQuery的deferred对象详解(二)
  10. SGU 221.Big Bishops(DP)
  11. cocos2d-x 3.6版连连看
  12. HDU 1757 A Simple Math Problem(矩阵高速幂)
  13. redhat6.3+oracle11GR2 单库 安装规划
  14. Python识别网站验证码
  15. windows 安装Beautiful Soup(转)
  16. Android Studio 真机调试 连接手机
  17. 探索 Python 学习
  18. 学习了clipboard复制剪切插件的使用
  19. sqlldr的用法 (这个最完整)
  20. 鼠标滑过GridView的数据行时修改行的背景颜色

热门文章

  1. NOIP2018爆炸记
  2. XP系统下显示文件或文件的安全选项卡
  3. [转]PNG8和PNG24的区别
  4. BZOJ4364:[IOI2014]Wall
  5. Python:更改字典的key
  6. web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)
  7. rails中一个窗体多个模型——fields_for
  8. Java enum(枚举)使用详解之二
  9. Java探索之旅(15)——包装类和字符类
  10. hadoop主节点(NameNode)备份策略以、恢复方法、操作步骤