Linux 环境配置的最佳实践

本文将会长期更新。。。

文章是基于 Ubuntu 和 Mint 系统的,其他 Linux 发行版可以参考一下思路
主要区别在于包管理工具不一样,但是我基本都会附上官方链接,可以参考官方文档进行安装

前言

  1. 文章并不是给纯小白看的,需要有 Linux 基础!
  2. 文章主要是个人笔记和记录,所以可能会有些简洁,欢迎指点

Linux 基础知识

简单记录一些基础知识,有基础的同学可以跳过,直接看后面的 Linux 环境配置

硬链接 & 软链接

硬链接:Linux 系统中,每一个文件都会 有一个索引节点,用来标识文件,链接就是通过这个索引节点进行链接。只有在同一个文件系统中的文件之间才能创建硬连接,不能对目录进行创建。硬链接可以创建多个,即可以有多个文件指向同一个索引节点,或者说一个文件可以拥有多个路径名,因此一个文件可以对应多个文件名。

硬连接就是 “完美的复制”,cp 实现的复制文件,源文件和复制后的文件,索引节点是不同的。
但是通过硬链接得到的文件,索引节点都一模一样。

# 创建一个文件 source_file
touch  source_file
# 建立硬链接文件 hardlink_file
ln source_file hardlink_file

ls -li 发现这两个文件的索引节点相同,所以源文件和硬链接文件指向同一个索引节点。

total 8
1181866 -rw-rw-r-- 2 yusael yusael 9 510 18:40 hardlink_file
1181866 -rw-rw-r-- 2 yusael yusael 9 510 18:40 source_file

对一个文件,可以建立多个硬链接,即使删除了其中一个链接也没事,其他仍然能用。

目录不能建立硬链接,如果可以建立硬链接,目录树就会变成环形的了。


软链接:为某一个文件在另一位置建立一个不同的链接,实现文件或目录的共享,类似 Windows 下的快捷方式。

软链接不要求在同一文件系统中,摆托了硬链接的限制。

软链接可以指向任意一个文件系统下的任意文件或目录,甚至可以指向不存在的文件(无法对不存在的文件创建硬链接)。

# 创建一个文件 source_file
touch source_file
# 创建软链接
ln -s source_file softlink_file
# 删除源文件
rm -rf source_file
# 访问软链接(无法访问到)
cat softlink_file

由于源文件已经被删除,访问软链接也无法访问到了。

cat: softlink_file: No such file or directory

注意:正常创建软链接时务必使用绝对路径,不然访问会报错

软链接的使用场景:

  1. 有时需要执行很多的命令,不同的命令对应不同的目录的路径,有些路径很长很难记,可以使用软链接将这些路径链接到当前路径,就会变的很简单。
  2. 有很多交叉编译器时,不同的编译器可能会用到不同的第三方库,一般的做法是将库文件放到编译器的路径下,编译程序时就会自动找到头文件。但是如果这个库比较大,每个编译器都要用的话,分别搬过去会很占空间,可以通过创建软链接的方式,将这个库共享给不同的变异器使用。

Linux 目录

着重强调几个目录:

  • /usr 不是 user 的缩写,是 Unix Software Resource 的缩写,是Unix操作系统软件资源所放置的目录,而不是用户的数据;所有系统默认的软件都会放置到 /usr, 系统安装完时,这个目录会占用最多的硬盘容量。
  • /usr/local 主要存放那些手动安装的软件,即不是通过 apt-get 安装的软件。它具有和 usr 类似的目录结构,让软件包管理器来管理 /usr 目录,而把自定义的脚本放到 /user/local 目录下面。
  • /opt 主要存放那些可选的程序。尝试完后可以随时直接删除,不会有任何影响。安装到 /opt 目录下的程序,所有的数据、库文件等等都是放在同一个目录下面。

系统启动必须

  • /boot:存放的启动 Linux 时使用的内核文件,包括连接文件以及镜像文件
  • /etc:存放所有的系统需要的配置文件和**子目录列表,**更改目录下的文件可能会导致系统不能启动
  • /lib:存放基本代码库(比如 C++ 库),其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库
  • /sys: 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面 3 种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合

  • /bin:存放着最常用的程序和指令
  • /sbin:只有系统管理员能使用的程序和指令

外部文件管理

  • /dev:Device(设备)的缩写,存放的是 Linux 的外部设备。注意:在 Linux 中访问设备和访问文件的方式是相同的
  • /media:类似 Windows 的其他设备,例如 U 盘、光驱等等,识别后 Linux 会把设备放到这个目录下
  • /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了

