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

目录

[Linux系统的登录方式 以及 调用shell](#Linux系统的登录方式 以及 调用shell)

[Linux shell 以及 shell配置文件](#Linux shell 以及 shell配置文件)

[shell 命令](#shell 命令)

[shell 特殊符号](#shell 特殊符号)

[shell 快捷键](#shell 快捷键)

Linux操作系统运行级别

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

[centos7修改命令行提示符 PS1](#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命令。

bash 复制代码
# 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:

bash 复制代码
# 查看环境变量中的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 重启

| 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
bash 复制代码
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。
bash 复制代码
# 查看当前运行级别(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 |

bash 复制代码
# 修改命令行提示符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向下翻页。

相关推荐
热爱嵌入式的小许1 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风5 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学5 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO5 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu75 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我5 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、5 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程6 小时前
Linux中环境变量
linux
我是哈哈hh6 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
郭二哈6 小时前
C++——模板进阶、继承
java·服务器·c++