Ubuntu22.04配置流程
安装一些基本工具
sudo update && apt install curl net-tools
网络配置
我一般给虚拟机配置两张网卡,一个用于NAT连接互联网,一个用于局域网内固定IP通信,在你希望做网络隔离的时候,只需要把NAT的网络关了就行,局域网内的环境用另一个网卡通信就行了。
如下图,1号是NAT,2号是仅主机的一个桥接网络
网络就配置完毕了。
终端初始化
因为习惯用zsh的命令补全了,还可以使用一些终端的主题,所以写了一个脚本,可以帮我自动安装。init.sh脚本如下,可以帮助安装zsh和相关代码补全插件。
因为在中国的网络环境,不能直接访问github安装zsh,需要走代理,在脚本中配置正确的代理地址,然后测试能否访问google后,将开始安装omz等。
#!/bin/bash
# 请更换脚本中的代理
MY_PROXY="http://10.0.0.1:23333"
# 命令检查函数
check_command() {
local command_name="$1"
if command -v $command_name &>/dev/null; then
return 0
else
return 1
fi
}
# 目录检查函数
check_directory() {
local directory_name="$1"
if [ -d $directory_name ]; then
return 0
else
return 1
fi
}
# 安装软件函数
install_package() {
local package_name="$1"
echo "Installing $package_name..."
# 判断当前系统类型
if [ -x "$(command -v apt-get)" ]; then
# Ubuntu 或 Debian
sudo apt-get update
sudo apt-get install -y $package_name
elif [ -x "$(command -v yum)" ]; then
# CentOS 或 RHEL
sudo yum install -y $package_name
elif [ -x "$(command -v pacman)" ]; then
# Arch Linux
sudo pacman -Sy $package_name --noconfirm
elif [ -x "$(command -v zypper)" ]; then
# openSUSE
sudo zypper install -y $package_name
else
echo "Unsupported Linux distribution. Please install $package_name manually."
exit 1
fi
}
# Function to test connection with Google
test_connection() {
echo "Testing connection with Google..."
if curl -I -s -m 3 www.google.com | grep -q "200 OK"; then
echo "Connection successful!"
else
echo "Connection timeout. Setting proxy..."
export http_proxy=$MY_PROXY
export https_proxy=$MY_PROXY
source ${HOME}/.zshrc
echo "Testing connection with Google using proxy..."
if curl -I -s -m 3 www.google.com | grep -q "200 OK"; then
echo "Connection successful using proxy!"
else
echo "Connection still timeout. Exiting..."
exit 1
fi
fi
}
# zsh not found
if ! check_command "zsh" ; then
install_package "zsh"
# change default shell to zsh
echo "Changing default shell to zsh..."
sudo chsh -s $(which zsh) $USER
fi
# git not found
if ! check_command "git" ; then
install_package "git"
fi
# 切换到 zsh
if [ -z "$ZSH_VERSION" ] ; then
echo "Switching to zsh..."
exec zsh "$0" "$@"
exit
fi
# 网络没有问题
test_connection
# oh-my-zsh
if ! check_directory ${HOME}"/.oh-my-zsh";then
echo "oh-my-zsh installing..."
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
fi
# zsh-autosuggestions
if ! check_directory ${HOME}"/.oh-my-zsh/custom/plugins/zsh-autosuggestions";then
echo "zsh-autosuggestions installing..."
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
fi
# zsh-syntax-highlighting
if ! check_directory ${HOME}"/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting";then
echo "zsh-syntax-highlighting installing..."
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
fi
echo "export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
export ZSH=\"${HOME}/.oh-my-zsh\"
alias vim=\"nvim\"
alias c=\"clear\"
alias pythpn=\"python3\"
local proxy_url=${MY_PROXY}
proxy () {
export http_proxy=\"\$proxy_url\"
export https_proxy=\"\$proxy_url\"
echo \"HTTP Proxy on\"
}
noproxy () {
unset http_proxy
unset https_proxy
echo \"HTTP Proxy off\"
}
ZSH_THEME=\"tjkirch\"
# ZSH_THEME=\"robbyrussell\"
# ZSH_THEME=powerlevel10k/powerlevel10k
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
)
source \$ZSH/oh-my-zsh.sh
">${HOME}/.zshrc
source ${HOME}/.zshrc
echo "Zsh installation and configuration complete. Exiting script."
先在bash中,给予脚本可执行的权限,然后执行。
如果网络没问题,就可以正常安装了
然后成功进入zsh
再执行一遍改脚本,安装插件,替换zsh文件
安装字体
先安装支持中文比较好的字体
sudo apt update
sudo apt install fonts-noto-cjk fonts-noto-color-emoji
然后我们使用Nerd Fonts里的字体,Nerd Font是一组经过特殊处理的字体集合,它们在常规字体的基础上添加了大量的符号、图标和其他字符。这些额外的字符来自许多不同的开源字体和图标集,如Font Awesome、Octicons、Powerline Symbols、Devicons等。Nerd Font的主要目的是为开发者和系统管理员提供一种在终端和代码编辑器中使用丰富图标的方便方式。
Fira Code Nerd Font 和 Fira Code 的区别
Fira Code:Fira Code是一种流行的编程字体,它具有连字(ligatures)功能,可以将常见的代码符号组合显示为更容易辨识的单个字符符号(如
==
、=>
、!=
等)。它的设计目的是提高代码的可读性和美观性。Fira Code Nerd Font:Fira Code Nerd Font是在Fira Code的基础上添加了Nerd Font符号的版本。这意味着它不仅具有Fira Code的所有连字功能,还包含了大量额外的图标和符号,可以用于终端提示符、代码编辑器和其他需要这些符号的地方。
sudo apt install fonts-firacode
要快速安装Nerd Fonts,你可以将字体文件复制到系统的字体目录中。以下是具体步骤:
安装字体
在用户级别安装字体通常会将字体文件复制到~/.local/share/fonts
目录。你可以在终端中运行以下命令来创建该目录(如果它不存在):
mkdir -p ~/.local/share/fonts
cp FiraCodeNerdFont*.ttf ~/.local/share/fonts/
在复制完成后,更新字体缓存以确保新安装的字体可用:
fc-cache -fv
可以通过以下命令来验证字体是否成功安装:
fc-list | grep "FiraCode"
如果看到输出包含FiraCodeNerdFont
,则说明字体安装成功。
设置系统默认字体(用户级别)
创建或编辑用户级别的字体配置文件~/.config/fontconfig/fonts.conf
。如果文件不存在,可以新建该文件:
mkdir -p ~/.config/fontconfig
nano ~/.config/fontconfig/fonts.conf
在文件中添加以下内容,以设置Fira Code Nerd Font为默认字体:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- 设置无衬线字体为 Fira Code Nerd Font -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Fira Code Nerd Font</family>
</prefer>
</alias>
<!-- 设置有衬线字体为 Fira Code Nerd Font -->
<alias>
<family>serif</family>
<prefer>
<family>Fira Code Nerd Font</family>
</prefer>
</alias>
<!-- 设置等宽字体为 Fira Code Nerd Font -->
<alias>
<family>monospace</family>
<prefer>
<family>Fira Code Nerd Font</family>
</prefer>
</alias>
<!-- 设置简体中文字体为 Noto Sans CJK SC -->
<match>
<test name="lang">
<string>zh-cn</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<match>
<test name="lang">
<string>zh-sg</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- 设置繁体中文字体为 Noto Sans CJK TC -->
<match>
<test name="lang">
<string>zh-tw</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<match>
<test name="lang">
<string>zh-hk</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<match>
<test name="lang">
<string>zh-mo</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<!-- 设置Emoji字体为 Noto Color Emoji -->
<match>
<edit mode="prepend" name="family">
<string>Noto Color Emoji</string>
</edit>
</match>
</fontconfig>
保存并关闭文件。
验证字体设置
可以通过以下命令验证字体设置:
fc-match sans-serif
fc-match serif
fc-match monospace
这些命令应该返回Fira Code Nerd Font
。
安装kitty
Kitty 终端是一个现代化、功能丰富的终端模拟器,特别适合在 Linux 系统上使用
主要功能
GPU 加速:利用 GPU 进行渲染,提供更快的性能和低延迟。
多种布局:支持分屏和多标签页,方便用户组织和管理多个终端会话。
远程控制:可以通过 SSH 在远程机器上启动并控制终端会话。
可配置:支持高度自定义,包括键绑定、配色方案和布局设置。
图形化:支持显示图像和其他图形内容,适用于需要图形输出的应用。
Unicode 和 Emoji 支持:全面支持 Unicode 和多种字体,包括 emoji。
优点
高性能:由于使用 GPU 加速渲染,相比其他终端模拟器,Kitty 提供更流畅和快速的体验。
可扩展性:支持插件和脚本,用户可以根据需求扩展终端功能。
便捷的分屏功能:内置的分屏功能使得在同一窗口中管理多个终端会话更加方便。
易于配置:通过简单的配置文件,用户可以轻松定制 Kitty 的外观和行为。
开源:作为开源软件,Kitty 具有活跃的社区支持,用户可以自由地报告问题、贡献代码和建议新功能。
远程支持:强大的远程控制功能,使其在远程开发和运维场景中非常有用。
在 Ubuntu 中的安装
为了安装更新的版本,我们选择Kitty官方提供的方法
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
kitty配置文件位于~/.config/kitty/kitty.conf
创建kitty应用程序
要将 Kitty 添加到 Ubuntu 的应用程序菜单中,你可以创建一个 .desktop
文件,然后将其放置在合适的位置。这样做可以让 Kitty 在应用程序菜单中显示,并能通过图形界面启动。
以下是创建和安装 Kitty 到应用程序菜单的步骤:
1. 创建 .desktop
文件
打开文本编辑器(比如 gedit
或 nano
),并输入以下内容:
[Desktop Entry]
Version=1.0
Type=Application
Name=Kitty Terminal
Comment=Fast, feature-rich terminal emulator
Exec=/home/edward/.local/kitty.app/bin/kitty
Icon=/home/edward/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png
Terminal=false
Categories=Utility;TerminalEmulator;
请注意以下几点:
Name
:显示在应用程序菜单中的名称。Comment
:对 Kitty 的简短描述。Exec
:Kitty 可执行文件的完整路径。Icon
:Kitty 的图标文件路径。确保替换为实际的路径。Terminal
:是否在终端中运行。对于终端仿真器应用程序,通常设为false
。Categories
:指定应用程序所属的类别,这里是终端仿真器。
2. 保存 .desktop
文件
将上面的内容保存为 kitty.desktop
文件。可以选择将文件保存在 ~/.local/share/applications/
目录下,或者 /usr/share/applications/
目录下。前者对当前用户可见,后者对所有用户可见。
3. 设置文件权限(如果需要)
确保 .desktop
文件具有执行权限,执行以下命令:
chmod +x ~/.local/share/applications/kitty.desktop
4. 更新应用程序缓存
如果将文件保存到 /usr/share/applications/
目录下,可以使用以下命令更新应用程序缓存:
sudo update-desktop-database
配置成功后,kitty会正常显示图标
安装starship
➜ ~ curl -sS https://starship.rs/install.sh | sh
Configuration
> Bin directory: /usr/local/bin
> Platform: unknown-linux-musl
> Arch: x86_64
> Tarball URL: https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-musl.tar.gz
? Install Starship latest to /usr/local/bin? [y/N] y
! Escalated permissions are required to install to /usr/local/bin
> Installing Starship as root, please wait…
✓ Starship latest installed
> Please follow the steps for your shell to complete the installation:
bash
Add the following to the end of ~/.bashrc:
eval "$(starship init bash)"
zsh
Add the following to the end of ~/.zshrc:
eval "$(starship init zsh)"
ion
Add the following to the end of ~/.config/ion/initrc:
eval $(starship init ion)
tcsh
Add the following to the end of ~/.tcshrc:
eval `starship init tcsh`
xonsh
Add the following to the end of ~/.xonshrc:
execx($(starship init xonsh))
fish
Add the following to the end of ~/.config/fish/config.fish:
starship init fish | source
elvish
Warning Only elvish v0.17 or higher is supported.
And add the following to the end of ~/.elvish/rc.elv:
eval (starship init elvish)
nushell
Warning This will change in the future.
Only Nushell v0.78 or higher is supported.
Add the following to the end of your Nushell env file (find it by running $nu.env-path in Nushell):
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
And add the following to the end of your nu config file (find it by running $nu.config-path in Nushell):
use ~/.cache/starship/init.nu
PowerShell
Add the following to the end of Microsoft.PowerShell_profile.ps1:
You can check the location of this file by querying the $PROFILE variable in PowerShell.
Typically the path is ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 or ~/.config/powershell/Microsoft.PowerShell_profile.ps1 on -Nix.
Invoke-Expression (&starship init powershell)
Cmd
You need to use Clink (v1.2.30+) with Cmd. Add the following to a file starship.lua and place this file in Clink scripts directory:
load(io.popen('starship init cmd'):read("*a"))()
➜ ~
配置SSHD
sudo apt install openssh-server
- 打开或创建
~/.ssh/authorized_keys
文件:
nano ~/.ssh/authorized_keys