临时文件

  • /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run
  • /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件
  • /tmp:这个目录是用来存放一些临时文件的

账户

  • /root:系统管理员的用户主目录
  • /home:用户的主目录,以用户的账号命名的
  • /usr:用户的很多应用程序和文件都放在这个目录下,类似于 Windows 下的 program files 目录
  • /usr/bin:系统用户使用的应用程序与指令
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序
  • /usr/src:内核源代码默认的放置目录

运行过程中要用

  • /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)
  • /proc:管理内存空间虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改

扩展用的

  • /opt:默认是空的,我们安装额外软件可以放在这个里面
  • /srv:存放服务启动后需要提取的数据(不用服务器就是空)

基本指令

系统相关:

# 显示电脑及操作系统相关信息
uname -a 

# 显示 Linux 发行版信息
lsb_release -a

目录相关:

du
-a 列出所有的文件与目录容量
-h 以易懂的容量格式显示, 自动选择显示单位
-s 列出总量, 而不递归列出子目录的容量
-k 以 KB 为单位进行显示
-m 以 MB 为单位进行显示

# 查看指定目录的大小
du -sh <directory_name>


# 查看当前目录下所有文件大小
du -sh *

Linux 环境配置

安装 zsh 和 oh-my-zsh

终端是 Linux 下使用最多的东西,必须打造的漂亮又实用!

对于一个全新的 Linux 系统,务必第一个安装终端环境,因为安装终端会把一些配置文件清空重写,而安装一些其他环境时,会自动往配置文件中配置环境变量,如果后面安装终端,可能会将之前已有的环境变量清除。

# Ubuntu 使用 apt 包管理工具安装
sudo apt-get install zsh

# 验证是否安装成功
zsh --version

# 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# 安装 Powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

# 在配置文件中配置主题
vi ~/.zshrc
# 修改以下配置内容
# ZSH_THEME="powerlevel10k/powerlevel10k"

安装 Hack Nerd Font 字体,去该网址下载字体文件:https://www.nerdfonts.com/font-downloads

也可以直接点击下载 Hack Nerd Font:https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Hack.zip

关于 .zshrc 和 vim 相关的配置,可参考我的配置文件:https://gitee.com/szluyu99/my-unix-config

开发环境安装(必用)

nvm 管理 Node 环境

nvm 是一款 Node.js 环境管理器,可用于安装和切换不同的 Node 环境,建议使用它管理 Node 环境

nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

# 使用脚本安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

# 添加环境变量到 ~/.zshrc 或 ~/.profile 或 ~/.bashrc
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

# 通过 nvm 安装 & 使用 node
nvm install --lts
nvm use --lts

jEnv 管理 Java 环境

jEnv 是一款 Java 环境管理器,可以用于管理本地的不同 Java 环境,建议使用它来管理 Java 环境

jEnv - Manage your Java environment

# 根据文档安装 jenv
git clone https://github.com/jenv/jenv.git ~/.jenv

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc
# 使用包管理工具安装 jdk17
sudo apt install openjdk-17-jdk

使用 ls -l 查看安装的 java 的真实路径:

# 默认使用的是 /usr/bin/java,但这不是安装的 jdk 的真实路径
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 May 27 01:20 /usr/bin/java -> /etc/alternatives/java

$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 43 May 27 01:20 /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk-amd64/bin/java

得到真实路径后,使用 jenv 管理:

$ jenv add /usr/lib/jvm/java-17-openjdk-amd64
openjdk64-17.0.3 added
17.0.3 added
17.0 added
17 added

# 指定当前使用的 jdk 
$ jenv global 17

开发环境安装(可选)

安装 Redis

Redis 5.0 被包含在默认的 Ubuntu 20.04 软件源中,可以使用 apt 包管理工具安装:

sudo apt update
sudo apt install redis-server

常用指令

这里记录一些非常非常常用的指令,Linux 基础很好可以略过

后台运行文件

后台运行文件的方法nohup ./cfw &,会在当前目录生成一个 nohup.out 文件作为日志

手动结束后台进程的方法:

# 找到 clash 的进程号
ps -aux | grep clash
# 或
ps -ef | grep clash

# 杀死该进程
kill -9 3458

解压到指定目录

tar -C /usr/local -xzf go1.18.1.linux-amd64.tar.gz

