mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-29 21:41:00 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
bdfcc956a3
@ -1,16 +1,18 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (Starryi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12521-1.html)
|
||||
[#]: subject: (Why making mistakes makes me a better sysadmin)
|
||||
[#]: via: (https://opensource.com/article/20/8/sysadmin-mistakes)
|
||||
[#]: author: (Ben Cotton https://opensource.com/users/bcotton)
|
||||
|
||||
为什么犯错让我成为一个更好的系统管理员
|
||||
======
|
||||
诀窍就是同一个错误不要犯两次。
|
||||
![为失败喝彩][1]
|
||||
|
||||
> 诀窍就是同一个错误不要犯两次。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202008/16/001203jeyztczb8t6q8egc.jpg)
|
||||
|
||||
到目前为止,我已做了十多年 [Fedora][2] 贡献者。 Fedora 有一个由开发者和用户组成的大型社区,其中每一个人,不管是极富洞察力的用户还是出色的程序员,都有一些独有的技能。我喜欢这样的社区,因为它能激励我培养自己的新技能。
|
||||
|
||||
@ -20,25 +22,25 @@
|
||||
|
||||
我依然记得我犯的第一个计算机错误。我家的第一台电脑是我叔叔升职后送个我们的爱普生笔记本电脑,它有一个特别快的 10 MHz 处理器,因为太重了,所以还有一个手提把手。我很喜欢它。
|
||||
|
||||
它运行 DOS ,但有一个基于文本的菜单应用,所以对新手用户比较友好。硬盘菜单有十个“页面”,每个“页面”可以配置十个命令。我们有一个游戏页面,还有一个页面放些“无聊的东西”,比如文字处理程序和电子表格等等。
|
||||
它运行 DOS,但有一个基于文本的菜单应用,所以对新手用户比较友好。硬盘菜单有十个“页面”,每个“页面”可以配置十个命令。我们有一个游戏页面,还有一个页面放些“无聊的东西”,比如文字处理程序和电子表格等等。
|
||||
|
||||
硬盘菜单还有一些其他功能,当我玩腻了游戏,就会去探索它们。有一天,我决定使用菜单的账户功能。账户不会改变应用程序的出现,但可以防止对应用程序未经授权的访问,某种程度上。你可以直接用 DOS shell 替代它,但使用账户仍然是一个不错的尝试。
|
||||
硬盘菜单还有一些其他功能,当我玩腻了游戏,就会去探索它们。有一天,我决定使用菜单的账户功能。账户不会改变出现的应用程序,但在某种程度上,可以防止对应用程序未经授权的访问。你可以直接跳到 DOS 中取代它,但使用账户仍然是一个不错的尝试。
|
||||
|
||||
我为自己、父母和姐姐妹妹创建了账户。虽然我父母有点不开心,但他们最终迁就了我。万事顺遂了一段时间后,我姐姐忘记了她的账户密码。于是,我父母让我删掉她的密码,但是没有姐姐的密码去登陆账户,我就无法删除她的密码(那是在90年代初,一个比现在简单得多的时代)。要怎么办?要怎么办?
|
||||
我为自己、父母和妹妹创建了账户。虽然我父母有点不开心,但他们最终迁就了我。万事顺遂了一段时间后,妹妹忘记了她的账户密码。于是,我父母让我删掉她的密码,但是没有妹妹的密码去登录账户,我就无法删除她的密码(那是在 90 年代初,一个比现在简单得多的时代)。要怎么办?要怎么办?
|
||||
|
||||
那以后一段时间,我们一直试着猜测密码,直到有一天,我决定尝试做一些我还没有做过的事情。当我第一次创建帐户时,我设置了一个主密码。如果我输入主密码来代替我姐姐的密码,会发生什么呢?
|
||||
那以后一段时间,我们一直试着猜测密码,直到有一天,我决定尝试做一些我还没有做过的事情。当我第一次创建帐户时,我设置了一个主密码。如果我输入主密码来代替我妹妹的密码,会发生什么呢?
|
||||
|
||||
如果你在想,“这当然不会有用的”,那么显然你不熟悉90年代安全策略的天真幼稚。有了主密码(顺便说一下,主密码是 “worf” ,指的是企业号星舰的克林贡人安全主管,如果你不是《星际迷航:下一代》粉丝的话),我可以删除所有密码。于是,家里的每个人又都可以毫无障碍地使用电脑了。
|
||||
如果你在想,“这当然不会有用的”,那么显然你不熟悉 90 年代安全策略的天真幼稚。有了主密码(顺便说一下,主密码是 “worf” ,指的是企业号星舰的克林贡人安全主管,如果你不是《星际迷航:下一代》粉丝的话),我可以删除所有密码。于是,家里的每个人又都可以毫无障碍地使用电脑了。
|
||||
|
||||
### dry-run 的重要性
|
||||
### 试运行的重要性
|
||||
|
||||
在那之后,我又犯了更大更有益的错误。比如,在我第一次做系统管理员时,当时我正转移一些数据以重新配置存储阵列。有一次,我意外地颠倒了源路径和目标路径,而且那是一个带有 `——delete` 标志的 `rsync` 命令。真的是太糟糕了!
|
||||
在那之后,我又犯了更大更有益的错误。比如,在我第一次做系统管理员时,当时我正整理一些数据以重新配置存储阵列。有一次,我意外地颠倒了源路径和目标路径,而且那是一个带有 `——delete` 标志的 `rsync` 命令。真的是太糟糕了!
|
||||
|
||||
幸运的是,我自己的账户也崩溃了,这让我的道歉更容易被其他受影响的用户接受。对我们所有人来说更幸运的是,我们有备份。所以那天结束的时候,每个人的文件都找回来了,同时我获得了在进行破坏性同步之前使用 `——run` 标志的宝贵经验。
|
||||
幸运的是,我自己的账户也崩溃了,这让我的道歉更容易被其他受影响的用户接受。对我们所有人来说更幸运的是,我们有备份。所以那天结束的时候,每个人的文件都找回来了,我还学到了一个宝贵的教训,那就是在进行破坏性同步之前,先使用 `--dry-run` 标志试运行。
|
||||
|
||||
### 以正确的方式处理错误
|
||||
|
||||
我不介意犯错误。这些年来,我积累了很多实践经验,学到的诀窍就是不要犯同样的错误。从错误中学习能让我在技能和事业上取得进步,并发现新的会犯的错误。作为 Linux 系统管理员,我总是试图在一个安全的环境(测试平台就很好)中犯错误,确保我可以从错误中恢复(备份真的很很很重要!),并给以后的我留个笔记,这样他就不会重复犯错(文档是你的朋友)。当然,还要勇于承认自己的错误,并在出现问题时清楚地与用户沟通。如果我一直这样做,也许有一天我就会觉得我很清楚我在做什么!
|
||||
我不介意犯错误。这些年来,我积累了很多实践经验,学到的诀窍就是不要犯同样的错误。从错误中学习能让我在技能和事业上取得进步,并发现新的会犯的错误。作为 Linux 系统管理员,我总是试图在一个安全的环境(测试平台就很好)中犯错误,确保我可以从错误中恢复(备份真的非常非常重要!),并给以后的我留个笔记,这样他就不会重复犯错(文档是你的朋友)。当然,还要勇于承认自己的错误,并在出现问题时清楚地与用户沟通。如果我一直这样做,也许有一天我就会觉得我很清楚我在做什么!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -47,7 +49,7 @@ via: https://opensource.com/article/20/8/sysadmin-mistakes
|
||||
作者:[Ben Cotton][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[Starryi](https://github.com/Starryi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,8 +1,8 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12520-1.html)
|
||||
[#]: subject: (install Fedora on a Raspberry Pi 3)
|
||||
[#]: via: (https://fedoramagazine.org/install-fedora-on-a-raspberry-pi/)
|
||||
[#]: author: (Nick Hardiman https://fedoramagazine.org/author/nickhardiman/)
|
||||
@ -12,45 +12,39 @@
|
||||
|
||||
![][1]
|
||||
|
||||
在树莓派上运行 Fedora。
|
||||
> 在树莓派上运行 Fedora。
|
||||
|
||||
[树莓派基金会][2]这几年来已经生产了很多型号。过程已经在第三代树莓派上进行了测试:[Model B v1.2][3] 和 [Model B+][4](较旧的 [2][5] 和新的 [4][6] 都还没有测试)。这些是已经发布几年的信用卡大小的树莓派。
|
||||
[树莓派基金会][2]这几年来生产了很多型号。本文的安装过程已经在第三代树莓派上进行了测试:[3B v1.2][3] 和 [B+][4](较旧的 [树莓派 2][5] 和新的 [树莓派 4][6] 都还没有测试)。这些是已经发布了几年的信用卡大小的树莓派。
|
||||
|
||||
### 获取硬件
|
||||
|
||||
你确实需要一些硬件,包括树莓派。你不需要任何 [HaT(安装在顶部的硬件)][7] 板或 USB 天线。如果你使用过树莓派,那么可能会有这些。
|
||||
你需要一些硬件组件,包括树莓派。你不需要任何 [HaT(安装在顶部的硬件)][7] 板或 USB 天线。如果你使用过树莓派,那么可能会有这些。
|
||||
|
||||
* **当前网络**。也许是你的家庭实验室。
|
||||
* **网线**。连接当前网络到树莓派
|
||||
* **树莓派 3**,model B 或 B+。
|
||||
* **电源供应**。
|
||||
* **树莓派 3**,型号 B 或 B+。
|
||||
* **电源**。
|
||||
* **8 GB 或更大容量的 micro-SD 卡**。
|
||||
* **键盘**和**显示器**。
|
||||
|
||||
|
||||
|
||||
键盘和显示器共同组成本地控制台。即使没有控制台,也有可能(尽管很复杂)进行操作,例如设置自动安装然后通过网络连接。在 Fedora 首次启动时,本地控制台可轻松回应配置问题。同样,在 AP 配置期间出错可能会破坏网络,从而锁定远程用户。
|
||||
键盘和显示器共同组成本地控制台。即使没有控制台,也能进行操作(尽管很复杂),例如设置自动安装然后通过网络连接。在 Fedora 首次启动时,本地控制台可轻松回应配置问题。同样,在 AP 配置期间出错可能会破坏网络配置,从而阻止远程用户连入。
|
||||
|
||||
### 下载 Fedora Minimal
|
||||
|
||||
|
||||
* 查找 Fedora 的[其他可选架构镜像][8]。
|
||||
* 下载 [ARM® aarch64 架构镜像][9]。
|
||||
|
||||
Fedora Minimal 镜像是 [Fedora 的其他可选下载之一][10],它有所有必需的核心软件包和网络软件包(嗯,是几乎,注意下面的 dnsmasq)。该镜像包含一个现成的文件系统,它已经安装了 400 多个软件包。此最小镜像不包括流行的软件包,像开发环境、互联网服务或桌面。这些类型的软件不是这里所必需的,如果安装它们,可能会占用过多的内存。
|
||||
|
||||
Fedora Minimal 原始镜像可安装在小型 SD 卡上,并在少于 1GB 的内存中运行(这些旧的树莓派有 1GB 的内存)。
|
||||
|
||||
_Fedora Minimal_ 镜像是 [Fedora 的其他可选下载之一][10],它有所有必需的核心软件包和网络软件包(嗯,是几乎,请查看下面的 _dnsmasq_)。该镜像包含一个现成的文件系统,它已经安装了 400 多个软件包。此最小镜像不包括流行的软件包,像开发环境、互联网服务或桌面。这些类型的软件不是这里所必需的,如果安装它们,可能会占用过多的内存。
|
||||
|
||||
_Fedora Minimal_ 原始镜像可安装在小型 SD 卡上,并在少于 1GB 的内存中运行(这些旧的树莓派有1GB 的内存)。
|
||||
|
||||
下载文件的名称类似于 _Fedora-Minimal-32-1.6.aarch64.raw.xz_。该文件已压缩,大小约为 700MB。文件解压缩后为 5GB。这是一个 ext4 文件系统,它几乎是空的:已使用约1GB,4GB 是空的。这些空的空间是压缩文件比未压缩的原始文件小得多的原因。
|
||||
下载文件的名称类似于 `Fedora-Minimal-32-1.6.aarch64.raw.xz`。该文件已压缩,大小约为 700MB。文件解压缩后为 5GB。这是一个 ext4 文件系统,它大部分是空的:已使用约 1GB,空余 4GB。这些空的空间是压缩文件比未压缩的原始文件小得多的原因。
|
||||
|
||||
### 复制到 micro-SD 卡
|
||||
|
||||
*将镜像复制到 micro-SD 卡。
|
||||
* 将镜像复制到 micro-SD 卡。
|
||||
|
||||
|
||||
这可能比听起来更复杂,而且会带来痛苦的体验。找到[良好的 micro-SD 卡][11]即可。然后是将卡插到计算机的挑战。也许你的笔记本电脑有全尺寸的 SD 卡插槽,你还需要卡适配器,或者你需要一个 USB 适配器。然后,在进行复制时,操作系统可能会帮助你,也可能会妨碍你。你可能很幸运有 [Fedora Media Writer][12] 或这些 Linux 命令。
|
||||
这可能比听起来更复杂,而且会带来痛苦的体验。找到一个[良好的 micro-SD 卡][11]需要花费精力。然后是将卡插到计算机的挑战。也许你的笔记本电脑有全尺寸的 SD 卡插槽,你还需要卡适配器,或者你需要一个 USB 适配器。然后,在进行复制时,操作系统可能会帮助你,也可能会妨碍你。你可能很幸运有 [Fedora Media Writer][12],或使用这些 Linux 命令:
|
||||
|
||||
```
|
||||
unxz ./Fedora-Minimal-32-1.6.aarch64.raw.xz
|
||||
@ -63,11 +57,9 @@ dd if=./Fedora-Minimal-32-1.6.aarch64.raw of=/dev/mmcblk0 bs=8M status=progress
|
||||
* 打开电源。
|
||||
* 当图形芯片通电时,看见彩色框。
|
||||
* 等待 [anaconda 安装程序][13]启动。
|
||||
* 回应 anaconda 的设置问题。
|
||||
* 回答 anaconda 的设置问题。
|
||||
|
||||
|
||||
|
||||
操作系统的初始配置需要几分钟的时间。等待启动需要花费几分钟,还需要花费一些时间填写 anaconda 基于文本的安装程序的问题。在下面的例子中,用户名为 **nick**,并且还是管理员(_wheel_ 组的成员)。
|
||||
操作系统的初始配置需要几分钟的时间。等待启动需要花费几分钟,还需要花费一些时间填写 anaconda 的文本安装程序的问题。在下面的例子中,用户名为 `nick`,并且还是管理员(`wheel` 组的成员)。
|
||||
|
||||
恭喜你!你的树莓派已启动并可运行。
|
||||
|
||||
@ -76,8 +68,6 @@ dd if=./Fedora-Minimal-32-1.6.aarch64.raw of=/dev/mmcblk0 bs=8M status=progress
|
||||
* 用 `dnf update` 更新软件包。
|
||||
* 通过 `systemctl reboot` 重启。
|
||||
|
||||
|
||||
|
||||
多年来,很多人为使树莓派正常工作付出了很多工作。使用最新的软件,以确保你从他们的辛勤工作中受益。如果你跳过此步骤,你可能会发现有些东西无法正常工作。
|
||||
|
||||
此次更新下载并安装了约一百个软件包。由于存储设备是 micro-SD 卡,因此写入新软件的过程很慢。这就是 90 年代使用存储器的感觉。
|
||||
@ -86,13 +76,11 @@ dd if=./Fedora-Minimal-32-1.6.aarch64.raw of=/dev/mmcblk0 bs=8M status=progress
|
||||
|
||||
如果你想摆弄的话,此时可以设置其他一些内容。这都是可选的。试试这些。
|
||||
|
||||
* `sudo hostnamectl set-hostname raspi` 替换 _localhost_ 主机名。
|
||||
* `sudo hostnamectl set-hostname raspi` 替换 `localhost` 主机名。
|
||||
* 用 `ip addr` 查找 IP 地址。
|
||||
* 尝试 SSH 登录,甚至使用 `ssh-copy-id` 设置基于密钥的登录。
|
||||
* 使用 `systemctl poweroff` 关机。
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/install-fedora-on-a-raspberry-pi/
|
||||
@ -100,7 +88,7 @@ via: https://fedoramagazine.org/install-fedora-on-a-raspberry-pi/
|
||||
作者:[Nick Hardiman][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,116 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (4 Mac terminal customizations even a curmudgeon can love)
|
||||
[#]: via: (https://opensource.com/article/20/7/mac-terminal)
|
||||
[#]: author: (Katie McLaughlin https://opensource.com/users/glasnt)
|
||||
|
||||
4 Mac terminal customizations even a curmudgeon can love
|
||||
======
|
||||
Open source means I can find Linux familiarity on any terminal.
|
||||
![Coffee and laptop][1]
|
||||
|
||||
A decade ago, I started my first job that required me to use Linux as my laptop's operating system. I was offered a range of variants, including Gentoo, if I was so inclined, but since I had used Ubuntu briefly in the past, I opted for Ubuntu Lucid Lynx 10.04.
|
||||
|
||||
My terminal, [Konsole][2], was themed in [Zenburn][3] and had a Bash prompt that looked like this:
|
||||
|
||||
|
||||
```
|
||||
`machinename ~/path/to/folder $`
|
||||
```
|
||||
|
||||
Nowadays, I'm running on a Mac, specifically macOS Catalina using [iTerm2][4] with the [Zenburn theme][5] and a zsh prompt that looks like this:
|
||||
|
||||
|
||||
```
|
||||
machinename ~/path/to/folder
|
||||
$
|
||||
```
|
||||
|
||||
I think after a decade with a near-identical prompt, I have earned the title of _curmudgeon_, if only as a sign that I have preferences and habits that go against what the cool kids are doing nowadays.
|
||||
|
||||
As if to prove my curmudgeonly point, I wanted to change my terminal to match my old one. Getting a setup that looks and feels like Lucid Lynx on Mac isn't simple and took some time.
|
||||
|
||||
My biggest recent change was moving from Bash to zsh and migrating my [Bash hacks][6]. But that was only one of the major shifts. I learned many new-fangled lessons that I now bestow onto you, dear reader.
|
||||
|
||||
### Coreutils forgives flag order
|
||||
|
||||
Moving from Ubuntu to macOS wasn't too much of a shift until I started thinking I was losing my Unix-foo. I'd try running basic operations like removing folders and be told that I was invoking `rm` incorrectly.
|
||||
|
||||
It turns out that the GNU-style utilities may look like BSD-style utilities, but one of the biggest usability differences is _flag order_. The order in which unnamed parameters are listed does not line up. For instance: `rm`.
|
||||
|
||||
Here's the familiar GNU-style command to remove a directory:
|
||||
|
||||
|
||||
```
|
||||
`$ rm path/to/folder -rf`
|
||||
```
|
||||
|
||||
This contrasts with the BSD-style version of the same command:
|
||||
|
||||
|
||||
```
|
||||
$ rm path/to/folder -rf
|
||||
rm: path/to/folder: is a directory
|
||||
rm: -rf: No such file or directory
|
||||
```
|
||||
|
||||
I got around this by installing [Coreutils][7] through [Homebrew][8]. This brings GNU utilities to macOS and makes flag order more forgiving by allowing me to not have to remember flag order for commands that are deeply ingrained into my muscle memory.
|
||||
|
||||
### iTerm2 is powerful
|
||||
|
||||
I'm not sure of any operating system where power users are happy with the default terminal. In macOS land, I settled on [iTerm2][4], which allows me more flexibility than the base OS's terminal application. One of my favorite iTerm power features is being able to use **Command**+**D** and **Command**+**Shift**+**D** to split panes vertically and horizontally. There are many more tricks to be learned, but easy split panes alone can make iTerm2 worth the switch from the default option.
|
||||
|
||||
### Context-aware plugins
|
||||
|
||||
One reason even a curmudgeon of a user customizes a terminal prompt is to gain some situational awareness. I enjoy it when a terminal gives me context and answers all the questions that come to mind. Not just what folder I'm in, but: What machine am I on? Is this a Git repository? If so, what branch am I in? Am I in a Python virtual environment?
|
||||
|
||||
Answers to these questions go into a category of terminal extensions that can be called "context-aware plugins."
|
||||
|
||||
For the current Git branch, I used this [parse_git_branch()][9] method (there is a similar plugin for [Oh My Zsh][10], if you're using that). For Python, virtualenv prefixes to the prompt automatically. Oh My Zsh has so many [plugins][11], you're sure to find something to improve your life.
|
||||
|
||||
As for my local machine? I just place it directly in the PS1 format because I'm basic like that, and macOS doesn't _really_ let you name your machines.
|
||||
|
||||
### Multi-line prompts are fine
|
||||
|
||||
The observant reader may notice the one change in my prompt over a decade is that it's now two lines. This is a recent change that I'm slowly learning to love because all those plugins I mentioned earlier make my prompt looonnngggg. You can navigate only so deep in a filesystem before you start having line-wrapped command inputs trying to do anything basic. And with that comes occasional redraw issues and readability concerns.
|
||||
|
||||
The suggestions I received about resolving this revolved mostly around, "Oh, you're using zsh? Use [Powerlevel10k][12]!" Which is fine for those who aren't stuck in their ways, like me. But I was able to learn from these themes and take a small bit of suggestion from them.
|
||||
|
||||
What I've done is to add a `$'\n'` before the final `$` in my prompt, which allows my context-aware information—current machine, current folder, current GitHub branch, current virtualenv, and the like—to all live on one line, and then my commands can be entered without issues.
|
||||
|
||||
The only problem I've found is learning where to _look_. I'm used to having my eyes start at the center of the line because that's where the prompt used to start. I'm slowly learning to look left to the prompt, but it's a slow process. I have a decade of eye training to undo.
|
||||
|
||||
### Use what works for you
|
||||
|
||||
If you prefer a certain style or tool, then you are absolutely valid in that preference. You can try other things, but never think you have to use the latest and greatest just to be like the cool kids. Your style and preferences can change over time, but never be forced into changes that aren't comfortable for you.
|
||||
|
||||
_Join us next time, when Aunty Katie complains about IDEs._
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/7/mac-terminal
|
||||
|
||||
作者:[Katie McLaughlin][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/glasnt
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_cafe_brew_laptop_desktop.jpg?itok=G-n1o1-o (Coffee and laptop)
|
||||
[2]: https://konsole.kde.org/
|
||||
[3]: https://github.com/brson/zenburn-konsole
|
||||
[4]: https://www.iterm2.com/
|
||||
[5]: https://gist.github.com/fooforge/3373215
|
||||
[6]: https://opensource.com/article/20/1/bash-scripts-aliases
|
||||
[7]: https://formulae.brew.sh/formula/coreutils
|
||||
[8]: https://opensource.com/article/20/6/homebrew-mac
|
||||
[9]: https://gist.github.com/kevinchappell/09ca3805a9531b818579
|
||||
[10]: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
|
||||
[11]: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
|
||||
[12]: https://github.com/romkatv/powerlevel10k
|
@ -0,0 +1,114 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (4 Mac terminal customizations even a curmudgeon can love)
|
||||
[#]: via: (https://opensource.com/article/20/7/mac-terminal)
|
||||
[#]: author: (Katie McLaughlin https://opensource.com/users/glasnt)
|
||||
|
||||
凯蒂阿姨的自定义 Mac 终端
|
||||
======
|
||||
|
||||
> 开源意味着我可以在任何终端上找到熟悉的 Linux。
|
||||
|
||||
!["咖啡和笔记本"][1]
|
||||
|
||||
十年前,我开始了我的第一份工作,它要求我使用 Linux 作为我的笔记本电脑的操作系统。如果我愿意的话,我可以使用各种 Linux 发行版,包括 Gentoo,但由于我过去曾短暂地使用过Ubuntu,所以我选择了 Ubuntu Lucid Lynx 10.04。
|
||||
|
||||
我的 [Konsole][2] 终端使用的是 [Zenburn][3] 主题,有一个类似于这样的 Bash 提示符:
|
||||
|
||||
```
|
||||
machinename ~/path/to/folder $
|
||||
```
|
||||
|
||||
现在,我使用 Mac,具体来说是 macOS Catalina,我使用 [iTerm2][4] 与 [Zenburn 主题][5],zsh 提示符是这样的:
|
||||
|
||||
```
|
||||
machinename ~/path/to/folder
|
||||
$
|
||||
```
|
||||
|
||||
我想,十年来几乎相同的提示符,我已经赢得了*老古板*的称号,不过这只是标志着,我的喜好和习惯与现在耍酷的孩子们不一样而已。
|
||||
|
||||
仿佛是为了证明我的古板观点,我想改变我的终端和我的旧终端一样。在 Mac 上获得一个看起来和感觉像 Lucid Lynx 的设置并不简单,而且我很花了一些时间。
|
||||
|
||||
我最近最大的改变是从 Bash 转移到 zsh,并迁移了我的 [Bash 魔改][6]。但这只是其中一个重大的转变。我学到了许多新式的经验,现在我把这些经验赠送给你,亲爱的读者。
|
||||
|
||||
### Coreutils 对选项的顺序更宽容
|
||||
|
||||
从 Ubuntu 转移到 macOS 并没有太大的转变,直到我开始觉得我失去了 Unix 范。我试着运行一些基本的操作,比如删除文件夹,但却被告知我错误地调用了 `rm`。
|
||||
|
||||
事实证明,GNU 风格的实用程序可能看起来 BSD 风格的差不多,但最大的可用性差异之一是*参数顺序*。未命名参数的排列顺序并不一致。例如:`rm`。
|
||||
|
||||
下面是我们熟悉的 GNU 风格的删除目录的命令:
|
||||
|
||||
```
|
||||
$ rm path/to/folder -rf
|
||||
```
|
||||
|
||||
这与同一命令的 BSD 风格版本形成鲜明对比:
|
||||
|
||||
```
|
||||
$ rm path/to/folder -rf
|
||||
rm: path/to/folder: is a directory
|
||||
rm: -rf: No such file or directory
|
||||
```
|
||||
|
||||
我通过 [Homebrew][8] 安装 [Coreutils][7] 解决了这个问题。这将 GNU 实用程序引入到了 macOS,并使我不必为那些已经深深扎根于我的肌肉记忆中的命令记住选项顺序,从而对选项顺序更加宽容。
|
||||
|
||||
### 强大的 iTerm2
|
||||
|
||||
我不知道有哪个操作系统的资深用户会对默认终端满意。在 macOS 这块土地上,我选择了 [iTerm2][4],它允许我比基本的操作系统终端应用更灵活。我最喜欢的 iTerm 强大功能之一是能够使用 `Command+D` 和 `Command+Shift+D` 来垂直和水平分割窗格。还有很多技巧需要学习,但仅是简单的分割窗格就值得用 iTerm2 换掉默认终端。
|
||||
|
||||
### 上下文感知的插件
|
||||
|
||||
即使是一个古板的用户也会自定义终端提示,其中一个原因是为了获得一些情境感知。我喜欢终端给我提供上下文,并回答所有想到的问题。不仅仅是我在哪个文件夹里,而是:我在什么机器上?这是个 Git 仓库吗?如果是,我在哪个分支?我是在 Python 虚拟环境中吗?
|
||||
|
||||
这些问题的答案最终都归结为一类称之为“上下文感知插件”的终端扩展。
|
||||
|
||||
对于当前的 Git 分支,我使用了这个 [parse_git_branch()][9] 方法(如果你使用的是 [Oh My Zsh][10],也有类似的插件)。对于 Python 来说,virtualenv 会自动给提示符加前缀。Oh My Zsh 有如此多的[插件][11],你一定能找到改善你生活的东西。
|
||||
|
||||
至于我的本地机?我就直接用 `PS1` 格式,因为我喜欢这样的基本信息,而且 macOS 并没有*真正*让你给机器起个名字。
|
||||
|
||||
### 多行提示符也不错
|
||||
|
||||
观察力强的读者可能会注意到,十年来我的提示符有一个变化,就是现在它是两行。这是最近的一个变化,我慢慢学会了喜欢,因为我前面提到的所有这些插件都让我的提示符变得很长很长。你在文件系统中导航不能太深,要不你试图做任何基本的事情都会输入换行。随之而来的是偶尔的重绘问题和可读性问题。
|
||||
|
||||
我收到的关于解决这个问题的建议大多围绕着“哦,你在用 zsh?用 [Powerlevel10k][12] 吧!”这对于像我这样不固步自封的人来说是不错的,但我能够从这些主题中学习到一些,并从中获取一点技巧。
|
||||
|
||||
我所做的是在我的提示符中的最后一个 `$` 前加一个 `$'\n'`,这样我的上下文信息 —— 当前机器、当前文件夹、当前 GitHub 分支、当前 virtualenv 等等 —— 都可以在一行中出现,然后我的命令就可以顺利输入了。
|
||||
|
||||
我发现唯一的问题是学会在哪里*看*。我习惯于让我的眼睛从行的中心开始,因为以前我的提示符就是从那里开始的。我正在慢慢学会向左看提示符,但这是一个缓慢的过程。我有十几年的眼睛习惯要撤销。
|
||||
|
||||
### 使用适合你的方法
|
||||
|
||||
如果你喜欢某种风格或工具,那么你的这种偏好是绝对有效的。你可以尝试其他的东西,但千万不要认为你必须使用最新和最伟大的,只是为了像很酷的孩子一样。你的风格和喜好可以随着时间的推移而改变,但千万不要被迫做出对你来说不舒服的改变。
|
||||
|
||||
*等下一次,凯蒂阿姨再给你吐槽一下 IDE。*
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/7/mac-terminal
|
||||
|
||||
作者:[Katie McLaughlin][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/glasnt
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/coffee_cafe_brew_laptop_desktop.jpg?itok=G-n1o1-o (Coffee and laptop)
|
||||
[2]: https://konsole.kde.org/
|
||||
[3]: https://github.com/brson/zenburn-konsole
|
||||
[4]: https://www.iterm2.com/
|
||||
[5]: https://gist.github.com/fooforge/3373215
|
||||
[6]: https://opensource.com/article/20/1/bash-scripts-aliases
|
||||
[7]: https://formulae.brew.sh/formula/coreutils
|
||||
[8]: https://opensource.com/article/20/6/homebrew-mac
|
||||
[9]: https://gist.github.com/kevinchappell/09ca3805a9531b818579
|
||||
[10]: https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
|
||||
[11]: https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
|
||||
[12]: https://github.com/romkatv/powerlevel10k
|
Loading…
Reference in New Issue
Block a user