笔记开始整理时间:2018年3月29日19:22:02

本章内容:

        1.用户登录

        2.终端

        3.shell介绍

        4.执行命令

        5.简单命令

        6.Tap键补全

        7.命令行历史

        8.bash快捷键

        9.使用gnome-terminal

        10.whatis

        11.command --help

        12.man and info

        13.本地帮助文档/usr/share/doc/

        14.官网在线文档

        15.其他网站和搜索

        

用户登录

        root用户

               uid=0

               一个特殊的管理账户,也被称为超级用户

               root已接近完整的系统控制

               对系统谁还几乎有无限的能力

               除非必要,不要登录为root

        普通(非特权)用户

               权限有限

               造成损害的能力比较有限

终端teirminal

        设备终端        键盘鼠标显示器

        物理终端        /dev/console

               控制台console

        虚拟终端(tty:teletypewriters,/dev/tty#,#为[1-6])

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

               CentOS 6:ctrl+alt+F7

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

        串行终端(/dev/ttyS#)

               ttyS

        伪终端(pty:pseudo-tty,/dev/pts/#)

               pty,SSH远程连接

        查看当前的终端设备:tty

交互式接口

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

        GUI:Graphic User Interface

               X protocol,windowmanager,desktop

                     Desktop:

                            GNOME(C,图形库gtk),

                             KDE(C++,图形库qt)

                            XFCE  (轻量级桌面)

        Cli:Commmand Line Interface

               shell程序:sh,csh,tcsh,ksh,bash(bourn again  shell) GPL zsh

什么是shell

        shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口

        它接收用户输入的命令并把它送到内核去执行。

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

        shell是一种高级程序设计语言

bash shell

        GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一

        目前也是Linux的标准shell,与sh兼容

        CentOS默认使用

        显示当前使用的shell    

               echo $SHELL

        显示当前系统使用的所有shell

               cat /etc/shells

命令提示符:prompt

        echo $PS1      显示提示符格式

        PS1="\[\e[1;35m\][\u@\h  \w]\\$\[\e[0m\]"

        

执行命令

        输入命令后回车

               提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后

               提交给内核分配资源将其运行起来

        在shell中可执行的命令有两类

               内部命令:由shell自带的,而且通过某命令形式提供

                     help 显示内部命令列表

                     enable    查看全部可用内部命令

                     enable -n cmd      禁用内部命令

                     enable cmd           启用内部命令

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

               外部命令:在文件系统路径下有对应的可执行程序文件

                     which  -a

                     which --skip-alias  

                      whereis

               区别指定的命令是内部或外部命令

                     type  cmd

 

执行外部命令

        hash缓存表

               系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找命令。

               找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释

               器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。利

               用hash缓存可大大提高命令的调用速率

        hash常见用法

               hash             显示hash缓存

               hash -l           显示hash缓存,包含路径,可作为输入使用

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

               hath -t name 显示hash中name的路径

               hash -r         清除hash缓存

命令别名

        alias 显示当前shell进程所有可用的命令别名

        alias NAME="VALUE"    定义别名NAME,其相当于执行命令VALUE

        例如:

               alias cdnet=‘cd  /etc/sysconfig/network-scripts/`

        unalias cdnet  取消别名cdnet

        unalias -a              取消所有别名

               PS:   在命令行中定义的别名,仅对当前shell进程有效,且注销之后失效

                     如想永久有效,需写入配置文件

                     .bashrc   仅对当前用户有效

                     /etc/.bashrc    修改对所有用户有效

                      编辑配置给出的新配置不会立即生效,需注销或者使用

                     . .bashrc  或者

                     source .bashrc      执行之后配置生效

命令格式

        COMMAND [OPTIONS] [ARGUMENTS..]   

        选项OPTIONS:用于启用或者关闭命令的某个或某些功能

        参数ARGUMENT,命令的作用对象,比如文件名,用户名等

               例如:

                     ls -a etc/       

                     rm -rf /etc/    -rf=-r -f

        PS:

               参数和选项可以多个,使用空白字符分隔

               命令运行过程可中断,使用ctrl+C,ctrl+D

               多个命令可以一行执行,使用;符号隔开,如:

                     pwd;ls;ifconfig

               一个命令可以分开成多行显示,用\分开,如

                     p\

                     w\

                     d +回车

日期和时间:

        Linux的两种时钟

        date 显示系统时间

        clock       硬件时间,即主板bios芯片时间

        date mmDDHHMMYYYY.ss 设置时间,格式为月日时分年。秒

        date -d "-2 day"          显示2天之前的时间

        date +%F               显示时间,按照2018-03-31格式显示

        date "+%F %T" 显示时间格式为2018-03-31 02:08:14

        date +%s 显示时间为1970年1月1日0点至今经过多少秒

        date -d @nnnn     将秒时间换成正常时间

        clock -s  硬件时间覆盖系统时间

        clock -w 系统时间覆盖硬件时间

        ll /etc/localtime       显示当前时区

        timedatectl list-timezones    显示全部时区

        timedatectl     set-timezones  Asia/Shanghai     设置时区为上海

        cal          显示日历

        cal   -y    显示整年日历

        cal 5 1978      显示1978年5月日历

               PS:更多用法可以参见date --help

 

简单命令

        halt,poweroff             关机

        init 0                             关机

        reboot / init 6        重启

        reboot -f               强制重启,不调用shutdown

        reboot -p                     切断电源,相当于关机

        shutdown                     1分钟之后关机

        shutdown -r 10     wall 10分钟后重启,且给所有用户发送提醒信息

        shutdown -c                 退出shutdown

        shutdown -now            立即关机

        shutdown -r 21:30 21:30重启

        PS:linux提供了很多种关机方式,有时会有细微的差别,实际工作中服务器的

               关机重启还需慎重。

        

        tty          查看当前在哪个终端(tty1-6,pts/)

        who        查看当有所有的登录会话

        whoami  查看本终端当前用户

        w             系统当前所有的登录会话以及所做的操作

        

        ifconfig   查看网络链接

        nano /etc/motd      简单的文本编辑命令

        

        screen                          新建会话命令

        screen -S help              新建help会话

        screen -ls                     显示当前所有screen会话

        screen -x help               加入help会话

        ctrl+a,d                     脱离当前screen会话

        screen -r               恢复断开的screen会话

        exit                        离开会话

        PS:    screen命令的功能可以使不同终端使用同一个会话窗口,要求连接的终端

               接入同一台主机,且使用相同的账号登录。

        

        echo                            显示字符

        echo abc                显示abc,默认-E,会去掉\的解释作用

        echo -n  aaa                输出aaa,结束之后不换行

        echo -e  "aaa\a"          输出aaa且发出警告音,-e选项会开启\解释功能

               \b          退格键

               \c           最后不加换行字符,效果等于-n

               \n           换行且光标移到行首

               \r            回车,即光标移到行首,但不换行

               \t            插入tap

               \\            插入\字符

               \0nnn     插入八进制数nnn所代表的ASCII字符

               \xHH      插入十六进制数HH所代表的ASCII字符

        

单引号,双引号,反向单引号以及 $() 和 {} 的用法

        可以尝试查看执行以下命令观察输出

               echo echo $PS1     输出结果:echo \[\e[1;35m\][\u@\h \w]\$\[\e[0m\]

               echo "echo $PS1"   输出结果:同上

               echo 'echo $PS1'    输出结果:echo $PS1

               echo `echo $PS1`  输出结果:\[\e[1;35m\][\u@\h  \w]\$\[\e[0m\]

        可以看出:

               单引号以内皆为字符,不识别变量和命令

               双引号可以识别变量,但不识别命令操作

               反向单引号,可识别变量和命令

        但是如果需要嵌套输出命令结果:如:

               echo echo pwd      

               如果最终需要输出命令pwd的显示结果,

               echo `echo `pwd`` 是无法识别pwd的,即反向单引号无法嵌套使用

               echo `echo $(pwd)`       此为正确用法

               其中$(pwd) 等同于`pwd`   为调用命令输出的标准用法,且可嵌套

               如以上命令还可以写成:

               echo $(echo $(pwd))

        

        echo f{1,3,5}           显示f1 f3 f5

        touch f{1..10}          创建文件f1 f2..f10

        touch a{1..30..2}      创建文件a(1-30) 间隔为2

        rm file{00000..00100}      删除file00000-file00100

 

Tab键的使用

        命令补全:

        用户给定的字符串只有一条唯一对应的命令时候是,按tab键会直接补全命令

        如不唯一,单机tab无反应,再次按下tab键,则会给出所有匹配列表

        ifcon+tab键          ifconfig

        ifc+2tap         列出所有ifc开头的命令

        路径补全:

        在输入路径时如给出的字符串在上级目录对应唯一的一个目录或者文件,按下

        tap键,直接补全

        如不唯一,两下tap键会列出满足条件的所有目录或者文件列表

        

        cmd 2tap        所有子命令或文件补全

        ifc+2tap  所有以ifc开头的命令

        /2tap              显示所有根目录下一级目录,包括隐藏目录,但不显示文件

        ./2tap             当前目录下子目录,包括隐藏目录,不显示文件

        *2tap              当前目录下子目录,不包含隐藏目录,不显示文件

        ~2tap             显示所有用户列表

        $2tap              显示所有变量

        @2tap            /etc/hosts记录,sentos7不支持

        =2tap            相当于ls -A,sentos7不支持

 

命令行历史

        重复前一个命令,有4种方法

               使用上方向键,并回车执行

               按!!,并回车执行

               输入!-1,并回车执行

               按ctrl+P,并回车执行,相当于上方向键

        !:0        执行前一条命令,去除参数

        ctrl+n     显示当前历史中的的下一条命令,但不执行,相当于下方向键

        ctrl+j       执行当前命令

        ctrl+r      在命令历史中搜索命令

        ctrl+g     从历史搜索模式中退出

        !n          执行history命令输出对应序号n的命令

        !-n        执行history历史中倒数第n个命令

        !l           重复前一个以l开头的命令

        !?s       重复前一个包含s的命令

        !l:p        显示前一个以l开头的命令结果

        !$:p       打印输出!$(上一条命令的最后一个参数)的内容

        !*:p    打印输出!*(上一条命令的所有参数)的内容

        ^string   删除上一条命令中的第一个string字符串

        ^string1^string2    将上一条命令中的第一个string1替换成sting2

        !:gs/string1/string2   将上一条命令中的所有string1换成string2

        

        !$          调用前一个命令中最后一个参数

        esc,. 调用前一个命令中最后一个参数      

        alt+. 调用前一个命令中最后一个参数

        

        cmd !^    利用上一个命令的第一个参数做cmd的参数

        cmd !$     利用上一个命令的最后一个参数作为cmd的参数

        cmd !*     利用上一个命令的全部参数作为cmd的参数

        cmd !:n    利用上一个命令的第n个参数最为cmd的参数

        cmd !n:^ 调用第n条命令的第一个参数

        cmd !n:$ 调用第n条命令的最后一个参数

        cmd !n:m        调用第n条命令的第m参数

        cmd !n:* 调用第n条命令的全部参数

 

history 命令

        history                   显示命令历史记录

        history -c               清空历史记录

        history    -d nnn   删除历史记录中的第nnn个命令

        history    n            显示最近的n条记录

        history -a              追加本次会话新执行的命令历史列表至历史文件

        history -r        读历史文本附加到历史列表

        history -w              保存历史列表到指定的历史文件

        history -n              读历史文本中未读过的行到历史列表

        history -p $(cmd)  执行命令cmd,不生成历史,如不加引号,

                                           会直接打印命令

        history -s cmd              生成记录cmd,但是不执行,如用$(),命令会执行,

                                           执行的结果会记录到历史

        HISTSEZE               命令历史就的条数

        HISTFILE         指定历史文件,默认为~/.bash_history

        HISTFILESIZE   命令历史文件记录的条数

        HISTTIMEFORMAT="+%F %T“     历史记录显示时间

        HISTIGNORE="str1:str2*..."    忽略str1命令,str2开头的文件

        HISTCONTROL             环境变量

               =ignoredups 默认,忽略重复的命令,连续且相同为重复

               =ignorspace   忽略所有以空白开头的命令

               =ignoreboth  相当于dups+space

               erasedups      删除重复命令

        以上变量存放 /etc/profile 或~/.bashrc

 

bash的快捷键

        ctrl+l               清屏,相当于clear命令

        ctrl+o             执行当前命令,并重新显示本命令

        ctrl+s              阻止屏幕输出,锁定

        ctrl+q             允许屏幕输出

        ctrl+c             终止命令

        ctrl+z             挂起命令

        ctrl+a              光标移到命令行首,相当于Home

        ctrl+e              光标移动命令行尾,相当于end

        ctrl+f              光标向右移动一个字符

        ctrl+b            光标向左移动一个字符

        alt+f               光标向右移动一个单词尾

        alt+b             光标向左移动一个单词尾

        ctrl+u             从光标处删除至命令行首

        ctrl+k              从光标处删除至命令行尾

        alt+r              删除当前整行

        PS:还有部分快捷键用法以及图形界面快捷键用法并未列出,alt组合键经常

        和其他软件冲突

 

获得帮助

        ##获得帮助的能力决定了技术的能力。

        ##Linux提供了多种获得帮助的方式

        

        whatis             显示命令的简短描述,如:

        whatis ls

        makewhatis   sentos6安装whatis

        mandb           sentos7安装whatis

        

        help cmd       内部命令用法介绍

        cmd --help     外部命令用法介绍,有些命令是-h

        

        man bash       全部内部命令用法接受

        man -f          简短描述,等于whatis

        man cmd               获得命令cmd的man帮助

        man 5 cmd    看命令man帮助的第5章节

        man -k keyword    列出所有匹配的页面,使用wahtis数据库

        

        

        

        man章节

               #1:用户命令

               #2:系统调用

               #3:C库调用

               #4设备文件及特殊文件。

               #5:配置文件格式

               #6:游戏

               #7:杂项

               #8:管理类的命令

               #9:Linux内核API

        man帮助段落说明

               NAME            名称及简要说明

               SYNOPSIS      用法格式说明

                     []     可选内容

                     <>   必选内容

                     a丨b      二选一

                      {}     分组

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

               DESCRIPTION 详细说明

               OPTIONS               选项说明

               FILES             相关文件

               AUTHOR        作者

               COPYRIGHT   版本信息

               REPORTING BUGS        bug信息

               SEE ALSO      其他帮助参考

        

        man文档查看相关操作

               space      向下翻屏

               b            向上翻屏

               G            跳转至文件尾部

               1G          翻至文件首部

               q            退出

        搜索方式:

        /keyword       从当前位置向文件尾部搜索,不区分字符大小写

               n:下一个

               N:上一个

        ?keyword      从当前位置向文件首部搜索,不区分字符大小写

               n:下一个,与搜索方向同向

               N:上一个,与搜索方向反向

        

        导航info页

        info cmd 打开info帮助文档

               Home     显示主题首部

               enter      进入选定链接

               tab键      移动到下一个链接

               d            显示主题目录

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

               s             文字文本搜索

               q            退出info

        

        其他获得帮助的途径

        通过本地文档获取帮助

        /usr/share/doc/     大多数安装了的软件包的子目录,包括了这些软件的

                                           相关原理说明

        在线文档获取帮助

               比较大型的软件,可以上官方网站获取官方文档说明

        通过发行版官方的文档光盘或者网站可以获得

               安装指南、部署指南、虚拟化指南等

               红帽知识库和官方在线文档

               红帽全球技术支持服务

               

 

笔记整理完成时间:2018年3月31日14:44:00