在Linux中使用.bashrc文件

在某个时候,你肯定觉得你的Linux体验可以增添一些额外的魅力。也许你遇到了重复的任务,或者希望有一个更顺畅的命令行界面。好消息是,你的系统掌握了关键:.bashrc文件,悄悄地藏在你的主目录中!

在本教程中,深入探讨~/.bashrc文件的基本方面,改变你与Linux系统交互的方式。你已经在正确的轨道上,从定制命令提示符到自动化任务和设置个性化快捷方式。

告别单调乏味的任务,迎接更高效、更愉快的Linux体验!

前提条件

在你玩弄~/.bashrc文件之前,请确保你具备以下条件以便跟上:

  • A Linux distribution is installed on your machine – This tutorial uses Ubuntu 20.04 LTS, but any other distribution works.
  • A non-root user with sudo privileges.

在Linux中Bash运行命令(.bashrc)文件是什么?

想象一下在Linux中~/.bashrc文件就像是你房间里的一个秘密玩具箱。这个玩具箱会在你打开它的时候给你设置并摆放你喜欢的玩具,就像你喜欢的方式一样。

但是因为~/.bashrc是一个秘密文件,当你运行ls命令时它是不会显示出来的。除非你指定要显示隐藏文件,也就是使用-la参数,如下所示。

ls -la

下面,您可以看到列出了.bashrc文件以及其他一些也是隐藏的文件。

Listing all files, including hidden ones, in the working directory (home)

为快速执行命令定义自定义别名

A short definition wouldn’t cut into realizing the ~/.bashrc file’s role in customizing your Linux experience. So, how does this file work exactly? When you crack open that ~/.bashrc file, one of the powerful tricks it lets you achieve is defining custom aliases for your favorite commands.

例如,不要键入sudo apt-get update来更新系统的本地软件包索引,而是在.bashrc文件中定义一个相同功能的别名。

? 注意:本教程使用 root 帐户运行命令(不建议),以说明系统配置等管理任务。但是,出于安全原因,请确保在系统上执行类似操作时使用具有 sudo 权限的非 root 用户。

要为命令定义别名,请按照以下步骤操作:

1. 通过您偏爱的编辑器(如nanovim),在您的家目录(~/)中打开.bashrc文件。

? 如果您正在使用非 root 帐户,请在运行需要提升权限的命令时添加sudo

nano ~/.bashrc

2. 接下来,滚动到文件底部并定义一个alias(即update)用于您的目标命令(即sudo apt-get update),如下所示。

alias update='sudo apt-get update'

保存对文件的更改,并关闭编辑器。

Defining an alias in the .bashrc file

3. 保存后,在终端中执行以下命令来文件~/.bashrc。此命令不会向终端输出任何内容,但会应用您的更改。

source ~/.bashrc

4. 现在运行您定义的update别名,并确认相应的命令(sudo apt-get update)正在执行。

update

下面的输出确认您的update别名的作用类似于运行sudo apt-get update命令,但输入的按键更少。

Testing the newly defined alias (update)

提升生产力的函数编制

当您需要重复执行复杂操作时,仅定义别名可能不够。但别担心,函数可以解决别名可能遇到的问题。

与仅用于单个命令的别名不同,函数包含一系列复杂命令,旨在执行复杂操作。

要了解函数的工作原理,请执行以下操作:

1. 在~/.bashrc文件中,追加以下名为manage_package(任意)的函数。

当执行时,此函数会检查给定的软件包是否已安装,并根据该信息更新或安装软件包。

请记住,此函数仅接受一个参数,即您感兴趣的软件包名称。

manage_package() {
  # 通过使用 dpkg 查询包状态来检查包是否安装。
  # $1 是传递给函数的第一个参数的占位符(包名称)。
  # 将输出重定向到 /dev/null 以在终端中抑制它。
  # if 语句检查 dpkg -s 命令的退出状态。
  # 如果状态为 0(包已安装),
  # 继续到第一个代码块,更新该包。
  if dpkg -s "$1" &> /dev/null; then
    echo "Package '$1' is already installed. Updating..."
    sudo apt-get update && sudo apt-get install --only-upgrade "$1"
  # 如果包未安装,则打印一条消息
  # 并运行 sudo apt-get install "$1" 来安装该包。
  else
    echo "Package '$1' is not installed. Installing..."
    sudo apt-get update && sudo apt-get install "$1"
  fi
}

2. 添加函数后,保存更改,关闭编辑器,然后 source ~/.bashrc 文件以应用更改。

source ~/.bashrc

3. 一旦被 source,调用该函数(manage_package),后跟你在终端中希望检查、更新或安装的 package-name,如下所示。

