分类 技术 下的文章

我向所有的 Linux 初学者推荐以下这些命令。

在使用 Linux 命令行时,很容易就会迷失方向,这可能会导致灾难性的后果:我有一次使用删除命令 rm 删除文件,然而删除之后我才意识到我刚刚是删除了计算机的引导目录。后来,我学会了使用 pwd 命令,来知道当前在文件系统的哪个目录下;并且我使用了 trashy 和 trash-cli 这一命令行回收站工具(LCTT 译注:在删除文件时 trash-cli 会充当中间人,将文件先“删除”到桌面上的垃圾箱中,能够通过垃圾箱或通过终端的 trash 命令,来恢复垃圾箱中已删除的文件。)

当我刚开始使用 Linux 时,我有一个放在桌子上的“速查表”,它就是《101 条你应该知道的 Linux 命令》,我在管理 Linux 服务器时能参考速查表上面的这些命令。随着我越来越熟悉这些命令,我越来越精通服务器管理了。

以下是我认为最有用的 12 个 Linux 命令。

1、打印工作目录(pwd)

pwd 命令会打印出你的工作目录。换句话来说,它输出你当前所在目录的路径。pwd 命令有两种选项:-L--logical(即逻辑路径)用来打印当前的目录路径(不解析符号链接),-P--physial(即物理路径)会打印出解析符号链接后的物理目录。(LCTT 译注:你可以进一步阅读我们翻译的 另一篇文章。)

2、创建目录(mkdir)

使用 mkdir 命令来创建一个新目录,是非常容易的。以下命令,创建了一个名为 example 目录(若 example 已存在,则无法创建):

$ mkdir example

你也可以在嵌套地创建目录及其子目录:

$ mkdir -p example/one/two

如果目录 example 和目录 one 都已存在,则仅会创建目录 two。如果上述目录都不存在,则会创建这三个嵌套的目录。

3、列出文件(ls)

我最早使用的是 MS-DOS(微软磁盘操作系统),因此我习惯于使用 dir 命令,来列出文件。我不记得当时是否能在 Linux 上使用 dir 命令,但是如今 dir 命令已经包含在 GNU 核心实用程序包 GNU Core Utilities package 中了。大多数人会使用 ls 命令,来显示目录中的文件及其所有的属性。ls 命令有许多选项,包括 -l 查看文件的长列表,显示文件所有者和权限等信息。

4、更改当前工作目录(cd)

在 Linux 中经常要更改当前工作目录,这就是 cd 命令的功能。例如,以下的示例将让你从 主目录 home 进入 Documents 目录:

$ cd Documents

你可以使用 cd ~ 或者 cd,来快速转换到你的主目录。你可以使用 cd .. 来返回到上一级目录。

5、删除文件(rm)

删除文件是很危险的,因为在 Linux 终端上用 rm 命令会彻底地删除文件,并没有像桌面的垃圾桶那样依旧保存着删除的文件。许多终端用户有一个坏习惯,他们会永久地删除他们认为不再需要的文件。然而,因为没有“取消删除”命令,这个坏习惯可能会导致严重的问题:你会不小心删除了包含重要数据的目录。

Linux 系统为文件删除提供了 rmshred 命令。要删除文件 example.txt,请输入以下内容:

$ rm example.txt

然而,使用 trash 命令要安全得多,例如 trashy 或者 trash-cli,它会将文件先“删除”到桌面上的垃圾箱中:

$ trash example.txt

(LCTT 译注:关于 Trash-Cli 的更多信息可以参考我们翻译的 另一篇文章。)

6、复制文件(cp)

使用 cp 命令,来复制文件。cp 的语法是从旧文件复制到新文件。这里有一个例子:

$ cp file1.txt newfile1.txt

你也可以复制整个目录:

$ cp -r dir1 newdirectory

7、移动并重命名文件(mv)

重命名和移动文件在功能上是相同的过程。当你移动文件时,从一个目录中取出一个文件,并将其放入一个新目录中;当你重命名文件时,将一个目录中的文件更改为新名称,并放回到同一目录或另一个目录下。无论是重命名还是移动文件,你都可以使用 mv 命令:

$ mv file1.txt file_001.txt

