【Linux】Linux常用命令及操作 (一)

一.Linux简介

二.Linux基础命令

三.工作常用命令

----------------------------------------------------------------------------------------------------------------

一.Linux简介

Linux是一个基于文件的操作系统。磁盘数据以文件树的形式存储,所有路径挂载在根目录(/ 正斜杠)上,然后由其展开。Linux的基本思想有两点:第一,一切都是文件;第二,每个文件都有确定的用途。说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。

其文件结构如下:

 

 

其中,需要注意的重要目录是:

用户家目录: /root,/home/{UserName}

普通用户可执行文件: /bin,/usr/bin,/usr/local/bin

系统管理员可执行文件: /sbin,/usr/sbin,/usr/local/sbin

配置文件目录: /etc

临时文件目录: /tmp

内核和启动文件: /boot

服务器数据: /var , /srv

系统信息: /proc,/sys

共享库: /lib,/usr/lib,/usr/local/lib

其它挂载点: /media,/mnt

注意:文件或目录名:<=255个字符、区分大小写、不能使用“/”,不允许创建与系统已有的相同名字的目录。因为不要区分,第二点,防止某些软件无法自动进行识别。

 二.Linux基础命令和概念

1.简单命令

 

cd 打开
ls 列表

pwd

显示路径
touch 创建文件/修改时间戳
cat 查看文本内容
mv 移动
rm 删除
mkdir/rmdir 建/删文件夹
cp 复制
rename 重命名

 

 

 

 

 

 

 

 

 

 

 

 

 

2.网络

静态IP配置:

ifup eth0

vim /etc/sysconfig/network-scripts/ifcfg-eth0 或 setup

ONBOOT=YES;

BOOTPROTO=static;

IPADDR\NETMASK\GATEWAY\DNS1\DNS2;

service network restart

 3.NAT&桥接

nat模式和外网非同网段,但是可以通过端口映射访问;而桥接模式是占用真实网段下ip;

 

 

 

 

 

 4.远程操作:

远程拷贝:scp [-r] [path]/fie | dir {UserName}@Host_IP:/[path]

      -r 该选项用于传输文件夹的时候使用。

远程登录:ssh {UserName}@Host_IP

远程免密登录:(两条命令搭配使用)

命令一:ssh-keygen

第一次提示:你的证书文件存放位置(保持默认即可,通常情况下证书会保存在对应账户的家目录下的隐藏目录,ssh目录)

第二次提示:对私钥加密,输入密码。如果不需要输入密码,直接回车。

第三次提示:私钥证书的密码确认操作。

证书文件会存放在当前账户的家目录下的隐藏目录".ssh"目录下,在该目录下会有以下4个文件:

id_rsa 私钥 执行证书生成命令才会有

id_rsa.pub 公钥 执行证书生成命令才会有

known_hosts 曾经访问过的服务器信息 每次ssh、scp、ssh-copy-id到远程服务器时就会保存记录到此文件中,以后再此访问该服务器时就不会再提示那一句"你确定要继续访问吗 yes/NO?"

authorized_keys 记录来访服务器的公钥文件内容 该文件会记录访问本机的远程服务器的公钥证书文件内容,只有对应的私钥才能进行验证。

命令二:ssh-copy-id {UserName}@Host_IP

作用是证书注册:将本机的公钥证书文件注册到远程服务器上,此后就可以使用私钥证书进行登录。这一步就是向远程服务器注册本机的id_rsa.pub文件(公钥)内容。此后只有本机上与公钥文件共同生成的私钥才能够进行免密登录。

5.网络下载

wget [参数] [URL地址]

–支持断点下载功能

–同时支持FTP和HTTP下载方式

–支持代理服务器

6.运行级别

0 关机

1 单用户

2 无网络多用户

3 命令行模式

4 官方预留,未定义内容

5 图形化模式

6 重启

修改级别:init 运行级别的数字

配置默认的运行级别:vi /etc/inittab

who -r

可以查看当前系统的运行级别和系统时间

runlevel

可以查看之前的运行级别和当前的运行级别。

N表示前面没有运行级别(NULL)

3表示当前处于运行级别。

7.用户/用户组:

理解:

用户 一个户口的本的户主

用户组 户口本中的其他成员

其他人 除用户本人(户主)和用户组(户口本中的成员)外的成员都是其他人

基本概念:

用户及UID:

在Linux系统中,每一个用户默认都对应了一个UID,而这个UID可以理解是用户的身份证号。

