更换当前语言

列出当前安装的语言:

1
locale -a

生成语言支持

1
sudo locale-gen en_US.UTF-8

更改语言环境变脸

临时更改:

1
export LANG=en_US.UTF-8

永久更改(需要/etc/default/locale 文件):

1
2
3
sudo nano /etc/default/locale
# 在文件中添加一下内容,注释其他的语言
LANG=en_US.UTF-8

环境变量

1
export PATH=$HOME/.local/bin:$PATH

:$PATH:作用是在保留原有的PATH内容,并在PATH内容的签名添加相关的依赖

硬链接和软链接

硬链接的特点

  1. 共享相同的inode: 硬链接指向同一个inode,即同一个文件数据块。删除其中一个硬链接不会影响文件数据,只有当所有硬链接都被删除时,文件数据才会被删除
  2. 无法夸文件系统: 硬链接只能在同一个文件系统内创建,不能跨文件系统
  3. 不能链接目录: 普通用户不能创建指向目录的硬链接(防止文件系统的混乱)

硬链接的相关命令

1
2
3
4
5
6
# 创建硬链接
ln file1 hardlink_to_file1
# 取消硬链接
rm hardlink_to_file1
# 验证硬链接(能看到两个文件有相同的inode)
ls -li file1 hardlink_to_file1

删除这个硬链接不会影响 hardlink_to_file1 的数据,除非 hardlink_to_file1 没有其他硬链接。

软链接的特点

  1. 指向路径: 软链接是一个独立的文件,包含另外一个文件或目录的路径。它们类似于Windows的快捷方式
  2. 可以跨文件系统: 软链接可以指向不同的文件系统中的文件或目录
  3. 可以链接目录: 可以创建指向目录的软链接
  4. 相对和绝对路径: 软链接可以使用相对或绝读路径

软链接相关的命令

1
2
3
4
5
6
# 创建软链接
ln -s /path/to/file1 symlink_to_file1
# 取消软链接
rm symlink_name
# 验证软链接
ls -l file1 symlink_to_file1

inode

在Linux和其他的Unix类操作系统中,inode(索引节点)是文件系统的一个重要概念,用于描述文件的元数据和存储位置。每个文件和目录都有一个对应的inode,存储该文件或目录的相关信息

inode包含的信息:

  1. 文件类型: 如普通文件、目录、符号链接等
  2. 权限和模式: 文件的读、写、执行权限,以及文件类型信息
  3. 链接计数: 指向该inode的硬链接数量
  4. 所有者和组: 文件所有者的用户ID和组ID
  5. 文件大小: 以字节为单位的文件大小
  6. 时间戳: 包含访问时间、修改时间、改变时间
  7. 数据块指针: 指向实际存储文件数据的数据块指针列表

inode不包含文件名,文件名和inode是通过目录向联系在一起的。目录将文件名映射到相应的inode

inode的相关命令操作

查看文件的inode编号:

1
ls -i Java面试宝典\(牛客网\).pdf

输出结果如下:

1
5509495 'Java面试宝典(牛客网).pdf'

查看inode信息:

1
stat Java面试宝典\(牛客网\).pdf

输出结果如下:

1
2
3
4
5
6
7
8
  File: Java面试宝典(牛客网).pdf
  Size: 14643112  	Blocks: 28600      IO Block: 4096   regular file
Device: 8,2	Inode: 5509495     Links: 1
Access: (0600/-rw-------)  Uid: ( 1000/     lyj)   Gid: ( 1000/     lyj)
Access: 2024-05-19 15:38:36.904412714 +0800
Modify: 2024-04-03 13:22:56.879405504 +0800
Change: 2024-04-03 13:22:56.895405189 +0800
 Birth: 2024-04-03 13:22:56.115420560 +0800

文件系统的inode数量是固定的。如果inode数量用尽了,即使磁盘空间还有剩余,也无法新建文件,且不同的文件系统有不同的inode结构和管理方式,如 ext4、XFS、Btrfs 等

重定向操作符>

作用: > 将命令的标准输出(stdout)重定向到一个文件。如果该文件已经存在,他会被覆盖。如果文件不存在则会创建一个新文件。

1
echo "Hello World" > file2

该命令的作用:

  1. echo "Hello World"echo命令用于在终端打印字符串
  2. >:重定向操作符,将echo命令的输出重定向到文件
  3. file2:目标文件名。如果文件存在,内容则被覆盖,不存在会创建新的文件

其他重定向操作符

追加操作符>> 将输出追加到文件末尾,而不是覆盖文件内容

1
echo "Hello Again" >> file2

该命令将会在file2文件的末尾追加"Hello Again"

输入重定向 < 将文件内容作为命令的输入

1
sort < file2

该命令会将 file2 的内容作为 sort 命令的输入并进行排序

错误重定向 2> 将标准错误(stderr)重定向到文件