8、创建一个空文件(touch)

使用 touch 命令可以简单地创建一个空文件:

$ touch one.txt

$ touch two.txt

$ touch three.md

9、更改权限(chmod)

使用 chmod 命令,来更改文件的权限。chmod 最常见的用途是让文件能够执行:

$ chmod +x myfile

以下的示例展示了如何用 chmod 命令给文件赋予权限,这对于脚本来说特别方便。尝试一下这个简单的练习吧:

$ echo 'echo Hello $USER' > hello.sh

$ chmod +x hello.sh

$ ./hello.sh
Hello, Don

10、提升为 root 权限(sudo)

在管理自己的 Linux 系统时,可能需要提升为超级用户(也称为 root),这就是 sudo(即 以超级用户做 super user do )命令的来源。假设你想要做一些只有管理员(或 root 用户)才能做的事情,只需在命令前加一个 sudo 即可:

$ touch /etc/os-release && echo "Success"
touch: cannot touch '/etc/os-release': Permission denied

$ sudo touch /etc/os-release && echo "Success"
Success

11、关机(poweroff)

poweroff 命令的功能和它的字面意思一样:把你的计算机关机。需要在 poweroff 前面加一个 sudo 才能成功关机。

实际上,还有很多方法可以关闭你的计算机,这些方法有略微的不同。例如,shutdown 命令会在指定的时间(例如 60 秒)后关闭计算机:

$ sudo shutdown -h 60

或者立即关闭计算机:

$ sudo shutdown -h now

你也可以用 sudo shutdown -r now 或者 reboot 来重启计算机。

12、阅读手册(man)

man 命令可能是 Linux 中最重要的命令了,你可以通过 man 命令查看 Linux 系统上每个命令的官方文档。例如,要阅读更多有关 mkdir 的信息,可以输入:

$ man mkdir

一个与 man 相关的命令是 info 命令,它提供了一组不同的手册,它通常会提供比简洁的 man 页面更详细一点的内容。

你最喜欢的 Linux 命令是什么?

Linux 系统上还有数百个其他命令!你最喜欢使用的 Linux 命令是什么呢?什么命令是你一直反复使用的呢?


via: https://opensource.com/article/22/5/essential-linux-commands

作者:Don Watkins 选题:lkxed 译者:chai001125 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

用这个方便的捕鼠器比喻来理解编译代码。

源代码必须要经过编译才能够运行程序,而对于开源软件,每个人都可以获取源代码。无论你是自己编写了代码,想要编译和运行它,还是下载了某人的项目来尝试它,了解如何通过 编译器 处理源代码,以及编译器如何处理这些代码,这都很有用。

创建一个更好的捕鼠器

一般情况我们不会将一个捕鼠器比作电脑,但不管你信不信,它确实与你正在使用的设备(手机或电脑)的 CPU 有一些相似之处。经典的捕鼠器(我说的不是 ?)有两种状态:打开或者释放。你可以认为 打开 是将捕鼠器设置好准备捕获老鼠,以及 释放 是捕鼠器被老鼠触发。某种意义上来说,捕鼠器就像是一台有鼠标的电脑。你可以想象一下这个代码,用一种虚构的语言来描述这个过程:

if mousetrap == 0 then
  There's a mouse!
else
  There's no mouse yet.
end

换句话说,你可以基于捕鼠器的状态发现是否有老鼠(数据)。当然,捕鼠器不是万无一失的,有可能有一只老鼠在捕鼠器旁边,由于老鼠还没有触发捕鼠器,所以它的状态还是 打开 的。因此该程序可以进行改进,这都是非常典型的。

开关

总的来说,捕鼠器就是一个开关。你会在家里使用开关打开灯。可以从开关中获得许多信息。比如,人们会从你家灯的状态了解到你是否在家。

你可以根据邻居家灯的状态来改变行为。如果邻居家所有的灯都熄灭了,那么请关掉你大声的音乐,因为人们可能已经上床睡觉了。

CPU 也使用这样的逻辑,只不过乘以几个数量级,缩小到了微观级别。当 CPU 在特定寄存器上接收到电信号时,可以触发其他一些寄存器,然后触发另一个,以此类推。如果这些寄存器有特定的意义,那么就可以通信。也许激活同一主板上某处的芯片,或者使 LED 亮起,或者改变屏幕上的像素颜色。

