目录

一、linux基础

 1、linux的哲学思想

 2、开源协议,自由软件

 3、控制台和终端

 4、用户登录

       PS1,

二、linux文件系统

 1、linux的文件基础

 2、路径

       相对路径、绝对路径

 3、文件名

三、命令

 1、命令分类

 2、命令使用格式

 3、获取命令使用帮助

      help,man,info

一、linux基础

1、linux的哲学思想

      一切皆文件(包括硬件)

    由众多目地单一的小程序组成;

     组合小程序完成复杂任务

     尽量避免跟用户交互:为了方便脚本编程实现自动化运行

     使用文本文件保存程序的配置数据

程序设计法则:

       K.I.S.S:Keep It Simple.Stupid

2、开源协议

GPL,LGPL,Apache,BSD

自由软件:GNU,GPL (free)

       自由获取,自由学习,自由修改,自由分发源代码,自由创建衍生版

       靠服务赚钱,

3、控制台和终端

       终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念。
一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有命令行终端和图形终端两种.
      控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连,这是人控制主机的第一人机接口(就像个人pc电脑一样,显示,键盘,鼠标都接上,此时就可以叫控制台)。
     话回到个人计算机上,个人计算机只有控制台,没有终端. 当然愿意的话, 可以在串口上连一两台命令行终端。但是linux保留了以前的习惯按POSIX标准把个人计算机当成小型机来用,,通过getty软件虚拟了六个字符终端(终端tty1-tty6)(数量可以在/etc/inittab里自己调)和一个图型终端, 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个虚拟命令行终端(pts/0....). 记住,这全是虚拟的,用起来一样,但实际上并不是。

控制台:  /dev/console            #如果是虚拟机安装的linux,那么都没有连接这个控制台

虚拟终端:/dev/tty1# (1-7)      #其中有一个是虚拟图形终端                        

        如果没有安装图形界面或者没有启动图形桌面那么只能通过Alt+F(1-6)在六个命令行终端之间切换,如果启动了图形界面就可以通过Alt+F7切换到图形终端,从图形终端切换到虚拟终端要使用Ctrl+Alt+F(1-6),

伪终端:/dev/pts/#          #ssh或telnet远程连接打开的终端

串行终端:/dev/ttyS#       #没有显卡用串行终端也可以

注意:

       在使用 Alt+F#进行终端切换时,tty#并不会发生变化,tty#和Alt+F#并没有对应关系,tty#和pts#是通过终端登录的时间编号的    

在命令行终端中启动图形桌面服务:

[root@Node3 ~]# startx &[root@Node3 ~]# startx & -- :1 &    #启动第二个图形界面 进入第二个图形界面Alt+F8

查看自己使用的终端的命令:

[root@Node3 ~]# tty/dev/pts/0[root@Node3 ~]# whoroot     tty1         2016-11-12 23:02root     pts/0        2016-11-27 15:38 (192.168.10.10)root     pts/2        2016-11-27 11:42 (192.168.10.10)[root@Node3 ~]# w 15:41:38 up 8 days, 11:10,  3 users,  load average: 0.00, 0.04, 0.09USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHATroot     tty1     -                12Nov16 23:27   0.07s  0.07s -bashroot     pts/0    192.168.10.10    15:38    0.00s  0.01s  0.00s wroot     pts/2    192.168.10.10    11:42    3:26   0.04s  0.04s -bash[root@Node3 ~]# who am iroot     pts/0        2016-11-27 15:38 (192.168.10.10)[root@Node3 ~]# whoamiroot

4、用户登录

认证,授权

      用户使用帐号和密码登录

用户登录后进入用户工作环境:               #可以自定义

       CLI:提供命令提示符   

              管理员:#

              普通用户:$

      GUI:提供桌面环境

用户:

      管理员:有管理员权限    root

      普通用户:仅有系统资源使用权限

PS1:定义命令提示符                              #环境变量PS1

     \u:自动替换为当前用户的用户名

     \h:当前主机的主机名

     \H:当前主机的完整主机名,FQDN、

     \w:当前工作路径,绝对路径

     \W:当前工作路径的基名

     \$:指定命令提示符

定义方法:

[root@Node3 ~]# echo $PS1[\u@\h \W]\$[root@Node3 ~]# PS1='(\U0\HSB\w)\% '(\U0Node3SB~)\% cd /etc/sysconfig(\U0Node3SB/etc/sysconfig)\%

二、Linux文件系统

1、Linux的文件系统基础

linux一切皆文件,那么linux怎么找到某个文件呢?

a、遍历        

         效率低,

b、层级结构

文件系统中的数据分为两类数:

元数据(metadata):索引,

数据(data):文件内容

      1个新的硬盘格式化后分成元数据区和数据区,数据区再分成存储块(block,最小存储单元),每个数据块都有编号,例如1号块2号块, 1个存储块只能属于一个文件,小于1个存储块的文件仍然占用1个存储块,这整个就是文件系统    

