Journey of a noob

Learn From Noobs

在 Linux 上還原 home directory 中的 dot files 至預設版本

Posted at # Unix/Linux

在 Linux 上還原 home directory 中的 dot files 至預設版本

簡介

我們都是人,少不免會犯錯,你有沒有試過搞砸你的 dot files?我試過,但很幸運,我有恆常備份的習慣,所以我只需要把檔案還原至我的備份版本,恆常備份 dot files 是一個好習慣,你甚至可以把你的 dot files 上傳到 Github。我很幸運有檔案的備份,但如果我沒有備份,那我可以怎樣恢復我的檔案呢?當然,我們可以直接在 Github 上抓別人的的 dot files 來使用,不過,在這篇文章中,我們會教你如何還原 dot files 至系統的預設版本。

如何還原 home directory 中的 dot files?

在 Linux 中,有一個特別的 directory 稱作 skeleton directory(框架目錄),這個 directory 中儲存着預設的 dot files,在新增使用者時,skeleton directory 中的檔案會被複製到使用者的 home directory。

首先,我們要找出我們的 skeleton directory 在哪裡,然後把預設的 dot files 複製到我們的 home directory,我們可以從 /etc/default/useradd 這個檔案中找到 skeleton directory 的位置,這個檔案存有新增使用者的預設值。

讓我們實作嘗試如何還原 dot files 吧!

還原 dot files 的步驟

  1. /etc/default/useradd 中找出 skeleton directory 的位置。
noob@learnfromnoobs:~$ cat /etc/default/useradd
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/sh
#
# The default group for users
# 100=users on Debian systems
# Same as USERS_GID in adduser
# This argument is used when the -n flag is specified.
# The default behavior (when -n and -g are not specified) is to create a
# primary user group with the same name as the user being added to the
# system.
# GROUP=100
#
# The default home directory. Same as DHOME for adduser
# HOME=/home
#
# The number of days after a password expires until the account
# is permanently disabled
# INACTIVE=-1
#
# The default expire date
# EXPIRE=
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
# SKEL=/etc/skel
#
# Defines whether the mail spool should be created while
# creating the account
# CREATE_MAIL_SPOOL=yes

我們可以在以下這一行中看到我們的 skeleton directory 在 /etc/skel,這個檔案也提供了我們有關 skeleton directory 的資訊。

...
# SKEL=/etc/skel
...
  1. 在 skeleton directory 中(在我們的例子中,即/etc/skel/)找出我們想恢復的檔案。
noob@learnfromnoobs:~$ ls -la /etc/skel
total 20
drwxr-xr-x  2 root root 4096 Aug  5  2019 .
drwxr-xr-x 91 root root 4096 Apr  5 06:24 ..
-rw-r--r--  1 root root  220 Apr  4  2018 .bash_logout
-rw-r--r--  1 root root 3771 Apr  4  2018 .bashrc
-rw-r--r--  1 root root  807 Apr  4  2018 .profile
  1. 把預設檔案復製至我們的 home directory,我們就用 .profile 作為例子吧。
$ cp /etc/skel/.profile ~/

大功告成了!你的 ~/.profile 已經還原至預設版本了!

總結:

在這篇文章中,我們討論了怎檥還原 dot files 至預設版本:

  1. /etc/default/useradd 中找出 skeleton directory 的位置。
  2. 在 skeleton directory 中找出我們想恢復的檔案。
  3. 把預設檔案復製至我們的 home directory。

當然,最好的辦法就是恆常備份你的 dot files,那麼當你搞砸你的 dot files 時就不用還原至預設版本再重新開始。

我希望你喜歡這篇文章,並從中得到新知識。

記得要不斷學習,have fun!