linux查看文件前几行和后几行的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(1)从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000

(2)显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000

*注意两种方法的顺序
分解:
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行
(3)用sed命令
只查看文件的第5行到第10行:
sed -n '5,10p' filename

搜索一个文件夹下包含某个字段的文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
find 目录名 -name 文件名

查看进程:
ps -eo pid,tty,user,comm,lstart,etime | grep init
参数说明:
pid:进程ID
tty:终端
user:用户
comm:进程名
lstart:开始时间
etime:运行时间

grep hello /files -r -n
会输出类似于 filenames:hello 类似的信息。
-r 是包含子目录,-n 是显示文件名
你可以 grep --help 看看帮助

删除文件名称为乱码的文件:
find -inum 节点号 -delete

linux-查找某目录下包含关键字内容的文件

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
grep -r "{关键字}"  {路径}

例如:
grep -r "test" /data/reports
grep -R --include="*.cpp" key dir
上述命令的含义:
在dir目录下递归查找所有.cpp文件中的关键字key
在application目录下递归查找所有.sh文件中的关键字 81,显示所属行并将查找到的结果覆盖写入/root/t.txt中

grep -R -n --include="*.sh" 81 ./application >/root/t.txt
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

/< 和 /> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、‘manic’、‘man’等,
grep '/<man' * 匹配‘manic’和‘man’,但不是‘Batman’,
grep '/<man/>' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
'^':指匹配的字符串在行首,
'$':指匹配的字符串在行尾,