一些无聊有趣的工具

下面都使用 apt 包管理工具来安装
一般来说 Mac 通过 brew install xxx 也可以安装

sl 是 Steam Locomotive 蒸汽火车的缩写,使用后会有一辆火车开过

$ sudo apt install sl

$ sl
	                      (@@) (  ) (@)  ( )  @@    ()    @     O     @     O      @
	                 (   )
	             (@@@@)
	          (    )
	
	        (@@@)
	     ====        ________                ___________
	 _D _|  |_______/        \__I_I_____===__|_________|
	  |(_)---  |   H\________/ |   |        =|___ ___|      _________________
	  /     |  |   H  |  |     |   |         ||_| |_||     _|                \_____A
	 |      |  |   H  |__--------------------| [___] |   =|                        |
	 | ________|___H__/__|_____/[][]~\_______|       |   -|                        |
	 |/ |   |-----------I_____I [][] []  D   |=======|____|________________________|_
	_/ =| o |=-~~\  /~~\  /~~\  /~~\ ____Y___________|__|__________________________|_
	|/-=|___|=   O=====O=====O=====O|_____/~\___/          |_D__D__D_|  |_D__D__D_|
	 \_/      \__/  \__/  \__/  \__/      \_/               \_/   \_/    \_/   \_/

cmatrix 是模拟类似黑客帝国的数字雨场景来进行显示

$ sudo apt install cmatrix

$ cmatrix

htop 是 Liunx 操作系统的图形化性能检测工具

$ sudo apt install htop

$ htop

hollywood 抖音中很火的那个,想象中的程序猿

$ sudo apt install hollywood

$ hollywood

aafire 让字符串像火焰一样燃烧的输出

$ sudo apt install libaa-bin

$ aafire

bastet 可以在 Linux 系统下玩俄罗斯方块:

$ sudo apt install bastet

$ bastet

cowsay 会说话的奶牛

$ sudo apt install cowsay

$ cowsay "hello world"
 _____________
< hello world >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

figlet 将用户输入的内容转换成 ASCII 横幅并在显示屏上输出(无长度限制

$ sudo apt instal figlet

$ figlet I Love Linux!
 ___   _                     _     _                  _
|_ _| | |    _____   _____  | |   (_)_ __  _   ___  _| |
 | |  | |   / _ \ \ / / _ \ | |   | | '_ \| | | \ \/ / |
 | |  | |__| (_) \ V /  __/ | |___| | | | | |_| |>  <|_|
|___| |_____\___/ \_/ \___| |_____|_|_| |_|\__,_/_/\_(_)

实践操作

启动 SSH

参考:在 Ubuntu 20.04 启用 SSH,并且通过局域网登录 Ubuntu 机器

一、在 Ubuntu 上启用 SSH

# 安装 openssh-server
sudo apt update
sudo apt install openssh-server

# 验证是否运行
sudo systemctl status ssh

# Ubuntu 自带的防火墙配置工具, 打开 SSH 端口
sudo ufw allow ssh

修改配置项:vi /etc/ssh/sshd_config

Port 22
PermitRootLogin yes

二、连接到 SSH 服务器

# 在 Linux 上查看 IP 地址,下面两个指令都可以
ifconfig
ip a

在其他主机上,通过 SSH 命令登录远程机器:ssh username@ip

ssh root@192.168.3.11

三、通过 VsCode 打开远程目录,编辑代码

安装插件:Remote - SSH,输入主机进行连接然后选择文件目录,即可开始编辑

其他

Linux Mint 相关记录

ctrl + alt + F1 ~ F6 进入 tty1 ~ tty6(文本模式),ctrl + alt + F7 可以退出

Linux Mint 下将键盘 Ctrl 位置换到 CAPSLOCK 上的方法:系统自带功能可以实现

  • 系统 -> 键盘 -> 布局 -> 选项 -> Ctrl key position -> …

Mint 和 Windows 一致的快捷键

  • Alt + F4:关闭程序
  • Alt + Tab:切换程序
  • Win + 方向键,移动窗口贴合到指定方向

蓝牙管理

这个主要针对 Mint 系统,因为默认的 blueberry 十分不好用(经常找不到蓝牙设备,连接也不好用)
换成 blueman 以后就正常了

卸载自带的 blueberry,安装 blueman:

sudo apt-get remove blueberry
sudo apt-get install blueman
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌宅鹿同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值