马哥Linux

2-Linux基础

2020-02-19  本文已影响0人  Liang_JC

本章内容

◆ 用户登录
◆ 终端
◆ Shell介绍
◆ 执行命令
◆ 简单命令
◆ Tab键补全
◆ 命令行历史
◆ bash快捷键
◆ whatis
◆ command --help
◆ man and info
◆ 本地帮助文档/usr/share/doc/
◆ 官网在线文档
◆ 其它网站和搜索

演示

uname -r            #显示核心版本  
whoami              #显示当前用户名  
who                 #显示有谁在登陆  
who -r              #查看运行等级  
lsb_release -a      #查看当前系统版本  
free                #查看内存使用情况  
init 3              #切换模式(3单用户,5图形界面)  
runlevel            #运行等级  
ifconfig            #查看IP地址  
tty                 #查看当前终端  

id      #查看UID号(centos6:500,centos7:1000)  
    -u  #账号名

终端

设备终端:键盘、鼠标、显示器  
物理终端:/dev/console  
          控制台console  
串行终端:/dev/ttyS#  
          ttyS  
虚拟终端:tty:teletypewriters, /dev/tty#  
          tty可有N个,ctrl+alt+F#  
图形终端:/dev/tty7 startx,xwindows  
        centos6:ctrl+alt+F7  
        centos7:在哪个终端启动,即位于哪个虚拟终端  
伪终端: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 程序  

echo $SHELL         #查看当前shell类型  
cat /etc/shells     #查看支持的shell类型  
hostname            #查看主机名  
主机名示例:  
    bj-yz-k8s-node1-100-10.magedu.com  
    北京-yz-服务-节点-IP第三位-IP第四位.公司域名

命令提示符:

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

    vim /etc/profile.d/env.sh       #centos全局生效  
        PS1="\[\e[34m\][\u@\h \W]\\$\[\e[0m\]"      #centos6  
        PS1="\[\e[36m\][\u@\h \W]\\$\[\e[0m\]"      #centos7  

    pstree      #查看运行的shell

shell内部命令

cd

shell外部命令

/bin /sbin 下可执行的二进制文件  

    type command        #查看命令属于内部还是外部  
    enable command      #启用内部命令  
        -n command      #禁用内部命令  

whereis         #查找外部命令所在目录  
echo $PATH      #显示所有外部命令目录  
hash            #查看执行过的外部命令(缓存表)  
    -d          #删除执行过的外部命令  
    -r          #删除所有执行过的外部命令  
    -l          #显示完整路径

命令别名

alias       #别名  
unalias     #删除别名

命令执行过程

1 别名  
2 内部  
3 外部命令hash表  
4 外部命令PATH  

bash重新读取配置文件  
    source .bashrc  
    . .bashrc  

如果别名与原命同名,要执行原命令,可使用  
    \aliasname  
    "aliasname"  
    'aliasname'  
    command aliasname  
    /path/command

命令格式

COMMAND [OPTIONS...][ARGUMENTS...]  
    选项:用于启动或关闭命令的某个或某些功能  
        短选项:-c -l -h  
        长选项:--word --all  
取消和结束命令执行 ctrl+c ctrl+d  
多个命令可以用";"分开  
一个命令可以用\分成多行

日期和时间

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

date +%F        #格式:2019-12-05  
date +%T        #时间:16:01:02  
    %a          #星期缩写  
    %A          #星期全写  
    %b          #月份缩写  
    %B          #月份全写  
    %d "+|- day"            #指定前后几天  
    %s          #时间戳  
    %U          #一年中的第几周(sunday为第一周)  
    %w          #一年中的第几天  
    %W          #一年中的第几周(monday为第一周)  
date -s "2019-12-05 17:05:10"       #设置系统时间

简单命令

关机: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 最后不加上换行符号  
    \e escape,相当于\033  
    \n 换行且光标移至行首  
    \r 回车,即光标移至行首,但不换行  
    \t 插入tab  
    \\ 插入\字符  
    \0nnn 插入nnn(八进制)所代表的ASCII字符  
        echo -e '\033[43;31;5mmagedu\e[0m'  
    \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

