一. Linux基础

一. 用户类型

1. root用户

一个特殊的管理账号
也被称为超级用户
root拥有完整的系统控制权限
对系统损害几乎有无限的能力

1.1 普通(非特权)用户

权限有限
造成损害的能力比较有限

1.2 查看当前终端设备 tty

tty 查看当前所在终端

[root@CentOS8 ~]$tty
/dev/pts/1

1.3 bash shell

显示当前使用的shell

echo ${SHELL}

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

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

cat /etc/shells

[root@CentOS8 ~]$ cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/bin/tmux
/bin/tmux

1.4 设置主机名

临时生效

临时生效
hostname 主机名称

永久生效

Ubuntu 18.04.4和CentOS 8,CentOS7都有效

hostnamectl set-hostname  主机名

CentOS 6

主机名配置文件位置vim /etc/sysconfig/network

注意:

  • 主机名称不支持使用下划线,但是支持横线,可以使用字母,横线或数字组合
  • 有些软件对主机名有特殊要求

命令提示符 prompt

默认提示符

# 管理员
$ 普通用户

显示提示符格式

[root@centos8 ~]#echo $PS1 \[\e[1;35m\][\u@\h \W]\$\[\e[0m\]

修改提示符格式范例

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

提示符格式说明:

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

永久修改保存提示符格式相关变量PS1

重定向到 > /etc/profile.d/env.sh

 echo 'PS1="\[\e[37;1m\][\[\e[31;1m\]\u\[\e[34;1m\]@\[\e[32;1m\]\h \[\e[31;1m\]\w \[\e[33;1m\]\t\[\e[37;1m\]]\[\e[32;1m\]\\$\[\e[m\]"' > /etc/profile.d/env.sh

然后退出exit重登生效

1.5 init 切换系统运行等级

查看系统进程命令:ps -ef | head 查看init的配置文件:more /etc/inittab 查看系统当前运行的级别:runlevel

运行级别

什么是运行级? 运行级就是操作系统当前正在运行的功能级别。这个级别从0到6,具有不同的功能。可以在/etc/inittab中查看它的英文介绍。

 0         关机 
 1         单用户模式
 2         多用户, 没有, NFS(和级别3相似,会停止部分服务)
 3         切换到多用户-命令模式
 4         没用
 5         切换到图形化界面
 6         重启

1.6 执行命令

执行命令的过程

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

shell 中可执行的两种命令

  • 内部命令: 自带shell,而且通过某命令形式提供
  • 外部命令: 在文件系统路径下有对应的可执行文件

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

type 查看文件类型

type  命令

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

[root@C8 ~ 19:52:27]$type -a echo    -a 搜索外部命令和他同名的内部命令
echo is a shell builtin    内部
echo is /usr/bin/echo      外部
由于内部命令优先,所以外部不会生效

内部命令相关

help 内部命令列表

enable 管理内部命令

  • enable 启用内部命令
  • enable -n 命令 禁用内部命令
  • enable -n 查看所有禁用的内部命令
    在这里插入图片描述

执行外部命令

搜索外部命令

显示外部命令的搜索路径
which  要搜索的命令

显示外部路径的文件路径,还能显示出外部命令帮助文档的路径
whereis 

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 清除

1.7 定义别名

对于经常执行的较长的命令,可以将其定义成较短的别名,方便执行
显示当前shell 进程所有可用的命令别名

alias 

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

alias 别名名称 ="命令"

unalias 取消别名

unalias
unalias -a 取消所有别名 

生效在别名后面加个.
. .bashrc 点后面跟上定义的别名文件

注意:在命令行中定义别名,仅对当前shell进程有效

如果想永久有效,要定义在配置文件中

  • 及对当前用户: ~/.bashrc
  • 对所有用户有效:/etc/bashrc
    编辑配置给出的新配置不会立生效,bash 进程重新读取配置文件
vim   bashrc

一. Linux基础_第1张图片

重新读取配置文件

source /path/to/config_file
. /path/to/config_file

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

\ALIASNAME   \表示屏蔽或取消了,别名功能。当成普通命令
“ALIASNAME” 
‘ALIASNAME’ 
command ALIASNAME 
/path/commmand #只适用于外部命令

command 调用并执行指定命令

COMMAND [选项...] [参数...]

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

  • 短选项:UNIX 风格选项,-c 例如:-l, -h
  • 长选项:GNU风格选项,–word 例如:–all, --human
  • BSD风格选项: 一个字母,例如:a,使用相对较少

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

注意:

  • 多个选项以及多个参数和命令之间使用空白字符分隔
  • 取和结束命令执行: Ctrl+c ,Ctrl+d
  • 多个命令可以用 “;” 符号分开
  • 一个命令可以用\分成多行

1.8 常见命令

lscup 查看cpu信息

cat /proc/cpuinfo也可以查看到
一. Linux基础_第2张图片
一. Linux基础_第3张图片

free 查看内存大小

一. Linux基础_第4张图片
一. Linux基础_第5张图片

lsblk查看磁盘和分区情况

[root@C8 ~ 14:48:53]$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    4G  0 part [SWAP]
sr0     11:0    1    7G  0 rom  

一. Linux基础_第6张图片

uname 查看内核版本

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

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