对于计算机来说,文件是什么?

      所有数据存在硬盘上都是二进制流,

2、路径

怎么标记一个文件?

      使用路径,

路径怎么表示层级结构?

      路径分隔符:/

             /usr/local:最左边的/不是路径分隔符而是根,是linux文件系统的起点,

绝对路径:从根开始定位的路径表示形式

相对路径:从当前位置开始定位的路径表示形式

目录是什么?

  路径映射

       用户登录系统后当前的路径是自己的家目录,使用pwd命令可以查看当前目录(工作目录),cd命令切换当前的目录

[root@Node3 ~]$ pwd/root[root@Node3 ~]$ cd /tmp[root@Node3 tmp]$ cd          #cd后面不加路径就默认回到家目录[root@Node3 ~]$ pwd/root

特殊目录:

.    表示当前目录(或工作目录)

..   表示当前的上一级目录

~   表示家目录

~USERNAME   切换到指定用户的家目录    需要有权限才可以

-  回到上次所在目录

[root@Node3 ~]$ pwd/root[root@Node3 ~]$ cd .[root@Node3 ~]$ cd ..[root@Node3 /]$ pwd/[root@Node3 /]$ cd ~[root@Node3 ~]$ pwd/root[root@Node3 ~]# cd ~xj        [root@Node3 xj]# pwd/home/xj[root@Node3 ~]# cd /tmp/src[root@Node3 src]# cd -/root[root@Node3 ~]# cd -/tmp/src

3、文件名

每个文件都有两类标识符:

名字:文件名

                       linux的文件名严格区分大小写字符

                       文件名可以使用除了/以外的任意字符,,建议不使用特殊符号

                       以.开头的文件是隐藏文件

                       文件名最长255个字符

数字:indoe  i节点

basename NAME 获取文件的路径基名

dirname NAME 获取文件的路径目录名

[root@Node3 ~]$ basename /etc/sysconfig/network-scripts/network-scripts[root@Node3 ~]$ dirname /etc/sysconfig/network-scripts//etc/sysconfig[root@Node3 ~]$ dirname etc/sysconfig/network-scripts/   #这两个命令不会检查该路径存不存在,路径对还是不对etc/sysconfig[root@Node3 ~]$ dirname etc/sysconfig/network-scriptsetc/sysconfig[root@Node3 ~]$ dirname  ./etc/sysconfig/network/sb/nia./etc/sysconfig/network/sb[root@Node3 ~]$ basename ./etc/sysconfig/network/sb/niania

三、命令

     对主机执行的操作,是通过执行程序(发起进程)完成

1、命令分类

      内建命令:builtin  #bash自带的基本命令

      外部命令:独立于shell程序之外的,有着可执行程序文件的命令

可以用内建命令type命令来查看命令的类型:

[root@Node3 ~]$ type cd          #内建命令是shell自带的,没有可执行程序文件cd is a shell builtin[root@Node3 ~]$ type ifconfigifconfig is /sbin/ifconfig[root@Node3 ~]$ type typetype is a shell builtin

如何运行命令:在命令提示符下键入命令,然后敲回车(把命令提交给内核运行,把输出结果打印出来)

           shell会先从环境变量PATH定义的目录顺序依次查找这个命令,找到的后就执行

[root@Node3 ~]$ echo $PATH/usr/lib64/qt-3.3/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

2、命令使用格式

COMMAND  OPTION...   ARGUMENTS...

选项:多个选项可以同时使用,可省略

       形式:

              -CHAR             短选项

                     多个短选项可以合并

              --WORD          长选项

                       功用:定义命令的运行行为

参数:指明命令的作用对象,可省略                                    

注意:有些选项也可以带参数,用于指定选项的作用对象        

[root@Node3 ~]$ cd /tmp/src[root@Node3 src]$ lstest1.txt  test.sh[root@Node3 src]$ ls -l总用量 8-rw-r--r-- 1 root root  9 11月 26 16:45 test1.txt-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh[root@Node3 src]$ ls -lh总用量 8.0K-rw-r--r-- 1 root root  9 11月 26 16:45 test1.txt-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh[root@Node3 src]$ ls -lh test.sh-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh[root@Node3 src]$ ls test1.txt test.sh test1.txt  test.sh

      

3、获取命令使用帮助

 1)help

内置命令:

      help COMMAND

               内置命令只有这一种方法获取帮助

外部命令:

       COMMAND     --help(更通用)或者-h    获取简要命令使用帮助

                              --help 显示的帮助信息是命令自带的,通常比较简洁

 2)命令手册manual 

man  COMMAND 

       通常是由程序作者提供,按照一定格式组织成文本文件,并压缩后存放在系统上的某位置

manual文档存放位置:/usr/share/man   

[root@Node3 ~]# ls /usr/share/man/bg  de  es  hr  it  man0p  man1x  man3   man4   man5x  man7   man8x  mann  pt     ru  sv     zh_TWcs  el  fi  hu  ja  man1   man2   man3p  man4x  man6   man7x  man9   nl    pt_BR  sk  trda  en  fr  id  ko  man1p  man2x  man3x  man5   man6x  man8   man9x  pl    ro     sl  zh_CN

