DNS

  1. nslookup github.com

快捷查询dns服务器

  1. ping github.com

网络连接尝试

  1. host -v xxx.com

域名详细信息查询

  1. dig github.com

详细域名信息查询

  1. 网络链路检测 #快捷命令

mtr ip 或者 traceroute 域名 (mac上mtr需要sudo)

  1. ssh连接检测 #快捷命令

ssh -T -v git@github.com


虚拟内存

  • (https://www.cnblogs.com/tocy/p/linux-swap-cmd-summary.html),(https://www.cnblogs.com/akuo-123/p/8036268.html)

wget

  • 打包下载命令

wget -r -p -np -k https://www.lunarvim.org/ #快捷命令 -R 可以指定不下载的类似,比如-R pdf -A 可以指定只接受的类型

[!tip] 参考 https://zhuanlan.zhihu.com/p/380793959

dpkg

  • 无root权限安装deb包
    1. 新建一个目录
    2. dpkg -x example.deb example #快捷命令
  • 有root权限
    • sudo dpkg -i example.deb

添加用户

  • useradd --shell /bin/bash -p qwer1234 -d /home/chaiquan chaiquan #快捷命令

查看系统架构

  • uname -a,基本上inter,amd都是x64架构,可以直接使用amd64或者x64

telnet

用法

  • telnet ip/域名 端口,就是TCP连接到该端口,此时可以直接在命令行输入发送的内容,回车直接以tcp包发送,响应再按回车后直接输出在控制台
  • 这个命令只会建立简单的TCP连接,即使是443端口,也不会自动建立https连接

realpath

  • 查看文件的真实路径

service和systemd

  • Linux系统下的/etc/init.d。/etc/init.d 目录下的脚本文件用于管理服务,这些脚本文件位于 /etc/init.d 目录下,并以服务的名称命名。service命令本质就是通过去/etc/init.d目录下执行相关程序实现,实际上service类似一个脚本,找init.d目录下的文件执行
  • init 是一个守护进程,它持续运行,直到系统关闭。它是所有其他进程的直接或间接的父进程。
    1. 启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
    2. 启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
service nginx start
  • systemctl 是一个新的系统服务管理工具,它是 systemd 系统和服务管理器的一部分。systemd 是一个用于 Linux 启动进程的系统和服务管理器。相比之下,systemctl 拥有更加全面的功能,可以用于控制服务的状态,查看服务的状态,重启和重新加载服务,并在服务失败时自动重启服务
  • Systemd 这个名字的含义,就是它要守护整个系统。使用了 Systemd,就不需要再用 init 了。Systemd 取代了initd(initd 的PID 是0) ,成为系统的第一个进程(Systemd 的PID 是1),其他进程都是它的子进程。
systemctl start nginx

jq命令

  • 用于命令行解析json数据,结果可以通过".key.arr[0].subkey"获取
echo '{"Name":"CloudNativeOps","Owner":"GoOps","WebSite":"https://bgbiao.top/"}'  | jq .Name

ln命令

  • ln -s source_file(已经存在的文件) soft_link_name(需要创建的链接)

time命令

  • time ls用于很方便计算命令耗时

rsync

  • 同步文件命令,但是支持断点续传(scp不支持)

date

curl

config demo

# demo config for curl
# more infomation,read https://catonmat.net/cookbooks/curl
# and https://www.ruanyifeng.com/blog/2019/09/curl-reference.html
# update by chenxuan 2023-01-08 22:44:17
# use it by: curl -K ./demo.curl

# INPUT

#  url :request url
url="chenxuanweb.top"

#  request -X: curl method(GET,POST,PUT etc)
request="GET"

#  user-agent -A:sign for firefox
#     can be change in -H option
# user-agent="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0"

#  cookie -b:cookie gor request
#  cookie-jar -c:save cookie infile
# cookie="foo1=bar;foo2=bar2"
# cookie=cookie.txt
# cookie-jar=cookie.txt

# head of request -H
header="Content-type: application/json"
header="Accept: text/html,application/xhtml+xml,application/xml;"
header="Connection: keep-alive"
# header="Authorization: test"

#  referer -e:referer
#     can be change in -H option
# referer="https://google.com?q=example"

#  user -u:user pwd and name,make it to Authorization(Basic model)
# user="bob:12345"

#  get -G:get request query
#  if exist,-d standfor query(https://google.com/search?q=kitties&count=20)
# get

#  body for post -d
#  data-binary <data> HTTP POST binary data
#  data-raw <data> HTTP POST data, '@' allowed
#  data-urlencode <data> HTTP POST data url encoded, make <space>encode
#  recommand use file to send body,such as json file
# data = @req.json
data='login=emma&password=123'

#  upload file -F
# form="file=@photo.png;type=image/png;filename=me.png"

# options

#  proxy -x [protocol://]host[:port] Use this proxy(default http)
# proxy="socks5://james:cats@myproxy.com:8080"

#  insecure -k:if exist,donnot check https
insecure

#  location -L:if exist,follow website redirects
location

#  verbose -v:visual model,for debug
#     open it can see request
#  trace :save msg for debug
# verbose
# trace="a.txt"

#  show-error/silent -S/-s: show error/silent
# show-error
# silent

#  output

#  include -i:if exist,print res header
include

#  outputfile -o:make result into file(like wget)
#     if open it,close include is better
# output="a.txt"

# vim: ft=cfg et ts=2 sts=2 sw=2

crontab

  • 定时任务执行工具
  • 使用select-editor进行更改默认的编辑器

f1 f2 f3 f4 f5 program

  • 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  • 当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

0 0 1 * *	每个月的第一天午夜(0 点)执行一次
0 0 * * 0	每周日的午夜(0 点)执行一次

tar

  • 一定要去到目录下tar打包,不然会带着路径信息,或者用-C也行 tar -zcvf ~/vim-fast/vim.tar.gz -C ~/.vim/plugged ./*

tmux

核心

  • 所有tmux按键以ctrl+b为基础
  • d 退出当前会话
  • " 上下分屏
  • % 左右分屏
  • 上下左右 转到窗口
  • c-b :set -g mouse on 设置鼠标支持
  • ~/.tmux.conf 默认的配置文件位置

命令行

下面的命令行直接通过 tmux+指令实现

  • attach 连接会话

开启TrueColor设置

  1. 通过 echo $TERM查找终端类型
  2. 编辑 ~/.tmux.conf 添加
set -g default-terminal "xterm-256color"
#set -g default-terminal "screen-256color"   # 如果使用screen-256color则用这条指令
set-option -ga terminal-overrides ",*256col*:Tc"
  1. 重启tmux

[!tip] 参考 Vim在tmux中颜色改变/不同的问题

三剑客

grep

- `-C` 后面跟一个数字,表示在匹配行的前后都显示这么多行。如果希望显示所有行,可以使用一个足够大的数字

sed

awk

  • awk默认分割符是空格,可以通过-F自动分隔符-F ':',
  • 格式:awk [-F field-separator] 'commands' input-file #快捷命令
  • commands中的内容才是真正的awk,通常使用 '{print $1}'
  • awk使用的是列处理,sed是行处理的

[!tip] 参考 https://www.cnblogs.com/along21/p/10366886.html