Linux基础和帮助

用户登录
root用户
一个特殊的管理账户
也被称为超级用户
root接近完整的系统控制
对系统损害几乎有无限的能力
除非必要,不要登录为root
普通(非特权)用户
权限有限
造成损害的能力比较有限

终端terminal
    设备终端
        键盘鼠标显示器
    物理终端(/dev/console)
        控制台console
    虚拟终端(tty:teletypewriters,/dev/tty# #为[1-6])
        tty 可有n个,Ctrl+Alt+F[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,window manager,desktop
            Desktop:
                GNOME(C,图形库gtk)
                KDE(C++,图形库qt)
                XFCE(轻量级桌面)
    CLI:Command Line Interface
        shell程序:sh(bourn 史蒂夫·伯恩)csh tcsh ksh(kron) bash(bourn again shell)GPL zsh

什么是shell
    shell是Linux系统用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行
    shell也被称为LINUX的命令解释器(command interpreter)
    shell是一种高级程序设计语言

bash shell
    GNU Bourn-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是Linux标准的shell,与sh兼容
    CentOS默认使用
    显示当前使用的shell
        echo ${SHELL}
    显示当前系统使用的所有shell
        cat /etc/shells

命令提示符
    命令提示符:prompt
        [root@localhost ~]#
            # 管理员
            $ 普通用户
    显示提示符格式
        [root@localhost ~]# echo $PS1
    修改提示符格式
        PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
        \e \033                 \u 当前用户
        \h 主机名简称            \H 主机名
        \w 当前工作目录       \W 当前工作目录基名
        \t 24小时时间格式         \T 12小时时间格式
        \! 历史命令数            \# 开机命令历史数

执行命令
    输入命令后回车
        提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交内核分配资源将其运行起来
    在shell中可执行的命令有两类
        内部命令:由shell自带的,而且通过某命令形式提供
            help 内部命令列表
            enable cmd 启用内部命令
            enable -n cmd 禁用内部命令
            enable -n 查看所有禁用的内部命令
        外部命令:在文件系统路径下有对应的可执行程序文件
            查看路径:which -a | --skip-alias; whereis
    区别指定的命令是内部或外部命令
        type COMMAND

执行外部命令
    Hash缓存表
        系统出事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             清除缓存

命令别名
    显示当前shell进程所有可用的命令别名
        alias
    定义别名NAME,其相当于执行命令VALUE
        alias NAME='VALUE'
    在命令行中定义的别名,仅对当前shell进程有效
    如果想永久有效,要定义在配置文件中
        仅对当前用户:~/.bashrc
        对所有用户有效:/etc/bashrc
    编辑配置给出的新配置不会立即生效
    bash进程重新读取配置文件
        source /path/to/config_file
        ./path/to/config_file
    撤销别名:unalias
        unalias [-a] name [name...]
        -a 取消所有别名
    如果别名同原命令同名,如果要执行原命令,可使用
        \ALIASNAME
        "ALIASNAME"
        'ALIASNAME'
        command ALIASNAME
        /path/command

命令格式
    COMMAND [OPTIONS...] [ARGUMENTS...]
        选项:用于启用或关闭命令的某个或某些功能
            短选项:-c 例如:-l,-h
            长选项:--word 例如:--all,--human-readable
        参数:命令的作用对象,比如文件名,用户名等
    注意:
        多个选项以及参数和命令之间使用空白字符分隔
        取消命令可以用;符号分开
        一个命令可以用\分成多行

日期和时间
    Linux的两种时钟
        系统时钟:由Linux内核通过CPU的工作频率进行的
        硬件时钟:主板
    相关命令
        date 显示和设置系统时间
            date +%s
            date -d @1509536033
        hwclock,clock:显示硬件时钟
            -s,--hctosys 以硬件时钟为准,矫正系统时钟
            -w,--systohc 以系统时钟为准,矫正硬件时钟
    时区:/etc/localtime
    显示日历:cal -y

简单命令
    关机:halt,poweroff
    重启:reboot
        -f:强制,不调用shutdown
        -p:切断电源
    关机或重启:shutdown
        shutdown [OPTION]... [TIME] [MESSAGE]
            -r:reboot
            -h:halt
            -c;cancel
        TIME:无指定,默认相当于+1(CentOS7)
            now:立刻,相当于+0
            +m:相对时间表示法,几分钟之后;例如+3
            hh:mm:绝对时间表示,指明具体时间
    用户登录信息查看命令:
        whoami:显示当前登录有效用户
        who:系统当前所有的登录会话
        w:系统当前所有的登录会话及所做的操作
    nano 文本编辑
    screen命令:
        创建新screen会话
            screen -S [SESSION]
        加入screen会话
            screen -x [SESSION]
        退出并关闭screen会话
            exit
        剥离当前screen会话
            Ctrl + a,d
        显示所有已经打开的screen会话
            screen -ls
        恢复某screen会话
            screen -r [SESSION]
    echo命令
    功能:显示字符
    语法:echo [-neE][字符串]
    说明:echo会将输入的字符串送往标准输出。输出的字符串以空白字符隔开,并在最后加上换行号
    选项:
        -E (默认) 不支持 \ 解释功能
        -n 不自动换行
        -e 启用 \ 字符的解释功能
    显示变量
        echo "$VAR_NAME"    变量会替换,弱引用
        echo '$VAR_NAME'    变量不会替换,强引用
    启用命令选项-e,若字符串中出现一下字符,则特别加以处理,而不会将它当成一般文字输出
        \a      发出警告声
        \b      退格键
        \c      最后不加上换行符号
        \n      换行且光标移至行首
        \r      回车,即光标移至行首,但不换行
        \t      插入Tab
        \\      插入\字符
        \0nnn   插入nnn(八进制)所代表的ASCII字符
            echo -e '\033[43;31;5mmagedu\033[0m'
        \xHH    插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

字符集合编码
    ASCII码:
        计算机内部,所有信息最终都是一个二进制值。上世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了同一规定。ASCII码一共规定了128个字符的编码,占用了一个字节的后面7位,最前面的一位统一规定为0
    Unicode:
        用于表示世界上所有语言中的所有字符。每一个符号都给与一个独一无二的编码数字,Unicode是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode仅仅只是一个字符集,规定了每个字符对应的二进制代码,至于这个二进制代码如何存储则没有规定
    Unicode编码方案:
        UTF-8:变长,1到4个字节
        UTF-16:变长,2或4个字节
        UTF-32:固定长度,4个字节
    UTF-8 是目前互联网上使用最广泛的一种Unicode编码方式,可变长储存。使用1-4个字节表示一个字符,根据字符的不同变换长度。编码规则如下:
        对于单个字节的字符,第一位设为0,后面的7位对应这个字符的Unicode码。因此,对于英文中的0-127号字符,与ASCII码完全相同。者一位着ASCII码的文档可用UFT-8编码打开
        对于需要使用N个字节来表示的字符(N>1),第一个字节的前N位都设为1,第N+1位设为0,剩余的N-1个字节的前两位都设为10,剩下的二进制位则使用这个字符的Unicode码来填充
    编码转换和查询:
        http://www.chi2ko.com/tool/CJK.htm
        http://javawind.net/tools/native2ascii.jsp?action=transform
        http://tool.oschina.net/encode

命令行扩展、被括起来的集合
    命令行扩展:$()或``
        把一个命令的输出打印给另一个命令的参数
            echo "This system's name is $(hostname)"
            This system's name is server1.example.com
            echo "i am `whoami`"
            i am root
    括号扩展:{}
        打印重复字符串的简化形式
            echo file{1,3,5} 结果为:file1 file3 file5
            rm -f file{1,3,5}
            echo {1..10}
            echo {a..Z}
            echo {000..20..2}

tab键
    命令补全
        内部命令:
        外部命令:
            bash根据PATH环境变量定义的路径,自左而右在每个路径搜索以给定命令名命名的文件,第一次找到的命令即为要执行的命令
            用户给定的字符串只有一条唯一对应的命令,直接补全
            否则,再次Tab会给出列表
    路径补全
        把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
            如果唯一:则直接补全
            否则:再次Tab给出列表

命令行历史
    保存你输入的命令立式。可以用它来重复执行命令
    登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
    登录进shell后新执行的命令只会记录在缓存中;这些命令会在用户退出时"追加"至命令立式文件中
    重复前一个命令,有4中方法
        重复前一个命令使用上方向键,并回车执行
        按!!并回车执行
        输入!-1并回车执行
        按Ctrl+p并回车执行
    !:0 执行前一条命令(去除参数)
    Ctrl + n 显示当前历史中的下一条命令,但不执行
    Ctrl + j 执行当前命令
    !n 执行history命令输出对应序号n的命令
    !-n 执行history历史中倒数第n个命令
    !string 重复前一个以"string"开头的命令
    !?string 重复前一个包含string的命令
    !string:p 仅打印命令历史,而不执行
    !$:p 打印输出!$(上一条命令的最后一个参数)的内容
    !*:p 打印输出!*(上一条命令的所有参数)的内容
    ^string 删除上一条命令中的第一个string
    ^string1^string2 将上一条命令中的第一个string1替换为string2
    使用up(向上)的down(向下)键来上下浏览从前输入的命令
    Ctrl+r来在命令历史中搜索命令
        (reverse-i-search)`':
    Ctrl+g:从历史搜索模式退出
    要重新调用前一个命令中最后一个参数
        !$ 表示
        Esc,.(点击Esc键后松开,然后点击.键)
        Alt+.(按住Alt键的同时点击.键)

调用历史参数
    command !^  利用上一个命令的第一个参数做cmd的参数
    command !$  利用上一个命令的最后一个参数做cmd的参数
    command !*  利用上一个命令的全部参数做cmd的参数
    command !:n  利用上一个命令的第n个参数做cmd的参数
    command !n:^  调用第n条命令的第一个参数
    command !n:$  调用第n条命令的最后一个参数
    command !n:m  调用第n条命令的第m个参数
    command !n:*  调用第n条命令的所有参数
    command !string:^  从命令历史中搜索以string开头的命令,并获取它的第一个参数
    command !string:$  从命令历史中搜索以string开头的命令,并获取它的最后一个参数
    command !string:n  从命令历史中搜索以string开头的命令,并获取它的第n个参数
    command !string:*  从命令历史中搜索以string开头的命令,并获取它的所有参数

命令history
    history [-c] [-d offset] [n]
    history -anrw [filename]
    history -ps arg [arg...]
        -c:清空命令历史
        -d offset:删除历史中指定的第offset个命令
        n:显示最近的n条历史
        -a:追加本次会话新执行的命令历史列表至历史文件
        -r:读历史文件附加到历史列表
        -w:保存历史列表到指定的历史文件
        -n:读历史文件中未读过的行到历史列表
        -p:展开历史参数成多行,但不存在历史列表中
        -s:展开历史参数成一行,附加在历史列表后

命令历史相关环境变量
    HISTSIZE  命令历史记录的条数
    HISTFILE  指定历史文件,默认为~/.bash_history
    HISTFILESIZE  命令历史文件记录历史的条数
    HISTTIMEFORMAT= "%F%T"  显示时间
    HISTIGNORE= "str1:str2*:..."  忽略str1命令,str2开头的历史
    控制命令历史的记录方式:
        环境变量:HISTCONTROL
            ignoredups  默认,忽略重复的命令,连续且相同为"重复"
            ignorespace  忽略所有以空白开头的命令
            ignoreboth  相当于ignoredups,ignorespace的组合
            erasedups  删除重复命令
    export 变量名="值"
    存放在/etc/profile 或 ~/.bash_profile

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+xx 光标在命令行首和光标之间移动
    Ctrl+u  从光标处删除至命令行首
    Ctrl+k  从光标处删除至命令行尾
    Alt+r   删除当前整行
    Ctrl+w  从光标处向左删除至单词首
    Alt+d   从光标处向右删除至单词尾
    Ctrl+d  删除光标处的一个字符
    Ctrl+h  删除光标前的一个字符
    Ctrl+y  将删除的字符粘贴至光标后
    Alt+c   从光标处开始向右更改为首字母大写的单词
    Alt+u   从光标处开始,将右边一个单词更改为大写
    Alt+l   从光标处开始,将右边一个单词更改为小写
    Ctrl+t  交换光标处和之前的字符位置
    Alt+t   交换光标处和之前的单词位置
    Alt+N   提示输入指定字符后,重复显示该字符N次
    注意:Alt组合快捷键经常和其他软件冲突

获得帮助
    获取帮助的能力决定拿了技术的能力!
    多层次的帮助
        whatis
        command --help
        man and info
        /usr/share/doc/
        Red Hat documentation
        其他网站和搜索

whatis
    显示命令的简短描述
    使用数据库
    刚安装后不可立即使用
    makewhatis | mandb制作数据库
    使用示例:
        whatis cal 或 man -f cal

命令帮助
    内部命令:help COMMAND 或 man bash
    外部命令:
        (1) COMMAND --help
            COMMAND -h
        (2) 使用手册(manual)
            man COMMAND
        (3) 信息页
            info COMMAND
        (4) 程序自身的帮助文档
            README
            INSTALL
            ChangeLog
        (5) 程序官方文档
            官方站点:Documentation
        (6) 发行版的官方文档
        (7) Google

--help和-h选项
    显示用法总结和参数列表
    使用的大多数,但并非所有的
    示例:
        date --help
        Usage:date [OPTION]...[+FORMAT] or:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
        [] 表示可选项
        CAPS或<> 表示变化的数据
        ...表示一个列表
        x|y|z 的意思是"x或y或z"
            -abc的意思是-a -b -c
        {} 表示分组

man命令
    提供命令帮助的文件
    手册页存放在/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:用户命令
    2:系统调用
    3:C库调用
    4:设备文件及特殊文件
    5:配置文件格式
    6:游戏
    7:杂项
    8:管理类的命令
    9:Linux内核API

man帮助段落说明
    帮助手册中的段落说明:
        NAME 名称及简要说明
        SYNOPSIS 用法格式说明
            []      可选内容
            <>      必选内容
            a|b     二选一
            {}      分组
            ...     同一内容可出现多次
        DESCRIPTION 详细说明
        OPTIONS 选项说明
        EXAMPLES 选项说明
        FILES 相关文件
        AUTHOR 作者
        COPYRIGHT 版本信息
        PERORTING BUGS bug信息
        SEE ALSO 其它帮助参考

man帮助
    查看man手册页
        man [章节] keyword
    列出所有帮助
        man -a keyword
    搜索man手册
        man -k keyword 列出所有匹配的页面
        使用 whatis 数据库
    相当于whatis
        man -f keyword
    打印man帮助文件的路径
        man -w [章节] keyword

man命令
    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搜索
    /KEYWORD:
        以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写
        n:下一个
        N:上一个
    ?KEYWORD:
        以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写
        n:跟搜索命令同方向,上一个
        N:跟搜索命令反方向,下一个

info
    man常用于命令参考,GNU工具info适合通用文档参考
    没有参数,列出所有的页面
    info页面的结构就像一个网站
    每一页分为"节点"
    链接节点之前*
    info [命令]

导航info页
    方向键,PgUp,PgDn导航
    Tab键移动到下一个链接
    d 显示主题目录
    Home 显示主题首部
    Enter进入 选定链接
    n/p/u/l 进入下/前/上一层/最后一个链接
    s 文字 文本搜索

通过本地文档获取帮助
    System -> help (CentOS 6)
    Applications -> documentation -> help (CentOS 7)
        提供的官方使用指南和发行注记
    /usr/share/doc目录
        多数安装了的软件包的子目录,包括了这些软件的相关原理说明
        常见文档:README INSTALL CHANGES
        不适合其他地方的文档的位置
            配置文件范例
            HTML/PDF/PS 格式的文档
            授权书详情

通过在线文档获取帮助
    第三方应用官方文档
        http://www.nginx.org
        http://tomcat.apache.org
        http://httpd.apache.org
        http://www.python.org
    通过发行版官方的文档光盘或网站可以获得
        安装指南、部署指南、虚拟化指南等
        红帽知识库和官方在线文档
            http://kbase.redhat.com
            http://www.redhat.com/docs
            http://access.redhat.com

红帽全球技术支持服务
    rhn.redhat.com或者本地卫星服务器/代理服务器
        基于网络管理的服务器
        RHN代理服务器为RHN流量提供缓存
        RHN卫星服务器提供资助的RHN
    RHN账户
        为及其注册和基于网络管理的RHN用户
        用于系统自动验证的系统ID
    sosreport
        手机所有系统上的日志信息的工具,并自动达成压缩包,方便技术支持人员和红帽全球支持提供分析问题依据

网站和搜索
    http://tldp.org
    http://www.slideshare.net
    http://www.google.com
        Openstack filetype:pdf
        rhca site:redhat.com/docs

你可能感兴趣的:(Linux基础和帮助)