1
ls non_existent_file 2> error.log

该命令会将 ls 命令尝试列出一个不存在文件的错误信息重定向到 error.log 文件中

合并输出和错误&> 将标准输出和标准错误重定向到一个文件

1
command &> output.log

该命令会将 command 的所有输出(包括错误信息)重定向到 output.log 文件

Linux系统常用命令

文件和目录管理

ls:列出目录内容

1
2
ls -l   # 以详细列表的形式列出文件
ls -a   # 显示所有文件,包括隐藏文件

cd:更改目录

1
2
cd /path/to/directory   # 切换到指定目录
cd ..                   # 返回上一级目录

pwd:显示当前工作目录

1
pwd   # 显示当前所在的目录路径

cp:复制文件或目录

1
2
cp source.txt destination.txt    # 复制文件
cp -r source_dir/ destination/   # 复制目录

mv:移动或重命名文件或目录

1
2
mv oldname.txt newname.txt   # 重命名文件
mv file.txt /path/to/newdir/ # 移动文件到新目录

rm:删除文件或目录

1
2
rm file.txt       # 删除文件
rm -r directory/  # 递归删除目录及其内容

mkdir:创建目录

1
2
mkdir new_directory   # 创建新目录
mkdir -p path/to/new_directory  # 递归创建目录

touch:创建空文件或更新文件的时间戳

1
touch newfile.txt

find:用于在目录树中查找文件和目录

  • *-name**:按文件名查找
1
find /path/to/search -name "*.txt"   # 查找所有以 .txt 结尾的文件
  • -type:按文件类型查找
1
2
find /path/to/search -type d   # 查找所有目录
find /path/to/search -type f   # 查找所有普通文件
  • -size:按文件大小查找
1
find /path/to/search -size +1M   # 查找大于 1MB 的文件
  • -mtime:按修改时间查找
1
find /path/to/search -mtime -7   # 查找 7 天内修改过的文件
  • -exec:对找到的文件执行命令
1
find /path/to/search -name "*.log" -exec rm {} \;   # 查找并删除所有 .log 文件

grep 命令:用于搜索文件中的文本模式

  • -i:忽略大小写
1
grep -i "pattern" file.txt   # 搜索时忽略大小写
  • -r:递归搜索目录
1
grep -r "pattern" /path/to/dir   # 递归搜索目录中的文件
  • -v:排除匹配项
1
grep -v "pattern" file.txt   # 显示不包含 "pattern" 的行
  • -n:显示匹配行的行号
1
grep -n "pattern" file.txt   # 显示包含 "pattern" 的行及其行号
  • -l:显示包含匹配项的文件名