CentOS系统中:

UID 0 root

UID 1-499 系统预留,作为系统用户来使用

UID 500 - 65535 自定义账户

用户信息存储的位置:

用户信息 /etc/passwd

密码信息 /etc/shadow

用户组信息 /etc/group

8.用户操作:

创建:useradd [选项] {UserName}

修改:usermod [选项] {UserName}

删除:userdel [选项] {UserName} (-r:表示删除账户同时删除该账户的家目录)

增/删/改[选项]:

-c comment 指定一段注释性描述

-d 目录 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。

-g 用户组 指定用户所属的主用户组。

-G 用户组,用户组 指定用户所属的附加组。

-s Shell文件 指定用户的登录Shell。有一个特殊的shell程序叫nologin,如果某帐号使用此shell,就表示用户不允许登录,该用户通常成为伪用户。

-u 用户号 指定用户的用户号

密码管理:passwd [选项] {UserName}

选项:

-l 锁定账户

-u 解锁账户

-d 删除密码

passwd 可以不跟选项、用户名,默认是修改自己的帐号密码。

修改他人密码,必须具备管理员权限(并不一定非要是root账户)。

普通账户,只能修改自己的密码。

管理员修改他人的密码,不需要满足密码策略。

普通账户修改密码时,必须满足密码安全策略。

管理员修改他人密码:

passwd {UserName}

修改自己的密码

passwd

切换用户:su

su {UserName} 表示切换用户之后,依然停留在当前目录

su - {UserName} 表示切换用户之后,去到该用户的家目录

普通用户切换root时,书写格式不需要写成su - root,直接su即可。

查看用户:id user

9.用户组操作:

创建:groupadd [选项] {groupName}

修改:groupmod [选项] {groupName}

删除:groupdel [选项] {groupName}

增/删/改[选项]:

-g GID 指定新用户组的GID

-o 通常与-g同时使用,使新用户组可以与系统已有的组ID系统。

-n 用来修改组ID group -n newGroupName oldGroupName

注:

系统底层会将两个GID相同用户组识别为同一个用户组,这样做的目的是让两个用户组的权限相同。识别规则,后者遵循前者。

如果删除的用户组,已经被用户追加为附件组,对应的所有用户的该附件组会被撤销掉。

如果被删除的用户组,已经被用户指定为主组,则该用户组无法被删除。(可以理解为像Windows中文件被占用时不能被删除。)

用户组的切换:newgrp {GroupName}

某用户属于多个用户组时,想要访问其他用户组中的内容时,必须切换用户组才行。

10.操作权限

逻辑权限:

drwxr-xr-x. 2 root root .....

共有三组

第一组 用户 user

第二组 用户组 group

第三组 其他人 other

每组权限

字符 权限 数字

r       读       4

w      写       2

x       执行   1

修改文件/夹的逻辑权限:

chmod 755 xxx 

选项

-R 递归处理

修改文件/夹的权限时,可以使用字符权限,也可以使用数字权限。

直接修改文件、文件夹的属主、属组:

chown user:group file | dir

物理权限:修饰某个文件/夹不允许被修改。

lsattr 查看文件的物理权限(属性)

lsattr [选项] 文件/夹

选项:

R 表示递归处理

a 表示查看所有文件的属性,包括隐藏

d 显示目录的属性,而不是目录下的文件的属性

chattr [选项] file/dir

选项:

i 表示不能以任何方式进行文件/夹的修改,增加,删除

a 表示文件/夹只能追加,不能修改,删除

+ <属性> 表示开启某文件/夹的权限

- <属性> 表示关闭某文件/夹的权限

R 表示递归处理。

11.关于sudo

sudo(SuperUser Do),它可以让普通用户执行root的权限。sudo可以限制用户执行部分root的权限。

sudo会记录用户执行过的每一条命令,便于查阅服务起出事之前的状态。

好处:

使用自己配置好的用户环境

不需要知道root密码,保证root的密码安全,不用让root裸奔

避免root账户引起管理员之间的恶性冲突、流血事件。

可以限制用户执行有限的root权限

sudo执行的每条命令都会被记录,便于日后的日志审计,例如用户执行过高危操作命令。

三.工作常用命令

工作中实用命令:

ps:将某个时间点的程序运作情况截取下来

常用组合选项 -aux

a 关联的所有 process,通常与x一起使用,列出完整信息。

x 后台进程

u 有效使用着的相关联的进程

ajxf 可以让ps的结果以树状的格式显示出来。

