archlinux install: - grub - archlinuxcn - fcitx5 COPY COMMAND: - `cp -a -p` LINUX CONFIG: - add .bashrc GIT: - core.editor SSH: - config fix
27 KiB
linux基础命令
目录
文件操作
pwd
cd
ls
+ -F # 在文件名后加提示符 '/' '*' '@'
+ -a # 显示隐藏文件
+ -l # 列出文件信息
+ -d # 目录
+ -h # 将文件大小输出为易读的格式
+ -s # 在行首显示(大小)?
+ -i # inode
cat
+ -n # 显示行号
less
od
+ -t # 类型 a, d, f, o, x
grep
+ -A <n> # 后续n行
+ -B <n> # 前n行
+ -n # 显示行号
+ -v # 反向选择
+ -E 'o1|o2|o3' # 多匹配
+ -r "指定字符串" /目标文件夹路径 # 结合递归选项来查找文件夹下包含指定字符串的文件
wc
+ -l 行数
+ -m 字符
+ -w word
mkdir
touch
mv
+ -i # 覆盖时警告
+ -b # 重合加~
cp
+ -a # 归档模式
+ -p # 保留文件的原始属性
+ -i # 覆盖时警告
+ -b # 重合加~
+ -u # 仅复制更新
+ -v # 详细显示
+ -r # 目录
rm
+ -i # 覆盖时警告
+ -r # 目录
+ -f # 强制
+ -R # 同时更改所有子目录
chmod
+ -R # 同时更改所有子目录
SUID 4
执行二进制文件时,权限提升为文件所有者
SGID 2
在此权限下的目录进入后,有效用户组变为所有组
SBIT 1
在此权限下的文件夹里创建文件,仅有root与属主有权操作
file
+ -i 查看编码格式
+ -z 查看压缩格式
+ -b 查看文件的系统架构
+ -p 详细信息
umark
ln
+ -s # 符号链接(软)
diff
+ -r # 递归比较两个目录
+ -b # 忽略空格
+ -i # 忽略大小写
+ -B # 忽略空白行
+ -w # 忽略空白字符
+ -u # 使用"统一格式”显示,易于生成补丁文件
patch
diff -Naur <oldfile> <newfile> > <file.patch### # -p[n] 拿掉路径中的/
patch -p<n> < <file.patch### # 制作
patch -p<n>-R < <file.patch### # 还原
rsync
+ -a(archive):归档模式,用于完整同步
+ -v(verbose):详细模式,显示同步过程中的详细信息。
+ -u(update):仅在目标文件不存在或源文件更新时才同步。
+ -z(compress):在传输过程中压缩文件数据。
+ --delete:删除目标目录中多余的文件,使目标目录与源目录保持一致
+ -e(rsh):指定远程连接时使用的工具(如 ssh)。
+ --exclude:指定排除的文件或目录模式。
+ --include:指定包含的文件或目录模式。
+ -P --progress:显示同步进度。
+ --bwlimit : 限速,用于单个大文件,避免占用过多带宽
+ --dry-run:模拟同步操作,不实际执行,用于测试同步命令的效果。
1. 本地同步
`rsync -avP /path/to/source/ /path/to/destination/`
2. 从本地同步到远程
`rsync -avzP /path/to/source/ user@remote_host:/path/to/destination/`
3. 同步时删除多余文件
`rsync -av --delete /path/to/source/ /path/to/destination/`
4. 排除某些文件或目录
`rsync -av --exclude 'temp/*' --exclude '*.log' /path/to/source/ /path/to/destination/`
--exclude 'temp/*':排除 temp 目录下的所有文件。
--exclude '*.log':排除所有 .log 文件。
5. 包含某些文件或目录
`rsync -av --include 'data/*' --exclude '*' /path/to/source/ /path/to/destination/`
--include 'data/*':仅包含 data 目录下的文件。
--exclude '*':排除其他所有文件。
6. 模拟同步操作
`rsync -av --dry-run /path/to/source/ /path/to/destination/`
find
+ -name [filename] # 指定文件名
+ -print # 打印结果在终端
+ -type [type] # 指定类型
+ -atime <+-n### # n天前使用的文件
+ -mtime <+-n### # n天前修改的文件
+ find /usr/bin -name zip -print
locate
whereis
which
+ -a # 全部列出
whoami
uname
+ -a 全部信息
文件压缩
gzip
+ -d # 解压
+ -l # 查看压缩效果
bzip2
+ -d # 解压
+ -l # 查看压缩效果
xz
+ -z # 压缩
+ -d # 解压
+ -l # 查看压缩效果
+ -k # 保留压缩原文件
+ -<number> # 压缩等级
+ -T <n> # 使用多个线程
+ -v # 显示详细过程
tar
+ -c # 创建
+ -x # 解开
+ -v # 显示详细过程
+ -f <file> # 指定文件名
+ -z # 调用gzip
+ -j # 调用bzip2
+ -J # 调用xz
+ -p # 保留权限和所有
+ tar -cvjf shell.tar.bz2 shell/
dd
+ if # input file/device
+ of # output file/device
+ bs # one black size
+ count # count
+ `oflag=sync` sync
磁盘
mount
+ -r # 只读
+ -o <loop> # 特殊设备
+ auto # 开机自动挂载
+ noauto # 不自动挂载
+ ro # read only
+ rw # read and write
+ user # 任意用户可挂载
/etc/fstab [设备/UUID] [挂载点] [文件系统] [参数] 0 0
umount
df
+ df -hT
sync
smartctl
-a 全部参数
-H 是否正常
parted
+ -i 列出所有设备的分区信息
+ -s 非交互模式
+ print 显示当前设备的分区表
+ mklabel [gpt/msdos] 创建分区表
+ mkpart [part-type] [fs-type] [start] [end] 创建一个分区
例: mkpart primary ext4 1MiB 1000MiB
+ rm [number] 删除指定编号的分区
+ resizepart [number] [size] 重调大小
+ set [number] [mode] 设置分区标志
+ quit
sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%
sudo parted -s /dev/sdb rm 2
用户
sudo
+ -u # 指定用户
useradd
+ -m # 同时建立主目录
+ -g # 指定用户组
+ -s # 指定shell
groupadd
passwd
userdel
+ -r # 删除主目录
usermod
+ -d # 修改主目录
+ -e <MM/DD/YY># 修改账号有效期
+ -s # 修改shell
id
/etc/passwd
登录名:口令:UID:GID:x信息:主目录:shell
/etc/group
+ 组名:组口令(一般无):GID:user1,user2,user3
用户所有组是passwd和groups的并集
newgrp
last
- -n <数字> 表示查看最近n条
- -i 显示IP而不是主机名
进程
ps
+ aux
uptime
load average
为过去 1, 5, 15 分钟内等待资源的进程数量
若持续高于cpu核心数,表明进程可能在争抢资源
vmstat
检测系统状态
r
cpu队列b
io等待si/so
swap队列
-f
自启动fork次数-d
磁盘统计信息-s
统计
top
btop
lsop
kill
+ -l # 列出所有信号
bg
fg
jobs
nohup 命令挂机(退出登陆后依然执行)
nohup [command] &
screen
主要用于用户开启多个独立的会话(称为"窗口")在这些会话之间可以自由切换而不会中断已经运行的程序
- 启动一个新的 screen 会话: screen
- 列出当前的 screen 会话: screen -ls
- 重新连接到一个已存在的会话: screen -r [会话ID或名称]
- 分离当前会话:
在 screen 会话中按
Ctrl-a
然后按d
。 - 退出 screen 会话:
- 关闭当前窗口:在 screen 会话中按
Ctrl-a
然后按k
。 - 退出所有窗口并结束会话:在 screen 会话中按
Ctrl-a
然后按\
。
- 关闭当前窗口:在 screen 会话中按
- 锁定当前会话:
在 screen 会话中按
Ctrl-a
然后按x
。
ulimit
查看和修改进程运行资源限制
-H/S # 设置/显示 软/硬 限制
-a # 显示所有
-t # cpu time
-f # file size
-s # stack size
-c # core file size
-m # memory size
-l # lock memory size
-p # user processes
-n # open file
#ulimit -Ht 3600
网络
ip
+ ip neigh [OPTIONS] [COMMAND]
+ ip neigh add [IP] lladdr [MAC] dev [eth0] 添加表项
+ ip neigh del [IP] dev [eth0] 删除表项
+ ip neigh flush all 清空
_________________________________
REACHABLE:表示邻居设备可达。
STALE:表示邻居设备的条目已过期,但之前是可达的。
DELAY:表示正在等待确认邻居设备是否可达。
PROBE:表示正在积极探测邻居设备是否可达
_________________________________
ss
+ -t # tcp
+ -u # udp
+ -n # 以端口号显示
+ -l # 列出正在监听的服务
+ -p # + pid
+` -r # 路由表
+ ss -tlunp
ping
curl
wget
系统
systemctl
+ start
+ stop
+ restart
+ reload
+ enable
+ disable
+ status
+ mask # 强制注销
+ unmask
+ list-units
+ get-default # 获取目前target
+ set-default # 设置默认target
+ isolate # 切换target
+ poweroff
+ reboot
+ suspend # 挂起
+ hibernate # 休眠
+ rescue # 修复
dmidecode
+ -q # 简洁
+ -t # 指定查看类型
dpkg
+ -i # 安装
+ -l # 查看版本
+ -r # 卸载
apt
+ updata # 更新软件包缓存
+ upgrade # 更新已有软件包的最新版本
+ install # 下载并安装
+ remove # 卸载
+ source # 下载源码
+ search # 搜索
+ depends # 列出依赖
+ /etc/apt/sources.list
编解码工具
- md5sum md5编码
- sha1sum sha1
- cksum crc
- base64
- basenc 各种base64变种
--base64url
--base32
--base16
--base2msbf
二进制echo -n 你好|iconv -t ucs-2be|xxd-ps|sed 's/..../\\u&/g
unicode码
其他
=======
linux基础命令
目录
文件操作
pwd
cd
ls
+ -F # 在文件名后加提示符 '/' '*' '@'
+ -a # 显示隐藏文件
+ -l # 列出文件信息
+ -d # 目录
+ -h # 将文件大小输出为易读的格式
+ -s # 在行首显示(大小)?
+ -i # inode
cat
+ -n # 显示行号
less
od
+ -t # 类型 a, d, f, o, x
grep
+ -A <n> # 后续n行
+ -B <n> # 前n行
+ -n # 显示行号
+ -v # 反向选择
+ -E 'o1|o2|o3' # 多匹配
+ -r "指定字符串" /目标文件夹路径 # 结合递归选项来查找文件夹下包含指定字符串的文件
wc
+ -l 行数
+ -m 字符
+ -w word
mkdir
touch
mv
+ -i # 覆盖时警告
+ -b # 重合加~
cp
+ -i # 覆盖时警告
+ -b # 重合加~
+ -u # 仅复制更新
+ -v # 详细显示
+ -r # 目录
rm
+ -i # 覆盖时警告
+ -r # 目录
+ -f # 强制
+ -R # 同时更改所有子目录
chmod
+ -R # 同时更改所有子目录
SUID 4
执行二进制文件时,权限提升为文件所有者
SGID 2
在此权限下的目录进入后,有效用户组变为所有组
SBIT 1
在此权限下的文件夹里创建文件,仅有root与属主有权操作
file
+ -i 查看编码格式
+ -z 查看压缩格式
+ -b 查看文件的系统架构
+ -p 详细信息
umark
ln
+ -s # 符号链接(软)
diff
+ -r # 递归比较两个目录
+ -b # 忽略空格
+ -i # 忽略大小写
+ -B # 忽略空白行
+ -w # 忽略空白字符
+ -u # 使用"统一格式”显示,易于生成补丁文件
patch
diff -Naur <oldfile> <newfile> > <file.patch### # -p[n] 拿掉路径中的/
patch -p<n> < <file.patch### # 制作
patch -p<n>-R < <file.patch### # 还原
rsync
+ -a(archive):归档模式,用于完整同步
+ -v(verbose):详细模式,显示同步过程中的详细信息。
+ -u(update):仅在目标文件不存在或源文件更新时才同步。
+ -z(compress):在传输过程中压缩文件数据。
+ --delete:删除目标目录中多余的文件,使目标目录与源目录保持一致
+ -e(rsh):指定远程连接时使用的工具(如 ssh)。
+ --exclude:指定排除的文件或目录模式。
+ --include:指定包含的文件或目录模式。
+ -P --progress:显示同步进度。
+ --bwlimit : 限速,用于单个大文件,避免占用过多带宽
+ --dry-run:模拟同步操作,不实际执行,用于测试同步命令的效果。
1. 本地同步
`rsync -avP /path/to/source/ /path/to/destination/`
2. 从本地同步到远程
`rsync -avzP /path/to/source/ user@remote_host:/path/to/destination/`
3. 同步时删除多余文件
`rsync -av --delete /path/to/source/ /path/to/destination/`
4. 排除某些文件或目录
`rsync -av --exclude 'temp/*' --exclude '*.log' /path/to/source/ /path/to/destination/`
--exclude 'temp/*':排除 temp 目录下的所有文件。
--exclude '*.log':排除所有 .log 文件。
5. 包含某些文件或目录
`rsync -av --include 'data/*' --exclude '*' /path/to/source/ /path/to/destination/`
--include 'data/*':仅包含 data 目录下的文件。
--exclude '*':排除其他所有文件。
6. 模拟同步操作
`rsync -av --dry-run /path/to/source/ /path/to/destination/`
find
+ -name [filename] # 指定文件名
+ -print # 打印结果在终端
+ -type [type] # 指定类型
+ -atime <+-n### # n天前使用的文件
+ -mtime <+-n### # n天前修改的文件
+ find /usr/bin -name zip -print
locate
whereis
which
+ -a # 全部列出
whoami
uname
+ -a 全部信息
文件压缩
gzip
+ -d # 解压
+ -l # 查看压缩效果
bzip2
+ -d # 解压
+ -l # 查看压缩效果
xz
+ -z # 压缩
+ -d # 解压
+ -l # 查看压缩效果
+ -k # 保留压缩原文件
+ -<number> # 压缩等级
+ -T <n> # 使用多个线程
+ -v # 显示详细过程
tar
+ -c # 创建
+ -x # 解开
+ -v # 显示详细过程
+ -f <file> # 指定文件名
+ -z # 调用gzip
+ -j # 调用bzip2
+ -J # 调用xz
+ tar -cvjf shell.tar.bz2 shell/
dd
+ if # input file/device
+ of # output file/device
+ bs # one black size
+ count # count
+ `oflag=sync` sync
磁盘
mount
+ -r # 只读
+ -o <loop> # 特殊设备
+ auto # 开机自动挂载
+ noauto # 不自动挂载
+ ro # read only
+ rw # read and write
+ user # 任意用户可挂载
/etc/fstab [设备/UUID] [挂载点] [文件系统] [参数] 0 0
umount
df
+ df -hT
sync
smartctl
-a 全部参数
-H 是否正常
parted
+ -i 列出所有设备的分区信息
+ -s 非交互模式
+ print 显示当前设备的分区表
+ mklabel [gpt/msdos] 创建分区表
+ mkpart [part-type] [fs-type] [start] [end] 创建一个分区
例: mkpart primary ext4 1MiB 1000MiB
+ rm [number] 删除指定编号的分区
+ resizepart [number] [size] 重调大小
+ set [number] [mode] 设置分区标志
+ quit
sudo parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%
sudo parted -s /dev/sdb rm 2
用户
sudo
+ -u # 指定用户
useradd
+ -m # 同时建立主目录
+ -g # 指定用户组
+ -s # 指定shell
groupadd
passwd
userdel
+ -r # 删除主目录
usermod
+ -d # 修改主目录
+ -e <MM/DD/YY># 修改账号有效期
+ -s # 修改shell
id
/etc/passwd
登录名:口令:UID:GID:x信息:主目录:shell
/etc/group
+ 组名:组口令(一般无):GID:user1,user2,user3
用户所有组是passwd和groups的并集
newgrp
进程
ps
+ aux
top
btop
lsop
kill
+ -l # 列出所有信号
bg
fg
jobs
nohup
nohup [command] &
screen
主要用于用户开启多个独立的会话(称为"窗口")在这些会话之间可以自由切换而不会中断已经运行的程序
- 启动一个新的 screen 会话: screen
- 列出当前的 screen 会话: screen -ls
- 重新连接到一个已存在的会话: screen -r [会话ID或名称]
- 分离当前会话:
在 screen 会话中按
Ctrl-a
然后按d
。 - 退出 screen 会话:
- 关闭当前窗口:在 screen 会话中按
Ctrl-a
然后按k
。 - 退出所有窗口并结束会话:在 screen 会话中按
Ctrl-a
然后按\
。
- 关闭当前窗口:在 screen 会话中按
- 锁定当前会话:
在 screen 会话中按
Ctrl-a
然后按x
。
ulimit
查看和修改进程运行资源限制
-H/S # 设置/显示 软/硬 限制
-a # 显示所有
-t # cpu time
-f # file size
-s # stack size
-c # core file size
-m # memory size
-l # lock memory size
-p # user processes
-n # open file
#ulimit -Ht 3600
网络
ip
+ ip neigh [OPTIONS] [COMMAND]
+ ip neigh add [IP] lladdr [MAC] dev [eth0] 添加表项
+ ip neigh del [IP] dev [eth0] 删除表项
+ ip neigh flush all 清空
_________________________________
REACHABLE:表示邻居设备可达。
STALE:表示邻居设备的条目已过期,但之前是可达的。
DELAY:表示正在等待确认邻居设备是否可达。
PROBE:表示正在积极探测邻居设备是否可达
_________________________________
ss
+ -t # tcp
+ -u # udp
+ -n # 以端口号显示
+ -l # 列出正在监听的服务
+ -p # + pid
+` -r # 路由表
+ ss -tlunp
ping
curl
用于从服务器传输数据或向服务器传输数据,支持多种协议,包括 HTTP、HTTPS、FTP、FTPS、SMTP、POP3 等
- 基本用法
curl http://example.com
访问网页或APIcurl -o output.html http://example.com
保存响应到文件curl -v http://example.com
显示详细信息curl -s http://example.com
静默模式curl -X POST -d "param1=value1¶m2=value2" http://example.com/api
发送POST请求curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com/api
发送JSON数据curl -X POST -F "file=@/path/to/file" http://example.com/upload
上传文件
wget
wget [参数] [URL]
一个下载文件的工具,可以使用HTTP代理,所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成
1.特点
- 支持断点下传功能
- 同时支持FTP和HTTP下载方式
- 支持代理服务器
- 设置方便简单
- 程序小,完全免费
- 参数
-V
-b
启动后转后台
-O [FILE]
写入文件
-d
debug信息
-c
continue继续下
-T
设定响应超时的秒数
-r
递归下载
example
wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
下载单个文件wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
以不同的文件名保存wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip
使用wget -c断点续传wget --mirror -p --convert-links -P ./LOCAL URL
镜像整个网站到本地wget -r -A.pdf url
使用wget -r -A下载指定格式文件
系统
systemctl
+ start
+ stop
+ restart
+ reload
+ enable
+ disable
+ status
+ mask # 强制注销
+ unmask
+ list-units
+ get-default # 获取目前target
+ set-default # 设置默认target
+ isolate # 切换target
+ poweroff
+ reboot
+ suspend # 挂起
+ hibernate # 休眠
+ rescue # 修复
dmidecode
+ -q # 简洁
+ -t # 指定查看类型
dpkg
+ -i # 安装
+ -l # 查看版本
+ -r # 卸载
apt
+ updata # 更新软件包缓存
+ upgrade # 更新已有软件包的最新版本
+ install # 下载并安装
+ remove # 卸载
+ source # 下载源码
+ search # 搜索
+ depends # 列出依赖
+ /etc/apt/sources.list
编解码工具
- md5sum md5编码
- sha1sum sha1
- cksum crc
- base64
- basenc 各种base64变种
--base64url
--base32
--base16
--base2msbf
二进制echo -n 你好|iconv -t ucs-2be|xxd-ps|sed 's/..../\\u&/g
unicode码
其他
Stashed changes