种瓜得瓜,种豆得豆。如果你真的想在多个位置而不是仅限于一处发现老鼠,但是你只有一个捕鼠器,那你应该开发一个应用才行。使用网络摄像头和一些基本的图像识别软件,你可以建立空厨房的模型,然后扫描变化。当老鼠进入厨房,在原先没有老鼠的图像上会有像素的变化。记录下这些数据,如果有无人机可以追踪老鼠并捕获会更好,这样就可以将老鼠赶出厨房了。这时,你通过打开和关闭信号的魔法,创造了一个更好的捕鼠器。

编译器

代码编译器将人们可阅读的代码转换成 CPU 可以理解的机器语言。这是非常复杂的过程,因为 CPU 非常复杂(甚至比捕鼠器更加复杂),同时因为该过程比严格“需要”的更加灵活。并不是所有的编译器都很灵活。有一些编译器只有一个目标,它们只会处理特定格式的代码文件,处理过程也因此而简单明了。

幸运的是,现代的通用编译器并不简单。它们允许你编写不同语言的代码,也允许你用不同的方式链接库文件,并且可以生成运行在不同架构上的文件。GNU 编译器集合(GCC)的 gcc 编译器 --help 会输出超过 50 行的选项,LLVM 的 clang 编译器的 --help 输出超过 1000 行。GCC 指导手册的字数超过 10 万。

当你在编译代码时会有很多选项。

当然,大多数人并不需要知道所有的选项。我从未读过 GCC 的手册页,因为它们是针对 Objective-C、Fortran 以及我从未听说过的芯片架构的。不过我重视它将代码编译为不同的架构 —— 64 位或者 32 位 —— 的能力,以及在其他行业已经落后的计算机上运行开源软件的能力。

编译生命周期

同样重要的是,理解编译代码的不同阶段。这是一个简单的 C 语言程序的生命周期:

  1. 带有宏定义的 C 源代码 .c 文件,用 cpp 预处理为 .i 文件。
  2. 扩展了宏定义的 C 源代码 .i 文件,会被 gcc 转译成 .s 文件。
  3. 以汇编语言写的文本文件 .s 文件被汇编为目标 .o 文件。
  4. 带有 CPU 指令的二进制目标代码,以及其他目标文件和库 *.o 文件,以内存区域无关的偏移量,使用 ld 链接以生成可执行文件。
  5. 最终的二进制文件要么包含所有需要的目标,要么设置以动态链接库 *.so 文件加载。

你可以试试这个简单示例(可能需要对库路径做一些调整):

$ cat << EOF >> hello.c
 #include
 int main(void)
 { printf("hello world\n");
   return 0; }
   EOF
$ cpp hello.c > hello.i
$ gcc -S hello.i
$ as -o hello.o hello.s
$ ld -static -o hello \
  -L/usr/lib64/gcc/x86_64-slackware-linux/5.5.0/ \
  /usr/lib64/crt1.o /usr/lib64/crti.o hello.o \
  /usr/lib64/crtn.o  --start-group -lc -lgcc \
  -lgcc_eh --end-group
$ ./hello
hello world

可获得的知识

计算机已经变得非常强大,并且用户友好。请不要走向这两种可能的极端中的任何一种:计算机不像捕鼠器和电灯开关那么简单,但它们也不是无法理解的。你可以了解编译代码、如何链接以及针对不同架构进行编译。一旦你知道了,你就可以更好地调试代码。你可以理解你下载的代码,甚至可以修复其中的一两个错误。同时从理论上来讲,你可以建造一个更好的捕鼠器,或者用捕鼠器造一个 CPU。由你决定。


via: https://opensource.com/article/22/10/compiling-code

作者:Alan Smithee 选题:lkxed 译者:Donkey-Hao 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文介绍我使用 Terraform 五年之后吸取到的经验。

 title=

使用 Terraform 五年的经历让我吸取到一些重要经验。无论团队大小、项目性质,有五条要点对于配置合乎逻辑且可用的 Terraform 平台至关重要。

