第一周(1)

Linux基础入门

内容概述:

  • 用户

  • 终端

  • Shell介绍

  • 执行命令

  • 简单命令

  • Tab键补全

  • 命令行历史

1.Linux基础

1.1用户类型

  • root用户

    超级用户,除非必要,不要用root登陆

    对系统损害几乎无限

  • 普通(非特权)用户

    权限有限

    造成的损害能力比较有限

    一般用普通用户登陆

1.2终端terminal

1.2.1终端类型
  • 控制台终端:/dev/console

  • 串行终端:/dev/ttyS#

  • 虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#

  • 图形终端:startx, xwindows

    • CentOS 6: Ctrl + Alt + F7

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

      伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接

1.2.2 查看当前所在终端
  • tty -- 查看当前所在终端

    [root@centos8 ~]# tty
    /dev/pts/0
    

1.3 交互式接口

1.3.1 交互式接口类型
  • GUI:Graphic User Interface
    X protocol, window manager, desktop
    Desktop:
    GNOME (C, 图形库gtk),
    KDE (C++,图形库qt)
    XFCE (轻量级桌面)
  • CLI:Command Line Interface
    shell程序
1.3.2 什么是shell

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

1.3.3各种Shell

  • sh:Steve Bourne
  • bash:Bourne-Again Shell,GPL,CentOS 和 Ubuntu 默认使用
  • csh:c shell , C 语言风格
  • tcsh
  • ksh :Korn Shell, AIX 默认 shell
  • zsh: MacOS默认shell
1.3.4 bash shell

GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与
sh兼容

显示当前使用的shell

[root@centos8 ~]# echo ${SHELL}
/bin/bash

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