[root@centos6 ~]# uname -r 
2.6.32-754.el6.x86_64 

[root@ubuntu1804 ~]#uname -r 
4.15.0-29-generic

查看操作系统发行版本

Cents8

红帽系列的可以用这个来看
cat /etc/redhat-release

Ubuntu 查看发行版本

cat /etc/os-release

date日期和时间

Linux 的两种时钟

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

date 显示和设置系统时间

date +%s
date -d @1509536033

clock , hwclock :显示硬件时钟

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

时区存放位置

/etc/localtime

在这里插入图片描述

修改时区

列出现有时区列表

timedatectl list-timezones

一. Linux基础_第7张图片
修改时区

timedatectl set-timezone Asia/Shanghai
                         要修改的时区

在这里插入图片描述
显示日历

cal -y

显示指定时间段、

cal 9 2020
    92020

echo 输出信息

echo 命令可以将后面根的字符进行输出

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

语法

echo [-neE][字符串]

选项:

-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能

显示变量

echo "$VAR_NAME” #变量会替换,弱引用 
echo '$VAR_NAME’ #变量不会替换,强引用

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

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

history 命令行历史

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

命令: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 whoami” 显示时间和用户
  • HISTIGNORE=“str1:str2*:…” 忽略str1命令,str2开头的历史
  • HISTCONTROL:控制命令历史的记录方式
    ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
    ignorespace 忽略所有以空白开头的命令
    ignoreboth 相当于ignoredups, ignorespace的组合
    erasedups 删除重复命令

持久保存变量

以上变量可以 export 变量名=“值” 形式存放在 /etc/profile 或 ~/.bash_profile
范例:

[root@centos8 ~]#cat .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 HISTCONTROL=ignoreboth 
export HISTTIMEFORMAT="%F %T " 
[root@centos8 ~]#history 
1 2019-12-13 08:39:05 ls /data 
2 2019-12-13 08:39:05 date 
3 2019-12-13 08:39:05 vie0 
4 2019-12-13 08:39:05 nano .bash_profile 
5 2019-12-13 08:39:05 exit

调用命令行历史

#重复前一个命令方法 
重复前一个命令使用上方向键,并回车执行 
按 !! 并回车执行 
输入 !-1 并回车执行 
按 Ctrl+p 并回车执行
!:0 执行前一条命令(去除参数) 
!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.9 关机重启

关机:

  • halt
  • poweroff

重启:
reboot
-f 强制,不调用shutdown
-p:切断电源

shutdown 约定时间关机或重启


shutdown [OPTION]... [TIME] [MESSAGE]
shotdown  +10 十分钟后关机
shotdown   02:20  220分钟后关机
shutdown -c   取消

-r: reboot
-h: halt
-c:cancel

TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0                                  如果时0就立刻开机      
+#: 相对时间表示法,几分钟之后;例如 +3                 加号后跟个时间表示多少分钟后关机
hh:mm: 绝对时间表示,指明具体时间                      指定几点几分要关机

1.10 用户登陆信息查看命令

whoami

whoami :显示当前登录有效用户

who

who :    系统当前所有的登录会话

w

w :系统当前所有的登陆·会话及所做的操作

1.11 screen 会话管理

screen命令就是,当打开一个screen会话框其中启动的进程是连在一起的,打开窗口,会话开始,关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完 。一个经典的例子就是,SSH登录远程计算机,打开一个远程窗口执行命令,这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令,因为上一次SSH会话已经终止了,里面的进程也随之消失了,为了解决这个问题,会话与窗口可以"解绑" :窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口

终端复用器软件就是会话与窗口的"解绑"工具 , 将他们彻底分离。

  1. 它允许在单个窗口中,同时访问多个会话,这对于同时运行多个命令行程序很有用。
  2. 它可以让新窗口"接入"已经存在的会话
  3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话
  4. 它还支持窗口任意的垂直和水平拆分.类似于终端复用器还有Screen ,Tmux

screen

利用screen 可以实现会话管理如:新建会话,共享会话等
注意 : CentOS 7 来自于base源, CentOS8 来自于epel源

范例:安装 screen

Centos7 安装screen
一. Linux基础_第8张图片
CentOS 8 安装screen

dnf -y epel-release
dnf -y install screen

screen 命令常见用法:

  • 创建新screen会话
    screen -S 用户名

  • 加入screen会话
    screen -x 用户名

  • 退出并关闭screen会话
    exit

  • 剥离当前screen会话
    Ctrl+a,d

  • 显示所有已经打开的screen会话
    screen-ls

  • 恢复某screen会话
    screen -r 用户名

    显示所有已经打开的screen 并连接erha一. Linux基础_第9张图片
    连接成功屏幕同步
    在这里插入图片描述

tmux

一. Linux基础_第10张图片

1.12 文本编辑

  • nano 工具可以实现文本编辑,上手容易
  • gedit 工具是图形工具

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

命令行扩展:$ ()

$(CMD)'CMD'

括号扩展:{}

{} 可以实现打印重复字符串的简化形式
echo file{1,3,5} 结果为:file1 file3 file5 
rm -f file{1,3,5} 
echo {1..10} 
cho {a..z}
echo {000..20..2}

1.14 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组合快捷键经常和其它软件冲突

你可能感兴趣的:(Linux,基础,linux,bash,运维)