这里主要是命令行中常用的代码片 常用命令操作可以参考 shell脚本中的常用命令片段可以参考
常用路径含义 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 /bin: 系统启动和运行所必须的二进制程序 /boot: Linux 内核、初始 RAM 磁盘映像,启动加载程序 /vmlinuz: linux内核 /dev: 所有设备列表 /etc: 系统层面的配置文件 /crontab: 定义自动运行的任务 /fstab: 存储设备的列表及挂载点 /home: 用户目录.普通用户只能在自己的目录写 /lib: 核心系统程序使用的共享库文件 /media: 可移动介质挂载点:U盘,鼠标等 /opt: 安装外部软件 /proc: linux内核维护,可查看内核如何维护计算机 /sbin: 存放系统二进制文件,为root用户保留 /tmp: 临时文件 /usr: 存放普通用户的程序与文件 /bin: 大多数系统程序安装目录 /lib: 包含/usr/bin程序所有的共享库 /local: 安装非系统自带程序 /bin: 存放源码编译程序 /src: 存放用户源码 /sbin: 存放系统管理程序 /share: 存放/usr/bin程序的共享数据 /doc: 软件包文档 /var: 动态文件 /log: 日志文件,活动记录
网络相关 查看mac和网卡名称 1 2 3 4 5 6 7 8 9 10 11 12 ifconfig ip addr nmcli con show uuidgen 网卡名
SSH连接命令 1 2 3 4 5 6 7 8 ssh username@ip -p 22 -i private_key_id_rsa ssh -o ProxyCommand="ssh 192.168.199.6 -W %h:%p" 192.168.199.5
设置代理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 export http_proxy=http://127.0.0.1:1080export http_proxy=socks5://127.0.0.1:1080export https_proxy=http://127.0.0.1:1080export https_proxy=socks5://127.0.0.1:1080export ALL_PROXY=http://127.0.0.1:1080export ALL_PROXY=socks5://127.0.0.1:1080curl http://ip-api.com/json/?lang=zh-CN unset http_proxyunset https_proxyunset ALL_PROXY
路由相关
路由添加
1 2 3 4 5 6 sudo ip route add 192.168.1.110 dev enp0s25sudo ip route add 10.111.0.0/16 via 10.111.160.1 dev enp0s25sudo ip route add 10.29.225.11 via 10.111.160.1 dev enp0s25
路由删除
1 2 3 4 sudo ip route del 192.168.1.110 dev enp0s25sudo ip route del 10.111.8.4 via 10.111.160.1 dev enp0s25
持久化路由表添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 tee /etc/systemd/system/custom-route.service <<-'EOF' [Unit] Description=Custom Route After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/sbin/ip route add 10.111.0.0/16 via 10.111.160.1 dev eth2 ExecStop=/sbin/ip route del 10.111.0.0/16 via 10.111.160.1 dev eth2 RemainAfterExit=yes [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable custom-route.service systemctl start custom-route.service
ssh相关 创建免密登录时的证书 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ssh-keygen cat ~/.ssh /id_rsa.pub >> ~/.ssh/authorized_keysvi /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes systemctl restart sshd ssh user@ip -p port -i id_rsa
ssh远程连接发送命令行 需要已经配置ssh免密码登陆
命令少的情况
1 2 ssh user@remoteNode "cd /home ; ls"
命令多的情况 可以创建一个执行脚本
1 2 3 4 5 6 7 8 9 10 11 ssh user@remoteNode > /dev/null 2>&1 << eeooff cd /home touch abcdefg.txt exit eeooff echo done !
ssh远程连接发送命令行
系统相关 三种加环境变量的方式 1 2 3 4 5 6 7 8 9 10 sudo ln -s /opt/software/coding/apache-maven-3.8.4/bin/mvn /usr/bin/mvnsudo vim /etc/profileJAVA_HOME=/opt/jdk-11 PATH = $JAVA_HOME /bin:$PATH export PATHvim ~/.bashrc alias mvn='/opt/software/coding/apache-maven-3.8.4/bin/mvn'
创建自启动服务
查看系统版本 1 2 3 4 5 6 7 8 9 10 11 uname -auname -scat /proc/versioncat /etc/issuelsb_release -a
用户相关 创建新用户 1 2 3 4 5 6 7 8 9 10 11 12 useradd easul passwd easul su root chmod u+w /etc/sudoersvi /etc/sudoers easul ALL=(ALL) NOPASSWD: ALL
如果创建新用户后没有用户目录,可以进行如下操作
1 2 3 4 5 userdel easul adduser easul
参考
用户组相关 1 2 3 4 5 6 usermod -aG wheel easul
uid和gid
进程相关 查看某端口下进程 1 2 3 4 5 6 7 8 netstat -lntp netstat -lntp | grep 8080 lsof -i :8080 ps pid
批量关闭进程 1 2 3 4 5 6 7 8 9 ps -ef | grep gitlab | grep -v grep | cut -c 9-15 | xargs kill -9
批量kill多个进程
文件与目录相关 文件查找 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 which mysqlwhereis mysql dpkg -l | grep chrome dpkg -L cn.google.chrome locate idea updatedb
用正则列出文件信息 可用于匹配某些文件路径
1 2 3 4 5 6 7 8 9 10 单个[*]: 匹配0-多个字符 ?: 匹配一个字符 [abc ]: 匹配中括号中任意一个字符 [!abc]: 匹配不是中括号中的任意一个字符 [[:class ]]: 匹配任意类型的一个字符 ,类似\s [:alnum: ]: 匹配任意一个字母或数字 [:alpha: ]: 匹配任意一个字母 [:digit: ]: 匹配任意一个数字 [:lower: ]: 匹配任意一个小写字母 [:upper: ]: 匹配任意一个大写字母
创建层级文件夹
递归复制 1 cp -R -n ./test/图片/* ~/Pictures/Wallpapers/
硬件相关 命令行访问声卡 这里是在 deepin 下尝试的
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 apt-get install -y alsa-utils pulseaudio pulseaudio-utils pactl list cards short aplay -l aplay -D hw:2,0 /home/easul/Music/OneLastKiss.wav arecord -l arecord -D plughw:1,0 -f cd -d 5 test.wav amixer -c 2 scontrols amixer -c 2 set Headphone 50% amixer -c 2 set Mic 80% arecord -D plughw:2,0 -f S16_LE -r 16000 -c 1 | aplay -D plughw:2,0 -f S16_LE -r 16000 -c 1
特殊命令 双中划线 符号长这样 --,主要是用于参数的隔离。 他前边的参数会给前边的命令,他后边的参数会被认为是位置参数。 主要是用于后边的参数中有中划线的情况,如下
1 2 3 4 5 6 touch -- -hello-world.txtmv -- -hello-world.txt new-name.txtmkdir hello/world -- -p
重命名某个命令 如果需要在命令行中添加自己的特殊的标识,可以通过修改命令的名称来实现。
1 2 3 4 5 6 exec -a 'auto_text_response_sleep' sleep 100sh -c 'echo asdfadf; sleep 100'