Linux基础知识二:

1、控制命令的执行方式:

       Ctrl+C:取消命令的执行;

       用;隔开隔开多条命名以实现在一行中执行多条命令;

2、命令的分类:

       内部命令:隶属于某一个已经打开的shell程序的命令;

       外部命令:在系统的某个路径下存在一个与命令名称相同的可执行文件的命令;

       # which command:查看某一个命令的路径;

       # type command :查看某一个命令是内部的命令还是外部命令;

3、ls [options][file|directory]

   # ls file:将文件名再显示一遍;

   # ls dirctory :显示目录里面的文件名;

4、如何获得命令帮助:

        1、大多数外部命令都可以通过--help获取帮助信息;(有写可以使用-h获取帮助)

        2、内部命令可以使用help command来获取帮助信息;

        3、查看命令的手册: # man command;

        4、查看命令的信息页:# info command,含有超链接,可以实现在文档之间进行跳转的;

        5、命令自身附带的官方文档存放路径:/usr/share/doc/command-version

        6、http://www.redhat.com

        7、google搜索;

5   1】如何使用man(manual)查看命令手册页:

     # man [chapter]<command>

     例如:# man 1 ls ,如果不加chapter时,则使用命令首次出现的手册页作为默认显示的帮助手册;

     man 是分章节的,按命令类型归类,不同类别的命令帮助手册可能位于不同的章节中;同一个命令可以归类为多个章节的,则在多个章节中均可以存在手册页;

     man的八个章节:

      1、用户命令;

      2、系统调用相关的帮助信息;

      3、库调用帮助信息;

      4、特殊文件说明(通常指设备文件的说明);

      5、文件格式(通常指配置文件的格式);

      6、游戏有关的帮助信息;

      7、杂项;

      8、管理命令(只有管理员可以执行的命令);

   2】# whatis command:查看命令的手册页在哪个或哪些章节中有帮助手册。

       whatis:whatis所依赖的数据库不是自动生成的,而是装完系统后使用makewhatis生成的;

       makewhatis被做成了系统任务,每隔一些时间自动执行一次。如果其不能够自动执行,则可以手动执行:# makewhatis。makewhatis这个命令会遍历系统的所有命令的手册页,然后生成数据库。

   3】man手册通常都是压缩后存放的,默认情况下存放在/usr/share/man下面,但并非所有的man手册页都压缩存放在该目录下。

       /etc/man.config中存放man的手册页的路径信息,当我们配置完一个命令后,需要在该配置文件中指明该命令的手册页存放位置才能使用man命令查看该命令的手册页。

   4】手册页说明:

          命令手册页中用大写的粗体显示的称为该手册页的不同段落;

          NAME:命令说明。

          SYNOPSIS:命令的使用格式,[]表示选项可选;<>表示选项必选;...,表示可以有多个;|,表示多选一;{},将多选一的选项括起来,以避免歧义。

          DESCRIPTION:命令描述信息。

          OPTIONS:命令可选的选项。

          AUTHOR:命令的作者;

          REPORTING BUGS:向某邮箱报告bugs信息。

          COPYRIGHT:版权信息。

          SEE ALSO:其他途径获取命令的帮助信息。

          FILES:说明命令依赖的配置文件。

          EXAMPLES:命令的使用样例。

   5】man -M COMMAND-PATH COMMAND:临时将手册页加载到man路径下以便可以用man命令来查看命令的帮助信息,开机重启后无效。

      man -k command:显示出跟命令相关的所有命令的手册页的位置。

   6】man手册页中如何翻屏?

       空格键:往文件尾部翻一屏;

       b键:往文件首部翻一屏;

       enter键: 一行一行的往文件尾部看;

       k键:一行一行的往文件首部看;

       G键:跳到文件尾部;

       1G:跳到文件首部;

   7】man中如何搜索字符串?

       /keyword:从文件首部向下寻找;

       n键:当查找的字符串有多个的时候,按n键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。

       N键:当查找的字符串有多个的时候,按N键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。

       ?keyword:从文件尾部向下寻找;

       n键:当查找的字符串有多个的时候,按n键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。

       N键:当查找的字符串有多个的时候,按N键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。

6、cp 源文件 目标位置:服务某一个文件到某一个目标位置去。