[root@centos8 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

1.4 设置主机名

hostname NAME

centos8 centos7 Ubutu1804 设置主机名时不能带下滑线_,但是支持-

[root@centos8 ~]# hostname ks8-node1
[root@centos8 ~]# 
[root@centos7 ~]# hostname ks8_node1
hostname: the specified hostname is invalid

[root@centos8 ~]# hostname ks8_node1
hostname: the specified hostname is invalid

root@Ubutu1804:~#  hostname ks8_node1
hostname: the specified hostname is invalid

centos6设置主机名时能带下滑线_可以通过,但是不建议使用

1.5 命令提示符

命令提示符:prompt

[root@centos8 ~]# 

# 管理员
$ 普通用户

显示提示符格式

[root@centos8 ~]# echo $PS1
[\u@\h \W]\$

暂时修改提示符格式范例 ,退出系统时消失

PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\
[\e[0m\]\\$"

提示符格式说明:

  • \e 控制符\033
  • \u 当前用户
  • \h 主机名简称
  • \H 主机名
  • \w 当前工作目录
  • \W 当前工作目录基名
  • \t 24小时时间格式
  • \T 12小时时间格式
  • ! 命令历史数
  • # 开机后命令历史数

范例:CentOS持久保存提示符格式相关变量 PS1 ,写入/etc/profile.d/env.sh

[root@centos8 ~]# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\
> [\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' > /etc/profile.d/env.sh

[root@centos8 ~]# exit

范例:Ubuntu持久保存提示符格式相关变量 PS1 ,写入.bashrc

root@Ubutu1804:~# ls -a
.  ..  .bash_history  .bashrc  .cache  .gnupg  .profile  .viminfo
root@Ubutu1804:~# echo 'PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\
> > [\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"' >> .bashrc
root@Ubutu1804:~# exit

1.6 执行命令

1.6.1 执行命令过程

输入命令后回车,提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源 将其运行起来

1.6.2 shell中可执行的两类命令
  • 内部命令:由shell自带的,而且通过某命令形式提供 ,系统已启动就在内存中运行

    • ps aux|grep bash 可以看到正在运行的bash命令

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

    • 外部命令存放的路径

    • [root@centos8 ~]# echo $PATH
      /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

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

​ 如果是在bash中就是内部命令,内部命令依赖于shell,shell不同,内部命令不同

type COMMAND

范例: 查看是否存在对应内部和外部命令

[root@centos8 ~]# type uname
uname is /usr/bin/uname   (显示路径就是外部命令)
[root@centos8 ~]# type help
help is a shell builtin  (内部命令)

同时是内部命令和外部命令

[root@centos8 ~]# type -a echo
echo is a shell builtin
echo is /usr/bin/echo
1.6.2.1 内部命令相关
help 内部命令列表
[root@centos8 ~]# help
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.

A star (*) next to a name means that the command is disabled.

 job_spec [&]                                                   history [-c] [-d offset] [n] or history -anrw [filename] or>
 (( expression ))                                               if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS;>
 . filename [arguments]                                         jobs [-lnprs] [jobspec ...] or jobs -x command [args]
 :                                                              kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... >
 [ arg... ]                                                     let arg [arg ...]
 [[ expression ]]                                               local [option] name[=value] ...
 alias [-p] [name[=value] ... ]                                 logout [n]
 bg [job_spec ...]                                              mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [>
 bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u nam>  popd [-n] [+N | -N]
 break [n]                                                      printf [-v var] format [arguments]
 builtin [shell-builtin [arg ...]]                              pushd [-n] [+N | -N | dir]
 caller [expr]                                                  pwd [-LP]
 case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac     read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N>
 cd [-L|[-P [-e]] [-@]] [dir]                                   readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [->
 command [-pVv] command [arg ...]                               readonly [-aAf] [name[=value] ...] or readonly -p
 compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat]>  return [n]
 complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action]>  select NAME [in WORDS ... ;] do COMMANDS; done
 compopt [-o|+o option] [-DE] [name ...]                        set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
 continue [n]                                                   shift [n]
 coproc [NAME] command [redirections]                           shopt [-pqsu] [-o] [optname ...]
 declare [-aAfFgilnrtux] [-p] [name[=value] ...]                source filename [arguments]
 dirs [-clpv] [+N] [-N]                                         suspend [-f]
 disown [-h] [-ar] [jobspec ... | pid ...]                      test [expr]
 echo [-neE] [arg ...]                                          time [-p] pipeline
 enable [-a] [-dnps] [-f filename] [name ...]                   times
 eval [arg ...]                                                 trap [-lp] [[arg] signal_spec ...]
 exec [-cl] [-a name] [command [arguments ...]] [redirection >  true
 exit [n]                                                       type [-afptP] name [name ...]
 export [-fn] [name[=value] ...] or export -p                   typeset [-aAfFgilnrtux] [-p] name[=value] ...
 false                                                          ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
 fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [comm>  umask [-p] [-S] [mode]
 fg [job_spec]                                                  unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMANDS; done                   unset [-f] [-v] [-n] [name ...]
 for (( exp1; exp2; exp3 )); do COMMANDS; done                  until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name () { COMMANDS ; }         variables - Names and meanings of some shell variables
 getopts optstring name [arg]                                   wait [-n] [id ...]
 hash [-lr] [-p pathname] [-dt] [name ...]                      while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]                                      { COMMANDS ; }

enable 管理内部命令
  • enable cmd 启用内部命令
  • enable –n cmd 禁用内部命令
  • enable –n 查看所有禁用的内部命令 (基本不用)
1.6.2.2 执行外部命令
  • 如果已经确定是外部命令,可以同过which命令查看路径

    [root@centos8 ~]# which hostname
    /usr/bin/hostname
    

Hash缓存表

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的
路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不
存在,将会去PATH路径下寻找,利用hash缓存表可大大提高命令的调用速率

hash 命令常见用法

  • hash 显示hash缓存

    [root@centos8 ~]# hash
    hits	command
       1	/usr/bin/hostname
       2	/usr/bin/ps
       2	/usr/bin/ls
    
  • hash -d name 清除name缓存

  • hash -r 清除缓存

1.6.3 命令别名

​ 对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行

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

    [root@centos8 ~]# alias
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
    alias xzegrep='xzegrep --color=auto'
    alias xzfgrep='xzfgrep --color=auto'
    alias xzgrep='xzgrep --color=auto'
    alias zegrep='zegrep --color=auto'
    alias zfgrep='zfgrep --color=auto'
    alias zgrep='zgrep --color=auto'
    
  • 定义别名NAME,其相当于执行命令VALUE (临时生效)

    alias NAME='VALUE'
    alias NAME="VALUE"
    
    [root@centos8 ~]# alias cdnetwork='cd /etc/sysconfig/network-scripts/'
    [root@centos8 ~]# alias
    alias cdnetwork='cd /etc/sysconfig/network-scripts/'
    alias cp='cp -i'
    

    取消别名:unalias

    unalias [-a] name [name ...]
    unalias -a #取消所有别名

    unalias cdnetwork 
    

    注意:在命令行中定义的别名,仅对当前shell进程有效
    如果想永久有效,要定义在配置文件中

    • 仅对当前用户:~/.bashrc (推荐,别名一般都是个性化设置)
    • 仅对当前用户:~/.bashrc (不推荐)

    编辑配置给出的新配置不会立即生效,bash进程重新读取配置文件

    source /path/to/config_file
    .      /path/to/config_file
    
[root@centos8 ~]# alias cdnetwork='cd /etc/sysconfig/network-scripts/'
[root@centos8 ~]# alias
alias cdnetwork='cd /etc/sysconfig/network-scripts/'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@centos8 ~]# ls -a
.                .bash_history  .bashrc  .cshrc   Documents  .ICEauthority         Music     Public     Videos
..               .bash_logout   .cache   .dbus    Downloads  initial-setup-ks.cfg  Pictures  .tcshrc
anaconda-ks.cfg  .bash_profile  .config  Desktop  .esd_auth  .local                .pki      Templates
[root@centos8 ~]# vim .bashrc
[root@centos8 ~]# .
-bash: .: filename argument required
.: usage: . filename [arguments]
[root@centos8 ~]# exit

vim .bashrc :编辑.bashrc文件

# .bashrc
  
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cdnetwork='cd /etc/sysconfig/network-scripts/'(加入这一行)


# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

如果别名同原命令同名,如果要执行原命令,可使用

\ALIASNAME
“ALIASNAME”
‘ALIASNAME’
command ALIASNAME
/path/commmand #只适用于外部命令

命令优先级

别名>内部命令>外部命令

1.6.4命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]

选项:用于启用或关闭命令的某个或某些功能
短选项:UNIX 风格选项,-c 例如:-l, -h

uname -r

长选项:GNU风格选项,--word 例如:--all, --human

ls -all

BSD风格选项: 一个字母,例如:a,使用相对较少

ps a

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

注意:

  • 多个选项以及多参数和命令之间使用空白字符分隔

  • 取消和结束命令执行:Ctrl+c,Ctrl+d

  • 多个命令可以用 ";" 符号分开

    [root@centos8 ~]# uname -r;hostname;lsblk;
    4.18.0-80.el8.x86_64
    centos8.magedu.org
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  200G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0  100G  0 part /
    ├─sda3   8:3    0   50G  0 part /data
    ├─sda4   8:4    0    1K  0 part 
    └─sda5   8:5    0    2G  0 part [SWAP]
    sr0     11:0    1  6.7G  0 rom 
    
  • 一个命令可以用\分成多行 (多用于长命令)

    [root@centos8 ~]# l\
    > sb\
    > lk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  200G  0 disk 
    ├─sda1   8:1    0    1G  0 part /boot
    ├─sda2   8:2    0  100G  0 part /
    ├─sda3   8:3    0   50G  0 part /data
    ├─sda4   8:4    0    1K  0 part 
    └─sda5   8:5    0    2G  0 part [SWAP]
    sr0     11:0    1  6.7G  0 rom  
    

1.7 常见命令

1.7.1 查看硬件信息
1.7.1.1 查看cpu

lscpu命令可以查看cpu信息

cat /proc/cpuinfo也可看查看到

[root@centos8 ~]# lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              2
On-line CPU(s) list: 0,1
Thread(s) per core:  1
Core(s) per socket:  1
Socket(s):           2
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               69
Model name:          Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
Stepping:            1
CPU MHz:             2400.003
BogoMIPS:            4800.00
.........


1.7.1.2 查看内存大小
[root@centos8 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1849464      701860      816796        3376      330808      988276
Swap:       2097148       12812     2084336
[root@centos8 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.8Gi       685Mi       797Mi       3.0Mi       323Mi       965Mi
Swap:         2.0Gi        12Mi       2.0Gi
1.7.1.3 查看硬盘和分区情况
[root@centos8 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  100G  0 part /
├─sda3   8:3    0   50G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    2G  0 part [SWAP]
sr0     11:0    1  6.7G  0 rom
1.7.2 查看系统版本信息
1.7.2.1 查看内核版本
[root@centos6 ~]# uname -r
2.6.32-754.el6.x86_64

[root@centos7 ~]# uname -r
3.10.0-1062.el7.x86_64

[root@centos8 ~]# uname -r
4.18.0-80.el8.x86_64

root@Ubutu1804:~# uname -r
4.15.0-76-generic
1.7.2.2 查看操作系统发行版本
[root@centos8 ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 


[root@centos8 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"


[root@centos8 ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 8.0.1905 (Core) 
Release:	8.0.1905
Codename:	Core


1.7.3 日期和时间

Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板

相关命令

  • date 显示和设置系统时间

  • clock,hwclock: 显示硬件时钟

    -s, --hctosys 以硬件时钟为准,校正系统时钟

    -s, --hctosys 以硬件时钟为准,校正系统时钟

1.7.4 关机和重启

关机 :

  • halt
  • poweroff

重启 :

​ reboot

​ -f:强制,不调用shutdown

​ -p:切断电源

关机或重启:shutdown

shutdown [OPTION]... [TIME] [MESSAGE]

-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)

  • now: 立刻,相当于+0

  • +#: 相对时间表示法,几分钟之后;例如 +3

  • hh:mm: 绝对时间表示,指明具体时间

1.7.5 用户登录信息查看命令
  • whoami: 显示当前登录有效用户

    [root@centos7 ~]# whoami
    root
    
    [root@centos7 ~]# who am i
    root     pts/0        2020-05-31 14:49 (10.0.0.1)
    
  • who: 系统当前所有的登录会话

    root     tty5         2020-05-29 11:30
    root     pts/0        2020-05-31 14:49 (10.0.0.1)
    
  • w: 系统当前所有的登录会话及所做的操作

    [root@centos7 ~]# w
     01:25:59 up 1 day, 55 min,  3 users,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty5                      Fri11   10:36m  1.63s  1.63s -bash
    root     pts/0    10.0.0.1         14:49    7.00s  0.69s  0.08s w
    
1.7.6 文本编辑
  • nano 工具可以实现文本的编辑,上手容易,适合初学者
  • gedit 工具是图形工具
  • vi
  • vim
1.7.7 会话管理

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命
令。用户与计算机的这种临时的交互,称为一次"会话"(session)
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话
结束,会话内部的进程也会随之终止,不管有没有运行完
一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次
登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消
失了。为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到
以后需要的时候,再让会话"绑定"其他窗口

终端复用器软件就是会话与窗口的"解绑"工具,将它们彻底分离。
(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
(2) 它可以让新窗口"接入"已经存在的会话。
(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
(4)它还支持窗口任意的垂直和水平拆分

类似的终端复用器还有Screen,Tmux

1.7.7.1 screen

​ 利用screen 可以实现会话管理,如:新建会话,共享会话等

​ 注意:CentOS7 来自于base源,CentOS8 来自于epel源

​ 在一个窗口中打开ping命令,用来模仿备份

[root@centos8 ~]# ping www.baidu.com
PING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=1 ttl=128 time=26.1 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=2 ttl=128 time=25.10 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=3 ttl=128 time=24.7 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=4 ttl=128 time=28.2 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=5 ttl=128 time=31.5 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=6 ttl=128 time=35.2 ms
......

如果关掉当前窗口,ping命令中断了,就相当于备份命令中断了

[root@centos8 ~]# ps aux|grep ping
gdm        2110  0.0  0.3 283396  6352 tty1     Sl+  06:24   0:00 /usr/libexec/gsd-housekeeping
root       2623  0.0  0.0  12112  1044 pts/1    S+   06:39   0:00 grep --color=auto ping

如何在窗口关闭的情况下,ping命令继续进行,也就是备份命令继续进行?

就需要会话管理工具

安装screen

[root@centos7 ~]# yum -y install screen

运行screen命令,窗口关闭了,可以继续备份

[root@centos7 ~]# screen

关闭窗口

[root@centos7 ~]# ping www.baidu.com
PING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=1 ttl=128 time=67.5 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=2 ttl=128 time=32.6 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=3 ttl=128 time=45.8 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=4 ttl=128 time=29.0 ms

进程还在运行

[root@centos7 ~]# ps aux|grep ping
root      71867  0.2  0.1 149988  1984 pts/2    S+   10:09   0:00 ping www.baidu.com
root      71871  0.0  0.0 112712   956 pts/0    S+   10:09   0:00 grep --color=auto ping

恢复某screen会话

screen -r [SESSION]
1.7.7.2 tmux

mux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是 Ctrl+b ,即先按下
Ctrl+b ,快捷键才会生效。帮助命令的快捷键是 Ctrl+b ? 然后,按下 q 键,就可以退出帮助
新建会话
第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0
号会话、1 号会话。使用编号区分会话,不太直观,更好的方法是为会话起名。下面命令新建一个指定
名称的会话。

运行tmux

[root@centos8 ~]# tmux

模拟备份,关闭窗口

[root@centos8 ~]# ping www.baidu.com
PING www.a.shifen.com (163.177.151.109) 56(84) bytes of data.
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=1 ttl=128 time=32.0 ms
64 bytes from 163.177.151.109 (163.177.151.109): icmp_seq=2 ttl=128 time=52.9 ms

进程还在运行

[root@centos8 ~]# ps aux|grep ping
gdm        2110  0.0  0.3 283396  6352 tty1     Sl+  06:24   0:00 /usr/libexec/gsd-housekeeping
root       6120  0.1  0.2  54588  4932 pts/4    S+   10:16   0:00 ping www.baidu.com
root       6179  0.0  0.0  12112  1096 pts/5    S+   10:18   0:00 grep --color=auto ping
1.7.8 输出信息echo

echo :可以将后面跟的字符进行输出

功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加
上换行号

语法:

echo [-neE][字符串]

选项:

  • E (默认)不支持 \ 解释功能

    [root@centos8 ~]# echo hello 
    hello
    
  • -n 不自动换行

    [root@centos8 ~]# echo -n hello sky
    hello sky[root@centos8 ~]#
    
  • -e 启用 \ 字符的解释功能

    [root@centos8 ~]# echo -e "\a"
    

    启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

    • \a 发出警告声

    • \b 退格键

    • \c 最后不加上换行符号

    • \e escape,相当于\033

    • \n 换行且光标移至行首

      [root@centos8 ~]# echo -e "a\nb"
      a
      b
      
    • \r 回车,即光标移至行首,但不换行

    • \t 插入tab

      [root@centos8 ~]# echo -e "a\tb"
      a	b
      
    • \ 插入\字符

    • \0nnn 插入nnn(八进制)所代表的ASCII字符

    • \xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii

1.8 字符集和编码

查看ascii码表
[root@centos8 ~]# man ascii

===========================================================================================================

ASCII(7)                                         Linux Programmer's Manual                                        ASCII(7)

NAME
       ascii - ASCII character set encoded in octal, decimal, and hexadecimal

DESCRIPTION
       ASCII  is the American Standard Code for Information Interchange.  It is a 7-bit code.  Many 8-bit codes (e.g., ISO
       8859-1) contain ASCII as their lower half.  The international counterpart of ASCII is known as ISO 646-IRV.

       The following table contains the 128 ASCII characters.

       C program '\X' escapes are noted.

       Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
       ────────────────────────────────────────────────────────────────────────
       000   0     00    NUL '\0' (null character)   100   64    40    @
       001   1     01    SOH (start of heading)      101   65    41    A
       002   2     02    STX (start of text)         102   66    42    B
       003   3     03    ETX (end of text)           103   67    43    C
       004   4     04    EOT (end of transmission)   104   68    44    D
       005   5     05    ENQ (enquiry)               105   69    45    E
       006   6     06    ACK (acknowledge)           106   70    46    F
       007   7     07    BEL '\a' (bell)             107   71    47    G
       010   8     08    BS  '\b' (backspace)        110   72    48    H
       011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
       012   10    0A    LF  '\n' (new line)         112   74    4A    J
       013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
       014   12    0C    FF  '\f' (form feed)        114   76    4C    L
       015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
       016   14    0E    SO  (shift out)
       116   78    4E    N

Linux 中的文件与window文件的不同

[root@centos8 ~]# cat f1.txt
A
B
c
[root@centos8 ~]# cat win.txt
A
B
c[root@centos8 ~]# hexdump -C win.txt 
00000000  41 0d 0a 42 0d 0a 63                              |A..B..c|
00000007
[root@centos8 ~]# hexdump -C f1.txt 
00000000  41 0a 42 0a 63 0a                                 |A.B.c.|
00000006

1.10 tab 键补全

​ tab键可以实现命令及路径等补全,提高输入效率,避免出错

1.10.1 命令补全
  • 内部命令:
    外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文
    件,第一次找到的命令即为要执行的命令

注意:用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表

1.10.2 路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表

1.10.3 双击Tab键

command -- 2Tab 选项补全

[root@centos8 ~]# hostname --
--alias --all-ip-addresses --domain --fqdn --short
--all-fqdns --boot


+ command 2Tab 所有子命令或文件补全

[root@centos8 ~]# ip
address help link monitor neigh ntable sr tunnel xfrm
addrlabel ila macsec mroute netconf route tcp_metrics tuntap
fou l2tp maddress mrule netns rule token vrf


+ string2Tab 以string开头命令

[root@centos8 ~]# hostname




#### 1.11 命令行历史  

保存你输入的命令历史。可以用它来重复执行命令
登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中  



命令:history  

```bash
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
  • -c: 清空命令历史(只是清除内存的历史命令),要彻底的清除历史,要同时清除内存和.bash_history中的历史

    [root@centos8 ~]# history -c
    
  • -d offset: 删除历史中指定的第offset个命令

  • n: 显示最近的n条历史

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

  • -r: 读历史文件附加到历史列表

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

  • -n: 读历史文件中未读过的行到历史列表

  • -p: 展开历史参数成多行,但不存在历史列表中

  • -s: 展开历史参数成一行,附加在历史列表后

命令历史相关环境变量

HISTSIZE:命令历史记录的条数

[root@centos8 ~]# echo $HISTSIZE
1000
  • 在 /etc/profile中修改历史条数

    nano /etc/profile
    

HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
HISTTIMEFORMAT="%F %T `whoami`" 显示时间和用户

 nano .bash_profile
 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export HISTTIMEFORMAT="%F %T `whoami` "
 

HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
HISTCONTROL:控制命令历史的记录方式

​ ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
​ ignorespace 忽略所有以空白开头的命令
​ ignoreboth 相当于ignoredups, ignorespace的组合
​ erasedups 删除重复命令

1.12 调用命令行历史

#重复前一个命令方法
重复前一个命令使用上方向键,并回车执行
按 !! 并回车执行
输入 !-1 并回车执行
按 Ctrl+p 并回车执行

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

[root@centos8 ~]# ping www.baidu.com


[root@centos8 ~]# !:0
ping
Usage: ping [-aAbBdDfhLnOqrRUvV64] [-c count] [-i interval] [-I interface]
            [-m mark] [-M pmtudisc_option] [-l preload] [-p pattern] [-Q tos]
            [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp_option]
            [-w deadline] [-W timeout] [hop1 ...] destination
Usage: ping -6 [-aAbBdDfhLnOqrRUvV] [-c count] [-i interval] [-I interface]
             [-l preload] [-m mark] [-M pmtudisc_option]
             [-N nodeinfo_option] [-p pattern] [-Q tclass] [-s packetsize]
             [-S sndbuf] [-t ttl] [-T timestamp_option] [-w deadline]
             [-W timeout] destination

!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 开头的命令,并获取它的所有参数

1.13 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 + #提示输入指定字符后,重复显示该字符#次
注意:Alt组合快捷键经常和其它软件冲突

posted @ 2020-06-01 11:23  efkzg  阅读(201)  评论(0)    收藏  举报