技术交流QQ群:1027579432,欢迎你的加入!

1.在文本环境下,shell作为命令解释器,建立了用户和操作系统之间的接口。当用户键入一个命令时,shell将对该命令进行解释,并调用相应的程序。

2.Linux下有多个shell,最常用的3个shell: bash tcsh zsh

3.shell 脚本:shell除了具有解释键盘命令并将其发送到操作系统的功能外,shell命令可以安排在一个文件中供以后执行,这些文件在linux系统称为shell脚本。

4.进程间的通信

  • 4.1 管道和过滤器
    • 管道:将一个程序的输出作为另一个程序的输入。
    • 过滤器:作为管道的一种特殊的形式,对输入数据流进行处理得到输出数据流。过滤器可以对程序的输出进行修改,过滤器的输出可以作为另一个程序的输入。

5.主分区、扩展分区、逻辑分区

  • 5.1一个磁盘至多可以有4个主分区,每个主分区还可以划分多个逻辑分区,把被划分的主分区称为扩展分区。
  • 5.2典型的分区是将磁盘划分为3个主分区和1个扩展分区,3个主分区的大小即你所希望的最终分区的大小,1个扩展分区占用剩余的磁盘空间。

6.磁盘分区

  • 向导分区:直接将硬盘划分为两个分区:交换分区,此分区的 大小是512MB或2GB等和/(根)分区,此分区占用硬盘的剩余空间。
  • 分区建议:必须有一个/根分区,建议再设置一个交换分区。可以创建额外的分区/挂载点组合,对任何没有创建专门的分区/挂载点的标准目录,会自动成为根目录/的子目录,并位于根/分区下。
  • swap:当linux没有足够的内存保存它正在处理的所有信息时,linux就会将程序和数据临时存放在交换分区上。
  • /boot:此分区存放内核和系统启动时所需的其他数据。建议将/boot分区的大小设置为100MB
  • /var:存放大量的系统日志、软件包信息、记账数据,最好将其作为一个独立的分区。
  • /home: 将用户的主目录存放在单独的磁盘或分区中

7.基本实用工具

  • ls: 列出文件名 ls 文件名
  • cat:显示文本文件内容 cat 文件名
  • rm:删除文件(确保要删除的文件是自己想要删除的文件)
    • (推荐此写法)比较安全的文件删除方式:rm -i 文件名
  • less/more: 分屏显示文本文件 less/more 文件名(当要浏览的文件内容超过一屏时)
  • man: 显示系统手册 man 5 passwd 查看第5页
  • info: 显示实用工具的相关信息 如:info coreutils
  • 选项 --help: 显示帮助信息
  • hostname: 显示系统名

8.文件操作

  • cp:复制文件 cp 源文件 目标文件 当目标文件已经存在时,cp指令可能会覆盖文件,推荐写法: cp -i 源文件 目标文件
  • mv:重命名文件名 mv 原有的文件名 新的文件名
  • lpr:打印文件 lpr 文件名
  • grep:查找字符串 grep '要查找的字符串' 目标文件名
  • head: 显示文件的头部 head -1 目标文件名
  • tail: 显示文件的尾部 tail -3 目标文件名
  • sort: 按顺序显示文件内容 sort 文件名
  • uniq:删除文件中重复的行, 对那些连续的重复行只显示一行,但原内容没有变化
  • diff: 比较两个文件,显示两个文件的不同之处 diff -u 文件1 文件2 file: 在不通过打开文件情况下,测试文件内容

9.管道|:实现进程间的通信

  • 管道将一个进程的标准输出重定向为另一个进程的标准输入。进程显示的内容一般都要发送到标准输出,如果没有重定向,此输出就会显示在屏幕上。 ls | wc -w 显示某个文件目录下的文件个数

10.4个有用的实用工具

  • echo: 显示文本,可以复制其后跟的任何内容,并显示在屏幕上。 echo hello world echo this is a sentence echo star: * 注:显示目录下的所有文件列表

11. date: 显示日期和时间

  • date date +"%A %B %d"

12.unix2dos:将linux文件转为windows格式

  • unix2dos 文件名

13.压缩和归档文件

  • 1.bzip2:压缩文件 bzip2 -v 文件名
  • 2.bunzip2解压文件 bunzip2 文件名
    1. bzcat xxxxx.bz2 专门显示以.bz2为扩展名的压缩文件

  • 4.tar打包归档文件 tar可以将多个文件或多个目录归档成一个tar文件
    • 将src.txt src_rename.txt文件进行归档,成为一个文件all.tar 用法:tar -cvf all.tar src.txt src_rename.txt
    • 查看归档文件信息: ls -l all.tar
    • 以表格的形式显示归档文件中的2个文件: tar -tvf all.tar
    • 解压归档文件:tar -xvf all.tar

