各位读者朋友,大家好。
在实际工作或项目迁移中,很多人会从 Ubuntu、CentOS 转到国产化平台。提到国产操作系统,银河麒麟(Kylin)是绕不开的一个名字。不管是银河麒麟桌面版还是服务器版,日常维护、软件安装、服务部署,都离不开终端和 Shell。今天这篇文章不聊虚的,就围绕麒麟系统里的终端工具、Shell 基础操作、软件安装卸载、常见报错排查这几个核心方向展开,把一套可以直接上手的实操流程整理出来,希望能帮你少踩一些坑。
1. 麒麟系统终端与 Shell 的基础认知
1.1 什么是终端,什么是 Shell
在开始敲命令之前,先把概念理顺。
终端(Terminal)是一个字符界面的交互工具,它提供一个窗口,让用户输入命令并查看输出结果。在银河麒麟桌面版中,你可以从开始菜单找到“终端”应用,它本质上是一个图形化的终端模拟器,底层调用系统的 Shell 来执行命令。
Shell则是解释命令的程序。它接收用户在终端里输入的内容,解析后交给操作系统去执行。Linux 下常见的 Shell 有bash、zsh、sh等,银河麒麟默认使用的是bash。
简单理解:
用户 -> 终端(终端模拟器) -> Shell(bash) -> Linux 内核 -> 硬件你打开终端,输入一条命令,按下回车,Shell 解析这条命令并调用系统接口完成操作,再把结果显示在终端上。
1.2 为什么使用麒麟系统要重点掌握 Shell
麒麟系统虽然提供了图形化桌面,但很多工作仍然离不开 Shell。
一方面,服务器版麒麟系统通常没有安装图形界面,安装软件、配置服务、查看日志全部要通过命令行完成。另一方面,在桌面版日常使用中,终端也是解决图形界面故障的重要入口。比如软件商店无法正常打开、系统源需要更换、某些软件只能通过apt或dpkg安装,这些场景都需要打开终端敲命令。
更关键的是,Shell 脚本能帮我们批量完成重复性工作。比如一天要检查多台服务器的磁盘空间、备份数据库、清理日志文件,手动操作效率太低,写成脚本后一次执行就行。
1.3 麒麟系统与 Ubuntu 的关系
银河麒麟 V10 与 Ubuntu 有一定渊源,其软件生态大多兼容 Debian 系软件包,因此apt、dpkg等包管理命令可以直接使用。这意味着你在 Ubuntu 上积累的大量命令经验,大部分可以迁移到麒麟系统上。
但要注意,麒麟系统并不是 Ubuntu 的完全拷贝。内核版本、系统库、预装软件都有差异,部分软件在 Ubuntu 上能正常安装,放到麒麟上可能出现依赖缺失或兼容问题。因此掌握排查思路比死记命令更重要。
2. 环境准备与版本说明
2.1 本文演示环境
本文的演示环境以银河麒麟桌面版 V10 为例,操作同样适用于大部分 Debian 系 Linux 发行版。
注意,不同版本的麒麟系统在预装软件和内核版本上存在差异。比如银河麒麟 V10 SP1、SP2、SP3 之间就有细微差别。如果你的环境是服务器版,终端界面会有所不同,但 Shell 命令、apt 包管理逻辑基本一致。
操作系统:银河麒麟桌面版 V10(x86_64 架构) 终端工具:系统自带终端(Terminal) Shell:bash(默认) 包管理器:apt / dpkg版本需要根据你的项目实际情况调整,本文示例以常见环境为例,重点演示配置思路。
2.2 打开终端的几种方式
在麒麟桌面版中,打开终端有以下常见方式:
方式一:开始菜单查找
点击桌面左下角的开始菜单,在搜索框中输入“终端”或“Terminal”,点击图标打开,这是最直观的方式。
方式二:快捷方式
在桌面空白处右键,部分版本会直接提供“打开终端”选项。如果没有,可以先进入某个目录,再在文件管理器空白处右键选择“打开终端”,这种方式会直接定位到当前目录。
方式三:Ctrl + Alt + T
这是 Linux 下比较通用的快捷键,银河麒麟桌面版默认也支持。按一下就能快速唤起终端窗口,适合日常高频使用。
打开终端后,你会看到一个类似这样的提示符:
kylin@kylin:~$其中kylin是当前用户名,@后面的kylin是主机名,~表示当前位于用户主目录,$表示当前是普通用户权限。如果是 root 用户,提示符末尾会是#。
2.3 关于管理员权限
很多命令需要管理员权限才能执行,比如安装软件、修改系统配置文件。在终端中临时获取管理员权限,最常用的方式是sudo:
sudo apt update执行后会提示输入当前用户的密码,输入时屏幕上不会显示任何字符,这是正常现象,输入完直接回车即可。
也可以切换到 root 用户,适合需要连续执行多条管理员命令的场景:
sudo -i输入密码后,终端提示符会变成root@kylin:~#,此时执行的命令都拥有最高权限。但需要注意,在 root 状态下操作风险较高,尤其涉及删除、修改系统文件的命令时一定要谨慎。建议能用sudo就尽量用sudo,减少长时间以 root 身份操作的机会。
3. 终端高频操作与常用命令
3.1 目录切换与文件管理
终端操作的第一步,往往是查看当前位置和切换目录。
# 查看当前所在目录 pwd # 查看当前目录下的文件列表 ls # 查看详细信息,包括权限、所有者、文件大小 ls -l # 查看隐藏文件 ls -a # 切换到指定目录 cd /etc # 返回上一级目录 cd .. # 返回用户主目录 cd ~ # 返回上一次所在目录 cd -这里重点说明一下cd -。很多人在终端里来回切换目录时,容易搞不清自己刚才在哪。cd -可以快速切回上一个目录,并且终端会打印出切换后的路径,方便确认。
查看文件内容的常用命令:
# 查看文件全部内容 cat 文件名 # 分页查看文件内容,按 q 退出,适合长文件 less 文件名 # 查看文件末尾内容,默认 10 行,适合查看日志 tail 文件名 # 实时跟踪文件新增内容,适合观察日志输出 tail -f 文件名3.2 系统信息查看
排查问题第一步,通常先确认系统基本信息。
# 查看内核版本 uname -a # 查看操作系统版本信息 cat /etc/os-release # 查看 CPU 信息 lscpu # 查看内存信息 free -h # 查看磁盘空间 df -hfree -h和df -h中的-h表示 human-readable,即以人类易读的格式显示(GB、MB 等单位),这个参数很常用,建议养成习惯加上。
3.3 安装软件的两种主要方式
在麒麟系统上安装软件,最常用的是apt命令。它类似于手机上的应用商店,可以从软件源下载并安装软件,同时自动处理依赖关系。
先更新软件源缓存:
sudo apt update然后安装软件:
sudo apt install 软件包名例如安装网络工具curl:
sudo apt install -y curl-y参数表示自动确认,不需要手动输入 Y。
如果需要从本地 deb 安装包安装软件,可以使用dpkg:
sudo dpkg -i 软件包名.debdpkg的缺点是它不会自动处理依赖。如果安装时报依赖缺失,可以接着执行:
sudo apt -f install这个命令会自动修复依赖关系。建议在下载麒麟系统适用的软件时,优先选择官网提供的 deb 包,避免源里没有收录的情况。
3.4 软件卸载与商店软件管理
卸载软件同样使用apt:
sudo apt remove 软件包名如果希望连配置文件一起删除,使用:
sudo apt purge 软件包名注意,卸载软件是一个不可逆的操作,执行前最好确认软件包名是否正确。如果不确定包名,可以先搜索:
apt search 关键词在麒麟软件商店中安装的软件,本质上也走的是apt或dpkg流程。所以当软件商店出现异常,无法卸载某个软件时,可以在终端中用apt命令完成卸载。
3.5 终端其他使用技巧
经常有人问“终端里怎么换到上一行”。在终端中,如果一行命令太长,或者粘贴了多行内容,可以使用以下方式:
如果命令还没执行,可以使用键盘的Home键跳到行首,End键跳到行尾,使用方向键左右移动光标。这不算真正意义的“上一行”,但可以解决大部分编辑需求。
如果粘贴的内容包含多行,最后一行的内容会被自动合并执行,这可能导致报错。安全做法是逐行粘贴,或者先粘贴到文本编辑器中,确认无误后再复制到终端。
4. Shell 脚本入门与实战
4.1 什么是 Shell 脚本
Shell 脚本是把多条 Shell 命令按一定逻辑写入一个文件,然后通过bash解释执行。它可以帮助我们实现自动化操作,比如定时备份、批量重命名、环境部署等。
一个最简单的 Shell 脚本就是一个文本文件,里面按顺序写命令:
#!/bin/bash # 这是一个最简单的脚本示例 echo "Hello, Kylin Shell"4.2 创建和执行第一个脚本
下面演示如何从零创建一个 Shell 脚本。
第一步:创建脚本文件
vim hello.sh如果你不熟悉 vim,可以使用nano:
nano hello.sh在文件中写入:
#!/bin/bash # 打印系统信息 echo "当前用户: $(whoami)" echo "当前目录: $(pwd)" echo "系统版本: $(cat /etc/os-release | grep PRETTY_NAME)"第二步:添加执行权限
chmod +x hello.sh第三步:执行脚本
./hello.sh也可以直接使用 bash 执行,不需要添加执行权限:
bash hello.sh4.3 变量与输入输出
Shell 中定义变量不需要写类型,直接赋值即可:
#!/bin/bash name="麒麟系统" echo "系统名称: $name"注意,等号两边不能有空格,否则会报错。变量名只能包含字母、数字和下划线,且不能以数字开头。
读取用户输入使用read:
#!/bin/bash echo "请输入你的名字:" read user_name echo "你好,$user_name"4.4 条件判断与循环
Shell 脚本中,if条件判断的语法稍微有些特殊,方括号两边必须有空格:
#!/bin/bash # 判断当前用户是否为 root if [ "$(whoami)" == "root" ]; then echo "当前是管理员用户" else echo "当前是普通用户" fifor循环示例,遍历目录下的所有.log文件:
#!/bin/bash for file in /var/log/*.log; do echo "清理日志文件: $file" donewhile循环常用于读取文件内容或实现死循环,需要配合break或exit退出:
#!/bin/bash count=1 while [ $count -le 5 ]; do echo "第 $count 次循环" count=$((count + 1)) done这里$((count + 1))是 Shell 的算术运算写法。
4.5 函数与参数传递
Shell 脚本也可以定义函数,提高代码复用性:
#!/bin/bash # 定义函数:检查目录是否存在 check_dir() { if [ -d "$1" ]; then echo "目录 $1 存在" else echo "目录 $1 不存在" fi } # 调用函数,传入参数 check_dir /etc check_dir /nonexistent脚本本身也可以接收外部参数,$1表示第一个参数,$2表示第二个参数,$#表示参数个数:
#!/bin/bash # 用法: ./args.sh 参数1 参数2 echo "参数个数: $#" echo "第一个参数: $1" echo "第二个参数: $2"4.6 Shell 脚本常见坑点
问题一:执行脚本提示权限不够
这是新手最容易遇到的问题。解决方案是给脚本添加执行权限:
chmod +x 脚本名.sh问题二:脚本在 Windows 上编辑后执行报错
如果在 Windows 上编辑脚本再拷贝到麒麟系统,脚本文件可能包含 Windows 换行符\r\n,执行时会出现$'\r': command not found的报错。可以使用sed命令去除\r:
sed -i 's/\r$//' 脚本名.sh问题三:脚本包含中文乱码
脚本文件编码需要是 UTF-8,且文件头最好声明#!/bin/bash,不要在脚本开头使用#!/bin/sh指向其他 Shell,避免语法差异。
问题四:变量比较时忘记加引号
在if判断中,变量应使用双引号包裹,否则变量为空时会出现语法错误:
# 推荐写法 if [ "$name" == "kylin" ]; then echo "ok" fi # 不推荐写法 if [ $name == "kylin" ]; then echo "ok" fi5. 麒麟系统软件安装实战
5.1 三种常见安装方式对比
麒麟系统上安装软件主要有三种方式:apt在线安装、dpkg本地安装、源码编译安装。
| 安装方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| apt 在线安装 | 自动处理依赖,操作简单 | 软件源中不一定有最新版本 | 安装常用软件 |
| dpkg 本地安装 | 安装官网提供的 deb 包 | 不处理依赖,可能报错 | 安装厂商提供的专用软件 |
| 源码编译安装 | 可定制功能,版本最新 | 依赖较多,编译耗时长 | 软件源中找不到时 |
5.2 安装开发常用工具
以安装编译工具gcc和make为例:
sudo apt update sudo apt install -y gcc make安装 Python 开发环境:
sudo apt install -y python3 python3-pip验证安装结果:
gcc --version python3 --version5.3 apt 源配置与更新
在某些情况下,麒麟系统默认的软件源可能连接不稳定,或者某些软件包无法下载。这时可以考虑更换软件源。
软件源配置文件位于:
/etc/apt/sources.list以及:
/etc/apt/sources.list.d/修改前先备份原文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak然后编辑配置文件,将源地址替换为国内可用的镜像源地址。具体地址要根据你所使用的麒麟版本(如 V10 SP1、V10 SP2)确认。修改完成后执行:
sudo apt update如果输出正常,没有出现大量错误,说明源配置成功。
这里要特别提醒,不要把 Ubuntu 的源直接写入麒麟系统,因为麒麟系统基于的 Ubuntu 版本不一定和你的系统匹配,直接混用源可能引发严重依赖问题。
5.4 软件商店错误代码 0006 排查
不少用户在麒麟软件商店中安装软件时,会遇到“错误代码 0006”的提示。这个问题通常与软件商店的底层包管理异常有关。
排查步骤如下。
第一步:更新软件包缓存
sudo apt update如果提示有损坏的依赖,先修复:
sudo apt -f install第二步:清理软件商店缓存
麒麟软件商店的缓存目录一般位于用户主目录下的隐藏文件夹中,可以使用以下命令清理:
rm -rf ~/.cache/kylin-software-center第三步:重启软件商店
如果软件商店进程卡死,可以杀掉相关进程后重新打开:
pkill -f kylin-software-center完成以上操作后,重新打开软件商店,再次尝试安装软件。
如果仍然报 0006 错误,可以尝试卸载软件商店后重装:
sudo apt remove kylin-software-center sudo apt install kylin-software-center这个解决方案需要系统软件源可用,如果源本身有问题,重装也会失败。
6. 高频问题与排查清单
6.1 终端启动失败或打不开
现象:点击终端图标没有反应,或者终端打开后瞬间退出。
可能原因:终端配置损坏、系统组件异常、Shell 环境变量配置错误。
排查步骤:
- 使用
Ctrl + Alt + F2切换到命令行登录界面,用普通用户登录。 - 查看目录下是否存在终端配置文件损坏:
ls -la ~/.bashrc- 尝试用其他终端模拟器,如安装
xterm:
sudo apt install -y xterm- 如果以上方案都无法解决,可能是桌面环境组件损坏,需要检查系统库文件或重新安装终端相关包。
6.2 Shell 脚本执行时提示权限拒绝
bash: ./test.sh: Permission denied原因:脚本没有执行权限。
解决方案:
chmod +x test.sh6.3 apt 安装软件时提示依赖错误
E: Unable to correct problems, you have held broken packages.原因:软件包依赖关系冲突,常见于源版本不一致或之前安装中断。
解决方案:
sudo apt update sudo apt -f install sudo apt --fix-broken install如果仍无法解决,检查是否有手动安装的 deb 包与源里的包版本冲突,优先卸载手动安装的包。
6.4 如何查看系统架构以选择正确安装包
很多用户下载麒麟系统软件时,不清楚该下载 x86 还是 arm64 版本的包。
uname -m输出结果对应关系:
| 输出 | 架构 |
|---|---|
| x86_64 | 64 位 x86 架构 |
| aarch64 | 64 位 ARM 架构 |
| armv7l | 32 位 ARM 架构 |
根据结果下载对应架构的安装包,能避免大量兼容性问题。
6.5 排查问题通用思路
日常使用中,我建议按照这个顺序排查问题:
- 确认命令或软件包名是否正确。
- 查看系统日志
/var/log/syslog或/var/log/messages。 - 执行
sudo apt update刷新软件源。 - 检查磁盘空间是否充足,使用
df -h查看。 - 在互联网搜索报错信息关键词,看是否有人遇到过相同问题。
- 如果以上步骤都无法解决,考虑软件版本兼容性问题,尝试降低或升级版本。
7. 工程实践与使用建议
7.1 合理使用管理员权限
在日常使用中,强烈建议不要长时间以 root 身份执行命令。普通操作使用当前用户,只有安装软件、修改系统文件时才使用sudo。原因很简单:root 状态下误删一个系统文件可能直接导致系统无法启动。
如果需要在 Shell 脚本中执行管理员操作,可以在脚本内部使用sudo,但脚本中的敏感信息(如密码)不要硬编码。更安全的做法是为脚本配置 NOPASSWD 的 sudo 规则,但这需要管理员评估安全性后配置。
7.2 Shell 脚本编写规范
写 Shell 脚本时,有几条经验值得遵守:
添加注释说明。脚本开头注明用途、作者、修改日期,关键命令旁边写清楚做了什么,方便自己一个月后回来看懂,也方便他人接手。
定义变量集中管理。把需要频繁修改的路径、文件名等定义为变量,统一放在脚本开头,后续修改只需要改一处。
执行前检查参数。脚本如果依赖参数运行,启动时先判断参数是否存在,避免直接运行到一半才发现缺少必要信息:
#!/bin/bash if [ $# -lt 1 ]; then echo "用法: ./backup.sh 目录路径" exit 1 fi处理异常返回状态。每条命令执行后,Shell 变量$?会保存上一条命令的执行结果,0 表示成功,非 0 表示失败。关键操作后可以检查返回值:
#!/bin/bash cp /etc/passwd /tmp/passwd.bak if [ $? -ne 0 ]; then echo "备份失败" exit 1 fi echo "备份成功"7.3 日志管理与追溯
在服务器维护中,养成查看日志的习惯很重要。常用的日志查看命令:
# 持续跟踪某个日志文件 tail -f /var/log/syslog # 搜索日志中的特定关键词 grep "error" /var/log/syslog # 查看最近 200 行日志 tail -200 /var/log/syslog如果日志文件很大,建议先使用grep过滤关键词,再使用less分页查看,避免终端卡顿。
7.4 定时任务的编写与应用
在运维工作中,定时备份、定时清理日志是很常见的需求。麒麟系统使用crontab实现定时任务。
查看当前用户的定时任务:
crontab -l编辑定时任务:
crontab -e比如每天凌晨 2 点执行/home/kylin/backup.sh:
0 2 * * * /home/kylin/backup.sh注意,定时任务执行时使用的环境变量与手动执行不同。脚本中尽量不要依赖用户自定义的环境变量,路径尽量写绝对路径。
7.5 数据安全与备份意识
在终端执行任何涉及删除、覆盖的操作前,务必确认路径和文件名。一个比较稳妥的习惯是,在删除文件之前先执行:
ls -l /完整/路径/文件名确认文件确实是要删除的目标后,再执行删除命令。
涉及修改重要配置文件时,先备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak-$(date +%Y%m%d)这样即使配置出错,也可以快速恢复。
8. 总结与后续学习方向
这篇文章从麒麟系统终端的基础操作讲起,覆盖了 Shell 脚本入门、软件安装卸载、常见报错排查和工程实践。核心要点可以概括为以下几个方面:
- 终端与 Shell 是所有 Linux 操作的入口,无论桌面版还是服务器版,掌握终端使用是基本功。
- apt 是麒麟系统安装软件的首选方式,能够自动解决依赖问题;
dpkg用于安装本地 deb 包,但需要配合apt -f install修复依赖。 - Shell 脚本是提升效率的关键工具,变量、循环、条件判断是编写脚本的基础,参数处理和异常检查决定了脚本的健壮性。
- 遇到报错先分析原因再动手,不要盲目执行网上的修复命令。更换软件源、卸载软件包属于系统级变更,操作前必须确认后果。
如果你刚接触麒麟系统,下一步可以重点学习:
- Shell 中文本处理三剑客:
grep、sed、awk - 进程管理与系统服务:
systemctl、ps、top - 网络配置与排查:
ip、ping、ss - 自动化运维:Shell 脚本 +
crontab
如果本文对你有帮助,欢迎收藏备用。使用麒麟系统过程中如果遇到其他问题,也可以在评论区和大家交流,我会根据大家的反馈继续整理更多实战内容。