- less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按 键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
-m 显示类似more命令的百分比
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向前翻一页
d 向后翻半页
Q 退出less 命令
G - 移动到最后一行
g - 移动到第一行
我经常使用 less -mN 来查看文件,然后使用上面命令基本够用
- tail
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
-f 循环读取
-n<行数> 显示文件的尾部 n 行内容
- head
head和对应。head是显示开头的前几行。
-n<行数> 显示文件的头部 n 行内容
head -n10 test.log
- date
显示日期的函数。常用用法:今天2020/11/20日
date -d -0day +%Y-%m-%d ==> 2020-11-20
date -d -1day +%Y-%m-%d ==> 2020-11-19
date -d -5day +%Y-%m-%d ==> 2020-11-15
- netstat
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
-a或--all:显示所有连线中的Socket;
-l或--listening:显示监控中的服务器的Socket;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;//可以查看pid号
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
- chmod
chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
第一种:使用符号模式,例如:chmod a+x file,此处的a代表所有用户,+代表添加权限,x代表执行权限
第二种:使用绝对模式,例如:chmod 777 file,表示为所有用户添加可读可写可执行权限,三个数值分别对应三种用户类型
-rwx-w--w- 1 root root 148 Mar 18 15:25 test.cpp
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
所以:文件拥有者u可读可写可执行,一组只能写,其他人也只能写
第一种:符号模式
1. chmod a+w test.cpp ==> 给test.cpp所有用户w(可写)权限
2. chmod u-w test.cpp ==> 撤销test.cpp拥有着的w(可写)权限
第二种:绝对模式
-rwx-w--w- 可以表示为 111 010 010 即为 722权限
1. chmod 722 test.cpp ==> 给test.cpp rwx-w--w-权限
2. chmod 000 test.cpp ==> 给test.cpp ---------权限 没有所有权限
3. chmod 777 test.cpp ==> 给test.cpp rwxrwxrwx权限 所有权限
ps. 如果要修改文件以及子文件 加上参数 -R即可
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
- top
top程序提供运行系统的动态实时视图,它可以显示系统概要信息以及当前由Linux内核当前管理的任务列表。所示的系统概要信息的类型以及为任务显示的信息的类型、顺序和大小都是用户可配置的,并且可以在重新启动时使配置保持不变。
-d 延迟时间间隔为:-d ss.tt(单位秒,允许小数,不允许负数)。
-p 监视器PID为:-pN1 –pN2 …或-pN1,N2[,…]。仅监视具有指定进程ID的进程。此选项最多可以给出20次,或者您可以提供最多20个PID的逗号分隔列表。
-u 用户监控:-u somebody。仅监控与给定的有效UID或用户名匹配的进程
-U 用户监控:-U somebody。仅监控与给定的UID或用户名匹配的进程。这与真实的、有效的、保存的文件系统UID相匹配。
-v 版本信息
-c 显示完整的进程名称
交互命令:
k 杀死一个任务(进程)。系统将提示您输入PID,然后输入要发送的信号。
M 按照内存排序
P 按照cpu使用率排序
l 切换显示平均负载和启动时间信息。(最上面一行,可用uptime单独查看)
e/E 人性化的方式展示。即把k转化为 M/G等单位
- find
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
-name name 文件名称符合 name 的文件
-iname name iname 会忽略大小写
-amin n : 在过去 n 分钟内被读取过
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-ctime n : 在过去n天内被修改过的文件
-type 查找某一类型的文件
d 目录
f 普通文件
例子:
// 不区分大小写查找结尾为exe的文件
find / -iname *.exe
// 我只想查找目录是nginx的目录
find / -type d -iname *nginx*
// 我只想查找文件是nginx的文件
find / -type f -iname *nginx*
- grep
Linux grep命令用于查找文件里符合条件的字符串。
grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。
-i :忽略大小写(ignore case)。
-n :显示行号
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-v : 查找不包含在文本里面的。即反向选择
-P :使用perl的正则表达式。比如\d {1,5} {1,}等等正则
-H :显示文件名称. 比如模糊搜索很多文件的时候,可以看查到了哪个文件 需要grep -H *.conf
// 查询异常栈的时候最有效
-a5 : 同时显示匹配到的行数的前后五行
-A3 : 同时显示匹配到的行数的后三行
-A 是显示匹配后和它后面的n行。
-B 是显示匹配行和它前面的n行。
-C 是匹配行和它前后各n行。
例子:
// 忽略大小写,查找nginx.conf里面的http
grep -in http nginx.conf
// 查找http在nginx.conf有几行(可能一行中出现了多次http)
grep -c http nginx.conf
- systemctl
systemctl命令是系统服务管理器指令,主要负责控制systemd系统和服务管理器,它实际上将 service 和 chkconfig 这两个命令组合到一起。
systemctl start [unit type] 启动服务
systemctl stop [unit type] 停止服务
systemctl restart [unit type] 重启服务
systemctl status [unit type] 参数来查看服务运行情况
systemctl reload [unit type] 重新加载服务,加载更新后的配置文件
systemctl enable [unit type] 设置服务开机启动
systemctl disable [unit type] 设备服务禁止开机启动
systemctl is-enabled [unit type] 检查网络服务是否设置为开机启动
- vim
基本上 vi/vim 共分为三种模式
分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
上下左右:
h 左边
l 右边
j 下边
k 上边
移动:
箭头键 上下左右移动
向下移动 30 行,可以使用 "30↓" 的组合按键
n<space> 按下数字后再按空格键,光标会向右移动这一行的 n 个字符
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
I(大写i) 当前所在光标最前面插入
A(大写a) 当前所在光标最后面插入
o(小写o) 当前所在行的下一行插入
O(大写o) 当前所在行的上一行插入
G 移动到这个文件的最后一行(常用)
gg 移动到这个文件的第一行
nG n 为数字。移动到这个档案的第 n 行。
删除:
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符
nx n 为数字,连续向后删除 n 个字符。
dd 删除游标所在的那一整行(常用)
ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
复制黏贴:
yy 复制游标所在的那一行(常用)
nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!
查找:
/word 向光标之下寻找一个名称为 word 的字符串
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 代表重复前一个搜寻的动作
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。
* 可以直接查找当前光标所在的单词
如果你想要找到以word结尾的。 /word\> ?word\>
如果你想要找到以word开头的。 /\<word ?\<word
要匹配一个完整的word单词 /\<word\> ?\<word\>
替换
:%s/vivian/sky/g 替换每一行中所有 vivian 为 sky
或者用sed替换 sed -i "s/\./:/g" osc.log
多文件操作:
:sp filename 水平分割
:vsp filename 垂直分割
:ctrl + w + h 光标移动到左边文件
:ctrl + w + l 光标移动右边文件
:ctrl + w + H(大写) 窗口移动左边
:ctrl + w + L(大写) 窗口移动右边
:ctrl + w + > 窗口向右变大
:ctrl + w + < 窗口向左变小
:ctrl + w + + 窗口向上变大
补全
ctrl + x ctrl + p 根据当前文件补全(或者用ctrl + n直接代替)
ctrl + x ctrl + l 补全整行
其他常用功能:
u 撤销前一个功能,类似于ctrl+z
. 重复上一个动作(就是小数点)
v 选中部分快
:set nu 示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与 set nu 相反,为取消行号!
:set ts=4 tab四个空格
: syntax on 语法高亮
: autoindent 自动缩进
高级操作:
w 移动到下一个单词
b 返回上一个单词
f+字符
例如fa, 表示从光标位置开始向右查找第一次出现a的位置,找到则光标移到该位置,未找到则不移动。输入分号(;)可以重复上一次的查找命令。
M(middle) 将光标移到屏幕中部行首
% 移动到括号匹配的另外一边。比如[aaaaaaaaaaaabbbbbbbbbbaaaaaaaa]。当前光变在 [ , 按一下 % ,就跳到了 ] 所在位置.
ma(mark a) 可以把这一行给标记了,然后用`a 可以直接跳转过去。非常好用
` 自己本身也是一个寄存器,表示上一次跳转前的位置。因此按两次 `` 表示返回之前的位置,类似于回退
// "some word for test"
d i " ==> d 删除 i进入 "冒号 , 删除在冒号里面的所有东西
d w 删除一个单词
d 2 w 删除两个单词
寄存器 每次复制完,都会存到0号寄存器。
然后ctrl+r 就是准备取寄存器东西。按0 就是把寄存器0的东西取出来
https://www.cnblogs.com/chaoqi/p/10518994.html
Vim 的纵向编辑模式
将游标定位到第一行第一列
ctrl-v 进入纵向编辑模式
G 移动游标到最后一行第一列,可视块覆盖了第一列
I 进入行首插入模式
ping -c 4 输入所要求字符“ping – c 4 ”
ESC 退出纵向编辑模式的同时所有选中的字符前都添加了“ping – c 4 ”,回到命令模式
Vim 的宏记录
宏是可以记录recode 一系列操作
在普通模式下按下 r t R代表开启宏,T表示将一系列操作放到T这个寄存器中
然后可以随意记录,最后按下r,结束宏的录制
执行宏,则按下 @t即可。 2@t 执行两边宏
- wget
Linux系统中的wget是一个下载文件的工具,它用在命令行下。对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。
-O 变更下载文件名
-c 接着下载没下载完的文件,断点续传
-b 启动后转入后台执行
-P 指定下载目录
// 例子
使用wget下载单个文件
wget http://cn2.php.net/distributions/php-5.6.13.tar.gz
下载并以不同的文件名保存
wget -O php.tar.gz http://cn2.php.net/distributions/php-5.6.13.tar.gz
使用wget断点续传
wget -c http://cn2.php.net/distributions/php-5.6.13.tar.gz
使用wget后台下载
wget -b http://cn2.php.net/distributions/php-5.6.13.tar.gz
使用wget下载到指定目录
wget http://cn2.php.net/distributions/php-5.6.13.tar.gz -P Download/
- curl
curl 是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。
* get请求
curl "gdufe888.top/api/tweet/newest?page=1&pageSize=10"
发觉301重定向
curl -L "gdufe888.top/api/tweet/newest?page=1&pageSize=10"
完美解决
* Post请求
curl -d "page=1&pageSize=10" 120.78.159.149:8083/api/tweet/newest
非常的简单
-d 加上参数即可
* 其他重要指令
curl -v "https://www.gdufe888.top/api/tweet/newest?page=1&pageSize=10"
// 结果
* About to connect() to 120.78.159.149 port 8083 (#0)
* Trying 120.78.159.149...
* Connected to 120.78.159.149 (120.78.159.149) port 8083 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 120.78.159.149:8083
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 85
< Date: Sun, 31 Mar 2019 10:21:55 GMT
<
* Connection #0 to host 120.78.159.149 left intact
会返回详细的请求流程
curl --user-agent "[User Agent]" [URL] 或者
curl -A "[User Agent]" [URL]
增加头信息
- tar是打包,解压文件的命令。类似于windows下面的zip,rar等
=============最常用的几个参数(如下)=====================
-x 解压
-c 打包
-t 查看压缩包里面的内容
(以上三个不能同时用,只能单独用)
-z 是否同时具有gzip的属性?即是否需要用gzip压缩或解压?一般格式为xxx.tar.gz或xx.tgz
-j 是否同时具有bzip2的属性?即是否需要用bzip2压缩或解压?一般格式为xx.tar.bz2
-v 显示操作过程!这个参数很常用
-f 使用文档名,你要解压那个文件 这个参数一定要放到最后去
// 例子
查看redis.tar.gz文件
tar -ztvf redis-4.0.6.tar.gz(z参数可加可不加)
解压redis.tar.gz文件
tar -zxvf redis-4.0.6.tar.gz
打包两个文件
tar -zcvf target.gz wget-log wget-log.1
- jar
java中SpringBoot最常见的就是 xxx.jar/osc.jar/mipay.jar 等等
jar的命令和tar非常的类似,几乎一模一样
=============最常用的几个参数(如下)=====================
-x 解压
-c 打包
-t 查看压缩包里面的内容
(以上三个不能同时用,只能单独用)
-v 显示操作过程!这个参数很常用
-f 使用文档名,你要解压那个文件 这个参数一定要放到最后去
// 例子
查看osc.jar文件
jar -tvf osc.jar | grep cashpay-common
解压osc.tar.gz文件
jar -xvf osc.jar
打包两个文件
jar -cvf xxx.jar BOOT-INF/ META-INF/ org/
- awk
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片。切开的部分再进行各种分析处理。
-F 指明输入时用到的字段分隔符
-v var=VALUE : 自定义变量(无需加$, 直接用即可)
1:以空格为分隔符
awk -F ' ' '{print $0}' test.txt
2: 以冒号为分隔符
awk -F ':' '{print $1}' test.txt
3: 正则匹配,输出每一行包含rcu的行
awk '/rcu/ {print $0}' test.txt
4: 正则匹配,输出包含NetType的行
awk '$0 ~ /NetType/ {print $1}' access.log
4: 正则匹配,输出不包含NetType的行
awk '$0 !~ /NetType/ {print $1}' access.log
5: 筛选grep,输出第二行等于 “6” 得行
cat data.txt | awk -F ' ' '$2==6{print $0}'
在print之前,加一个参数,多少行等于多少,就可以有grep的效果了。非常的好用。
- cut
Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符 \t。
-f :与-d 一起使用,以段为分割。
文本:
2017-12-02
2017-01-09
2017-10-23
2017-04-24
1:以'-'为分割线。只要第二列,第三列
cat data.txt | cut -d"-" -f2-3
- sort
Linux sort命令用于将文本文件内容加以排序。sort可针对文本文件的内容,以行为单位来排序。
-n 依照数值的大小排序。
-r 以相反的顺序来排序。
-u 去重复
-t <分隔字符> 指定排序时所用的栏位分隔字符。
-k 配合-t用
文本:
2017-12-02
2017-01-09
2017-10-23
2017-04-24
1: 以数字排序
cat test.txt | sort -n
2: 以“-”为分割线,排序第二列。即月份
cat test.txt | sort -n -t'-' -k2
3:以'-'为分割线。先以第一列排序,第一列相同,以第二列排序
sort -t '-' -k1n -k2n -k3n
- uniq
Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。uniq 可检查文本文件中重复出现的行列。
- nohup
nohup命令用于不挂断地运行命令(关闭当前session不会中断改程序,只能通过kill等命令删除)。
使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件。
解释:
1: & &用于后台执行程序,但是关闭当前session程序也会结束
2: 2>&1 &
bash中:
0 代表STDIN_FILENO 标准输入(一般是键盘),
1 代表STDOUT_FILENO 标准输出(一般是显示屏,准确的说是用户终端控制台),
2 三代表STDERR_FILENO (标准错误(出错信息输出)。
2>&1就是用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。
3:/dev/null
可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
/dev/null 2>&1则表示吧标准输出和错误输出都放到这个“黑洞”,表示什么也不输出。
常用nohup命令如下:
1: nohup bash hello.sh > hello.txt & 在后台执行hello.sh脚本,并将内容输出到hello.txt
2: nohup bash hello.sh >> hello.txt 2>&1 & 在后台执行hello.sh脚本,并将内容输出到hello.txt。 同时,错误信息输入到1正确信息中,也就是hello.txt中
3: nohup bash hello.sh > /dev/null 2>&1 & 在后台执行hello.sh脚本,并将内容输出到null中,也就是什么都不输出
4: nohup bash hello.sh > hello.txt 2>error.log & 在后台执行hello.sh脚本,正确信息输出到hello.txt中,错误信息输出到error.log中
- nc
nc是一个网络工具。可以很方便的进行 服务器间的文件传输
常用nc命令如下:
我想把文件从 A服务器 传送到 B服务器
1:首先在 B服务器 监听端口:nc -l 9999 > output.log
2:nc ip 9999 < input.log 例如:nc 10.11.212.231 9999 < input.log