LinuxTravel
1.Linux之旅
1.1前言
记录本人的Ubuntu之旅
Linux路上凶险很多,实在解决不了的问题就重装系统吧🥹
1.2初始化
1.2.1WSL2下安装 Ubuntu和共享网络
第一步
- 控制面板 - > 程序 -> 启用或关闭windows功能 -> 开启适用于windows的子系统和虚拟机平台 -> 重启电脑
第二步
-
win+r
->powershell
->wsl --install Ubuntu-22.04
Tips : wsl --list --online 查看发行版名称
第三步 -
在C:\Users\用户名.wslconfig里输入(不要#后内容)
1 | [experimental] |
1.2.2Ubuntu换源
第一步
- 前往清华源并找到对应版本替换
/etc/apt/sources.list
第二步
sudo apt update && sudo apt upgrade -y
更新软件包
1.2.3终端美化
1.2.4zsh美化
sudo apt install zsh git curl -y
Tips: curl — client url
chsh -s /bin/zsh
设置默认终端
Method | Command |
---|---|
curl | sh -c “$(curl -fsSL https://install.ohmyz.sh/)” |
wget | sh -c “$(wget -O- https://install.ohmyz.sh/)” |
fetch | sh -c “$(fetch -o - https://install.ohmyz.sh/)” |
国内curl镜像 | sh -c “$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)” |
国内wget镜像 | sh -c “$(wget -O- https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)” |
Tips:
curl -f --fail 不显示http错误消息
-s 不输出进度条和错误
-S 只输出错误
-L 支持重定向d
sh -c 使用sh(命令解释器)执行之后的脚本,$(command)符号将输出变成输入
wget -O file将下载的信息保存在file中, 而-O-表示输出到终端
Thoughs:
没有魔法可以去gitee上找开源项目的镜像网址
下载主题
1 | git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k |
修改配置文件
ZSH_THEME="haoomz"
source ~/.zshrc
加载配置文件
下载插件
- zsh-autosuggestion命令补全
1 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
- zsh-syntax-highlighting语法检验
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
- z
oh-my-zsh 内置了 z 插件。z 是一个文件夹快捷跳转插件,对于曾经跳转过的目录,只需要输入最终目标文件夹名称,就可以快速跳转,避免再输入长串路径,提高切换文件夹的效率
- extract
oh-my-zsh 内置了 extract 插件。extract 用于解压任何压缩文件,不必根据压缩文件的后缀名来记忆压缩软件。使用 x 命令即可解压文件
- websearch
oh-my-zsh 内置了 web-search 插件。web-search 能让我们在命令行中使用搜索引擎进行搜索。使用搜索引擎关键字+搜索内容 即可自动打开浏览器进行搜索。如baidu 天气预报
修改~/.zshrc
plugins=(git zsh-autosuggestions zsh-syntax-highlighting z extract web-search)
source ~/.zshrc
加载配置文件
大功告成…
1.2.5vim美化
下载较新的vim
sudo add-apt-repository ppa:vim/stable
sudo apt update
sudo apt install vim
Tips: 利用git安装最新版
1
2
3 git clone https://github.com/vim/vim.git
cd vim/src
make免责声明: 作者没试过,出现依赖问题自行解决🤣
配置文件
以下是本人的仅供参考
1 | set confirm "确认文件是否保存 |
Tips:
sudo apt install xclip
然后可以ctrl+c把vim的内容复制到系统剪切板
下载vim插件
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- ~/.vimrc ->
1 | call plug#begin() |
- 具体插件见vimawsome
- vim命令可见我的拙见
1.3开始启程
1.3 .1 推荐工具
- neofetch – 展示操作系统等信息 -->
sudo apt install neofetch
- w3m – 文本浏览器 -->
sudo apt install w3m
- mpv – 视频播放器 -->
sudo apt install mpv
- ncmpcpp – 音乐播放器 -->
sudo apt install ncmpcpp
音乐播放器教程作者表示为网易云资深用户不想折腾 - nomacs – 图片查看器 -->
sudo apt install nomacs
- pass – 密码管理器 -->
sudo apt install pass
- zip – 压缩工具 -->
sudo apt install zip
-->zip -r data.zip file1 file2 dir1
1
2
3
4
5
6
7
8
9
10gpg --gen-key # 生成gpg密钥
pass init name # 主目录->.password-store目录
pass add your_service # 创建
pass show your_service # 展示
pass edit your_service # 编辑
pass # 列出所有密码
高级用法
pass add social/facebook # 密码分类
pass | grep facebook # 搜索
pass | xclip -sel clip # 复制到系统剪贴板 - tree – 查看目录结构 -->
sudo apt install tree
- mc – 终端双窗口查看目录结构 -->
sudo apt install mc
Tips: 建议在~/.zshrc中写入
aliasmc='mc --nocolor'
进入之后下方的是f1,f2,f3…不是1,2,3
F9 -> o -> p -> 空格选中Panel options -> 只需要方向键既就可以进入目录或退出目录。
命令 | 解释 |
---|---|
Tab | 两个窗口间移动 |
参考文章 |
处理.o文件的工具
unix系统自带
ar
用途 | 格式 |
---|---|
创建静态库 | ar rcs libmylib.a file1.o file2.o |
查看库中的文件 | ar t libmylib.a |
提取文件 | ar x libmylib.a file1.o |
删除库中的文件 | ar d libmylib.a file1.o |
strings
用途 | 格式 |
---|---|
从二进制文件中提取可读字符串 | strings a.out |
限制最短字符串长度 | strings -n 5 a.out |
在特定段中查找字符串 | strings -e S a.out # 仅查找 .rodata |
strip
用途 | 格式 |
---|---|
去除符号表和调试信息 | strip a.out |
仅去除调试信息 | strip --strip-debug a.out |
仅去除符号表 | strip --strip-unneeded a.out |
nm
用途 | 格式 |
---|---|
显示二进制文件的符号表 | nm a.out |
按符号名称排序 | nm -n a.out |
仅显示未解析的符号 | nm -u a.out |
显示动态符号(用于动态库) | nm -D /usr/lib/libc.so.6 |
size
用途 | 格式 |
---|---|
显示代码段(text)、数据段(data)、BSS 段的大小 | size a.out |
以 System V 格式显示详细信息: | size -A a.out |
readelf
用途 | 格式 |
---|---|
查看 ELF 文件头 | readelf -h a.out |
查看段表(节头部表)(sections) | readelf -S a.o |
查看符号表 | readelf -s a.o |
查看程序头(segments) | readelf -l a.out |
查看符号表 | readelf -s a.out |
查看动态符号表(动态库) | readelf -d a.out |
objdump
用途 | 格式 |
---|---|
查看 ELF 文件头 | objdump -f a.out |
查看段表 | objdump -h a.out |
反汇编代码 | objdump -d a.out |
反汇编并显示源代码(如果有调试信息) | objdump -S a.out |
查看动态符号表 | objdump -T a.out |
ldd
用途 | 格式 |
---|---|
列出程序依赖的共享库 | ldd a.out |
查看库的完整路径 | ldd /bin/ls |
gprof
1 | g++ -o main.exe main.cpp -Og -pg |
1.3.2命令知识手册
- Good command -> sudo !! --> 读作!!(代表上一条命令)
1 | foo=1 |
-
$的大作用🤣
"$var"
展开变量,'$var'
不展开变量$?
上一条命令的返回码$_
上一条命令的最后一个参数$$
该shelld的PID -->sudo kill "$$" -9
😁$_
上一条命令最后一个参数$#
上一条命令参数数量$@
上一条命名参数列表 -->for var in $@
$0
第一个参数(脚本名称)${1..9}
参数…
-
; && ||的大作用
cmd1 ; cmd2 ; cmd3
--> 按顺序执行不论是否执行成功cmd && cmd2 && cmd3
--> 状态码为0才执行cmd || cmd2 || cmd3
--> 状态码为1才执行
-
重定向
>
标准输出2>
标准错误&>
标准输出和标准错误
-
了解一些常见的正则表达式
符号 | 解释 | 速记 |
---|---|---|
. | 任意字符 | 点子王 |
\w | 字母,下划线,数字 | 变量名 |
\s | 空白字符 | space |
\d | 数字 | digit |
^ | ^xxx | 以xxx开头 |
$ | xxx$ | 以xxx结尾 |
\W\S\D | 非wsd | … |
[abc] | 任意[]中的一个字符 | 任我选 |
[^abc] | 出来[]中的任我选 | … |
次数 | 解释 | |
* | 0~n | |
+ | 1~n | |
? | 0?1 | 布尔值 |
{n} | n | |
{m,n} | m~n | |
{*,+,?}? | 禁用贪婪模式 |
-
图片转换
convert input_file output_file
- `convert a.jpg -resize widthxheight b.jpg
-
{}的妙用
mkdir foo{1,2,a,b}
会创建四个文件夹mkdir foo{1..9}/{a..z}
会创建9x26个文件夹
-
find
给定路径下找文件(夹)的工具
- 格式
find [path] [condition] [expr]
condition expr 解释 -name
“*.cpp” 以cpp结尾 -size
“+10M” 超过10M -ctime
"+30 修改时间超过30天 -type
f/d/l 文件,文件夹,链接 -exec
command {} 对找到的文件执行操作 Tips: 可以同时指定多个选项
Extension: find支持的通配符并非所有正则表达式
只有 * ? [] {}
可以使用find path -regex "expr"
- 格式
-
locate
依据已经建立的数据库在根目录下快速查找文件(夹)
sudo apt install mlocate
下载软件包sudo updatedb
locate [option] [file]
-i(gnore) -r(egex) -c(olumn)
-
rg
rust写的替代grep的工具,支持正则表达式,默认递归搜索(grep需要-r选项)
,自动忽略.gitignore文件- 格式:
rg <文本> [文件或目录]
- 下载:
sudo apt install ripgrep
选项 作用 --stats
显示统计信息 --type xxx
指定文件类型 -u
不忽略.文件 - 格式:
-
history
history n
显示最近n条命令!-n, !n, !!
执行对应命令
-
tree
常用选项选项 用处 -L x
限制层数 -h
k,m显示文件大小 ulimit
-a
查看系统资源限制-选项 -值
修改系统资源限制
-
tail
查看文件尾部内容
tail -n 20 file
查看倒数20行tail -n +20 file
查看从20到末尾tail -c 10 file
查看倒数20个字符
笑死了,你以为只有这点? – 鲁迅
特此说明 ^ 代表 ctrl
常见信号
操作 | 信号 |
---|---|
^c |
SIGINT |
^z |
SIGSTOP |
logout |
SIGHUP |
nohup |
忽略SIGHUP,退出终端程序依旧运行 |
kill |
SIGKILL |
1 | command & -- 在后台运行 |
PS
- ps(process status) 列出当前进程
1.3.3深入理解Linux
linux目录下的文件夹
目录 | 作用 |
---|---|
/bin |
存放基本的用户可执行二进制文件,如 ls , cp , cat 等。 |
/sbin |
存放系统管理员使用的二进制文件,如 reboot , fdisk 等。 |
/boot |
存放启动相关文件,如内核(vmlinuz )、引导加载程序(如 grub )。 |
/dev |
设备文件目录,包含所有硬件设备的接口文件,如 /dev/sda (磁盘)、/dev/tty (终端)。 |
/etc |
系统配置文件目录,如 passwd (用户信息)、hosts (主机名解析)。 |
/home |
普通用户的主目录,如 /home/user1 。 |
/lib |
存放系统和应用程序的共享库(*.so ),以及内核模块。 |
/media |
挂载外部设备(如 U 盘、CD-ROM)的位置。 |
/mnt |
手动挂载文件系统的临时目录。 |
/opt |
存放第三方软件的安装目录。 |
/proc |
虚拟文件系统,提供进程和内核信息,如 /proc/cpuinfo (CPU 信息)。 |
/root |
root 用户的主目录。 |
/run |
存放系统运行时的临时数据,如 PID 文件、Socket 文件。 |
/srv |
存放服务提供的数据,如 Web 服务器数据。 |
/sys |
虚拟文件系统,提供与硬件设备和内核相关的信息。 |
/tmp |
存放临时文件,系统重启后会被清空。 |
/usr |
存放用户程序和数据,如 /usr/bin (应用程序)、/usr/lib (库文件)。 |
/var |
存放变量数据,如日志(/var/log )、邮件(/var/mail )、缓存(/var/cache )。 |