【Linux】系统登录,调用shell,shell配置文件,shell命令,特殊符号,shell快捷键,Linux运行级别,解决无限登录问题,修改提示符

发布于:2024-05-23 ⋅ 阅读:(96) ⋅ 点赞:(0)

目录

Linux系统的登录方式 以及 调用shell

Linux shell 以及 shell配置文件

shell 命令

shell 特殊符号

shell 快捷键

Linux操作系统运行级别

单用户模式下解决无限登录问题

centos7修改命令行提示符 PS1

补充、centos7没有滚动条


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可以进入单用户模式下,修改配置文件。

步骤如下:

  1. 关机,重启。
  2. 选中内核,按键 e 进入编辑。
  3. 找到 "ro rgb quiet " 修改为 "rw init=/bin/bash"。
  4. 按键Ctrl + x 重启,即进入单用户模式。
  5. 修改配置文件。
  6. 输入exec /sbin/init 单用户模式下重启,即退出单用户模式。
  7. 重新登录。

 

注意:单用户模式只能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向下翻页。