14.定位命令

  • 1.定位实用工具which whereis----------只能报告在磁盘上搜索到的命令,不能搜索shell中的内置命令信息。 例如:which tar(显示实用工具的完整路径来定位该实用工具) 例如:whereis tar(搜索与实用工具相关的文件)
  • 2.判断一个命令是否是内置命令 type 命令名
  • 3.apropos:搜索关键字 例如: apropos who 等价于 man -k who whatis who: 仅搜索与关键字完全匹配的信息

15.获取用户信息和系统信息

  • who:列出系统上的用户 who who -u
  • finger: 列出系统上的用户 finger finger cdl
  • w: 列出系统上的用户 w

16.linux文件系统

  • 1.以句点.开头的文件名叫做隐藏文件名: ls -a可以显示所有文件
  • 2.当前目录/工作目录:在某个目录下进行操作的目录,pwd可以显示当前的工作目录路径,工作目录随时变化
  • 3.主目录: pwd 可以显示/home/cdl,主目录不会变化。
  • 4.路径名
    • 4.1 绝对路径名:均以/开头,/是根目录的文件名,从根目录开始,经过所有中间目录到达一个文件,通过这个路径,就能建立这个文件的绝对路径。如/home/cdl/linux_tutorials/src
    • 4.2 路径名中的代字符~ shell将代字符后跟/,放置在路径名的开始,表示主目录的路径名。代字符可以快速引用以任何用户的主目录开头的路径。
    • 4.3 相对路径名:从工作目录到文件的路径名,该路径名是相对于工作目录的。不以/或者~开始的路径名都是相对路径名。
  • 5.目录命令
    • 5.1 mkdir:创建目录
    • mkdir 文件目录1
    • mkdir -p 文件目录1 文件目录2 备注:在文件目录1下创建文件目录2
    • 5.2 目录项 . 和 ..
      • .代表工作目录的路径名,..代表工作目录的父目录路径名,例如 ls .. cp src.txt ..
  • 6.目录操作
    • 6.1 rmdir:删除空的目录
      • rmdir ~/linux_tutorials/src
      • rm -r 文件名 递归的删除目录下的所有文件(谨慎使用)
    • 6.2 使用路径名
      • touch hi cd ~/linux_tutorials/ cp hi ~/linux_tutorials/src/hi_new 将hi文件复制到src目录下,并重命名为hi_new
    • 6.3 mv/cp:移动和复制文件
      • mv:可以移动文件和重命名文件的名字,例如:mv ~/linux_tutorials/src/hi_new ~/linux_tutorials/
    • 6.4 访问权限
      • 访问文件的用户有3种类型:文件所有者owner、文件所有者所在组的成员用户group、其他用户other
      • ls -l:显示访问权限,如: ls -l src.txt
        • -rwxrw-r-x+ 3 cdl dana 2048 Aug 12 14:19 src.txt(各项解释如下)
        • '-' :文件类型(-代表普通文件,d代表目录文件,l表示链接文件)
        • rwxrw-r-x: 这9个字符为文件的(文件所有者、组成员用户、其他用户)访问权限(r代表可读,w代表可写,x:代表可执行,如果出现-则代表文件所有者在那个位置没有相对应的权限)
        • 3:指向该文件的链接数量
        • cdl: 文件所有者的名字
        • dana: 对文件具有组访问权限的组的名称
        • 2048:文件的大小
        • Aug 12 14:19 :文件创建或最后一次修改时间
        • src.txt: 文件名称
        • chmod: 改变访问权限
        • 给所有的用户都增加读写权限 : chmod a+rw src.txt
        • 给其他用户都删除读写权限 : chmod o-rw src.txt
        • ps: a代表所有用户,u代表文件所有者,g代表组用户,o代表其他用户
          owner = rwx = 4+2+1 = 7
          group = rwx = 4+2+1 = 7
          others= --- = 0+0+0 = 0
        • 改变访问权限 chmod 777 src.txt
        • 对shell脚本文件赋予可执行权限的前提是要有读权限
      • 目录的访问权限
        • 查看src目录的访问权限: ls -ld ~/llinux_tutorials/src
  • 6.5 链接
    • 链接表示执行文件的指针,当使用vim、touch、cp或其他方式创建文件时,对应目录下便会产生一个指向该文件的指针。此指针将文件名和磁盘的某个位置建立关联,文件指针指向存放此文件的磁盘位置。
    • linux中的硬链接与软链接
      • 在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。

      • 硬链接: 硬链接是指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号号(Inode Index)或者Inode,它是文件或者目录在一个文件系统中的唯一标识,文件的实际数据放置在数据区域(data block),它存储着文件重要参数信息,也就是元数据 (metadata),比如创建时间、修改时间、文件大小、属主、归属的用户组、读写权限、数据所在block号等 。

      • 在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种链接就称为硬链接。硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接》。不过硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。之所以文件建立了硬链接就会防止数据误删,是因为文件系统的原理是,只要文件的索引节点还有一个以上的链接(仅删除了该文件的指向),只删除其中一个链接并不影响索引节点本身和其他的链接(数据的实体并未删除),只有当最后一个链接被删除后,此时如果有新数据要存储到磁盘上,被删除的文件的数据块及目录的链接才会被释放,空间被新数据暂用覆盖。

      • 软链接: 软链接(也叫符号链接),类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,只是数据块内容有点特殊,文件用户数据块中存放的内容是另一文件的路径名的指向,通过这个方式可以快速定位到软连接所指向的源文件实体。软链接可对文件或目录创建。

      • 软链接作用:便于文件的管理,比如把一个复杂路径下的文件链接到一个简单路径下方便用户访问。节省空间解决空间不足问题,某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。

    • 软连接和硬链接的特点:
      • 软链接:
        • 1.软链接是存放另一个文件的路径的形式存在。
        • 2.软链接可以 跨文件系统 ,硬链接不可以。
        • 3.软链接可以对一个不存在的文件名进行链接,硬链接必须要有源文件。
        • 4.软链接可以对目录进行链接。
      • 硬链接:
          1. 硬链接,以文件副本的形式存在。但不占用实际空间。
          1. 不允许给目录创建硬链接。
          1. 硬链接只有在同一个文件系统中才能创建。
          1. 删除其中一个硬链接文件并不影响其他有相同 inode 号的文件。
    • 创建硬链接ln:
      cd linux_tutorials/src
      touch fileA
      ln fileA fileA_hard_link 在默认不带参数情况下,ln命令创建的是硬链接。 - ls -l
    • 创建软链接:
      ln -s fileA fileA_soft_link 创建软链接用s参数
      ls -l
      硬链接有着相同 inode 号仅文件名不同的文件,用ls -li命令查看
      8835 -rw-rw-r-- 2 cdl cdl 0 10月 31 16:41 fileA
      8835 -rw-rw-r-- 2 cdl cdl 0 10月 31 16:41 fileA_hard_link
      8836 lrwxrwxrwx 1 cdl cdl 5 10月 31 16:47 fileA_soft_link -> fileA
      上面源文件和硬链接文件inode号相同 (第一列就是inode号),指向同一个索引节点。
    • 软链接是一个链接文件,文件模式那块前面有个l字母,表示是个链接文件。
    • 硬链接不能指向目录,但是软链接可以
      cd ~/linux_tutorials/
      ln src fileA 不允许将硬链接指向目录src
      ln -s src fileA 允许将软链接指向目录src
    • 删除源文件后,两种情况对比:
      echo 'this is a file' > fileA 向文件中写入数据
      cat fileA 查看文件内容
      cat fileA_soft_link fileA_hard_link 查看软链接和硬链接文件内容一致
      rm -f fileA 删除源文件
      ls -li
      8831 -rw-rw-r-- 1 cdl cdl 22 10月 29 15:49 src_rename.txt
      8830 -rw-rw-r-- 1 cdl cdl 10240 10月 30 14:54 src.txt
      8829 -rw-rw-r-- 1 cdl cdl 20480 10月 30 14:56 all.tar
      8833 -rwxrwxr-x 1 cdl cdl 0 10月 30 16:19 hi
      8836 lrwxrwxrwx 1 cdl cdl 5 10月 31 16:47 fileA_soft_link -> fileA
      8835 -rw-rw-r-- 1 cdl cdl 15 10月 31 16:55 fileA_hard_link
    • 硬链接文件存在 内容和源文件内容一样,虽然删除源文件,但仍然有硬链接指向源文件inode节点,所以不会被释放删除,这里只是删除fileA到inode节点的链接。
    • cat fileA_soft_link 软链接文件已经不存在了,目录还会显示这个文件,就是软链接文件已经失效。
  • 删除软链接
    rm -f fileA_soft_link 直接删除这个软链接文件即可