ps查询结果各项解释:

USER 用户

PID 进程ID

%CPU cpu占用率

%MEM 内存使用率

VSS 虚拟内存使用量

RSS 物理内存使用量

TTY tty1-tty6 是本机上面的登入者程序。

pts/0 等等的,则表示为由网络连接进主机的程序。

如果显示?则表示与终端机无关。

STAT 进程的状态

START 进程启动的时间

TIME 累计消耗CPU的时间

COMMAND 表示哪个命令/程序运行的该进程

状态标识:

R 正在运行,或在队列中的进程

S 处于休眠状态

< 高优先级

N 低优先级

s 包含子进程

+ 位于后台的进程组

僵尸进程:

由于该进程已经执行完毕,但是父进程没有终止或其他原因导致该进程并没有真正的结束,所形成的进程称之为僵尸进程。

此进程对服务器的危害在于它会持续的消耗服务器资源,消耗量会越来越大。最终导致其他的进程无资源可用,服务器崩溃。pstree:

选项:

A ASCII

U UTF-8

u 用户相关的进程

p 进程的ID

注:使用哪个账户运行此命令,那么与其相关的进程则不会显示用户名、

动态查询:top:

动态查询系统的进程状态。默认是3秒一更新。

选项:

-d 跟时间,可以修改top默认更新(刷新)的时间

-b : 以批次的方式执行 top ,还有更多的参数可以使用,通常会搭配数据流 重导向来将批次的结果输出成为档案;

-n Number: 与 -b 搭配,意义是需要进行几次 top 的输出结果;

-p : 指定某些个 PID 来进行观察监测而已;

 

交互式按键:(并不常用)

? : 显示在 top 当中可以输入的按键指令

P : 以CPU的使用资源排序显示

M : 以Memory的使用资源排序显示

N : 以PID来排序

T : 由该Process使用的CPU时间累积 (TIME+) 排序

k : 给予某个PID后kill该进程(内核2.6后失效)

q : 离开top软件的按键

单进程的管理:

kill:结束某个进程

语法:kill 信号量 PID

信号量:

-15: 以正常的程序方式终止一个进程!!!

-9 : 立刻强制终止一个进程!!!(!!不能强制结束系统级别的进程)

-2 : 代表由键盘输入 [ctrl] + c 同样的动作;

-1 : 对于sshd这样的守护进程,重新读取一次参数的配置文件

(类似 reload),如果进程为非守护进程,默认为终止进程; !!

 

多进程的管理:

killall:结束基于某个程序运行进程。

语法:killall 信号量 程序名/命令名

信号量:

-15: 以正常的程序方式终止一个进程!!!

-9 : 立刻强制终止一个进程!!!(!!不能强制结束系统级别的进程)

-2 : 代表由键盘输入 [ctrl] + c 同样的动作;

-1 : 对于sshd这样的守护进程,重新读取一次参数的配置文件

(类似 reload),如果进程为非守护进程,默认为终止进程; !!

free:内存监控

选项:

-b bytes

-k kb

-m mb

-g gb

-t 统计总量

uname:查阅系统与核心相关信息

选项:

-a 所有系统相关的信息,包括以下的数据都会被列出来;

-s 系统内核名称

-r 内核版本

-m 本系统的硬件名称,例如 i686或x86_64 等;

-p CPU 的类型,与 -m 类似,是显示的是CPU的类型;

-i 硬件的平台(ix86);

uptime:观察系统启动时间与工作负载

netstat:网络监控

-a 将目前系统上所有的已经连接、监听、Socket数据都列出来

-t 列出tcp网络包的信息

-u 列出udp网络包的信息

-n 以端口(port number)方式来显示(不以程序的服务名称)

-l 列出目前正在监听(listen)的服务;

-p 列出该网络服务的进程id(PID)、程序名

Linux防火墙:

它具备一定的防护功能,比如说端口的开放和禁止,也可做数据的转发(类似路由功能),策略及其他功能。

临时处理防火墙:如果系统重启,那么防火墙将恢复到之前的状态。

开启 service iptables start

or

/etc/init.d/iptables start

关闭 service iptables stop

or

/etc/init.d/iptables stop

重启 service iptables restart

or

/etc/init.d/iptables restart

查看 service iptables status

or

/etc/init.d/iptables status

永久处理防火墙:

开启: chkconfig iptables on

关闭: chkconfig iptables off

任务管理:

进入后台:ctrl + z

查看任务:jobs

选项:

-r 仅查看后台运行的任务

-s 仅查看后台暂停的任务

-l 查看后台的任务,并显示其PID

任务调至前台:

fg命令+jobnumber来把后台任务调至前台。(无论在后台是暂停还是运行)

最后放置后台的任务就会带有+号。+ 表示最近一次放置后台的任务

bg命令 + jobnumber 可以将后台任务的暂停状态修改为运行状态。(交互式的应用无法修改为运行状态)

bg命令不加jobnumber也是可以调后台的任务,但是默认就会调取后台带有+号的那个任务。最后放置后台的任务就会带有+号。

终止job:

jobs -l查询出ID,之后通过: kill -9 PID 结束

vim:

什么是VIM:

是一个类似vi的文本编辑器,不过在vi的基础上增加了很多新特性,vim被公认为类vi编辑器中最好用的一个。

为什么要学习VIM,vi不够?

vim在vi的基础之上增加了很多的小功能。可以有效的帮助程序员快速的排查问题。

vim的三种模式:

一般模式、编辑模式、命令模式

三种模式的转换图:

一般模式(默认模式)的快捷键:

h或←光标左移一个字符。如果是20h,表示左移20个字符。

j或→光标下移一个字符 同上

k或↑光标上移一个字符 同上

l或↓光标右移一个字符 同上

[Ctrl]+[f]屏幕向下移动一页 Page Down!!

[Ctrl]+[b]屏幕向上移动一页 Page Up !!

0或[Home]移动到此行最前面字符处!!

$或[End]移到光标所在行的行尾!!

H 光标移到当前屏幕最上方行的第一个字符!!

M光标移到当前屏幕中间行的第一个字符!!

L光标移动到当前屏幕最下方行第一个字符!!

G移到此文件最后一行!!!

nG移到第n行

gg相当于1G,即移到第一行!!!

n[Enter]光标下移n行

/word向下查找单词“word”(!!!)

?word向上查找单词“word”(!!!)

n表示重复前一个查找操作

N与n相反(反向查找)

yy复制光标所在行(!!)

nyy复制光标所在向下n行(n为数字)

y1G复制光标所在行到第一行所有数据

yG复制光标所在行到最后一行所有数据

y$复制光标所在处到同行最后一个字符

y0复制光标所在处到同行第一个字符

p将已复制的数据粘贴到光标所在下一行

P将已复制的数据粘贴到光标所在上一行

u复原前一个操作(类似于windows中的ctrl+z)!!!

Ctrl+r恢复一个操作。

x向后删除一个字符

nx向后删除n个字符(n为数字)

X向前删除一个字符

dd删除光标所在行(!!!)

ndd删除光标所在行以下n行(n为数字,包含当前行在内)

d1G删除光标所在行到第一行所有数据(包括所在的行)

dG删除光标所在行到最后一行(!!)

d$或d end删除光标所在处到同行最后一个字符(!!)

d0或d home删除光标所在处到同行第一个字符。(!!)

 

编辑模式:

进入编辑模式:

i从光标所在处插入(!!!)

I从所在行第一个非空白字符处插入(!!)

a从光标所在下一个字符处插入

A从光标所在行最后一个字符处插入(!!)

o在光标所在处下一行插入新的一行(!!)

O在光标所在处上一行插入新的一行(!!)

r替换光标所在处字符一次

R一直替换光标所在处文字直到按下Esc(!!!)

 

命令模式:

如何进入命令模式:

: ? / 三个符号任意都可以进入编辑模式

:w [filename] 另存为filename

:r [filename] 读取filename指定文件中的内容到光标所在的行。

:n1,n2 w [filename] 将n1到n2行另存为filename

:! command 临时切换到命令行模式下执行command命令。 

例如 “:!find / -name Helllo.java”即可在vim当中执行命令。

:wq 保存后离开

:q 不保存离开(未改可以离开,如果修改了需要q!强制离开)

:q! 不保存离开

:set nu 显示行号 (number)

:set nonu 取消显示行号 (noNumber)

 

:s/word1/word2/g 在当前行将word1替换成word2(!!)

:%s/word1/word2/g 在当前文件将word1替换成word2(!!)

:n1,n2s/word1/word2/g在n1到n2行查找word1替换成word2 (n1、n2为数字)

:10,$ s/word1/word2/g从第一行到最后一行查找word1替换成word2

:%s/word1/word2/gc 同上,在替换前确认是否替换。(!!!)只能单行确认,需要逐个确认。