1、了解你的目标受众

这一点似乎显而易见,但我也见过一些在这方面犯错的案例。当组织和规划 Terraform 的相关代码时,无论是将目录结构标准化还是确定命名规范,考虑目标受众是非常重要的。例如:你的团队是否会使用这些 Terraform 脚本和模块?你是否会向其他团队交接工作?你的团队是否会有新成员加入?你是否正在独自进行项目开发?你是否会半年或一年后仍然使用这些配置,还是会将它安排给别人?

这类问题会影响某些决策。理想情况下,无论如何都应该有 远程状态 Remote State 状态锁定 State Locking 两种状态。远程状态确保你的笔记本电脑不是你的 Terraform 唯一运行的机器,状态锁定确保同一时刻只有一个人对基础设施进行修改操作。

命名规范应该对项目的最终拥有者有意义,而不是只对开发团队有意义。如果项目会转交给其他团队,应该确保他们对命名规范有发言权。如果代码由非技术的利益相关者或内部安全/ GCR 团队负责审查,应该确保他们会检查命名规范。另外,对于资源名称,为了让代码审查人员更仔细地进行检查,你应该使用资源标签,把有关的数据分类/隐私需求(高、中、低)标示出来。

2、重用,重用,重用

Terraform 注册表 为大多数普通用例提供了现成模块类库。我已经使用过 VPC 模块和安全模块中的大量功能,这些功能只需要提供相关的参数就能使用。使用不同的参数,简单调用这些模块对于处理大部分用例已经足够了。尽可能多地重用这些公共模块,可以避免大量且重复的编码、测试、检查、修复、重构等操作。

我也发现,基于使用或变更的频率划分模块和资源大有好处。例如,只使用一次的基础设施手脚架,例如 VPC 相关设置、安全模块、路由表、VPC 端点等,可以放在一起。但是像私有托管域条目、自动伸缩模块、目标模块、负载均衡器等,每次部署时都会变化,所以把这些与一次性的基础设施手脚架分离开来,会令代码检查更方便,调试更快速。

3、要明确,而非隐含

Terraform 代码中有一些常见的模式,它会导致设计中出现错误的假设。团队可以假设用来写代码的 Terraform 版本永远保持不变,外部模块不会变化,或它们使用的提供者不会变更。当这些外部依赖不可避免地发生变化时,就会导致一些难以发现的问题。

无论何处(包括主要的 Terraform 组、提供者组、功能模块组)都要确保定义是明确的。事先定义版本,可以确保依赖库是固定的,因此你可以在讨论、审查、测试后,明明白白地更新依赖关系。

4、自动化每一处,包括笔记本电脑、共享虚拟机、CI/CD。

在部署的各个阶段使用自动化方法,可以避免可能发生的问题。

在你提交代码前,使用 Git 预提交钩子 运行 terraform fmtterraform validate。预提交钩子的作用是确保你的代码满足最低程度的格式和语法正确。把这个预提交文件检入到仓库,对你的团队成员都有好处。项目的第一步就进行质量控制相关的操作,它虽然表面上是小事一桩,但也很重要,能为项目节省大量时间。

一切现代化部署工具都有 CI 流程。当你向原始仓库推送代码时,可以使用它来运行 SAST 和单元测试工具。我写过一篇 博客,是关于使用 Checkov 测试 Terraform 代码的安全性和合规性,并为组织特定的惯例创建自定义检查。把这些单元测试工具加入到你的 CI 管道,可以改进代码质量和健壮性。

5、写个好的 README.md 文件

我们都认为 Terraform 代码是自文档化的。的确如此,但是只有当未来的团队已经了解你的公司的命名规范、开发指南、机密通信、圈内笑话,以及你的仓库内除有效的 Terraform 代码之外其他所有东西,才会如此。维护 README.md 文件是个好习惯,它能节省大量时间,而且团队成员要为自己向 README 文件提交的任何内容负责,这样也就确保团队成员的忠诚度。

