Contents

Linux command

Linux命令大全

Linux 命令大全

Anaconda

Anaconda

常用命令

Anaconda/pip 更换阿里源,助力 conda create -n 虚拟环境搭建_anaconda换阿里源_乄洛尘的博客-CSDN博客

Conda常用命令整理_conda命令_CharlotteMen的博客-CSDN博客

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
conda -h # 查看帮助
conda info
conda config -h 
conda config --show # 查看所有配置
conda config --show-sources # 查看镜像源
conda config --show pkgs_dirs # envs_dirs
conda config --show solver # classic or libmamba
conda config --remove-key channels # 恢复默认配置
conda config --set auto_activate_base false # 不自动激活base

conda create -n env_name -c xxx python=version_number # 创建环境,使用vpn可能失败
conda remove -n env_name --all # 删除环境 (可以暴力删除envs/xxx文件夹)
sudo mv env_name new_name # 环境重命名

conda search cudnn --info # 查看可用版本
conda update -n base -c defaults conda # 更新anaconda
conda clean --all # 清除缓存

# 修改镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels conda-forge
conda config --set auto_activate_base false
vim ~/.condarc # 直接编辑配置文件,不要放太多(多了反而可能出错)
channels:
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
  - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults

conda 环境迁移

conda环境的复制(生成.yaml文件)和pip环境的复制(生成requirements.txt)_当我们想再次创建该环境,或根据别人提供的.yaml文件复现环境时,就可以通过下面的-CSDN博客

1
2
3
4
5
pip freeze > requirements.txt
pip install -r requirements.txt

conda env export > environment.yaml
conda env create -f environment.yaml

conda 自动补全

Ubuntu conda自动补全_sjjzym1314的博客-CSDN博客

1
2
3
conda install conda-bash-completion
# 指定forge源安装
conda install -c conda-forge conda-bash-completion 

Linux Ubuntu Conda 虚拟环境 激活

【Linux】安装Anaconda后默认不进入conda环境方法_杨小浩浩hh的博客-CSDN博客

1、未进入虚拟环境时:

直接 conda activate env_name

2、在虚拟环境中时

执行两次source deactivate命令 使不在conda管理的环境中

(或两次 conda deactivate命令)

pip