本教程选择的包是 NGINX,但请确保用你喜欢的包名替换 package-name

manage_package package-name

正如您在输出中所看到的,这样的功能使软件包管理变得轻而易举,为您做了繁重的工作。它们会自动确定您想要的软件包是否存在,因此您无需费心。

Executing the newly defined function

个性化您的Linux终端和Shell提示(PS1)

将您的Linux终端视为个人工作空间。定制您的终端会使其变成一个更具视觉吸引力和信息丰富的环境。

当您为Linux终端增添色彩时,天空就是界限。您可以用酷炫的欢迎消息装饰您的终端,或者调整您的Shell提示以增添额外的魅力。

要个性化您的Linux终端,请按照以下步骤进行:

1. 在您的~/.bashrc文件的底部添加以下行。此行在每次启动终端会话时打印一条(问候)消息。

echo "Welcome to your terminal, $USER!

2. 接下来,如果存在,修改主提示字符串(PS1)环境变量,或者将以下行添加到您的~/.bashrc文件中。PS1变量精确控制主提示字符串,即当Shell准备接受命令时显示的主要提示(例如,user@linux:~#)。

修改PS1变量可让您更改Shell提示的外观,包括其颜色、格式和显示信息。以下表达式:

  • 使用户名(\u)和主机名(\h)显示为明亮的绿色(32m)。
  • 使当前工作目录(\w)显示为明亮的蓝色(34m)。
  • 将文本后续部分的颜色属性重置为默认颜色(通常是白色)(\[\033[00m\])。此重置确保终端文本的其余部分不受影响。
PS1='\[\033[01;32m\]\u@\h:\[\033[01;34m\]\w\$ \[\033[00m\]'

3. 保存并关闭文件,然后source您的~/.bashrc文件以应用更改。

source ~/.bashrc

请注意,在执行源命令后,欢迎消息立即显示,并且您定义的shell提示符外观会发生更改。

Applying the shell prompt changes

启动您的脚本:没有路径?没问题!

增强您的系统以识别用于可执行命令的附加目录可以简化您的工作流程。以运行脚本为例——不再与冗长的路径抗争,只需纯粹的方便。

要启动您的脚本而无需记忆每个路径,请完成以下步骤:

1. 执行以下命令以创建一个名为~/scripts(任意)的目录(mkdir)。

mkdir -p ~/scripts

2. 接下来,打开~/.bashrc文件,并在末尾添加以下行,修改系统的命令搜索路径。此行将~/scripts目录添加到您现有的PATH变量之前。

此行为确保Shell优先使用您的脚本,而不是系统中其他位置具有相同名称的可执行文件。

export PATH="$HOME/scripts:$PATH"

3. 保存并关闭文件,然后source它以应用更改,而无需重新启动终端。

source ~/.bashrc

4. 随后,运行下面的每个命令,在您的~/scripts目录中创建一个名为testscript(任意)的脚本。

这些命令没有输出,但此脚本是可执行的(chmod),它会向终端打印一条消息(echo)。

# 在 ~/scripts 目录中创建一个名为 'testscript' 的新 Bash 脚本
echo '#!/bin/bash' > ~/scripts/testscript

# 在 'testscript' 中追加一行,以在执行时打印 "Script is running!"
echo 'echo "Script is running!"' >> ~/scripts/testscript

# 通过更改权限使 'testscript' 可执行
chmod +x ~/scripts/testscript

5. 最后,在终端中调用其名称执行您的脚本(testscript)。

系统会从您专用的~/scripts目录执行您的脚本,而不管终端中的工作目录在哪里。

testscript

下面的输出证实了您的脚本,以及系统修改后的命令搜索路径按预期工作。

Executing the new script to confirm it’s functioning as expected

结论

~/.bashrc文件的世界中,您已经了解了其作用的基础知识,以及如何自定义命令别名和函数。现在,甚至可以个性化您的Linux终端的外观。

除了外观之外,您还通过扩展PATH环境变量,解锁了执行脚本而无需每次指定完整路径的便利。这些修改节省了时间,增强了用户界面,使您与Linux的交互变得更加高效和愉快。

当您结束对~/.bashrc文件的探索时,请记住Linux真正的本质是其灵活性和它为您提供的控制。旅程还在继续,为什么不通过探索ZSH的增强功能来追求量身定制的体验呢?

深入了解ZSH和像Oh My Zsh这样的框架提供的主题和插件的海洋。看着您的终端转变为更加高效和视觉吸引力的工作空间!

Source:
https://adamtheautomator.com/bashrc/