1
grep -l "pattern" /path/to/dir/*   # 仅显示包含匹配项的文件名

文件查看和编辑

cat:显示文件内容

1
cat file.txt

moreless:分页查看文件内容

1
2
more file.txt   # 从头开始显示文件内容
less file.txt   # 支持上下滚动查看文件内容

headtail:查看文件的头部或尾部内容

1
2
head -n 10 file.txt   # 查看文件的前 10 行
tail -n 10 file.txt   # 查看文件的后 10 行

nanovi / vim:编辑文件

1
2
nano file.txt    # 使用 nano 编辑器打开文件
vim file.txt     # 使用 vim 编辑器打开文件

系统信息和管理

df:显示磁盘空间使用情况

1
df -h   # 以人类可读的格式显示磁盘使用情况

du:显示文件或目录的大小

1
du -sh /path/to/directory   # 递归显示目录大小

free:显示内存使用情况

1
free -h   # 以人类可读的格式显示内存使用情况

tophtop:实时显示系统资源和进程信息

1
top    # 显示实时的系统资源使用信息

ps:显示当前进程信息

1
ps -aux   # 显示所有用户的所有进程
  • -e-A:显示所有进程
  • -f:显示完整格式
  • -u:按用户过滤进程
  • -aux:显示所有进程,包括不属于终端的进程,并显示详细信息 killkillall:终止进程
1
2
kill PID         # 终止指定 PID 的进程
killall process  # 终止指定名称的进程
  • kill -9:强制终止进程
  • kill -6:让进程异常终止
  • kill -l:列出所有信号名称
  • kill -15:发送默认终止信号(较为优雅地终止) shutdownreboot:关机和重启系统
1
2
sudo shutdown -h now   # 立即关机
sudo reboot            # 重启系统

网络管理

ifconfigip:查看和配置网络接口

1
2
ifconfig
ip addr show

ping:测试网络连通性

1
ping google.com

curlwget:下载文件或测试 HTTP 请求

1
2
curl http://example.com
wget http://example.com/file.zip

netstatss:查看网络连接和端口使用情况

1
2
netstat -tuln   # 显示所有监听的端口
ss -tuln        # 类似于 netstat,但输出更快

权限和用户管理

chmod:更改文件权限

1
2
chmod 755 file.txt    # 设置文件权限为 755
chmod +x script.sh    # 给脚本添加可执行权限
  • 文件所有者(7)rwx(读、写、执行)
  • 组用户(5)r-x(读和执行,没有写权限)
  • 其他用户(5)r-x(读和执行,没有写权限) chown:更改文件或目录的所有者
1
chown user:group file.txt   # 修改文件的所有者

sudo:以超级用户权限执行命令

1
sudo command   # 使用 sudo 以 root 权限运行命令

useraddusermod:管理用户

1
2
sudo useradd newuser         # 添加新用户
sudo usermod -aG sudo user   # 将用户添加到 sudo 组

压缩和解压缩

tar:打包和解压 tar 文件

1
2
tar -czvf archive.tar.gz /path/to/directory   # 打包并压缩
tar -xzvf archive.tar.gz                      # 解压
  • -c:创建新的tar文件
  • -x:解压tar文件
  • -z:使用gzip压缩或解压
  • -j:使用bzip2压缩或解压
  • -f:指定文件名
  • -v:显示详细信息 zipunzip:压缩和解压 zip 文件
1
2
zip -r archive.zip /path/to/directory   # 压缩文件
unzip archive.zip                       # 解压 zip 文件
  • zip -r:递归压缩目录
  • zip -e:为压缩文件设置密码
  • zip -x:排除指定文件 gzipgunzip:压缩和解压 gzip 文件
1
2
gzip file.txt    # 压缩文件
gunzip file.gz   # 解压文件

nano

nano基本操作快捷键

  • 保存文件: Ctrl + o
  • 退出nano: Ctrl + x
  • 剪贴文本: Ctrl + k
  • 粘贴文本: Ctrl + u
  • 选择文本: Ctrl + Shift + 6
  • 撤销: Alt + u
  • 重做: Alt + e
  • 移动到行首: Ctrl + a
  • 移动到行尾: Ctrl + e
  • 向下翻页: Ctrl + y
  • 向下翻页: Ctrl + v
  • 移动到文件开头: Ctrl + home
  • 移动到文件结尾: Ctrl + end
  • 搜索文本: Ctrl + w
  • 搜索并替换文本: Ctrl + \

切换用户

su命令用来在Linux系统下切换用户身份。

1
2
# 切换到指定到指定用户。若不指定用户名,默认切换到root用户
su [username]

常用参数:

  • --l--login:启动一个登录shell,会加载目标用户的环境变量,类似于重新登录
  • -c [command]:运行指定命令,然后退出。例如:su -c "ls -a"
  • -s [shell]:指定要使用的shell。默认使用目标用户的登录shell
  • -m--preserve-environment:保留当前环境变量。而不是切换到目标用户的环境。
  • -p:与-m相同,保留环境

切换shell

chsh用于更改用户登录shell。 基本用户:

1
chsh -s /path/to/shell

常用参数:

  • -s,--shell SHELL:指定新的登录shell。例如:chsh -s /bin/zsh
  • -l --list-shells:列出系统商可用的shell
  • -h,--help:显示帮助信息
  • -u,--username USER:指定要更改shell的用户(需要root权限)。例如:sudo chsh -s /bin/bash username

系统手册

man 是用于查看系统手册页的,可以帮助了解命令的用法和参数。 基本用法:

1
man [section] name

常用参数:

  • -k, --apropos keyword:搜索手册页中包含指定关键字的条目。例如:man -k ssh
  • -f, --whatis name:显示指定命令或文件的简要描述。例如:man -f ls
  • -a:显示所有匹配的手册页,而不仅仅是第一个。例如:man -a printf
  • -l, --local-file file:查看本地文件中的手册页。例如:man -l ./myfile.1
  • -C config_file:使用指定的配置文件。例如:man -C /path/to/config
  • -P pager:指定用于显示手册页的分页程序。例如:man -P less ls
  • -M path:指定手册页的搜索路径。例如:man -M /usr/share/man ls

nano常用配置

nano全局配置文件路径/etc/nanorc ,用户配置路径~/.nanorc

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 显示行号
set linenumbers
# 设置 Tab 大小
set tabsize 4
# 将tab转为空格
set tabstospaces
# 允许自动缩进
set autoindent
# 禁用自动换行
set nowrap
# 保存时修剪行尾空白
set trimblanks
# 禁用备份文件
set backup
# 不在文件末尾添加新行
set nonewlines
# 启用语法高亮
include "/usr/share/nano/*.nanorc"

KDE6.4切换X11

从KDE6.4开始默认使用WayLand了,导致在系统设置或SDDM登录界面没有切换X11的选项,但是由于现阶段有些软件对于WayLand的兼容性还是没有X11好,因此我还是打算切换到X11,现如今想要切换X11需要安装一个额外的软件包

1
sudo pacman -S plasma-x11-session

安装之后需要重启或注销才能生效