一、Linux主流分支


  1. debian

    ubuntu、mint

  2. slackware

    SUSE Linux Enterprise Server (SLES)、OpenSuse桌面

  3. redhat

    RHEL(RedHatEnterprise Linux)、CentOS、中标麒麟、Fedora 等。

  4. ArchLinux:轻量简洁

  5. Gentoo:极致性能,不提供传统意义的安装程序

  6. LFS: Linux From scratch 自制Linux(参考http://www.linuxfromscratch.org/lfs/

                                                               备注:Linux分支参考网站:http://futurist.se/gldt/



                           内核版本号注释

Linux学习之路-Linux入门【2】---20171113_Linux


二、系统安装及注意事项

本次安装Linux CentOS 7.4及6.9版本,使用VMware Workstation软件安装,VMware Workstation软件使用过程注意虚拟设备的配置、以及路径及版本的选择,本次选择CentOS64位版本。

简易图如下:


Linux学习之路-Linux入门【2】---20171113_学习之路_02Linux学习之路-Linux入门【2】---20171113_学习之路_03

Linux学习之路-Linux入门【2】---20171113_Linux_04Linux学习之路-Linux入门【2】---20171113_Linux_05


安装时注意安装模式、安装包的检测、硬盘存储模式、网络配置、UTC时区选项、硬盘分区模式、分区格式及分区挂载位置容量等,提前做好分区规划,以便后续系统目录及文件管理。


目前建议独立分区的目录有 / 、boot、home 及私人设置的目录(例如/app等),特殊操作swap(虚拟内存单独设置,一般设置的大小以设置的硬件内存的1.5-2倍)。目前CentOS7以下版本安装时,命名主机名时,注意把Configure Network里的Connect automatically点取,以便获取网络。


 Linux学习之路-Linux入门【2】---20171113_学习之路_06  Linux学习之路-Linux入门【2】---20171113_学习之路_07

 Linux学习之路-Linux入门【2】---20171113_学习之路_08  Linux学习之路-Linux入门【2】---20171113_Linux_09

 Linux学习之路-Linux入门【2】---20171113_学习之路_10  Linux学习之路-Linux入门【2】---20171113_学习之路_11

 Linux学习之路-Linux入门【2】---20171113_学习之路_12  Linux学习之路-Linux入门【2】---20171113_Linux_13


注:linux 只有一个根 根下面有很多目录

分区:主要分区、扩展分区、逻辑分区

主要分区:最多4个。编号 1-4

扩展分区:最多1个,扩展分区不能直接存储数据。

逻辑分区:划分多个。编号 5 -...


 Linux学习之路-Linux入门【2】---20171113_学习之路_14  Linux学习之路-Linux入门【2】---20171113_Linux_15


                                                     注意事项:

                                                     安装时候按ctrl+alt+F2 随时可以看系统安装状态

                                                              Linux下输入ifconfig 查看ip信息

                                                              cat /proc/partitions 查看分区

                                                              free = cat /proc/meminfo  查看内存信息

                                                              按住shift+pageup 向上翻页


三、Linux文件系统与目录结构


1、文件系统

文件和目录被组织成一个单根倒置树结构,文件系统就是管理文件的系统。

Linux文件系统分层结构:LSB Linux Standard Base(Linux文件系统标准)

FHS:文件系统层次结构标准(Filesystem Hierarchy Standard)(参考网站http://www.pathname.com/fhs/

标准Linux文件系统(如ext4、xfs),文件系统名称大小写敏感,故命令的输入都要区分大小写

CentOS 6 使用的是 ext4 系统,CentOS 7 使用的是 xfs 系统。



Linux学习之路-Linux入门【2】---20171113_学习之路_16

CentOS系统目录结构(图片是cp老师的教材)





shareable(共享)

unshareable(不共享)

static(静态)

/usr

/opt

/etc

/boot

variable(动态)

/var/mail

/var/spool/news

/var/run

/var/lock



     2、CentOS 7 系统安装后目录结构如下:


 /

├── /app

├── bin -> usr/bin

├── boot 

├── dev  [ b 块设备(block device)随机访问,c 字符设备(character device),线性访问 ]

├── etc (慎重修改

├── home

        └── L

├── lib -> usr/lib

├── lib64 -> usr/lib64

├── media

├── mnt

├── opt

       └── rh

├── proc 

├── root

       ├── Desktop

       ├── Documents

       ├── Downloads

       ├── Music

       ├── Pictures

       ├── Public

       ├── Templates

       └── Videos

├── run

├── sbin -> usr/sbin

├── srv 为系统提供的服务的数据)

├── sys

├── tmp

├── usr

       ├── bin (保证系统拥有完整功能而提供的应用程序

       ├── etc

       ├── games

       ├── include

       ├── lib

       ├── lib64

       ├── libexec

       ├── local(第三方应用程序的安装位置bin, sbin, lib, lib64, etc, share)

       ├── sbin

       ├── share(结构化独立的数据,例如doc, man等

       ├── src 

       └── tmp -> ../var/tmp

└── var

       ├── cache 应用程序缓存数据目录

       ├── lib 应用程序状态信息数据

       ├── local 专用于为/usr/local下的应用程序存储可变数据

       ├── lock 锁文件

       ├── log 日志目录及文件

       ├── opt 专用于为/opt下的应用程序存储可变数据

       ├── run 运行中的进程相关数据,通常用于存储进程pid文件

       ├── spool 应用程序数据池

       └── tmp 保存系统两次重启之间产生的临时数据


CentOS 7 上默认不显示 misc 目录,但执行 systemctl start autofs 命令后,就会启动 misc、net两个目录,这两个目录可以自动挂载,但系统重启后,命令就失效,故使用 systemctl enable autofs 命令,设置为开机启动。


注:CentOS6下:/lib和/usr/lib和/usr/local/lib的区别(简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的)


    


    3、部分文件颜色的含义



  1. 蓝色-->目录

  2. 绿色-->可执行文件 

  3. 红色-->打包或压缩文件

  4. 粉色-->socket套接字文件(和网络打交道,通信用的)

  5. ×××-->P 开头的为管道文件

  6. 浅蓝色-->链接文件(软链接)

  7. 灰色-->其他文件


文件首字母代表的含义:

-  普通文件

d  目录文件

b  块设备

c  字符设备

l  符号链接文件

p  管道文件pipe

s  套接字文件socket


附表:

目 录

英文全名

用途

/

/

整个目录结构的起始点,只有一个根

/bin

binaries

供所有用户使用的基本命令;不可以单独分区,OS启动即会用到的程序

/boot

boot

包含引导Linux的重要文件,如内核和grub等文件

/dev

device

所有设备都在该目录下

/etc

edit config

系统的所有配置文件都放在它下面(慎重修改)

/home

home

存放各用户的家目录($L)及其文件和配置

        /lib

libraries

启动时程序依赖的基本共享库文件以及内核模块文件

       /lib64       libraries 64     专用于x86_64系统上的辅助共享库文件存放位置

/media

media

用于加载各种媒体,如:光盘、软盘等

/mnt

mount

用于挂载各种文件系统

/opt

optionally

存放第三方软件安装位置和软件包

/proc

process

包含进程等信息,是内存的映射,是虚拟目录

/root

root

该目录是root管理员用户的家目录

/sbin

system-only binaries

管理类(管理员可用)的基本命令;不能关联至独立分区,OS启动即会用到的程序

        /sys

system

存放硬件信息及硬件状态,是虚拟目录

/tmp

temporary files

用于存放临时文件

/usr

user(unix system resrouces

用于存放普通用户的应用程序、库文件和文档等

/var

variable files

用于存放那些在时间、大小、内容上会经常变化的文件

注:二进制程序位置:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin,/usr/local/sbin (实际就是¥PATH变量的目录)

库文件位置:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib,/usr/local/lib64(谨慎删除)

配置文件位置:/etc, /etc/DIRECTORY, /usr/local/etc(谨慎删除)

帮助文件位置:/usr/share/man, /usr/share/doc,/usr/local/share/man, /usr/local/share/doc




4、Linux用户及终端窗口

系统安装完成后,重启登录系统,完成相关认证,建立新的用户(普通)帐号及密码。

默认的管理员及普通用户的符号:[  # 管理员       $ 普通用户  ]

默认root帐号为管理员,拥有完整的系统控制权,故谨慎使用

普通用户权限有限,误操作对系统伤害较小(但 rm 命令慎用,rm -rf /*


把rm定义为mv的别名,可以删除文件及目录,但不可以加 -r 选项

       [root@Centos7~]#alias rm=`mv -t /app/recycle`

    

  1. 虚拟终端(/dev/tty# #为[1-6]),tty可有n个,Ctrl+Alt+F[1-6]切换;

    #tty 命令:查询当前所在终端(tty:teletypewriters)。

  2. 图形终端(/dev/tty7 )startx, xwindows;

    CentOS 6: Ctrl + Alt + F7;

    CentOS 7: 在哪个终端启动,即位于哪个虚拟终端。

  3. 伪终端(/dev/pts/# )

    pty(pty:pseudo-tty):SSH远程连接的终端(使用远程登录的终端、图形界面下打开命令行的终端)。 




5、交互式接口方式


交互式接口:启动终端后,在终端设备附加一个交互式应用程序

  1. GUI:图形用户界面(Graphic User Interface)

    有X protocol、window manager、desktop;

    Desktop:GNOME (C, 图形库gtk)、KDE (C++,图形库qt)、XFCE (轻量级桌面)。

  2. CLI:命令行界面(Command Line Interface




6、命令的基本格式

最进本格式:COMMAND [OPTIONS...] [ARGUMENTS...]

          选项(options):用于启用或关闭命令的某个或某些功能

                  短选项:-c 例如:-l, -h

                    长选项:--word 例如:--all, --human-readable

                    多数情况下,多个短选项可合并:-a -l ==》  -al 

          参数(arguments):命令的作用对象,比如文件名,用户名等。

操作注意:

    1、多个选项以及多参数和命令之间使用空白字符分隔

     2、取消和结束命令执行:Ctrl+c,Ctrl+d

     3、多个命令可以用 :符号分开

     4、一个命令可以用 \ 分成多行




7、Shell程序、命令分类及使用帮助


    Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入       内核去执行(shell是一种高级程序设计语言)

    shell也被称为LINUX的命令解释器(command interpreter)

   

    CentOS默认使用的是 bash shell ,bash是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容。

    shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来


    

           [root@Centos7~]#echo ${SHELL} 
           /bin/bash                                     显示当前使用的 shell


           [root@Centos7~]#cat /etc/shells
           /bin/sh
           /bin/bash
           /sbin/nologin
           /usr/bin/sh
           /usr/bin/bash
           /usr/sbin/nologin
           /bin/tcsh
           /bin/csh                                      显示当前系统使用的所有 shell


A、内部命令(内建命令)

由shell程序自带的命令:builtin;


B、外部命令

在系统路径下有对应的可执行程序文件,独立的可执行程序文件就叫外部命令,文件名即命令名;


type 命令:

type COMMAND 如果是内部命令,直接显示是一个内置的shell;如果是外部命令,显示命令的绝对路径。

           [root@Centos7~]#type cd                       查看命令是内部或外部命令方法
           cd is a shell builtin
           [root@Centos7~]#type man
           man is /usr/bin/man


*内部命令启用、禁用方法:

       enable cmd       启用内部命令

       enable –n cmd   禁用内部命令

       enable –n       查看所有禁用的内部命令



*查看命令路径其他方法:


which 命令:

which [options] [programs]

                -a:显示所有匹配的程序文件,而非第一个;

                --skip-alias:略过别名;

           [root@Centos7~]#which cd
           /usr/bin/cd
           [root@Centos7~]#which man
           /usr/bin/man

           [root@Centos7~]#which ls
           alias ls='ls --color=auto'
           /usr/bin/ls

whereis 命令:

            whereis [options] name...

                -b:Search only for binaries  仅查看二进制文件;

                -m:Search only for manuals   查看手册;

                -s:Search only for sources   查看源码;



C、别名

由于复杂命令或频繁使用的命令、选项的组合,系统为嫌弃麻烦的用户提供了一个方便的工具叫 alias ,可以让我们为命令设置一个别名,后续使用只需输入一个简短的别名就可以代表长长的命令。


定义别名:alias NAME = 'COMMADN '       注意‘=’和字符串之间不能包含空格

取消别名:unalias[-a] name [name ...]   -a 取消所有别名


*如果想永久有效,要定义在配置文件中,仅对当前用户:~/.bashrc;对所有用户有效:/etc/bashrc


*编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件

       source /path/to/config_file

         .    /path/to/config_file


    *如果别名同原命令同名,如果要执行原命令,可使用

         \COMMAND       (最常用方法,使用 \ 可以使别名本次失效)

        ’COMMAND ’    (反向单引号)

        /PATH/COMMAND: (如果是外部命令可以使用绝对路径)


    D、whatis

 显示命令的简短描述,用于查询一个命令执行什么功能,并将查询结果显示在终端上。

 刚安装因为没有数据库,不能第一时间使用,需要输入 makewhatis 或 mandb(Centos 7版本)制作数据库。

 使用示例:

       [root@Centos7~]#whatis cd
       cd (1)               - bash built-in commands, see bash(1)
       cd (1p)              - change the working directory

    Ehelp 

    help命令用于显示shell内部命令的帮助信息(外部命令最好选用 maninfo 命令);

    内部命令·help COMMAND·

    外部命令·COMMAND --help 或 COMMAND -h ·

   [root@Centos7~]#cd --help
   -bash: cd: --: invalid option
   cd: usage: cd [-L|[-P [-e]]] [dir]


  [root@Centos7~]#help cd
   cd: cd [-L|[-P [-e]]] [dir]
       Change the shell working directory.
    
       Change the current directory to DIR.  The default DIR is the value of the
       HOME shell variable.
    
       The variable CDPATH defines the search path for the directory containing
       DIR.  Alternative directory names in CDPATH are separated by a colon (:).
       A null directory name is the same as the current directory.  If DIR begins
       with a slash (/), then CDPATH is not used.
     
       If the directory is not found, and the shell option `cdable_vars' is set,
       the word is assumed to be  a variable name.  If that variable has a value,
       its value is used for DIR.
    
       Options:
           -L      force symbolic links to be followed
           -P      use the physical directory structure without following symbolic
                   links
           -e      if the -P option is supplied, and the current working directory
                   cannot be determined successfully, exit with a non-zero status
      
       The default is to follow symbolic links, as if `-L' were specified.
    
       Exit Status:
       Returns 0 if the directory is changed, and if $PWD is set successfully when
       -P is used; non-zero otherwise.


    F、Man (手册 manual) (·男人·读懂男人需要语言Linux学习之路-Linux入门【2】---20171113_学习之路_17

    提供命令帮助的文件,手册页存放在/usr/share/man,几乎每个命令都有man的“页面”,man页面分组为不同的“章节”,统称为Linux手册。

    man命令的配置文件:/etc/man.config| man_db.conf;MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置。

 man -M/PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示。

    中文man需安装包man-pages-zh-CN。


   man 各章节说明


 * 1: 用户命令 (Executable programs or shell commands)

    2: 系统调用 (System calls)

    3: C库调用  (Library calls )

   4: 设备文件及特殊文件 (Special files)

    * 5: 配置文件格式 (File formats and conventions eg )

   6: 游戏 (Games)

    7: 杂项 (Miscellaneous )

    * 8: 管理类的命令 (System administration commands )

    9:Linux 内核API (Kernel routines)


   man 帮助段落说明


  NAME 名称及简要说明

   SYNOPSIS 用法格式说明

        []可选内容

        <> 必选内容

        a|b二选一

        { }分组

        ...同一内容可出现多次

   DESCRIPTION 详细说明

     OPTIONS 选项说明

   EXAMPLES 示例

   FILES 相关文件

  AUTHOR 作者

  COPYRIGHT版本信息

  REPORTING BUGS bug信息

  SEE ALSO 其它帮助参考


    [root@Centos7~]#man ls
    LS(1)                     User Commands                                LS(1)

    NAME
          ls - list directory contents

    SYNOPSIS
          ls [OPTION]... [FILE]...

    DESCRIPTION
          List information about the FILEs (the current directory by default).  Sort entr          ies alphabetically if none of -cftuvSUX nor --sort is specified.

          Mandatory arguments to long options are mandatory for short options too.

          -a, --all
                  do not ignore entries starting with .

          -A, --almost-all
                  do not list implied . and ..(下文省略)

备注:

   man命令的操作方法:使用less命令实现

   space, ^v, ^f, ^F: 向文件尾翻屏

   b, ^b: 向文件首部翻屏

   d, ^d: 向文件尾部翻半屏

   u, ^u: 向文件首部翻半屏

   RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行y or ^Y or ^P or k or ^K:向文件首部翻一行

   q: 退出

   #:跳转至第#行

   1G: 回到文件首部

   G:翻至文件尾部

   打印man帮助文件的路径:man –w [章节] keyword






    Ginfo read Info documents)(女人其实不容易读懂)

      info [COMMAND] 

     man常用于命令参考,GNU工具info适合通用文档参考。info没有参数,同时列出所有的页面。

  info 页面的结构就像一个网站,每一页分为“节点”,链接节点之前*


     [root@Centos7~]#info ls
      File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory        listing

10.1 'ls': List directory contents
==================================

The 'ls' program lists information about files (of any type, including
directories).  Options and file arguments can be intermixed arbitrarily,
as usual.
                        。。。。。。。
   Exit status:

     0 success
     1 minor problems  (e.g., failure to access a file or directory not
       specified as a command line argument.  This happens when listing a
       directory in which entries are actively being removed or renamed.)
     2 serious trouble (e.g., memory exhausted, invalid option, failure
       to access a file or directory specified as a command line argument
       or a directory loop)

   Also see *note Common options::.

* Menu:

* Which files are listed::
* What information is listed::
* Sorting the output::
* Details about version sort::
* General output formatting::
* Formatting file timestamps::
* Formatting the file names::

   ---------- Footnotes ----------

备注:

   方向键,PgUp,PgDn 导航

   Tab键移动到下一个链接

   d 显示主题目录

  Home 显示主题首部

   Enter进入选定链接

   n/p/u/l进入下/前/上一层/最后一个链接

   s文字文本搜索

   q退出info

   


    HHash缓存表

   系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利用hash缓存表可大大提高命令的调用速率。

    hash常见用法

    hash 显示hash缓存

    hash –l 显示hash缓存,可作为输入使用

    hash –p path name 将命令全路径path起别名为name

    hash –t name 打印缓存中name的路径

    hash –d name 清除name缓存

    hash –r 清除缓存


    I、tab补全键(用好tab键)


 命令补全

    程序在接收到用户执行命令的请求且分析完成之后,bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表。

 

    路径补全

    把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果惟一:则直接补全;否则:再次Tab给出列表。

        [root@Centos6~]# [Tab] [Tab]
        Display all 2696 possibilities? (y or n)


command 2Tab 所有子命令或文件补全

string2Tab 以string开头命令

/2Tab 显示所有根目录下一级目录,包括隐藏目录

./2Tab 当前目录下子目录,包括隐藏目录

*2Tab 当前目录下子目录,不包括隐藏目录

~2Tab 所有用户列表

$2Tab 所有变量

@2Tab /etc/hosts记录(centos7不支持)

=2Tab 相当于ls –A (centos7不支持)


8、显示当前工作目录及切换命令


 CWD:当前工作目录(currentwork directory)

 #pwd 命令:显示当前工作目录(printing working directory)。

 其他选项:-P 显示真实物理路径(查看链接文件查看路径方法);     

             

           [root@Centos7~]#echo $PWD
           /root                                        当前目录路径


           [root@Centos7~]#echo $OLDPWD
           /etc                                         上一次目录路径


 cd 命令:切换路径  (change directory

      cd [/PATH/TO/SONMEDIR]  

           [root@Centos7/app]#cd
           [root@Centos7~]#                     直接切换到家目录下,~表示用户的家                                                        目录,(超级用户root家目录在 / 下                                                        其他普通用户家目录在/home下)


    快捷操作:  

    切换至父目录:cd..

    切换至当前用户主目录:cd

    切换至以前的工作目录:cd-

    可使用相对路径方式做目标; . 、..




*开机状态插入硬盘,如果新硬盘没有自动挂载,就触发一个文件。

           [root@Centos7~]#echo '- - -' > /sys/class/scsi_host/host2/scan
           
                                                如果没有触发在写host0系统会自动识别


    *显示优盘及硬盘的格式

           [root@Centos7~]#lsblk -o +FSTYPE
           NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT                      FSTYPE
           sda      8:0    0  200G  0 disk                                 
           ├─sda1   8:1    0    1G  0 part /boot                           xfs
           ├─sda2   8:2    0   50G  0 part /                               xfs
           ├─sda3   8:3    0   20G  0 part /app                            xfs
           ├─sda4   8:4    0    1K  0 part                                 
           └─sda5   8:5    0    2G  0 part [SWAP]                          swap
           sr0       11:0    1  8.1G  0 rom  /run/media/root/CentOS 7 x86_64 iso9660


个人总结内容杂乱,总结信息为个人理解及老师课件内容,请勿见怪!!