man命令的执行 ,通常即为找到此文件打开并显示

命令手册有章节之分:1-9

  1、用户命令  #普通用户

  2、系统调用  system call

  3、库调用  library call

  4、设备文件 

  5、配置文件

  6、游戏

  7、杂项

  8、管理命令

  9、内核相关的文件

  n、new  新文档     新的,尚未归入上述1-9章节的帮助文件

  o、old   老文档     可能 会在一段期限内保留

   l、local 本地文档    与本特定系统有关的

man [N] COMMAND         指定特定章节  #N为数字,不加数字时,按顺序显示第一次出现的章节

whatis  COMMAND           显示指定关键字存在帮助手册的章节相关信息及简要说明   #精确匹配

man -k COMMAND      显示指定关键字存在帮助手册的章节相关信息及简要说明   #模糊匹配

man -f   COMMAND         相当于whatis

man -a command             打开符合命令的所有章节的手册

man -w command            显示指定命令手册所在的路径 

man -aw command          结合-a参数显示所有章节的手册路径

[root@Node3 ~]$ whatis passwdpasswd               (1)  - update user's authentication tokenspasswd               (5)  - password filepasswd [sslpasswd]   (1ssl)  - compute password hashes[root@Node3 ~]$ man -f passwdpasswd               (1)  - update user's authentication tokenspasswd               (5)  - password filepasswd [sslpasswd]   (1ssl)  - compute password hashes[root@Node3 ~]$ man -k passwdchpasswd             (8)  - update passwords in batch modefgetpwent_r [getpwent_r] (3)  - get passwd file entry reentrantlygetpwent_r           (3)  - get passwd file entry reentrantlygpasswd              (1)  - administer /etc/group and /etc/gshadowlpasswd              (1)  - Change group or user passwordlppasswd             (1)  - add, change, or delete digest passwordspam_localuser        (8)  - require users to be listed in /etc/passwdpasswd               (1)  - update user's authentication tokens...

当系统中没有安装man时,如何手动安装man呢?

yum install man man-pages(man的补充?)

whatis  资料库包含了所有系统指令的简单描述 , 而 whatis 指令会在此资料库中搜寻符合 keyword的 指令 , 并把结果显示出来

whatis 资料库是使用 makewhatis 这 个 指 令 所 建 立 的 。 

man命令调用less命令查看文件内容,使用机制和less一样

翻屏

  空间键:向文件尾部翻一屏

  ctrl+b:向文件首部翻一屏

  ctrl+d:向文件尾部翻半屏

  ctrl+u:向文件首部翻半屏

  回车键或j:向文件尾部翻一行

          k:向文件首部翻一行

         q:退出

行定位

        G:跳转至文件尾部

     Ng|G:跳转至文件第N行

关键字搜索

    /KEYWORD:搜索指定关键字,从文件首部向尾部搜索,关键字搜索可以使用正则表达式

  ?KEYWORD:搜索指定关键字,从文件尾部向首部搜索

            n:与搜索方向相同

            N:与搜索方向相反

man手册段落:

         NAME:命令的名称及简要说明

         SYSNOPSIS:使用格式

         DESCRIPTION:命令功能的详细描述

         OPTIONS:所有选项的相关说明

         EXAMPLES:使用示例

         FILES:相关的配置文件

         SEE ALSO: 相关参考

帮助格式中的字符串:

[ ]:可选内容

<>:必选内容

|:或者 二选一

...:同类内容可以有多个

man命令的配置文件:/etc/man.config

配置man查找文档的路径的选项:

MANPATH /usr/man       MANPATH /usr/share/manMANPATH /usr/local/manMANPATH /usr/local/share/manMANPATH /usr/X11R6/man

man -M PATH COMMAND   

       指定该命令帮助文档的查找路径

 3)info   命令    获取在线文档

info  COMMAND

      仅在man手册无法提供足够的可用帮助信息时才使用

               

 4)许多应用程序都自带帮助文档:

rpm安装的软件自带帮助文档的路径:/usr/share/doc

    ChangeLog:更新日志

    INSTALL:安装说明

    README:程序说明信息

[root@Node3 ~]$ cd /usr/share/doc[root@Node3 doc]$ cd passwd-0.77/[root@Node3 passwd-0.77]$ lsAUTHORS  ChangeLog  COPYING[root@Node3 passwd-0.77]$ cd ../zip-3.0/[root@Node3 zip-3.0]$ lsalgorith.txt  CHANGES  LICENSE  README  README.CR  TODO  WHATSNEW  WHERE

 5)主流发行版官方文档    

 6)google   

           一定要学会使用搜素工具

使用技巧:

       ls的用法 site:51cto.com        #只会显示该域名下服务器网站上搜索到的内容

      

 7)各应用程序官方会提供