更换当前语言#
列出当前安装的语言:
生成语言支持
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内容的签名添加相关的依赖
硬链接和软链接#
硬链接的特点#
- 共享相同的inode: 硬链接指向同一个inode,即同一个文件数据块。删除其中一个硬链接不会影响文件数据,只有当所有硬链接都被删除时,文件数据才会被删除
- 无法夸文件系统: 硬链接只能在同一个文件系统内创建,不能跨文件系统
- 不能链接目录: 普通用户不能创建指向目录的硬链接(防止文件系统的混乱)
硬链接的相关命令#
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
没有其他硬链接。
软链接的特点#
- 指向路径: 软链接是一个独立的文件,包含另外一个文件或目录的路径。它们类似于Windows的快捷方式
- 可以跨文件系统: 软链接可以指向不同的文件系统中的文件或目录
- 可以链接目录: 可以创建指向目录的软链接
- 相对和绝对路径: 软链接可以使用相对或绝读路径
软链接相关的命令#
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包含的信息:
- 文件类型: 如普通文件、目录、符号链接等
- 权限和模式: 文件的读、写、执行权限,以及文件类型信息
- 链接计数: 指向该inode的硬链接数量
- 所有者和组: 文件所有者的用户ID和组ID
- 文件大小: 以字节为单位的文件大小
- 时间戳: 包含访问时间、修改时间、改变时间
- 数据块指针: 指向实际存储文件数据的数据块指针列表
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
|
该命令的作用:
echo "Hello World"
:echo
命令用于在终端打印字符串>
:重定向操作符,将echo
命令的输出重定向到文件file2
:目标文件名。如果文件存在,内容则被覆盖,不存在会创建新的文件
其他重定向操作符#
追加操作符>>
: 将输出追加到文件末尾,而不是覆盖文件内容
1
| echo "Hello Again" >> file2
|
该命令将会在file2
文件的末尾追加"Hello Again"
输入重定向 <
: 将文件内容作为命令的输入
该命令会将 file2
的内容作为 sort
命令的输入并进行排序
错误重定向 2>
: 将标准错误(stderr)重定向到文件
1
| ls non_existent_file 2> error.log
|
该命令会将 ls
命令尝试列出一个不存在文件的错误信息重定向到 error.log
文件中
合并输出和错误&>
: 将标准输出和标准错误重定向到一个文件
该命令会将 command
的所有输出(包括错误信息)重定向到 output.log
文件
Linux系统常用命令#
文件和目录管理#
ls
:列出目录内容
1
2
| ls -l # 以详细列表的形式列出文件
ls -a # 显示所有文件,包括隐藏文件
|
cd
:更改目录
1
2
| cd /path/to/directory # 切换到指定目录
cd .. # 返回上一级目录
|
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
:创建空文件或更新文件的时间戳
find
:用于在目录树中查找文件和目录
1
| find /path/to/search -name "*.txt" # 查找所有以 .txt 结尾的文件
|
1
2
| find /path/to/search -type d # 查找所有目录
find /path/to/search -type f # 查找所有普通文件
|
1
| find /path/to/search -size +1M # 查找大于 1MB 的文件
|
1
| find /path/to/search -mtime -7 # 查找 7 天内修改过的文件
|
1
| find /path/to/search -name "*.log" -exec rm {} \; # 查找并删除所有 .log 文件
|
grep
命令:用于搜索文件中的文本模式
1
| grep -i "pattern" file.txt # 搜索时忽略大小写
|
1
| grep -r "pattern" /path/to/dir # 递归搜索目录中的文件
|
1
| grep -v "pattern" file.txt # 显示不包含 "pattern" 的行
|
1
| grep -n "pattern" file.txt # 显示包含 "pattern" 的行及其行号
|
1
| grep -l "pattern" /path/to/dir/* # 仅显示包含匹配项的文件名
|
文件查看和编辑#
cat
:显示文件内容
more
和 less
:分页查看文件内容
1
2
| more file.txt # 从头开始显示文件内容
less file.txt # 支持上下滚动查看文件内容
|
head
和 tail
:查看文件的头部或尾部内容
1
2
| head -n 10 file.txt # 查看文件的前 10 行
tail -n 10 file.txt # 查看文件的后 10 行
|
nano
或 vi
/ 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 # 以人类可读的格式显示内存使用情况
|
top
和 htop
:实时显示系统资源和进程信息
ps
:显示当前进程信息
-e
或-A
:显示所有进程-f
:显示完整格式-u
:按用户过滤进程-aux
:显示所有进程,包括不属于终端的进程,并显示详细信息
kill
和 killall
:终止进程
1
2
| kill PID # 终止指定 PID 的进程
killall process # 终止指定名称的进程
|
kill -9
:强制终止进程kill -6
:让进程异常终止kill -l
:列出所有信号名称kill -15
:发送默认终止信号(较为优雅地终止)
shutdown
和 reboot
:关机和重启系统
1
2
| sudo shutdown -h now # 立即关机
sudo reboot # 重启系统
|
网络管理#
ifconfig
或 ip
:查看和配置网络接口
1
2
| ifconfig
ip addr show
|
ping
:测试网络连通性
curl
和 wget
:下载文件或测试 HTTP 请求
1
2
| curl http://example.com
wget http://example.com/file.zip
|
netstat
或 ss
:查看网络连接和端口使用情况
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 权限运行命令
|
useradd
和 usermod
:管理用户
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
:显示详细信息
zip
和 unzip
:压缩和解压 zip 文件
1
2
| zip -r archive.zip /path/to/directory # 压缩文件
unzip archive.zip # 解压 zip 文件
|
zip -r
:递归压缩目录zip -e
:为压缩文件设置密码zip -x
:排除指定文件
gzip
和 gunzip
:压缩和解压 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。
基本用户:
常用参数:
-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
是用于查看系统手册页的,可以帮助了解命令的用法和参数。
基本用法:
常用参数:
-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
|
安装之后需要重启或注销才能生效