目录
Linux系统的登录方式 以及 调用shell
Linux系统的登录方式:
1、本地登录:
- 通过控制台登录,即在本地计算机上进行登录。
- 只需要用户名和密码。
- 终端类型:tty(终端设备)。
- 本地登录有2种方式登录:图形界面登录,命令行模式登录。
2、远程登录:
- 通过XShell 或者 cmd(ssh)远程连接运行Linux系统的计算机进行登录。
- 需要ip地址或主机名、用户名和密码。
- 终端类型:pts(伪终端/虚拟终端)。
可以通过who命令查看哪些用户登录系统。
注:提示符中若为"#"则为root(超级管理员/超级用户),若为"$"则为普通用户。
成功登录后,有多种方式调用shell:
1、交互式shell:shell等待用户输入命令,并立即执行。shell与用户交互。
① 登录式shell:
- 输入用户名和密码进入shell。
- 用户成功登录后,系统读取/etc/passwd中用户对应的凭据,读取/etc/profile和~/.bash_profile。
- 例如:命令行模式登录(登录-->执行命令-->退出)。在命令行输入su -。
② 非登录式shell:
- 调用shell时不需要输入用户名和密码。
- 复制父shell环境。读取~/.bashrc获取其他配置命令。
- 例如:通过图形界面登录,打开Terminal窗口。在命令行输入su。
2、非交互式shell:
- shell脚本(shell script)运行时,调用shell。用户不需要输入命令。
- 使用父shell继承的环境,处理脚本文件,处理完就退出shell。
- 一般执行脚本的shell都是非交互式,也可以特殊说明启动为交互式shell。
补充:shell:命令行解释器。用户和操作系统交互的接口。通过shell执行命令、启动程序等。
shell 脚本(shell script):脚本程序,存放一系列shell命令的文件,扩展名.sh(bash版本)。通过赋予可执行权限并运行文件,就会自动执行shell命令。
# hello.sh
#!/bin/bash # 此行为脚本第一行,指定脚本运行时使用的解释器
echo 'hello world' # 命令,输出hello world
Linux shell 以及 shell配置文件
shell:命令行解释器,用C语言编写的应用程序。shell是操作系统的外壳,为用户和内核的交互提供接口。接收用户输入的命令并传送给内核去执行。
Linux有多种shell,shell主要版本有bash,ksh,csh,zsh。其中Bash Shell是Linux系统的默认shell,是与sh兼容的shell。
可以使用以下命令查看shell:
# 查看环境变量中的shell值
echo $SHELL
# 查看bash命令的完整路径
which bash
# 查看bash版本
bash --version
# 查看系统支持的shell
cat /etc/shells
# 查看不同用户登录时的默认shell
cat /etc/passwd
shell的配置文件(初始化文件/启动文件):
- 全局配置文件(/etc/profile,/etc/profile.d/,/etc/bashrc)。位于/etc目录下。
- 个人配置文件(~/.bashrc,~/.bash_profile)。位于用户自己的家目录下。
etc/profile | 存储系统范围的环境配置,登录时的启动程序配置。 配置系统环境变量PATH,权限掩码umask。 |
系统范围 |
---|---|---|
/etc/profile.d/ | 存储对环境自定义更改的shell脚本。 | 系统范围 |
/etc/bashrc | 存储系统范围的函数和别名,包括用于所有系统用户的其他配置。 |
系统范围 |
~/.bash_profile | 存储用户的环境配置,登录时的启动程序配置。 配置用户环境变量PATH。 |
单个用户 |
~/.bashrc | 用户特定的函数和别名。 配置命令行提示符PS1。 |
单个用户 |
shell 命令
shell 命令是在Linux系统通过shell解释器执行的一系列指令。
exit | 退出终端(或者 Ctrl+D) |
---|---|
shutdown -h now | 关机 |
reboot | 重启 |
systemctl list-unit-files | 查看所有服务 |
---|---|
systemctl status 服务名 | 查看某服务状态 |
systemctl start 服务名 | 开启某服务 |
systemctl stop 服务名 | 关闭某服务 |
systemctl restart 服务名 | 重启某服务 |
systemctl enable 服务名 | 某服务开启开机自启动 |
systemctl disable 服务名 | 某服务关闭开机自启动 |
cat ~/.bash_history |
查看历史记录(不含本次登录后使用的命令。 本次登录后使用的命令 要退出终端后才会保存到文件中) |
---|---|
history | 查看历史记录(本次登录后使用的命令) |
history -c | 清空历史记录(本次登录后使用的命令) |
!编号 | 执行历史记录中编号对应的命令 |
date | 查看日期 |
---|---|
ip a 或 ip ad 或 ip add 或 ip addr | 查看ip地址 |
ip route | 查看路由 |
cat /etc/resolv.conf | 查看DNS |
cat /etc/sysconfig/network-scripts/ifcfg-ens33 | 查看网络配置 |
env | 查看系统环境变量 |
---|---|
set | more | 翻页查看用户环境变量(按Ctrl+C退出more) |
echo $PATH | 查看环境变量PATH |
echo "hello" | 输出文本hello |
clear | 清屏,也可以Ctrl+L |
ip addr | grep 127 # ip地址信息中过滤127
set | more | grep ^PATH # 翻页查看用户所有变量,过滤以PATH开头的变量值
export PATH=/opt/mysql/bin/:$PATH # 临时添加环境变量PATH
其他部分命令:目录和文件 ,文件内容,传输文件,安装软件,用户/组/文件权限
shell 特殊符号
>,>> | 输出重定向,写入到文件中,>> 追加写入 |
<,<< | 输入重定向,从文件读取数据,<< 重定向到交互式shell脚本或程序 |
# | 注释。shell脚本中第一行(#!),指定脚本运行时使用的shell解释器 |
" ",' ' | 双引号,单引号。内容可多行显示。双引号还可以解析变量。 |
! | 历史命令调用,find中是取反 |
/ | 路径分隔符 |
\ | 转义,表示某特殊字符只是普通字符。行末的 \ 表示一条长的命令换行输入 |
| | 管道符,前面命令的结果给后面命令使用 |
* | 通配符,匹配所有字符 |
$ | 调用变量。正则表达式中表示行尾。 |
$( ) | 用来嵌套命令,反引号中的命令先执行 |
~ | 用户家目录(普通用户在/home目录下,root在/root目录下) |
.,.. | 一个点是当前目录,两个点是上级目录 |
; ,|| ,&& | 命令连接符。";"命令之间不影响。"&&" 命令都正确才执行。"||" 命令失败执行下一个,命令成功不执行下一个 |
shell 快捷键
Ctrl + a | 移动到行首 |
---|---|
Ctrl + e | 移动到行尾 |
Ctrl + k | 删除光标位置(含)之后的内容 |
Ctrl + u | 删除光标位置(不含)之前的内容 |
Ctrl + L | 清屏(或者 clear) |
Ctrl + d | 退出终端(或者 exit) |
Ctrl + c | 取消当前的命令 |
Alt + f | 按单词前移(往右移) |
Alt + b | 按单词后移(往左移) |
Linux操作系统运行级别
运行级别 | 运行级别名称 | 说明 |
---|---|---|
0 | poweroff.target | 关机 |
1 | rescue.target | 单用户模式(root权限,用于修复系统、重置密码等) |
2 | multi-user.target | 多用户模式(无网络) |
3 | multi-user.target | 多用户模式(完整),常用 |
4 | multi-user.target | 多用户模式(系统未使用,保留) |
5 | graphical.target | 图形界面模式,常用 |
6 | reboot.target | 重启 |
若本身是多用户模式,即使切换到图形界面模式,也没有图形界面(因系统安装时选择最小安装,只安装必须的程序,没有图形界面相关的程序)。
若本身就是图形界面模式,可以切换到多用户模式,也可以使用root身份再切换回图形界面模式。
centos7 运行级别:
- 使用 systemd 初始化系统,只启动被请求的服务,使用结束会动态地关闭服务。
- 通过单元(unit)实现管理,每个服务都有一个单元,每个单元都有一个配置文件(.service)。
- 系统不同的运行级别通过目标(target)模拟实现。
centos6 运行级别:
- 使用 init 初始化系统,所有后台服务都会启动。
- 默认配置文件是/etc/inittab。
- init 运行级别是runlevel。
# 查看当前运行级别(centos6)
runlevel
# 查看运行级别配置文件(centos6)
cat /etc/inittab
# 修改运行级别,方法一(centos6)
vi /etc/inittab
("id:运行级别数字:initdefault:" 修改运行级别数字,只能3或5)
reboot
# 修改运行级别,方法二(centos6)
# 将运行级别切换到图形界面模式
init 5
# 将运行级别切换到多用户模式
init 3
单用户模式下解决无限登录问题
因环境变量配置错误等原因,导致登录时 即使用户名密码输入正确,也会无限跳转到登录界面。
这时,root可以进入单用户模式下,修改配置文件。
步骤如下:
- 关机,重启。
- 选中内核,按键 e 进入编辑。
- 找到 "ro rgb quiet " 修改为 "rw init=/bin/bash"。
- 按键Ctrl + x 重启,即进入单用户模式。
- 修改配置文件。
- 输入exec /sbin/init 单用户模式下重启,即退出单用户模式。
- 重新登录。
注意:单用户模式只能root权限,用于修复系统、重置密码等,不能远程登录。
若重置密码,则第5步改为修改密码的命令即可。
centos7修改命令行提示符 PS1
常用选项(参数) | 说明 |
---|---|
\u | 当前用户名 |
\h | 主机名 |
\H | 完整的主机名称 |
\W | 当前目录 |
\w | 当前目录完整路径 |
\d | 日期(星期几 月份 日),例如:Wed May 15 |
\$ | 提示字符(# root,$ 普通用户) |
\t | 24小时制的时间(HH:MM:SS) |
\T | 12小时制的时间 |
\A | 24小时制的时间(HH:MM) |
\[\e[?m\] | 设置字体颜色,此处?为文字颜色数值 |
\[\e[m\] | 取消颜色设置 |
\[\e[?;?m\] | 设置字体颜色和背景色,第一个?是文字颜色,第二个?是背景色 |
颜色 | 文字颜色数值 | 背景色数值 |
红色 | 31 | 41 |
黄色 | 33 | 43 |
蓝色 | 34 | 44 |
绿色 | 32 | 42 |
白色 | 37 | 47 |
黑色 | 30 | 40 |
紫红色 | 35 | 45 |
青蓝色 | 36 | 46 |
# 修改命令行提示符PS1(紫红色文字,青蓝色背景)
# vi/vim打开并编辑~/.bashrc配置文件
vi ~/.bashrc
# \$:提示字符。root显示#,普通用户显示$。一开始设置失误,输成 \\$,导致root显示的是 $
(在文件末尾添加) PS1='[\[\e[35;46m\]\u@\h \W\[\e[m\]]\$ '
#重新执行配置文件
source ~/.bashrc
# 查看命令行提示符PS1
echo $PS1
补充、centos7没有滚动条
centos7默认没有滚动条,可以按Shift+PgUp向上翻页,Shift+PgDn向下翻页。