命令行扩展、被括起来的集合

命令行扩展:$( ) 或 ``  
    把一个命令的输出打印给另一个命令的参数  
    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}

命令行历史

保存你输入的命令历史。可以用它来重复执行命令  
登录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  
!:gs/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组合快捷键经常和其它软件冲突

简单命令

关机: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:绝对时间表示,指明具体时间  

w:显示当前所有的登录会话及所做的操作  

screen  
    ls      #查看  
    -r      #恢复终端  
    -x      #加入会话  
    ctrl+a+d    #临时剥离  

echo        #显示字符  
    语法:echo [-neE][字符串]  
    选项  
        -n  不自动换行  
        -e  启动\字符的解释功能  
        -E  默认,不支持\解释功能  

    echo -e "\a"        #发声  
    \b      退格键  
    \c      最后不加上换行符号  
    \e      escape,相当于\033  
    \n      换行且光标移至首行  
    \r      回车,即光标移至首行,但不换行  
    \t      插入tab  
    \\      插入\字符  
    \0nnn   插入nnn(八进制)所代表的ASCII字符  
        echo -e '\033[43;31;5mmagedu\e[0m'  
    \xHH    插入HH(十六进制)所代表的ASCII数字(man 7 ascii)  

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

!command        #执行上一条命令  
!ls             #执行最后一条以ls开头的命令  
!?ls -l         #执行上一条包换ls -l的命令  
^ls^ll          #将上一条命令中第一个ls替换为ll  

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  

echo $HISTSIZE  #显示历史条数  
nano /etc/profile #修改历史条数

帮助

whatis      #显示简单帮助描述  
    数据库 #刚安装完时没有生成,过一段时间会自动生成  
    手动生成数据库  
        makewhatis  #centos6  
        mandb       #centos7

命令帮助

内部命令: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
hexdump     #以16进制查看文件
-C          #显示地址位

练习

1、显示当前时间,格式:2016-06-18 10:20:30
    date +"%F %T"  
2、显示前天是星期几**
    date -d "-2 day" +%A  
3、设置当前日期为2019-08-07 06:05:10
    data -s "2019-08-07 06:05:10 "

帮助

内部命令  
    help command    #查看命令帮助  
    man command     #查看命令详细帮助文档  
外部命令  
    command --help

man帮助

章节  
    man 1 man  
        1:用户命令  
        2:系统调用  
        3:C库调用  
        4:设备文件及特殊文件  
        5:配置文件格式  
        6:游戏  
        7:杂项  
        8:管理类的命令  
        9:linux内核API

man帮助段落说明

NAME            名称及简要说明  
SYNOPSIS        用法格式说明  
    []      可选内容  
    <>      必选内容  
    a|b     二选一  
    {}      分组  
    ...     同一内容可出现多次  
DESCRIOTION     详细说明  
OPTIONS         选项说明  
EXAMPILES       示例  
FILES           相关文件  
AUTHOR          作者  
COPYRIGHT       版本信息  
REPORTING BUGS  bug信息  
SEE ALSO        其他帮助参考  

/etc/issue      #登陆信息  
/etc/motd       #登陆后信息  

echo $LANG      #查看当前语言  
localectl set-locale LANG=zh_CN.UTF-8   #修改语言为中文  
man-pages-zh-CN     #帮助中文包  

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

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

/usr/share/doc      #man帮助文件路径  

xxd     #16进制工具

时区设置

timedatectl set-timezone Asia/Shanghai      #centos7  
/usr/share/zoneinfo/                        #时区目录  
cal     #日历  
    -y  #整年  
cal 9 1752  #典故(少了3-13号)

练习

1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间
vim /etc/issue  
    \S  
    Kernel \r on an \m  
    Hostname: \n  
    Time: \t  
    tty: \l  
2、今天18:30自动关机,并提示用户
shutdown -h 18:30
上一篇 下一篇

猜你喜欢

热点阅读