Skip to main content

用 rcm 管理隐藏文件 | Linux 中国

许多 GNU/Linux 程序的一个特点是有个易于编辑的配置文件。几乎所有常见的自由软件都将配置设置保存在纯文本文件中,通常采用结构化格式,如 JSON、YAML 或“类似 ini”[1] 的文件中。这些配置文件经常隐藏在用户的主目录中。但是,基本的 ls 不会显示它们。UNIX 标准要求以点开头的任何文件或目录名称都被视为“隐藏”,除非用户特意要求,否则不会列在目录列表中。例如,要使用 ls 列出所有文件,要传递 -a 选项。
随着时间的推移,这些配置文件会有很多定制配置,管理它们变得越来越具有挑战性。不仅如此,在多台计算机之间保持同步是大型组织所面临的共同挑战。最后,许多用户也对其独特的配置感到自豪,并希望以简单的方式与朋友分享。这就是用到 rcm 介入的地方。
rcm 是一个 “rc” 文件管理套件(“rc” 是命名配置文件的另一种约定,它已被某些 GNU/Linux 程序采用,如 screen 或 bash)。 rcm 提供了一套命令来管理和列出它跟踪的文件。使用 dnf 安装 rcm。
开始使用
默认情况下,rcm 使用 ~/.dotfiles 来存储它管理的所有隐藏文件。一个被管理的隐藏文件实际保存在 ~/.dotfiles 目录中,而它的符号链接会放在文件原本的位置。例如,如果 ~/.bashrc 由 rcm 所管理,那么详细列表将如下所示。
  1. [link@localhost ~]$ ls -l ~/.bashrc
  2. lrwxrwxrwx. 1 link link 27 Dec 16 05:19 .bashrc -> /home/link/.dotfiles/bashrc
  3. [link@localhost ~]$
rcm 包含 4 个命令:
◈ mkrc – 将文件转换为由 rcm 管理的隐藏文件
◈ lsrc – 列出由 rcm 管理的文件
◈ rcup – 同步由 rcm 管理的隐藏文件
◈ rcdn – 删除 rcm 管理的所有符号链接
在两台计算机上共享 bashrc
如今用户在多台计算机上拥有 shell 帐户并不罕见。在这些计算机之间同步隐藏文件可能是一个挑战。这里将提供一种可能的解决方案,仅使用 rcm 和 git。
首先使用 mkrc 将文件转换成由 rcm 管理的文件。
  1. [link@localhost ~]$ mkrc -v ~/.bashrc
  2. Moving...
  3. '/home/link/.bashrc' -> '/home/link/.dotfiles/bashrc'
  4. Linking...
  5. '/home/link/.dotfiles/bashrc' -> '/home/link/.bashrc'
  6. [link@localhost ~]$
接下来使用 lsrc 验证列表是否正确。
  1. [link@localhost ~]$ lsrc
  2. /home/link/.bashrc:/home/link/.dotfiles/bashrc
  3. [link@localhost ~]$
现在在 ~/.dotfiles 中创建一个 git 仓库,并使用你选择的 git 仓库托管设置一个远程仓库。提交 bashrc 文件并推送一个新分支。
  1. [link@localhost ~]$ cd ~/.dotfiles
  2. [link@localhost .dotfiles]$ git init
  3. Initialized empty Git repository in /home/link/.dotfiles/.git/
  4. [link@localhost .dotfiles]$ git remote add origin git@github.com:linkdupont/dotfiles.git
  5. [link@localhost .dotfiles]$ git add bashrc
  6. [link@localhost .dotfiles]$ git commit -m "initial commit"
  7. [master (root-commit) b54406b] initial commit
  8. 1 file changed, 15 insertions(+)
  9. create mode 100644 bashrc
  10. [link@localhost .dotfiles]$ git push -u origin master
  11. ...
  12. [link@localhost .dotfiles]$
在第二台机器上,克隆这个仓库到 ~/.dotfiles 中。
  1. [link@remotehost ~]$ git clone git@github.com:linkdupont/dotfiles.git ~/.dotfiles
  2. ...
  3. [link@remotehost ~]$
现在使用 rcup 更新受 rcm 管理的符号链接。
  1. [link@remotehost ~]$ rcup -v
  2. replacing identical but unlinked /home/link/.bashrc
  3. removed '/home/link/.bashrc'
  4. '/home/link/.dotfiles/bashrc' -> '/home/link/.bashrc'
  5. [link@remotehost ~]$
覆盖现有的 ~/.bashrc(如果存在)并重启 shell。
就是这些了!指定主机选项 (-o) 是对上面这种情况的有用补充。如往常一样,请阅读手册页。它们包含了很多示例命令。

via: https://fedoramagazine.org/managing-dotfiles-rcm/

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...