7、history 

          -c:清空此前的命令历史。

          -d n :删除第n条命令。

          n:显示命令历史最近n条命令,包括当前命令和错误命令。

          -w:表示直接写入命令历史文件(~/.bash_history)中,会覆盖原有命令历史。

          -a:在原有命令历史文件(~/.bash_history)的尾部,将当前缓冲区中的命令写入。

         # !n:执行命令历史中的第n条命令。

         # !string:执行命令历史列表中最近一次以“string”开头的命令。  

         #!!:重复执行上一条命令;

         # cd ESC,.:使用上一条命令的最后一个参数;

         #cd !$:使用上一条命令的最后一个参数;

         #cd atl+.:使用上一条命令的最后一个参数,但在远程连接中不可用。

   history的命令历史有两部分组成:

       一部分为:~/.bash_history:保存的是此前用户退出后保存至用户的配置文件当中的命令历史,

       二部分为:当前缓冲区中的命令历史;

   与命令历史相关的环境变量:

       HISTFILESIZE,该变量决定~/.bash_history中能保存的命令的条数。

       HISTSIZE,定义的是该次登录后,在内存缓冲区中能保存的命令历史的条目。

       HISTFILE,该变量定义哪一个文件是默认的命令历史的保存文件。

       # export HISTCONTROL=ignorespace|ignoredups|ignoreboth|erasedups :

             ignorespace:以空格开头的命令不计入命令历史中;

             ignoredups:但凡是重复的命令就不再重复计入命令历史中,保留的是该变量修改后的第一个出现重复的命令; 

             ignoreboth:前两者都生效;

             erasedups:去除重复的命令,保存的是当前出现重复的命令,将该参数修改后出现同样的命令去除掉。

8、查看文本文件的命令:

      1】 cat 文件名:显示文本文件内容,直接显示到尾部;

           -n 文件名:显示文件的时候,也显示行号;

           -E 文件名:显示行结束符;

           -v 文件名:显示非打印字符,但不显示制表符;

           -T 文件名:显示制表符;

           tac 文件名:倒着显示文件内容;

      2】more/less:

           more:当显示到文件尾部时,会自动退出,并且在显示过程中,不可以向前翻页,除非文件内容大于两屏才行。enter键表示一行一行地往后看。

           less:不同于more,当显示到文件尾部时,不会自动退出。

               less支持的控制命令:

               空格键:往文件尾部翻一屏;

               b键:往文件首部翻一屏;

               enter键: 一行一行的往文件尾部看;

               k键:一行一行的往文件首部看;

               G键:跳到文件尾部;

               1G:跳到文件首部;

               /keyword:从文件首部向下寻找;

               n键:当查找的字符串有多个的时候,按n键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。

               N键:当查找的字符串有多个的时候,按N键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。

               ?keyword:从文件尾部向下寻找;

               n键:当查找的字符串有多个的时候,按n键表示向文件首部查找,而且查找的是每一行首次出现的匹配字符串。

               N键:当查找的字符串有多个的时候,按N键表示向文件尾部查找,而且查找的是每一行首次出现的匹配字符串。

       3】head/tail 文件名:显示文件内容的前|后十行。

            head -n FILE:例如,# head -5 /etc/init.d/functions

            head -n # FILE:例如,# head -n 5 /etc/init.d/functions,显示functions文件的前5行内容。

            

            tail与head用法基本相同,但其有特殊选项:

              tail -f 文件名:表示不退出,一直查看文件内容,多用于监控一个日志文件内容的变化。例如,# tail -f /var/log/messages

       4】wc:(words counts)做字符统计;

            wc -l 文件名:显示某一个文件内容有多少行;

               -w 文件名:显示某一个文件内容有多少单词数;

               -c 文件名:显示某一个文件内容有多少字符数;

9、cut:切割文件内容。

     cut -d: -f1 文件名:显示该文件中,以“:”分割开的第一个字段的内容;

     cut -d : -f1,6 文件名:显示该文件中,以“:”分割开的第一个和第六个字段的内容;

     cut -d: -f1-6 文件名:显示该文件中,以“:”分割开的第一到第六个字段的内容;

     cut -d'' -f1 文件名:显示该文件中,以“空格”作为分割符的第一段内容;

10、sort:排序命令,对文件的原内容没有排序,只是将排序的结果显示在屏幕上;

     sort 文件名:纯粹以ASCII码的次序逐个升序排序。

        -r 文件名:逆序排序文件内容;

        -n 文件名:以数值大小的方式比较;

        -f 文件名:在比较的时候不区分字符的大小写;

        -u 文件名:排序后重复的行只显示一次;

11、uniq:uniq判断两行是否是相同的行的标准是:这两行是连续的,且这两行是相同的。uniq命令通常与sort一块使用。

      uniq -u :只显示那些唯一的行;

           -d :只显示重复的行并且只显示一次;

           -c :显示某一行重复的次数;