替换为 b (y/n/a/q/l/^E/^Y)?

y表示yes,n表示no,a表示all(限光标当前到最后一行),q表示quit,l表示替换后移动光标到行首,^E(Ctrl+E)表示向下翻,^y(Ctrl+Y)表示向上翻

压缩和打包:

gzip拥有更快的压缩性能。

bzip2拥有更高的压缩比。

单纯从压缩比方面来说,那么bzip2 > gzip > compress

gzip:

压缩/解压命令

选项:

-c : 将压缩的数据输出到标准输出(stdout)上

-d : 解压缩

-t : 可以用来检验一个压缩文件的一致性,看看文件有无错误

-v : 可以显示出原文件/压缩文件的压缩比等信息

-(1,2,...,9): 压缩等级,1最快,但是压缩比最差;9最慢,但是压缩比最好,默认是6。

-l : 查看压缩文件的压缩比: gzip –l *.gz

bzip2:

压缩/解压命令:

选项:

-c : 将压缩的过程产生的数据输出到标准输出(stdout)

-d : 解压缩的参数

-k : 保留源文件,而不会删除原始的文件

-f : 强制压缩

-v : 可以显示出原文件/压缩文件案的压缩比等信息;

-(1,2,...,9): 与gzip同样的,都是在计算压缩比的参数,-9最佳,-1最快

查看压缩文件中的内容:

cat:可以用来查看文本文件中的内容。

zcat:可以用来查看gzip算法压缩的压缩文件内容。

bzcat:可以用来查看bzip2算法压缩的压缩文件内容。

tar:

可以将一个文件/夹打包成一个文件。可以结合gzip、bzip2的算法对包文件进行相应的压缩和解压。

语法:

压缩: tar [选项] newFileName.tar.gz sourceFileName

解压: tar [选项] fileName.tar.gz [-C /path]

选项:

-c : 建立打包文件,

-t : 查看打包文件的内容含有哪些文件

-x : 解打包或解压缩的功能,可以搭配-C(大写)在指定目录解开

-j : 通过bzip2的支持进行压缩/解压缩:此时文件最好为 *.tar.bz2

-z : 通过gzip的支持进行压缩/解压缩:此时文件最好为 *.tar.gz

-v : 在压缩/解压缩的过程中,将正在处理的文件名显示出来

-f filename: -f 后面跟处理后文件的全名称(路径+文件名+后缀名)

-C 目录: 这个选项用在解压的时候,若要在特定目录解压,可以使用这个选项

注:

使用命令进行打包、压缩的时候,使用了什么算法,文件后缀名就一定要与其对应。

软件管理(centos)

rpm最早是由RedHat Package Manager,由于该机制非常的好用,被很多的发行版本当作自己的软件管理。

优点:

自带编译后的文件,免除用户对软件编译的过程

可以自动检测文件系统(硬盘)的容量、系统的版本。避免软件被错误的安装。

自带软件的版本信息、帮助文档、用途说明等信息。

使用数据记录rpm的文件信息,便于安装、升级、查询、卸载。

缺点:

无论安装还是卸载,RPM都有一个恶心人的依赖关系。

安装的软件需要依赖,那么优先安装依赖。

卸载的软件存在依赖,那么优先卸载依赖。

默认路径:

/etc 一些配置文件放置的目录,例如/etc/crontab

/usr/bin 一些可执行文件

/usr/lib 一些程序使用的动态链接库

/usr/share/doc 一些基本的软件使用手册与说明文件

/usr/share/man 一些man page(Linux命令的随机帮助说明)文件

安装:

语法:rpm -ivh packageName.rpm

选项:

i 表示安装

v 表示处理过程(啰嗦模式)

h 显示处理进度(进度条)

查询:

rpm -[选项]

选项:

-q : 仅查询,后面接的软件名称是否有安装

-qa : 列出所有的,已经安装在本机Linux系统上面的所有软件名称 !!!

-RPqi : 列出该软件的详细信息,包含开发商、版本和说明等 !!

-ql : 列出该软件所有的文件与目录所在完整文件名 !!

-qc : 列出该软件的所有配置文件 !

-qd : 列出该软件的所有说明文件

-qR : 列出和该软件有关的相依软件所含的文件

-qf : 由后面接的文件名,找出该文件属于哪一个已安装的软件

卸载:

rpm -e package_Name # package_Name需要通过qa的选项来查询出来。

升级:

语法:

rpm -i[选项] package_Name

选项:

Uvh 不管软件是否安装到系统中,都会更新至最新版

Fvh 只有系统中已安装的软件才会被升级到最新版。

yum的由来,是因为rpm的缺点所导致,因为rpm无论安装还是卸载都需要解决依赖关系,并且比较繁琐,所以诞生yum的技术。

yum通过分析rpm的信息来进行软件的安装、升级、卸载。

优点: 可以一键解决rpm的依赖关系。

缺点: yum的所有执行操作全都都需要repo文件(YUM源)。

使用yum安装软件,中招几率高达90%。

 

所有的yum源都存放在/etc/yum.repos.d/目录下。

工作环境中,一般都会屏蔽系统自带的yum源,而选择权威机构的yum源。

yum的查询:

search 查询某个软件名称或者是描述的关键字

list 列出目前yum所管理的所有的软件名称与版本,有点类似 rpm -qa

info 同上,格式不太一样,不过有点类似 rpm -qai 的执行结果

yum的安装:

yum install package_Name

案例:

# bash

yum install lrzsz

期间会提示y/N

输入y即可。

yum的卸载:

yum remove package_Name

案例:

# bash

yum remove lrzsz

yum的更新:

yum update package_Name

yum安装、卸载、更新的过程中出现的y/N,可以通过在命令的结尾出 -y,表示全部过执行yes操作。

yum list updates

工作中遇到过的命令:

 

1.统计条数: ls -l | wc -l

2.统计文件总大小: du -sh

3.查看当前目录下的文件或文件夹内存占用: du --max-depth=1 -h

4.监控日志 tailf

5.ls /proc/PID 查看运行

6.屏蔽日志:java -jar ../start.jar jetty.http.port=8087 > /dev/null 2>&1 &

7.springboot不挂断:nohup java -jar XXX.jar >/dev/null 2>&1 &

nohup命令:如果正在运行一个程序,而且觉得在退出账户时该进程不会结束,那么可以使用nohup命令。

8.cat /proc/cpuinfo 或者 top 或者 free 9.killall wget 关闭wget下载

10.修改pdsh默认采用rsh,export PDSH_RCMD_TYPE=ssh

11.jobs关闭后台任务 kill %jobid

12.查找文件 find ./ -name '*building2d' 获取 ll | grep building2d

13.head -n fileName 查看文件前n行 || tail -n fileName 查看文件后n行

14.linux临时变量定义: tmpVar=`find ./ -name '*building*'`; cd $tmpVar

15.查询上一个命令的返回类型:echo $?

16.获取外网ip:curl ip.sb

17.iptables -t nat -A OUTPUT -d 192.168.0.1 -j DNAT --to-destination 152.132.125.96

将内网对192.168.0.1[端口]的访问全部转到152.132.125.96[端口]

18.hadoop集群错误排查

firewall-cmd --state

netstat -an | grep 9000

telnet 172.16.16.2 9000

hdfs dfsadmin -report

19.nmom可替代top的性能监控

20.fish自动推荐历史命令

21.重命名 mv/rename mv /dir/file1 /dir2/file1

rename arg1 arg2 arg3 (可以批量修改)

arg3:匹配要重命名的文件,可以使用3种通配符,*、?、[char],*表示任意多个字符,?表示单个字符,[char]匹配char单个自定的精确字符,可以填写任意字符,foo[a]*表示只匹配fooa开头的文件名,如果一个文件是foobcc.txt,是不会被匹配的。

Ubuntu系统:rename ‘s/a/xxx/’ *.txt 前两个参数为1个

22.grep “Global Regular Expressions Print” 全局正则表达式打印

egrep “Extended Global Regular Expressions Print”

(egrep(与grep -E相同)将 +, ?, |, (, ) 作为元字符)

fgrep "Fixed-string Global Regular Expressions Print" 固定字符串全局正则表达式打印

(fgrep(与grep -F相同)是固定的或快速的grep,它只处理简单的字符串)

pgrep “Process-ID Global Regular Expressions Print” 查进程的PID

23.按行匹配文本文件,grep -E 参数执行速度最快

grep -P '^(\(\d{3}\) |\d{3}-)\d{3}-\d{4}$' file.txt

grep -E '^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$' file.txt

cat file.txt | grep -P '^(\([0-9]{3}\) )?[0-9]{3}-[0-9]{3}$'

其他类似命令awk/gawk awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

gawk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

 

posted @ 2020-07-11 15:36  yangdq  阅读(655)  评论(0编辑  收藏  举报