明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
当然,如果预料到有许多输出,您可以通过 管道 将其转到‘less’上阅读:
$ grep magic /usr/src/linux/Documentation/* | less

完全匹配一个词
grep -R -w 'boot' /etc

关键字位于被查找文件的哪一行
grep -R -w -n 'boot' /etc

关键字包含在那个文件中
grep -R -w -l 'boot' /etc

搜索结果写入文件
grep -R -w -l 'boot' /etc > ./output.txt

Grep详解

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i 'hello world' menu.h main.c

正则表达式选择与解释:
-E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
-F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
-G, --basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)
-P, --perl-regexp PATTERN 是一个 Perl 正则表达式
-e, --regexp=PATTERN 用 PATTERN 来进行匹配操作
-f, --file=FILE 从 FILE 中取得 PATTERN
-i, --ignore-case 忽略大小写
-w, --word-regexp 强制 PATTERN 仅完全匹配字词
-x, --line-regexp 强制 PATTERN 仅完全匹配一行
-z, --null-data 一个 0 字节的数据行,但不是空行

Miscellaneous:
-s, --no-messages suppress error messages
-v, --invert-match select non-matching lines
-V, --version display version information and exit
--help display this help text and exit

输出控制:
-m, --max-count=NUM NUM 次匹配后停止
-b, --byte-offset 输出的同时打印字节偏移
-n, --line-number 输出的同时打印行号
--line-buffered 每行输出清空
-H, --with-filename 为每一匹配项打印文件名
-h, --no-filename 输出时不显示文件名前缀
--label=LABEL 将LABEL 作为标准输入文件名前缀
-o, --only-matching show only the part of a line matching PATTERN
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE;
TYPE is 'binary', 'text', or 'without-match'
-a, --text equivalent to --binary-files=text
-I equivalent to --binary-files=without-match
-d, --directories=ACTION how to handle directories;
ACTION is 'read', 'recurse', or 'skip'
-D, --devices=ACTION how to handle devices, FIFOs and sockets;
ACTION is 'read' or 'skip'
-r, --recursive like --directories=recurse
-R, --dereference-recursive
likewise, but follow all symlinks
--include=FILE_PATTERN
search only files that match FILE_PATTERN
--exclude=FILE_PATTERN
skip files and directories matching FILE_PATTERN
--exclude-from=FILE skip files matching any file pattern from FILE
--exclude-dir=PATTERN directories that match PATTERN will be skipped.
-L, --files-without-match print only names of FILEs containing no match
-l, --files-with-matches print only names of FILEs containing matches
-c, --count print only a count of matching lines per FILE
-T, --initial-tab make tabs line up (if needed)
-Z, --null print 0 byte after FILE name

文件控制:
-B, --before-context=NUM 打印以文本起始的NUM 行
-A, --after-context=NUM 打印以文本结尾的NUM 行
-C, --context=NUM 打印输出文本NUM 行
-NUM same as --context=NUM
--group-separator=SEP use SEP as a group separator
--no-group-separator use empty string as a group separator
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binary do not strip CR characters at EOL (MSDOS/Windows)
-u, --unix-byte-offsets report offsets as if CRs were not there
(MSDOS/Windows)

‘egrep’即‘grep -E’。‘fgrep’即‘grep -F’。
直接使用‘egrep’或是‘fgrep’均已不可行了。
若FILE 为 -,将读取标准输入。不带FILE,读取当前目录,除非命令行中指定了-r 选项。
如果少于两个FILE 参数,就要默认使用-h 参数。
如果有任意行被匹配,那退出状态为 0,否则为 1;
如果有错误产生,且未指定 -q 参数,那退出状态为 2。

请将错误报告给: bug-grep@gnu.org
GNU Grep 主页: <http://www.gnu.org/software/grep/>
GNU 软件的通用帮助: <http://www.gnu.org/gethelp/>

linux压缩和解压缩命令

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
28
29
30
31
32
33
34
tar
解包:tar zxvf filename.tar
打包:tar czvf filename.tar dirname
gz命令
解压1:gunzip filename.gz
解压2:gzip -d filename.gz
压缩:gzip filename
.tar.gz 和 .tgz
解压:tar zxvf filename.tar.gz
压缩:tar zcvf filename.tar.gz dirname
压缩多个文件:tar zcvf filename.tar.gz dirname1 dirname2 dirname3.....
bz2命令
解压1:bzip2 -d filename.bz2
解压2:bunzip2 filename.bz2
压缩:bzip2 -z filename
.tar.bz2

解压:tar jxvf filename.tar.bz2
压缩:tar jcvf filename.tar.bz2 dirname
bz命令
解压1:bzip2 -d filename.bz
解压2:bunzip2 filename.bz
.tar.bz
解压:tar jxvf filename.tar.bz
z命令
解压:uncompress filename.z
压缩:compress filename
.tar.z
解压:tar zxvf filename.tar.z
压缩:tar zcvf filename.tar.z dirname
zip命令

解压:unzip filename.zip
压缩:zip filename.zip dirname

上传下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
yum安装
yum -y install lrzsz
使用上传文件,执行命令rz,会跳出文件选择窗口,选择好文件,点击确认即可。
rz
下载
sz

wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
tar zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20
./configure && make && make install
#上面安装过程默认把lsz和lrz安装到了/usr/local/bin/目录下,现在我们并不能直接使用,下面创建软链接,并命名为rz/sz:
cd /usr/bin
ln -s /usr/local/bin/lrz rz
ln -s /usr/local/bin/lsz sz

压缩、解压

1
2
3
4
5
6
7
8
9
tar -cvf fille.tar file(可以多个文件空格隔开)-c: 建立压缩档案;-v: 显示所有过程;-f: 使用档案名字,是必须的,是最后一个参数) 
tar -xvf file.tar 解包到当前目录
tar -xvf file.tar -C dir 把文件解压到指定目录中
zip 压缩后文件名 源文件
zip -r 压缩后目录名 原目录
unzip file.zip -d dir 解压到指定目录
gunzip file1.gz 解压 file1.gz
gzip file1 压缩 file1
gzip -9 file 最大程度压缩文件

文件、目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
rm -f file 强制删除文件,不提示 
rm -r dir 递归删除其文件和文件夹
rm -rf dir 强制删除文件夹及其内容,不提示
mv dir/file dir 将文件或者文件夹移动到指定目录
mv -t dir file 将文件或者文件夹移动到指定目录
mkdir dir dir2 创建两个文件夹
mkdir -p /tmp/dir 创建多级目录
cp file file1 将文件file复制一份file1
cp -a file/dir dir 将文件或者文件夹复制到指定目录
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd / 返回根目录
ls 列举出当前目录中所有文件
ls -a 列举出当前目录中所有文件,包括隐藏文件
ls -l 显示文件的详细信息
ls -lrt 按时时间排序显示文件
pwd 显示当前路径

网络相关

1
2
3
ip add 显示当前ip地址 
ifdown eth0 禁用 ‘eth0’ 网络设备
ifup eth0 启用 ‘eth0’ 网络设备

系统相关

1
2
3
4
5
6
7
8
9
10
11
12
13
su 用户名 切换用户登录 
shutdown -h now 关机
shutdown -r now 重启
reboot 重启

uname -a # 查看内核/操作系统/CPU信息
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
lsmod # 列出加载的内核模块
env # 查看环境变量

资源

1
2
3
4
5
6
7
free -m                # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh <目录名> # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载

磁盘和分区

1
2
3
4
5
mount | column -t      # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况

网络

1
2
3
4
5
6
ifconfig               # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息

进程

1
2
ps -ef                 # 查看所有进程
top # 实时显示进程状态

用户

1
2
3
4
5
6
w                      # 查看活动用户
id <用户名> # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务

服务

1
2
chkconfig --list       # 列出所有系统服务
chkconfig --list | grep on # 列出所有启动的系统服务

程序

1
2
rpm -qa                # 查看所有安装的软件包

linux通过进程号、端口号查找应用程序

1
2
3
4
5
6
7
8
9
linux根据端口号查询来源程序
1.根据端口号查询进程
netstat -tunlp|grep port

2.根据进程查询来源程序
ps aux | grep pid
上图看出所属进程为2281
上图看出占用8083端口的程序为ngnix

linux调用https接口

1
2
3
4
5
6
7
8
9
10
11
12
curl --tlsv1 -k https://172.16.26.46:9444/rest/dig-buw-manager/EtlControlledResServiceForRest/etlControlledResList -X POST -H "Content-Type:application/json" -d '{
"objectInfo": {
"start": 0,
"limit": 20,
"startTime": "1607097600000",
"endTime": "1607183999999",
"resourceName": "",
"resourceCode": ""
},
"token":101019
}'