12、tr:转换或者删除字符,以字符作为单位的,只是将结果显示出来,并不修改原文件的内容;

      格式:tr [options] SET1 [SET2] < 文件名: 将文件中所有的SET1替换成SET2;

            tr -d SET1 < 文件名:将文件中所有的SET1字符删除掉;

      例如:# tr 'a-z' 'A-z' < /etc/passwd 或者 # cat /etc/passwd |tr 'a-z' 'A-Z' :将/etc/passwd文件中的小写字符都转换成大写字符;

13、  /etc/shadow里面记录的格式: account:!!:自1970年开始到最近一次密码修改后中间经过的天数:密码最短使用期限天(默认为0):密码最长使用期限天(默认为99999):密码过期之前多少天向用户发出警告:密码过期之后多少天此用户账号将被禁用(即非活动时间):自1970年开始过多少天后用户账号将被禁用:预留段。

      !!是处于锁定状态的用户账号,不允许用户登录进来,但管理员可以su进去。

      $1$加的盐$最终的密码$:“1”表示使用的加密方法是md5加密算法。

14、# bc :bc是一个计算器。

    scale=2:表示精确到小数点后两位。

15、禁用用户账号:

    # passwd -l:锁定用户账号; 

             -u:解除用户账号锁定;

             --stdin 用户名:给用户指定初始密码;

             -n:定义密码最短使用期限;

             -x:定义密码最长使用期限;

             -w:定义密码过期前多少天向用户发出警告信息。

             -i:定义非活动时间,即密码过期多长时间用户账号将被禁用。

16、pwck:检查passwd文件的完整性。

    passwd的属性配置文件在/etc/login.defs。

17、查看用户信息的方法:

   1)id其使用格式:id [option] [username]

      id :显示当前用户的属性信息。

        用户名:显示该用户的属性信息。

        -u 用户名:显示该用户的uid。

        -g 用户名:显示该用户的gid。

        -G 用户名:显示该用户名所属的所有组的id号。

        -n 用户名:使用用户名或者组名显示该用户或者该用户所属的组,需要和-G|-u|-g一起使用。

    2)finger:查看用户信息的第二种方法。其使用格式:finger [username]

18、chfn:改变finger的信息,该些信息会以“,”隔开显示在文件/etc/passwd记录的第五段里,即GECOS的内容。格式 :chfn 用户名

    chsh:用户的shell。格式:chsh 用户名。

19、usermod:

      -u:修改户的uid;

      -g:修改用户的gid;

      -a -G:给用户追加附加组,若只使用-G,则用户以前的附加组组会被覆盖掉。

      -c:修改用户的注释信息,即GECOS信息;

      -d:修改用户的家目录,此新的家目录事先不能存在。此时用户家目录里面的文件不会被一并复制到新的家目录里面,所以需要和-m 一块使用,即 -dm;

      -s:修改用户的登录shell; 

      -l newlogname:修改登录名;

      -L:锁定用户账号;

      -U:解除用户账号锁定;

      -o:可以实现两个用户使用同一个uid号。

      -e:指定用户账号的最长使用时间;

      -f:指定用户账号的非活动时间;

20、chage:

       -m:改变密码的最短使用期限;

       -M:改变密码的最长使用期限;

       -W:改变密码过期之前多少天出现警告信息。

21、userdel 用户名:删除用户,默认不会删除用户的家目录。-r选项可以一块删除用户的家目录。

22、groupadd -g:指定该组的gid;

             -r:添加该组为系统组;

    groupmod -g gid:修改gid。

             -n newgroupname:修改组名。

    groupdel 组名:删除组。

    gpasswd 组名:给组添加密码。

    newgrp 组名:切换到其他的组,并使其他的组作为该组的基本组。通过exit退出 。

23、Linux的安全模型:

    1)每一个文件都有属主和属组;

    2)每一个进程都以某个用户和组的身份运行;

    3)每一个文件都有读、写、执行权限;

    4)先用户、组,最后是其他。

24、chmod:改变文件的权限。其方法有如下四种:

    1)chmod 644 file1:将文件的权限修改为rw-r--r--;

       chmod 64 file1:将文件的权限修改为---rw-r--;

    2)在文件权限修改中,u代表修改属主的权限;g代表修改属组的权限;o代表修改其他用户的权限;a代表修改所有用户的权限。例如:u=rw,g=r或者ug=rwx等。如果对应位没有权限,则u|g|o=  。

    3)如果要给对应位加权限,则可以使用u|g|o+/-r|w|x 。

    如果改变的是目录的权限,则只改变目录本身的权限,而不会改变目录内文件以及子目录的权限。

    chmod -R u|g|o+/-r|w|x 目录名:递归修改目录以及子目录文件中的权限。

    4)chmod [-R] --reference=/etc/ 文件名或者目录名:以某个文件作为参照来修改指定文件或目录的权限;