你的 README 文件至少应该包含在你的工作环境下(Linux、 Windows、Mac 等等)初始化 Terraform 环境的步骤,包括 Terraform 的版本信息。它应当确定需要的依赖库(Checkov、 TerraGrunt 及其他依赖)和其版本,以及团队使用的方便的 Linux 别名(例如有人喜欢将 terraform fmt 简写为 tff)。最重要的是,需要确定分支和 PR 审核策略和流程、命名规范和资源标签的相关标准。

README 文件需要通过这样的检验:如果团队有新成员加入,能否告诉他们做什么以及如何正确地完成工作?如果不能,在后续的几个月内,你将面对的是无休止的标准和流程讨论会议。

结束语

这些就是我使用 Terraform 多年后,认为需要传授给大家的五条有用的建议。也欢迎你分享自己的最佳实践。


via: https://opensource.com/article/21/8/terraform-tips

作者:Ayush Sharma 选题:lujun9972 译者:cool-summer-021 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Vanilla OS 是建立在 GNOME 上的、具有按需不变性和软件包选择自由的 Ubuntu。听起来很有趣?在这里阅读更多信息。

Vanilla OS:不仅仅是原味 GNOME 的 Ubuntu

这正是我第一次接触 Vanilla OS 时的想法。

Bottles 的创建者 Mirko Brombin 在 Twitter 上宣布它时,让我对它产生了兴趣 ?。

我加入了他们的 Discord 频道并成为了一名测试者。虽然我没有做出什么贡献,但关注项目发展是很有趣的。

回到至关重要的问题上:什么是 Vanilla OS?

Vanilla OS 的目标是提供一个干净、原味的 GNOME 体验,并具有按需不变性的能力。

听起来很有趣?让我告诉你我试了试它的第一个开放测试版本后的一些细节。

? Vanilla OS 计划在 11 月有一个稳定的版本。

它将跟随 Ubuntu 的小版本发布。

因此,你可以期待每年发布两个版本。例如,你可以从 Ubuntu 22.04 升级到 Ubuntu 22.10 甚至更之后的版本。

除非你知道自己在做什么,否则你不应该把它作为日常系统来使用。

Vanilla OS:又一个基于 Ubuntu 的发行版?

vanilla os home

是,也不是

对于初学者来说,我认为有以下独特的理由可以尝试一下:

  • 在 Ubuntu 之上获得 原装 GNOME 体验。(Fedora 也是一个很好的选择,但并不适合所有人!)
  • 在其安装后的首次设置时,允许你选择并启用 Flatpak/Snap/AppImage
  • 按需不变性,意味着你可以使系统变成只读,以防止来自第三方应用程序和更新的关键变化。
  • 一个新的软件包管理器(apx)允许你默认在管理的容器内安装软件包。

首次设置过程的体验很轻松。

ℹ️ 目前,它使用 Calamares 安装程序。他们打算用 Crystal Linux 中使用的 Jade 取代它。

Vanilla OS 安装程序

越来越多的发行版投身于此;我相信更多的用户会乐意加入到 Linux 中来。

Vanilla OS 对软件包管理器的选择

当然,像 Ubuntu MATE 和 Pop!\_OS 这样的发行版已经付出了巨大的努力,而 Vanilla OS 也为此增加了一些改进。

Vanilla OS 颜色选择

这看起来是一种漂亮的体验!?

一旦你完成了首次设置,你就没有什么可担心的了。你会得到通常的 GNOME 桌面,以及由 Patrik Kramolis 制作的漂亮的壁纸。

Vanilla OS 主页

接下来,我试着检查了按需不变性,你可以用以下命令查看和调整:

Vanilla OS 终端

你可以在 GitHub 上了解更多这个(基本上)使之成为可能的工具。

接下来,看看新的软件包管理器,我喜欢 Distrobox 的底层概念,使其与 apx 成为可能。

Distrobox 的创建者 Luca di Maio 也参与了 Vanilla OS 的开发。

不过,当用 apx 安装一个软件包时,你需要用命令来初始化容器:

apx init

如果它能自动完成,那就更直观了。

Vanilla OS apx

当然,我不知道技术上的限制。但是,对于用户端来说会感觉更顺滑!

总的来说,一个利用容器安装应用程序的软件包管理器、获得选择你的软件包管理器的能力、按需不变性,以及原味的 GNOME 使它看起来是一个值得关注的好东西。