pip 指定镜像源:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
pip -V # 查看pip安装路径
pip install pkg_name==xxx
pip config set global.index-url [https://pypi.tuna.tsinghua.edu.cn/simple](https://pypi.tuna.tsinghua.edu.cn/simple)
pip config unset global.index-url # 恢复默认源
pip config list # 查看镜像地址
pip show pkg_name # 查看包路径(安装位置)
pip list -v # 显示详细信息,包括包路径
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name # 指定源
pip install --upgrade pip # 升级pip
pip3 install --upgrade pip
https://www.piwheels.org/project/pip/ # 手动下载地址,注意与python版本的适配
-f 是为 pip 提供额外的搜索路径,用来查找包文件。它既可以是一个本地路径,也可以是一个网络路径。
--index-url 是直接替换默认的 PyPI 源,指定一个新的包索引来查找和解析包依赖信息。
pip show pkg_name # 查看包信息
pip cache purge  # 清理全局 Pip 缓存

WSL

基本使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# WSL本地根目录
C:\Users\fjyu\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs挂载网络共享磁盘:(/mnt目录下)

# 挂载
sudo mount -t drvfs R: r (每次开机需要重新挂载)

# 设置软链接:(目标目录可以不存在)
sudo ln -s /mnt/r/RD\ Data/QTE/YFJ YFJ

# 删除软链接
sudo unlink YFJ

WSL与Windows共享目录.md

WSL 使用指南——04 安装桌面环境

显示图像

需要安装xming(启动xlaunch)

还需要下载安装fonts,否则中文乱码

.bashrc设置

1
2
3
4
5
export DISPLAY=:0.0 # 显示图形界面
export LIBGL_ALWAYS_INDIRECT=1
sudo mount -t drvfs R: /mnt/r # 自动挂载共享盘
cd /mnt/YFJ/python
ll -htr

磁盘挂载

Linux mount命令 | 菜鸟教程

1
2
3
4
5
6
7
sudo mount -t drvfs R: r # WSL挂载
sudo mount -t drvfs R: /mnt/r # 自动挂载共享盘
mount -o loop /tmp/image.iso /mnt/cdrom # ISO挂载
sudo mount -t cifs -o username="303lab",password="quanta303" //192.168.2.112/6 /home/zhaoyun/192.168.2.112
sudo mount -o username=fjyu@quantaeye.local,password=123456,uid=1009,gid=1011 //192.168.3.10/QuantaEye/RD\ Data /share
sudo mount -t ntfs3 /dev/sda2 /media/yfjie/文档 # 以ntfs3格式挂载磁盘
sudo mount -t ntfs-3g /dev/sda2 /media/hdd -o force # 强制挂载,忽略权限检查

开机自动挂载

开机自动挂载硬盘 — Linux latest 文档

1
2
3
4
5
sudo cp /etc/fstab /etc/fstab.bak 
sudo vim /etc/fstab 
/dev/sdb1 /mnt/mydrive ext4 defaults 0 0
sudo mount -a # 使挂载生效
sudo reboot

第一栏:磁盘文件名

这个字段可以填写的数据主要有三种:

  • 磁盘设备的文件名,如 /dev/sda1
  • 磁盘设备的 UUID 名称,如 UUID=xxx
  • 磁盘设备的 LABEL 名称,例如 LABEL=xxx

systemd

https://www.expoli.tech/articles/2022/12/23/use-systemd-mount-any-device#837c6064cb3d4e759a9ffee839855549

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[Unit]
Description=Mount mydisk at startup
#After=network.target
After=local-fs.target

[Service]
Type=oneshot
ExecStart=sudo mount -t ntfs3 /dev/sda2 /media/yfjie/文档
RemainAfterExit=true

[Install]
WantedBy=multi-user.target
1
2
3
4
5
ll /etc/systemd/system/
sudo mkdir -p /mnt/mydisk
sudo systemctl daemon-reload
sudo systemctl enable mnt-mydisk.mount  # 启用开机自启
sudo systemctl start mnt-mydisk.mount   # 立即挂载

磁盘分区

总结-磁盘+分区+文件系统+挂载的查询 - 安迪9468 - 博客园

技术|Linux 中获取硬盘分区或文件系统的 UUID 的七种方法

  • lsblk:这个命令会显示所有可用磁盘和分区的信息。在输出结果中,您可以看到每个磁盘和分区的名称、 挂载点和文件系统类型等信息。
  • sudo fdisk -l:这个命令会列出所有的磁盘分区表。在输出结果中,您可以看到每个磁盘的名称、大小和分区数量等信息,以及每个分区的编号、大小和文件系统类型等信息。
  • sudo parted -l:这个命令会显示更详细的磁盘和分区信息,包括每个分区的文件系统标签和UUID等信息。
  • blkid # block uuid
  • lsblk -f # list uuid,Recommended
  • ll /dev/disk/by-uuid/

磁盘信息

ncdu

Linux df 命令

1
2
3
4
5
6
df -hT
df -h /path/to/your/file_or/dir # 查看目录所在的挂载点及挂载设备
ncdu # d键可以删除,i键显示元信息
ncdu /home # 可选sudo
ncdu /
sudo ncdu / --exclude /data [--exclude /mnt --exclude /media] 

查看保留空间

sudo tune2fs -l /dev/sda1 | grep “Reserved block count”

单位:4KB

环境变量

在 Linux 中,有许多常用的环境变量可用于控制系统行为、配置应用程序和提供有关系统和用户环境的信息。以下是一些常用的 Linux 环境变量:

  1. PATH:指定系统在哪些目录中搜索可执行文件。当你在终端中输入命令时,系统会在 PATH 中指定的目录中查找这些命令的可执行文件。
  2. HOME:指定当前用户的主目录路径。大多数用户相关的配置文件和数据都存储在 HOME 目录下。
  3. USER:当前登录用户的用户名。
  4. PWD:当前工作目录的路径。
  5. LANG:指定默认的区域设置语言。它影响了程序的语言和格式化输出。
  6. TZ:指定系统时区。
  7. SHELL:指定默认的登录 shell。
  8. EDITOR:指定默认的文本编辑器。
  9. TERM:指定当前终端类型。
  10. LD_LIBRARY_PATH:指定系统在哪些目录中搜索共享库文件。
  11. DISPLAY:指定 X11 显示服务器的地址。
  12. PS1:指定命令提示符的格式。

这些只是一些常见的 Linux 环境变量,实际上还有许多其他环境变量可用于各种用途。你可以在终端中使用 env 命令来查看当前定义的所有环境变量,以及它们的值。

语言编码

1
2
3
4
echo $LANG
export LANG=en_US.UTF-8
locale -a
sudo dpkg-reconfigure locales

ls只列出部分项

1
2
3
4
5
6
7
8
9
ll | head -n 10
ll | tail -n 10
ls | grep "pattern"
ll -X # 扩展名排序
ls -l | grep ^d # 仅显示目录
ls -l | grep ^- # 仅显示文件
ls -lSr # 从小到大排序,-r为逆序排列
ls -l | grep "^-" | wc -l # 统计文件数
ls -ld .* | grep -v '^\.\.?$' # 仅显示隐藏文件

ls 按大小和扩展名排序_ls按照文件名排序_陈止风的博客-CSDN博客

Linux统计文件夹下的文件数目

https://xujinzh.github.io/2022/01/21/ls-dir-file/index.html

ln软链接

1
2
3
4
5
6
7
8
9
# 创建快捷方式(源文件必须是绝对路径)
ln -s /path/to/original/file/example.txt /path/to/shortcut/example.lnk 

# 设置软链接:(目标目录可以不存在)
sudo ln -s /mnt/r/RD\ Data/QTE/YFJ YFJ

# 删除软链接
sudo unlink YFJ
ln -sf /path/to/source ebook # 强制覆盖

终端显示图像 (需开启xserver)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
display img_path
eog img_path # 通用,慢
catimg your_image.jpg # 快速显示
catimg -w 50 filepath
w3m -o auto_image=TRUE your_image.jpg
chafa your_image.jpg
feh your_image.jpg
gpicview your_image.jpg # 推荐,略快

# yum安装catimg,直接下下载.rpm包然后yum install

图像处理/imagemagick

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
sudo apt update && sudo apt install imagemagick
# mogrify会覆盖原图
mogrify -resize 50% *.jpg # 等比例缩放
mogrify -resize 800x *.jpg  # 宽度固定为 800,高度按比例调整
mogrify -resize 800x600 *.jpg # 限制最大尺寸,并保持宽高比
mogrify -resize 800x600! *.jpg # 强制变形
mogrify -resize 1024x768 *.png *.jpg # 多种格式
mogrify -format jpg *.png # 批量格式转换

# convert生成新文件
convert input.jpg -resize 50% output.jpg

# 图像信息
identify image.jpg
identify -verbose image.jpg # 详细信息

视频处理/FFmpeg

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# 设备查看
lsusb
ls /dev/video*
v4l2-ctl --list-devices

# 列出指定视频设备支持的视频格式
v4l2-ctl --device=/dev/video0 --list-formats
v4l2-ctl --device=/dev/video0 --list-formats-ext # 详细信息

# 当前视频格式和分辨率
v4l2-ctl --device=/dev/video0 --get-fmt-video

# 设备支持的所有控制项及其当前值
v4l2-ctl --device=/dev/video0 --list-ctrls

# 显示指定视频设备的基本信息
v4l2-ctl --device=/dev/video0 --info

# 控制软件
cheese
guvcview # recommend
v4l2 test utility
orbbec viewer # 管理员权限运行
rviz

# 相机设置
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=MJPG --device /dev/video0
v4v4l2-ctl --device=/dev/video0 --set-fmt-video=width=1280,height=720,pixelformat=MJPG
auto_exposure (自动曝光)
min=0 max=3 default=3 value=3 (Aperture Priority Mode)
控制自动曝光的模式。
0:禁用自动曝光(手动曝光)。
1:启用自动曝光(快门优先模式)。
2:启用自动曝光(ISO 优先模式)。
3:启用自动曝光(光圈优先模式,默认设置)。
dmesg | grep -i usb # 查看内核日志

# 视频流查看
mplayer tv:// -tv device=/dev/video0 # 读取并显示视频流
ffplay /dev/video0 # 基于FFmpeg和SDL库,s逐帧、p播放
ffplay -x 640 -y 480 -framerate 30 /dev/video0
ffplay /dev/video0 -stats # 显示分辨率和帧率,终端中
ffplay /dev/video0 -pix_fmt yuv422p # mjpeg
vlc v4l2:///dev/video0
ffprobe /dev/video0

# 视频保存
ffmpeg -f v4l2 -i /dev/video0 -f mp4 ouqtput.mp4 # recommend
ffmpeg -f v4l2 -i /dev/video0 -vcodec libx264 -pixfmt yuv420p mycamera.h264
v4l2-ctl --device=/dev/video0 --stream-mmap --stream-to=output.yuv --stream-count=300
mplayer tv:// -tv device=/dev/video0 -dumpstream -dumpfile output.ts
cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))