25、chown:改变文件的属主和属组。其格式为:chown 新的属主:新的属组 文件名。-R选项表示递归修改。--reference=文件或者目录名,此时文件的属主和属组一并会修改。

    chgrp:改变文件的属组。其格式为:chgrp 新的属组 文件名。-R选项表示递归修改。--reference=文件或者目录名,此时修改的仅是属组。

26、date:

     date  +%X :显示系统时间;

     date  +%x :显示系统日期;

     date :显示系统日期和时间;

     date -u MMDDhhmmYY.ss:设置系统日期和时间;

     date +%s:显示自1970年开始到最近一次密码被修改所经历的秒钟。

 

     # date -s "2012-06-08 12:23:34" 修改系统日期和时间。

     # clock -w 将系统日期写入到硬盘中。

     

 

27、# du -sh 文件|目录名:统计文件或目录的大小。

28、系统主要的全局配置文件有三个:

       1)/etc/profile

       2)/etc/profile.d下面的所有文件都是/etc/profile文件的肢解部分,即/etc/profile.d下面的文件整个组成了/etc/profile该文件内容。

       3)/etc/bashrc。

     用户主要的个人配置文件:

       1)~/.bash_profile

       2) ~/.bashrc

       3) ~/.bash_logout

    用户登录shell的方式有两种,它们读取配置文件的方式也不相同:

       1)交互式登录的shell,如通过用户名和密码登录的shell、管理员通过# su - 用户名 方式登录的shell(退出后会清屏的)。

        读取配置文件的次序如下:

/etc/profile—>/etc/profile.d/*->~/.bashprofile—>~/.bashrc->/etc/bashrc

       2)非交互式登录的shell,如管理员通过 # su 用户名 方式进入到某一个用户的shell、脚本执行过程中运行的shell、图形用户界面下打开的模拟shell等。

       读取配置文件的次序如下:

~/.bashrc—>/etc/bashrc—>/etc/profile.d/*

   profile类文件主要定义的内容:1)设定环境变量;

                                2)在用户登录完成前执行一些命令;

   bashrc类文件主要定义的内容: 1)设定本地变量;

                                2)定义命令别名;

29、部分环境变量的解释:

        PATH:用于定义在shell中键入的命令的对应的可执行文件的搜索位置;

        在PATH路径下新增值的方法:# export PATH=$PATH:新的路径,但此种方法不会使新路径永久生效,下次登录时会失效。要想永久生效,可以通过编辑配置文件来实现。例如,如果想让/usr路径在PATH中出现,且对全局有效,可以通过如下方式实现:编辑/etc/profile文件,在PATH变量的尾部加入:/usr即可,重新登录shell,通过# echo $PATH命令来查看是否PATH中多出了/usr该路径。

       DISPLAY=localhost:10.0,表示用户当前处于本机的10号终端第0个屏幕上。

       HISTSIZE=1000,表示该次登录后,可以在内存中保存的命令历史的条数。可以在文件/etc/profile中修改该值。

       HOME=/root,表示当前用户的家目录为root。

       HOSTNAME=localhost.localdomain,表示该主机的主机名称。

       INPUTRC=/etc/inputrc,表示输入设备的配置文件。

       LANG=en,默认使用的语言和字符集。使用# locale -a 显示当前系统上支持的所有字符集。使用# locale 显示当前系统正在使用的字符集。 可以使用# export LANG=  ,来修改我们使用的语言和字符集,但此方法不能永久有效,也可以通过修改配置文件/etc/sysconfig/i18n来达到永久有效。

       LOGNAME=root,登录名为root。

       MAIL=/var/spool/mail/root,用户的邮筒地址。

       OLDPWD=/tmp ,指明用户当前工作目录的上一个工作目录。

       PWD=/root,指明用户的当前工作目录。

       LS_COLORS= ,指明ls命令使用时的颜色设置。

       SHELL=/bin/bash,指明当前正在使用的shell。

30、使用# source 配置文件或者# . 配置文件,让系统重读一下该配置文件。但会用负面影响,比如,当我们修改了PATH环境变量的值后,当source第二次的时候,PATH变量的值会重复出现我们刚才加进去的路径,即出现冗余现象。

31、# basename 路径名 ,可以显示该路径的基名。