前面的路:第一印象

我觉得,一旦它进入稳定版,它就会成为我的日常使用系统。

原因是:我总是喜欢原装的 GNOME 体验,而且不需要处理 Fedora 的定期升级。

当然,等我使用了稳定版之后,我可以给你写一篇整体的用户体验评判。

在那之前,我想说这是一个我相信很多用户都会喜欢的项目 ?。

目前,你可以通过加入其 Discord 频道来下载 ISO。该 ISO 还没有公开向所有人提供。如果你感兴趣,可以看看它的 文档

Vanilla OS

然而,按照路线图,他们计划很快就会有一个候选版本。


via: https://news.itsfoss.com/vanilla-os-beta/

作者:Ankush Das 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这篇速成指南诠释了一些步骤,它对于恢复一个 Arch Linux 安装很有帮助。

作为一个滚动发布版本,Arch Linux 有时会崩溃。那不是你自身的问题,而是因为数百个其它的原因,例如一个新内核与你的硬件或软件的兼容性。但是,即使如此,Arch Linux 仍然是比较优秀的,并且提供最新的软件包和应用程序。

但是,有些时候,它会给你带来麻烦,最后你只会看到一个闪烁的光标。

因此,在这种情况下,在你放弃希望前,你可能希望尝试恢复系统的安装以及数据,而不是重新格式化或重新安装。这篇指南在这些方面概述了一些步骤。

恢复 Arch Linux 安装

第一步是创建一个可启动的 Arch Linux 的 现场 Live USB 。从下面的链接中下载 ISO 镜像文件,并创建一个可启动的 ISO 的启动盘。你可以查看 这篇 关于如何使用 Etcher 创建可启动的 ISO 的启动盘的指南。记住,这一步骤需要在另一个工作稳定的系统上完成,很明显,这是因为你当前系统是不可用的。

下载 arch linux

你需要知道在 你的 Arch Linux 安装在哪个分区上。这是关键的一步。如果你不知道,你可以使用 GParted 来找出来。或者在你的 Grub 菜单中查看,或者也可以运行下面的命令来找出来。这将列出你所有的磁盘分区、大小和标签。

sudo lsblk -o name,mountpoint,label,size,uuid

在完成后,插入 USB 设备,并从中启动。你应该会在现场 USB 启动后看到 Arch Linux 提示符。

现在,使用下面的命令挂载 Arch Linux 分区。将 /dev/sda3 更改为你实际对应的分区。

mount /dev/sda3 /mnt
arch-chroot /mnt

arch-chroot 命令将在终端中挂载你的 Arch Linux 分区,然后,使用你的 Arch 用户名和密码来登录系统。现在,取决于你在这个阶段的需要,你可能有下面的一些选项。

  • 你可以前往 /home 文件夹来备份你的数据。为防止排错手段不能解决问题。你可以复制这些文件到一块外部的 USB 磁盘或其它的分区。
  • 检查日志文件,尤其是 pacman 日志,因为升级一些软件包可能会导致系统不稳定工作,例如,图形驱动程序或其它一些驱动程序。依据日志的记载,如果你有需要的话,你可以降级一些具体指定的软件包。

你可以使用下面的命令来查看 pacman 日志文件的最新的 200 行日志,来找出一些引起失败的项或依赖项的缺失。

tail -n 200 /var/log/pacman.log | less

上面的命令给出 pacman.log 文件的末尾处的 200 行来用于查对。现在,仔细检查自你上次成功启动以来更新了哪些软件包。

在某个地方记录下软件包的名称和版本。你可以尝试逐个降级软件包,或者,如果你认为是某个特定的软件包造成的问题的话,你可以使用 pacman 命令的 -U 开关选项来降级它。

pacman -U <package name>

在降级后(如果有一些软件包进行降级的话),你可以运行下面的命令来启动你的 Arch 系统。

exec /sbin/init

检查你的显示管理器的状态,并检查其是否有一些错误。有时,显示管理器会产生不能与 X 服务器 X Server 通信的问题。例如,如果你正在使用 Lightdm ,那么你可以通过下面的命令来检查它的状态。