# 图像保存
v4l2-ctl --device=/dev/video0 --capture --file=test.jpg
ffmpeg -f v4l2 -i /dev/video0 -vframes 1 test.jpg # or .png
ffmpeg -f v4l2 -i /dev/video0 -vf "scale=1920:1080" -vframes 1 image.jpg

- f v4l2 指定输入格式为 V4L2(Video for Linux 2)。
-i /dev/video0 指定输入设备(通常是 /dev/video0,可以根据实际设备更改)。
-vframes 1 指定仅捕获一帧图像。
test.jpg 为输出文件名。

# 图像信息
sudo apt install exiftool
exiftool test.jpg
ffmpeg -i test.jpg
ffprobe test.jpg

# 视频信息
exiftool <文件名>
ffprobe <文件名>
mediainfo <文件名>

# 提取视频帧
ffmpeg -i input.mp4 -vframes 1 -vf "select='eq(n,0)'" output.png # 提取第一帧

# 视频剪辑
ffmpeg -i input.mp4 -t 115 -c copy output.mp4
ffmpeg -i input.mp4 -t 115 output.mp4 # 重新编码

文件传输/拷贝/同步 rsync

文件传输/拷贝/同步 rsync

cp -a 保留归档信息(archive

scp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo apt-get install lrzsz
scp
rsync

# 本地到远程
scp local_file remote_username@remote_ip:remote_folder 
scp local_file remote_username@remote_ip:remote_file
scp -P 2222 localfile user@remotehost:/path/to/destination
scp -r local_folder remote_username@remote_ip:remote_folder
scp -P 2222 -r myfolder user@192.168.1.100:/home/user/newfolder # rename

https://linuxtools-rst.readthedocs.io/zh-cn/latest/tool/scp.html#:~:text=scp%E6%98%AFsecure%20copy%E7%9A%84,%E4%BD%A0%E6%8A%8A%E6%96%87%E4%BB%B6%E7%A7%BB%E5%87%BA%E6%9D%A5%E3%80%82

scp复制文件时排除指定文件

rsync

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
rsync -avz -n -h . 43.138.116.20:~/pics # 同步当前目录与远程服务器目录(DRY RUN)
rsync -avzP -nh stellar_web_recon/ stellar_engine_web_reconstruction/ --exclude .git # 排除所有.git
rsync -e "ssh -p 2222" -avz /home/zhaoyun/YFJ/python/sediment/deeplearning/Keras-Semantic-Segmentation/utils/ yfjie@43.139.81.212:/home/yfjie/Documents/python/Keras-Semantic-Segmentation/utils --delete
rsync -e "ssh -p 2222" -avz yfjie@43.139.81.212:/home/yfjie/Documents/python/Keras-Semantic-Segmentation/utils tmp/ --exclude *cache*
rsync -e "ssh -p 2222" -avz -n -h /home/zhaoyun/YFJ/python/sediment/deeplearning/Keras-Semantic-Segmentation/ yfjie@43.139.81.212:/home/yfjie/Documents/python/Keras-Semantic-Segmentation/ --exclude weights --exclude data --exclude .idea --exclude *cache*
rsync -e "ssh -p 2222" -avz -n -h yfjie@43.139.81.212:/home/yfjie/Documents/slam/ORB_SLAM2 /share/QTE/YFJ/SLAM/ORB_SLAM2 --exclude Vocabulary --exclude .idea

--include image --exclude "/*" # 仅同步image目录
rsync -av --exclude-from='exclude.txt' user@remote:/data/projectA/ ./projectA/

[注意事项]
源路径斜杠 (/) 的影响  "带 / 复制内容,不带 / 复制整个目录"
本地同步 目标路径的 / 基本无影响
远程同步 目标路径的 / 可能会影响路径解析复制到符号链接指向的位置

# 加速传输
rsync -avzP /path/to/bigfile user@remote_ip:/target/dir/ # 显示进度 + 支持断点续传
rsync -avz --progress --partial --inplace --compress-level=9 /path/to/file user@remote:/dest/
rsync -vP --block-size=1M --inplace --no-checksum /path/to/file user@remote:/dest/ # 单个大文件

       

文件查找 find grep locate

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1find
find . -iname "stripe_locs.png" -exec ls -l {} \; # 并显示文件大小
find . -type f -name "*.sh" # 查找文件
find /media/yfjie/ -type d -iname lsy # 查找目录

2locate
sudo apt install mlocate
sudo updatedb
sudo vim /etc/updatedb.conf # PRUNEPATHS 排除路径

locate -i wljslmz.ppt # 忽略大小写
locate *.ppt
locate -n 20 '*.ppt' # 查找20条
locate -c '*.ppt' # 统计数量
locate -r '/dirname$' # 仅查找目录
locate -b test_locate.txt # 仅basenanme
P.S. 搜索ntfs磁盘updatedb时会报错段错误

3grep
grep -r "keyword" /home/user/documents/* # 递归搜索
grep "verify 0" -r -n . # 当前目录下递归搜索并显示行号
grep -rn --include="*.py" "keyword" /path/to/your/code
grep -rn --include="*.{py,txt}" "keyword" /path/to/your/
rg -rn "keyword" -t py /path/to/your/codecode # ripgrep

grep "get_panorama.py" -r -n evt21/test3/logs/ > not_saveimg.txt
grep -i "pattern" file.txt # 不区分大小写
-i #不区分大小写
-n #显示行号

# 递归筛选并按大小排序
find . -type f -name "*.py" -exec ls -lhS {} + | sort -k 5 -hr
^
锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$
锚定行的结束 如:'grep$'匹配所有以grep结尾的行。

Linux统计文件夹下的文件数目

find命令并显示文件大小_find 显示文件大小_唐木的博客-CSDN博客

文件比较

文件比较

1
2
3
4
5
6
7
diff -r /path/to/dir1 /path/to/dir2
diff -rs --color=always 目录1 目录2 | less -R # 详细内容差异对比
diff -r --exclude='.git' projectA/ projectB/ # 目录排除,-x
diff -r --exclude='__pycache__' --exclude='*.log' dir1/ dir2/ # 通配符排除

rsync -avnc /path/to/dir1/ /path/to/dir2/
rsync -avnc -Ph /path/to/dir1/ /path/to/dir2/

文件移动

1
2
3
4
# 批量移动
mv folder_{21..100} ..
mkdir $USER
mkdir $(whoami)

文字处理

1
2
3
4
5
6
# 去除空行
sed '/^\s*$/d' input.txt > output.txt

# 文件批量重命名
sudo apt install rename (Perl 版本)
rename 's/old/new/' *

日志输出

日志输出

https://www.jianshu.com/p/ad879061edb2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
**一、基础重定向,终端不显示**
# ****重定向的含义是改变原有输出方式
# 1. 覆盖写入文件
# 仅保存标准输出(stdout)
command > output.log
# 同时保存标准输出和错误输出(stdout + stderr)
command > output.log 2>&1   # 写法1 **通用**
command &> output.log       # 写法2(Bash特有)

# 2. 追加写入文件
# 追加标准输出
command >> output.log
# 追加标准输出和错误输出
command >> output.log 2>&1
command &>> output.log      # Bash特有

**二、实时输出并保存(tee命令)**
# 同时显示输出并写入文件(覆盖旧内容)
command | tee output.log
# 同时保存标准输出和错误输出
command 2>&1 | tee output.log
# 追加内容到文件
command | tee -a output.log
# 追加并合并所有输出流
command 2>&1 | tee -a output.log

**三、后台运行并记录日志**
# 输出重定向到 nohup.out(默认)
nohup command &
# 自定义输出文件
nohup command > output.log 2>&1 &
# 后台运行并记录输出
command > output.log 2>&1 &

几个常用命令区别

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
command > output.log 2>&1 # 仅输出到日志文件,运行后前台处于挂起状态,关闭终端后程序停止运行
command > output.log 2>&1 & # 仅输出到日志文件,运行后程序进入后台执行,关闭终端后程序停止运行,jobs -l查看
nohup command > output.log 2>&1 & # 仅输出到日志文件,运行后程序进入后台执行,关闭终端后程序继续运行,ps aux | grep kywd
ros2 run demo_nodes_cpp talker 2>&1 | tee -a talker.log 
nohup ros2 run demo_nodes_cpp talker 2>&1 | tee -a talker.log & # 终端是单独进程的关闭终端会停止(某些终端)
nohup your_command 2>&1 | tee -a your_logfile &

# 使用disown从shell作业表移除进程,使其不受终端影响
ros2 run demo_nodes_cpp talker 2>&1 | tee -a talker.log &
disown -h %1  # %1 为作业号(通过 `jobs -l` 查看)

Linux版本/内核查看

https://linux.cn/article-9586-1.html
!!!不要自动更新
!!!不要自动更新
!!!不要自动更新

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
lsb_release -a # 推荐
'''
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
'''

uname -a
cat /proc/version # 内核

# 列出所有内核
dpkg --list | grep linux-image # ubuntu
rpm -qa | grep kernel # CentOS

# 清理内核
sudo apt remove linux-image-X.X.X-XX-generic # 删除旧的内核
sudo apt autoremove # 自动清理未使用的旧内核和依赖

云厂商查询

1
2
3
sudo dmidecode -t system
sudo dmidecode -s system-manufacturer
sudo lshw -short

查看ip

1
2
3
4
5
6
7
8
9
# 本地ip
hostname -I 
ifconfig

# 公网ip
curl ifconfig.me # 仅输出ip不换行
curl ipinfo.io/ip
curl ip.sb # 换行 
curl cip.cc # 提供额外信息

网络管理

查看wifi名称

在Linux系统中,你可以使用不同的命令来查看当前连接的WiFi网络的名称。以下是一些常用的命令:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
nmcli(NetworkManager Command Line Interface):

nmcli connection show --active
这个命令会显示当前激活(连接)的网络连接信息,包括WiFi网络的名称。
如果你正在使用 NetworkManager 来管理网络连接,这是一个很方便的命令。

iwconfig
iwconfig 命令显示当前无线网络接口的信息,包括连接的WiFi网络的名称(ESSID)。
但是,该命令在一些新的系统上可能已经被弃用,而 nmcli 更为推荐。

iw dev
iw 命令也是一个用于配置和显示无线设备信息的工具。
上述命令显示当前无线设备的详细信息,其中包括连接的WiFi网络的名称。

请注意,具体命令的可用性和输出可能因Linux发行版和使用的网络管理工具而有所不同。在大多数现代Linux系统中,nmcli 是一个强大而通用的工具,而在一些老旧系统中,可能需要使用其他命令。

1
2
3
4
5
6
7
8
nmcli
nmcli connection show --active
nmcli -t -f active,ssid dev wifi | grep yes
nmcli dev wifi list
iwconfig
iw
iw dev
iwgetid -r

系统时间/时区

1
2
date
timedatectl

目录大小/统计

Linux查看文件或文件夹大小: du命令_那年聪聪的博客-CSDN博客_linux查看文件夹大小

1
2
3
4
5
6
7
8
du
du -h -d 1 # 第一级目录
du -m -d 1 # 以MB单位显示
du -sh # 总空间
du -sh && find . -type f | wc -l # 同时查看文件数
find /目标路径 -maxdepth 1 -mindepth 1 -type d -print0 | xargs -0 -I{} sh -c 'echo "{}: $(find "{}" -type f | wc -l)"'
find . -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "{}: $(find "{}" -type f | wc -l)"' \;
for d in /目标路径/*/; do echo "${d%?}: $(find "$d" -type f | wc -l)"; done

统计文件数

Linux统计文件夹下的文件数目

统计各个一级子目录下所有文件数

1
for dir in /path/to/directory/*/; do echo -n "$dir: "; find "$dir" -type f | wc -l;done

让我们逐步解释这个命令:

  • for dir in /path/to/directory/*/; do: 这部分命令用于遍历指定目录下的每个一级子目录。
  • find "$dir" -type f: 这部分命令用于在当前子目录中查找所有的文件。
  • | wc -l: 这部分命令用于统计文件的数量。

通过使用这个for循环,你可以一次性地统计每个一级子目录下所有文件的数量。

1
2
# 筛选特定类型
for dir in ./*/; do echo -n "$dir: "; find "$dir" -maxdepth 1 -type f -iname "*.txt" | wc -l; done

目录树打印

1
2
3
tree
tree -L 2 # 指定层级
tree -l -u -g -s -D --du /path/to/directory > output.txt # 详细信息

Linux tree命令 | 菜鸟教程

快捷打开目录

1
2
nautilus /path/to/directory
xdg-open /path/to/directory

硬件信息

Ubuntu查看硬件配置

cpu:

cat /proc/cpuinfo | grep model\ name

1
2
sudo apt install cpuinfo
cpu-info

显卡:

lspci | grep -i vga

watch -n 1 nvidia-smi

查看所有(第三方库)

1
2
3
4
5
sudo apt install screenfetch
screenfetch

sudo apt install neofetch
neofetch

https://www.cnblogs.com/gcstsz/p/16213646.html

CentOS 7如何安装Neofetch

CentOS7.6安装screenfetch

Shell

Shell

四种执行方式

https://www.jianshu.com/p/46666ced3bc0

Linux下四种方式执行.sh文件的区别

刷新shell

source ~/.bashrc

. ~/.bashrc

查看、更改shell

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#查看当前所使用的shell
echo $SHELL # Recommend,必须大写
echo ${SHELL}
echo $0
#查看当前用户可以使用的shell
cat /etc/shells
#查看所有用户使用的shell
vim /etc/passwd 
# 设置shell类型
chsh -s /bin/bash
sudo chsh -s /bin/bash username
sudo vim /etc/passwd # 直接编辑

新建终端并执行命令

1
gnome-terminal --title "run matlab" -- bash -c "echo $exec;$exec -x"

压缩/解压

压缩/解压

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
1 # zip
# zip [选项] 压缩包名 源文件或源目录列表
tar -zcvf test.tar.gz ./test # 推荐用于 Linux 归档与备份
zip -r archive_name.zip folder_name/ # 跨平台友好

2 # unzip
tar -zxvf abc.tgz
unzip
unzip example.zip -d extracted # 指定目录

3 # unrar
unrar x test.rar # 默认当前目录
unrar x example.rar /home/user/documents

4 # sudo apt install xz-utils
xz -d xxx.tar.xz # 会首先解压为tar文件
which xz
whersis xz
dpkg -l | gerp xz

文件下载

文件下载

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 基础下载
wget URL                 # 下载单个文件
wget -c URL              # 断点续传
time wget URL            # 显示时间
curl -O URL  

# 多线程加速
aria2c -c -x 16 -s 16 URL
aria2c -x 16 -s 16 -k 1M -c URL
-x 16 多线程(最多 16 线程)
-s 16 连接数(16 个并行连接)
-k 1M 每个连接最小分块 1MB

# 适用于服务器文件同步和大文件下载,支持断点续传
rsync -avz --progress user@server:/path/to/file localfile
-a 保持权限
-v 显示详细信息
-z 压缩传输
--progress 显示进度

https://linux.cn/article-8124-1.html

分享|4 个 Linux 下最好的命令行下载管理器/加速器

https://cloud.tencent.com/developer/article/1852397

Linux curl 命令下载文件

防火墙

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

# 查看防火墙状态
# 首先查看防火墙是否开启,如未开启,需要先开启防火墙并作开机自启
sudo ufw status # Debian系 默认防火墙工具
sudo firewall-cmd --state #  Red Hat系 默认防火墙工具
sudo systemctl status firewalld
sudo iptables -L # 防火墙底层工具,灵活性和精细控制

# 开启防火墙并设置开机自启
sudo ufw enable
systemctl start firewalld
systemctl enable firewalld
#一般需要重启一下机器,不然后面做的设置可能不会生效

# 关闭防火墙
sudo ufw disable
sudo systemctl stop firewalld
sudo iptables -F # 细粒度配置

# 允许局域网通过防火墙,这个范围包含从 192.168.0.1 到 192.168.0.254 的所有 IP 地址
sudo ufw allow from 192.168.31.0/24

# 高级用法
sudo ss -tulpn | grep 3000
sudo lsof -i :3000
sudo ufw status verbose
sudo ufw status numbered
sudo ufw delete [规则编号] # 即时生效

# 开放端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
# firewall-cmd --permanent --add-port=7000/tcp

# 查看开放端口列表
firewall-cmd --permanent --zone=public --list-ports

# 防火墙reload
firewall-cmd --reload

关闭电脑防火墙可能会带来一些安全和隐私方面的危害。防火墙是一种网络安全工具,用于监控和控制计算机与网络之间的通信,目的是阻止潜在的恶意流量。关闭防火墙可能导致以下问题:

网络攻击: 开放的计算机端口和服务更容易受到网络攻击。关闭防火墙可能会使计算机容易受到恶意扫描、端口扫描和其他攻击。

病毒和恶意软件: 恶意软件通常会利用计算机的漏洞进行入侵。关闭防火墙可能增加恶意软件感染的风险,因为它可以更容易地通过网络传播。

未授权访问: 没有防火墙的计算机可能容易受到未授权访问。黑客可能能够远程访问你的计算机,查看或修改你的文件,甚至控制你的系统。

隐私问题: 关闭防火墙可能导致个人信息泄露。一些恶意软件和攻击者可能利用计算机上的漏洞来获取用户的个人信息。

网络干扰: 在没有防火墙的情况下,网络流量可能会更容易受到干扰,可能导致网络连接不稳定或变得更慢。

在安全性方面,强烈建议保持计算机防火墙的开启状态,以减少网络风险。如果有必要关闭防火墙,应该仅在可信任的网络环境中,并在必要时限制计算机上的服务和端口的访问。在任何情况下,最好的做法是根据实际需求配置防火墙规则,而不是完全禁用防火墙。

Service相关

查看服务安装路径

1、先查PID

ps aux|grep nginx

2、再查路径

ls -l /proc/PID/exe

systemctl

systemctl

查看桌面坏境

1
2
3
4
5
6
7
echo $XDG_CURRENT_DESKTOP

sudo apt install screenfetch
screenfetch

sudo apt install neofetch (recommend)
neofetch

https://www.faqforge.com/linux/how-to-check-which-desktop-environment-is-used-on-linux/

How to check which Desktop Environment is used on Linux

如何找出你所使用的桌面环境 | Linux 中国

潇湘隐者

密码管理

修改密码

1
2
3
sudo passwd user_name
# or
passwd

Ubuntu修改登录密码_qq_43176116的博客-CSDN博客

Linux管理员修改和查看普通用户密码

密码过期

chage命令详解 - 马昌伟 - 博客园

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo chage -l nvidia
chage [选项] 用户名
选项
-m密码可更改的最小天数为零时代表任何时候都可以更改密码
-M密码保持有效的最大天数
-w用户密码到期前提前收到警告信息的天数
-E帐号到期的日期过了这天此帐号将不可用
-d上一次更改的日期
-i停滞时期如果一个密码已过期这些天那么此帐号将不可用
-l例出当前的设置由非特权用户来确定他们的密码或帐号何时过期

进程管理

进程管理

https://img-blog.csdn.net/20170429113245014

1
2
3
4
ps aux
ps -ef
top
htop

用户管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
cat /etc/passwd # 查看本地所有用户信息,速度快
getent passwd # 本地+网络用户信息
getent passwd | cut -d: -f1 # 只列出用户名
who # 查看当前系统中正在登录的用户
w # 同who
 
useradd -m username # 添加用户并创建主目录,默认无密码
sudo passwd username # 设置密码
sudo userdel username # 删除用户
sudo userdel -r username # 删除用户及主目录
sudo useradd -m <用户名> && echo "<用户名>:$(openssl rand -base64 12)" | sudo chpasswd # 创建并生成16位密码

# 切换用户
su - <用户名> # 需要普通用户密码
sudo -iu <用户名> # 需要管理员密码(在sudo组)

用户组

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
getent group # 查看系统中的用户组(本地+网络)
getent group | grep <group_name>
cat /etc/group # 查看本地用户组
# “get entries”,意为“获取条目”。它的主要功能是查询系统数据库中的记录信息

# 查看所属的用户组
groups
groups xxx

sudo usermod -aG <groupname> <username> # 添加成员到用户组
sudo vim /etc/group # 直接修改,不推荐
# 输出格式解析
group_name:x:GID:user_list
    group_name:用户组名称。
    x:密码占位符(实际密码存储在 /etc/gshadow 中)。
    GID:用户组 ID。
    user_list:属于该组的用户列表(用逗号分隔)。取决于所属组的权限分配

# 查看特定用户所属的组
id username # 比groups输出更详细,包括uid、gid等

# 移除组内特定用户
sudo gpasswd -d username groupname

权限管理

权限管理

  • chmod:改变文件夹的访问权限,但无法指定特定用户。
  • chown:改变文件夹的所有者或用户组,适用于基于用户或组的权限管理。
  • setfacl:更灵活的访问控制,允许为特定用户设置权限。

https://wangchujiang.com/linux-command/c/setfacl.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 基本设置
chmod
sudo chown -R user1:group1 mydir # 修改所有者和组
sudo chown -R user1:group1 mydir
sudo chgrp -R group1 mydir # 修改所属的组
sudo chmod g+s mydir # 设置 组继承(SGID 位)setgid 只影响 新建目录的组(让它们属于 gs_scene),但不会影响权限。
ls -ld mydir # 检查继承生效(x-->s)

# ACL精细控制
sudo apt install acl
getfacl /data # 查看文件夹当前的 ACL 设置
setfacl -m u:user1:rx /data # 为特定用户添加访问权限
setfacl -m g:group1:rw /data # 为特定用户组添加访问权限
setfacl -d -m u:user1:rw /data # 为新创建的文件或文件夹设置默认 ACL 继承权限,不能代替仅-m
setfacl -d -m g:group1:rx /data
setfacl -d -x g:group1 /data # 移除特定继承权限

# umask
umask 是用户创建文件或目录时的默认权限掩码。不同用户可能有不同的 umask 设置。
假设当前用户的 umask 为 002,那么创建目录时默认权限会是 775(rwxrwxr - x)

# 移除权限
chmod g-s gs_scene/stellar_web_recon/ # 移除权限继承
chmod g-w,o-rwx gs_scene/stellar_web_recon/ # 缩减权限

解除占用

lsof 命令,Linux lsof 命令详解:显示Linux系统当前已打开的所有文件列表 lsof -p pid - Linux 命令搜索引擎

win10:

任务管理器—性能选项卡—资源监视器—搜索关联的句柄—删除句柄

https://blog.csdn.net/u014175572/article/details/50946471

docker

docker

https://hub.docker.com/

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# 查看docker版本
docker --version
docker -v
docker info | grep "Storage Driver" # 当前使用的存储驱动

# 安装
sudo snap install docker # 不推荐,可能有问题
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker

# 设置用户组
sudo groupadd docker # 新增dockr组
newgrp docker # **切换用户的主组**,否则可能因为没有sudo权限运行不了docker命令
getent group | grep docker # 查看组
sudo usermod -aG docker $USER # 组中添加成员

# 查看本机镜像
docker images
docker images <image_name>
docker images --format '{{.Size}}\t{{.Repository}}:{{.Tag}}' | sort -h # 按大小排序
docker images --no-trunc # 非截断查看
docker images -a
docker images -f "dangling=true" # 悬空镜像(未被任何容器引用)

# 查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。
runoob@runoob:~$  docker search httpd

# 获取镜像
docker pull <image_name>:<tag>
docker pull ubuntu #默认标签docker pull ubuntu
docker pull ubuntu:20.04
docker pull colmap/colmap
docker pull colmap/colmap:v3.7
docker pull hub-mirror.c.163.com/library/busybox:latest # 指定镜像源

# 保存离线镜像并运行
docker save -o <image-name>.tar <image-name>:<tag> # 保存为 tar 文件
docker save -o ubuntu.tar ubuntu:latest
docker load -i ubuntu.tar # 可以使用docker images查看
docker run -it ubuntu:latest /bin/bash

# 启动容器
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
$ docker run -it ubuntu /bin/bash
docker run -it tensorflow/tensorflow:1.15.5-gpu
id # 查看uid gid
sudo docker run -it --user 1009:999 tensorflow/tensorflow:1.15.5-gpu /bin/bash
docker run -it -v ~/YFJ:/share tensorflow/tensorflow:1.15.5-gpu
docker run -it -v ~/Documents/python/unet_rgb:/share tensorflow/tensorflow

参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:

# 停止容器
键盘快捷键 Ctrl + D 或者输入 exit 命令来退出容器
docker stop <container_id_or_name>
docker stop $(docker ps -q)
docker container prune  # 删除所有退出的容器
docker container prune -f # 强制删除
docker rm <container_id>  # 删除指定容器

# 查看容器状态
runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE                  COMMAND              ...  
5917eac21c36        ubuntu:15.10           "/bin/sh -c 'while t…"    ...

# 与宿主机共享目录
docker run -it -v ~/shared_data:/data tensorflow/tensorflow
docker run -it -v ~/YFJ:/share tensorflow/tensorflow:1.15.5-gpu # 容器中不需要手动创建share目录
docker run -it -v ~/YFJ/python/sediment/deeplearning/demo/unet_rgb:/share tensorflow/tensorflow:latest-gpu
docker run --gpus all -it -v ~/Documents/python/unet_rgb:/share tensorflow/tensorflow:2.2.1-gpu

# 删除镜像
docker rmi -f yfjie/tensorflow:latest # 强制删除
docker rmi -f <IMAGE ID>
docker image prune -f # 删除所有悬空镜像

# 查看运行中的容器
docker ps
docker ps -a

# 镜像详细信息
docker inspect <镜像名称或 ID>
docker history <镜像名称或 ID>

# 创建/更新镜像
docker commit ea78c33e150f yfjie/tensorflow # 经测试先更新后再exit,某些版本可以先exit
**docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2**
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] # 可以提交相同名称覆盖已有镜像

# 重启
sudo snap restart docker

# cuda运行时
which nvidia-container-runtime

# 挂载多个目录
docker run -d \
  -v /host/path1:/container/path1 \
  -v /host/path2:/container/path2 \
  -v /host/path3:/container/path3 \
  --name my_container \
  my_image
  
# 拷贝文件
docker cp <container_id>:/path/in/container /host/path # docker ps (id or NAMES)
docker cp /host/path <container_id>:/path/in/container
docker exec -it <container_id> /bin/bash # 进入容器内部再cp

SSH

1
2
3
4
5
ssh-keygen # 生成密钥对
ssh-copy-id -i /home/nvidia/.ssh/id_rsa.pub nvidia@nvidia11 # 拷贝公钥
ssh-copy-id "-p 2222 myuser@123.45.67.89"
# 远程服务器ssh信息变更无法连接时,删除known_hosts中对应条目
ssh-keygen -R <远程主机IP或域名>

https://www.linuxcool.com/ssh-keygen#:~:text=ssh-keygen命令来自于,两种密钥格式。

ssh-keygen命令 - 生成SSH密钥文件

linux文件目录:.ssh目录下各文件的作用_啊荻~的博客-CSDN博客

ssh配置文件详解_51CTO博客_ssh框架配置文件详解

git

Git

1
2
3
4
5
git config --list
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
git config --global --unset http.proxy
git config --global --unset https.proxy
https://kkgithub.com # 镜像站

驱动

1
2
# uninstall
sudo apt-get remove --purge nvidia*

CUDA

CUDA

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 基础用法
nvidia-smi
nvidia-smi -L # 列出所有 GPU 的物理索引和名称
watch nvidia-smi # 每2秒刷新
watch -n 1 nvidia-smi
watch -n 1 nvidia-smi -i 0,1 # 指定逻辑索引
Ctrl + C 退出

# 查看显存占用
gpustat -i 0
gpustat -p -c -u
nvidia-smi -i 0 --query-compute-apps=pid,used_memory,process_name --format=csv,noheader,nounits | sort -k2 -nr
nvidia-smi --query-gpu=index,memory.used,memory.total --format=csv,noheader | sort -t ',' -k2 -nr

import torch
print(torch.cuda.is_available()) # 检查CUDA是否可用
print(torch.cuda.device_count()) # 显示GPU数量
nvidia-smi --query-gpu=compute_cap --format=csv # 显卡算力
visible_gpus = os.environ.get("CUDA_VISIBLE_DEVICES", "").split(",") # 物理索引

**# 注意区分gpu的物理索引与逻辑索引**
from icecream import ic
ic(torch.cuda.is_available()) # Check if CUDA is available
ic(torch.cuda.device_count())
ic(torch.cuda.current_device()) # 检查当前使用的 GPU
ic(torch.cuda.get_device_name(torch.cuda.current_device())) # 获取当前 GPU 名称

torch.cuda.empty_cache() # Release all unoccupied cached memory
os.environ["CUDA_VISIBLE_DEVICES"] = "1,2" # 可能需要放在torch导入之前

GUI

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
cat /etc/X11/default-display-manager #查看

LightDM 相关操作
切换命令行:alt-ctrl-F1。

LightDM 日志:/var/log/lightdm。

关停 LightDM:$ sudo stop lightdm。

启动 LightDM:$ sudo start lightdm。

设置 LightDM 为默认显示管理器:$ sudo dpkg-recofigure lightdm。

刷新系统UI

使用快捷键刷新 GNOME Shell

  1. 按下 Alt + F2
  2. 输入字母 r 并按下回车。
  • 这将重新加载 GNOME Shell,刷新 UI,而不关闭当前的应用程序。

关机、重启

https://www.w3cschool.cn/linux/linux-are12oz3.html

1、halt:立刻关机

2、poweroff:立刻关机 (recommend)

3、shutdown -h now:立刻关机(root用户使用)

4、shutdown -h 10:10分钟后自动关机

注意,如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

重启命令

1、reboot 立即重启

2、shutdown -r now 立刻重启(root用户使用)

3、shutdown -r 10 过10分钟自动重启(root用户使用)

4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)

如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

软件安装/包管理

软件安装/包管理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#安装
sudo apt install <package_name>
sudo dpkg -i .deb

#查看版本
sudo apt list --installed | grep screen
dpkg -l | grep qq # 查找dpkg安装的软件
dpkg-query -s libsuitesparse-dev # 详细信息

#修复
sudo apt-get check
sudo apt --fix-broken install
sudo apt install -f
sudo apt-get -f install
sudo dpkg --configure -a

#卸载
sudo apt remove <package_name> # 只移除软件,先查找到正确名称
sudo apt purge <package_name> # 移除软件及配置,保留数据(需手动清除)
sudo apt autoremove # 清理孤立依赖项
sudo apt clean # 清理软件包缓存
rm -rf ~/.config/软件名 # 可选手动删除配置
sudo rm -rf /etc/软件名

#更新指定软件
sudo apt install --only-upgrade google-chrome-stable

# snap
sudo snap install notepadqq
sudo snap remove notepadqq
snap help --all
snap list
snap info 应用名称
which notepad-plus-plus

/usr/bin vs. /usr/local/bin

1. /usr/bin

  • 系统级别目录/usr/bin 是系统默认的二进制文件目录,存放了大部分由操作系统包管理器(如 aptyum)安装的应用程序和命令。
  • 系统维护:文件通常由操作系统的包管理工具维护和更新,用户不应直接在这个目录中添加或删除文件。
  • 标准工具:该目录下的工具和应用程序通常是系统运行所必需的,包括常见的命令如 lsgreptar 等。

2. /usr/local/bin

  • 用户级别目录/usr/local/bin 主要用于存放用户自行编译或安装的应用程序和脚本。这个目录专门为管理员和用户提供一个位置来安装全局可用的程序,而不影响系统自带的工具。
  • 手动安装:当你手动编译和安装一个软件包,默认情况下它会被安装到 /usr/local 下的相应子目录(如 binlibshare 等)。这样可以避免与系统自带的文件发生冲突。
  • 优先级:在默认的 PATH 环境变量中,/usr/local/bin 通常位于 /usr/bin 之前,这意味着当同名程序同时存在于这两个目录时,系统会优先使用 /usr/local/bin 中的版本。

开机启动项

systemctl

Ubuntu systemctl 查看管理系统启动项 - Jerry_Jin - 博客园

1
2
sudo systemctl list-unit-files | grep enabled
sudo systemctl is-enabled firewalld

终端清屏

linux极简小知识:39、终端清屏的快捷命令ctrl+l,及shell终端中常用快捷键总结【ctrl + c|d|z|s|q|r|o|a|e|u|w|k】 - 掘金

  • ctrl + l:即 clear 命令。清除终端命令屏幕显示的内容,比如当终端命令屏显示的内容太多时,想清掉屏幕上显示的内容,就可以用clear命令或ctrl+l。(Clear screen)
  • ctrl + c:终止命令的执行。(Kill foreground process)
  • ctrl + d: 退出 shell,相当于 exit 命令;在输入中 ctrl + d 也表示EOF。(Terminate input, or exit shell)【当前shell行没有任何内容时,才会退出shell】
  • ctrl + z:将当前进程置于后台并挂起,可使用 fg 命令还原到前台继续执行(bg 命令将一个在后台暂停的命令,变成继续执行)。(Suspend foreground process)
  • ctrl + s:挂起当前shell输出。(Suspend output)
  • ctrl + q:重新启用shell输出。(Resume output)
  • Ctrl + o:丢弃输出。(Discard output)
  • ctrl + r:从命令历史查找。
  • ctrl + a:光标移到行首。
  • ctrl + e:光标移到行尾。
  • ctrl + u:清除光标到行首的字符 。
  • ctrl + w:清除光标之前一个单词 。
  • ctrl + k:清除光标到行尾的字符。
  • ctrl + t:交换光标前两个字符。
  • ctrl + y:粘贴前一ctrl+u类命令删除的字符。
  • ctrl + p:上一条命令。
  • ctrl + n:下一条命令。
  • ctrl + v:输入控制字符 如ctrl+v ,会输入^M
  • ctrl + f:光标后移一个字符。
  • ctrl + b:光标前移一个字符。
  • ctrl + h:删除光标前一个字符。