systemctl status lightdm

或者,你可能希望通过下面的命令来启动它并检查错误。

lightdm --test-mode --debug

这里是一个 Lightdm 故障的示例,它导致了 Arch 系统不稳定工作。

lightdm - test mode

或者,使用 startx 来启动 X 服务器进行检查。

根据我的经验,如果你在上面的命令中看到这些错误,尝试安装另外一个显示管理器(例如 sddm)并启动它可以消除错误。

  • 根据你的系统的实际状态来尝试上面的步骤并解决问题。针对特定的显示管理器 Lightdm 的错误,我们有一份 指南,你可能会想查看它。
  • 如果你正在使用 sddm ,那么,试试 这些排错步骤 看看是否工作。

结语

每个系统环境都是不同的。上面的步骤不一定适合你。但是,它值得一试,根据我的经验,它是可行的。如果它可行,那么恭喜你。否则,在下面的评论区让我知晓你是如何进行的。


via: https://www.debugpoint.com/recover-arch-linux/

作者:Arindam 选题:lkxed 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Windows 上设置你的路径,这样你就可以使用开源的命令。

当你在操作系统上启动应用程序时,操作系统需要使用某些代码库和实用程序来运行该应用程序。你的操作系统知道如何找到这些库和实用程序,因为它有一个 系统路径,这是一个通往许多应用程序需要的共同共享数据的地图。所有操作系统都有这一点,但用户通常不会意识到这一点,因为他们通常不需要在意它。然而,当你需要编程或使用特殊的网络实用程序或命令时,你可能需要关心你自己的 PATH 变量配置。

PATH 变量使你可以将命令保存到一致的位置,并使用命令提示符或更强大(而开源的)Powershell 从系统上的任何位置调用它们。

例如,假设你想安装开源应用程序 pscp.exe,它是 Windows 上著名的 PuTTY OpenSSH 客户端的命令行界面。你可以将它下载到你的硬盘,但是你的命令行如何知道它的存在呢?其实一开始,它并不知道:

PS> pscp
 pscp: 命令 “pscp” 不能被识别为 cmdlet、脚本文件或可操作程序的名称。
 检查名称的拼写,或者如果包含了路径,则检查路径是否正确,然后再试一次。

如果你正在使用一个开源命令行,例如 Powershell 或 Cmder,那么你将得到一个有用的错误提示,提示这可能是你的路径有问题(或缺少路径)。下面是解决这个问题的方法。

设置 PATH

首先,在桌面上创建一个名为 App 的文件夹。

接下来,右键单击屏幕左下角的 Windows 菜单,然后选择 “ 系统 System ”。

Image of the Windows menu system.

在弹出的 “ 系统 System ” 窗口中,单击窗口左侧的 “ 高级系统设置 Advanced system settings ” 链接。

在出现的 “ 系统属性 System properties ” 窗口中,单击窗口底部的 “ 环境变量 Environment variables ” 按钮。

Image Windows system enviroment variables.

在 “ 环境变量 Environment variables ” 窗口中,单击 “ 用户变量 User variables ” 面板下的 “ 新建 New ” 按钮。

Image of new Windows enviroment variables.

在弹出的对话框中,为 “ 变量名 Variable name ” 字段输入 PATH,为 “ 变量值 Variable value ” 字段输入 %USERPROFILE\Desktop\App 。单击 “ 确定 OK ” 按钮保存更改。

Image of Windows path set.

Desktop/Apps 中放置你想从命令提示符中访问的命令和应用程序,Powershell、Cmder 甚至 Cmd 都能找到它们。

PS> pscp –version
 pscp: Release 0.XY
 Build platform: 64-bit x86 Windows
 PS>

自动设置路径

许多应用程序会在安装过程中自动添加到系统路径中。然而,并不是所有的程序都如此,要么是因为你在安装过程中遗漏了一个复选框,要么是因为应用程序开发人员希望你自己添加它。当自动路径失败时,你现在知道如何自己设置路径。

(图像来自:Alan Smithee, CC BY-SA 4.0)


via: https://opensource.com/article/22/10/set-path-powershell

作者:Alan Smithee 选题:lkxed 译者:qfzy1222 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出