【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
【Linux】Linux常用命令及操作 (一)的更多相关文章
- 计算机硬件基本知识及Linux的常用命令
------------------1. 计算机硬件基本知识------------------ CPU - 寄存器 - L1/L2/L3 - 内存 - 硬盘 - 互联网下载/其他存储介质传输 寄存器 ...
- 一、Linux概述 二、Linux的安装 三、Linux的常用命令(重点)
一.Linux概述###<1>操作系统 OS,管理和控制 计算机的 硬件和软件资源的 计算机程序. 最基本的系统软件. 是用户和计算机交互的桥梁,是硬件和软件交互的桥梁. 操作系统:she ...
- Linux虚拟机常用命令
参考原文链接:(https://blog.csdn.net/fanyun_01/article/details/51083585) 一.Linux虚拟机常用命令 # virsh list //查看已打 ...
- Linux系统管理常用命令
Linux系统管理常用命令 分类: Linux2011-01-10 18:26 1538人阅读 评论(0) 收藏 举报 linuxcommandservicenginxuserunix 目录(?)[+ ...
- Linux + NodeJS 常用命令
Linux系统常用命令 1.su 由当前用户切换至root用户: 2. su username 切换至某一用户: 3.chmod u+w /etc/sudoers 为/etc/sudoers文件添加写 ...
- Linux GDB常用命令一栏
Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似 ...
- Linux 下常用命令
linux 下常用命令: 1.删除文件命令为 rm 2.创建目录的命令是:mkdir 3.删除目录的命令是rmdir(空目录) 4.切换到root帐号:su 5.查看所有进程:ps -aux 6.杀死 ...
- linux 服务器常用命令整理
linux 服务器常用命令整理 目录 网络分析 - tcpdump \ telnet \ (netstat \ ss \ lsof) \ nload 网络传输 - scp \ rsync \ (rz ...
- Linux 的基础命令的操作
Linux 的基础命令的操作 显示日期和时间:date 显示日历:cal 简单好用的计算机:bc 1.显示日期: date +%Y/%m/%d 2018/09/01 date +%H:%M 14:26 ...
- Linux帮助——常用命令
Linux帮助——常用命令 摘要:本文主要学习了Linux系统中常用的一些命令. uname命令 uname命令可以显示电脑以及操作系统的相关信息. 基本语法 uname [选项] 选项说明 -a:显 ...
随机推荐
- Excel怎样根据出生日期,快速计算出其年龄呢?
问题:怎样根据出生日期,快速计算出其年龄呢? 方法:DATEDIF函数 Step1:在编辑栏中输入公式:=DATEDIF(E2,TODAY(),”Y”),按回车键. Step2:用鼠标向下拖拽复制公式 ...
- docker 容器命令
语法docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/ST ...
- Centos7 composer安装时 Warning: This development build of composer is over 60 days old. It is recommended to update it by running "/usr/bin/composer self-update" to get the latest version.
emmm,其实就是想让你运行一下/usr/bin/composer self-update这个命令更新一下
- cb16a_c++_顺序容器的选用_排序_二分查找
/*cb16a_c++_顺序容器的选用_排序_二分查找顺序容器: 1.vector的优点与缺点 vector优点:排序利用下标,快速排序,做二分查找非常快 2.list的优点与缺点 list优点:插入 ...
- cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3
cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3 //派生类的构造函数和析构函数//派生类的构造函数(执行步骤)//--执行基类的构造函数//--执行成员对象的构造函数//--执行 ...
- ABP (.Net Core 3.1版本) 使用MySQL数据库迁移启动模板项目(1)
最近要搭建新项目,因为还没有用过.net core,所以想用.net core的环境搭建新项目,因为不熟悉.net core的架构,所以就下载了abp项目先了解一下. 因为自己太菜了,下载了模板项目, ...
- c++虚函数和虚继承
关键字virtual用于父类方法,如果传了一个子类对象,并且子类重写了父类的这个virtual方法,就会调用子类的方法.传谁就调用谁,这个就是多态.#include<iostream> u ...
- Java闭包概念
闭包又称词法闭包 闭包最早定义为一种包含<环境成分>和<控制成分>的实体. 解释一:闭包是引用了自由变量的函数,这个被引用的变量将和这个函数一同存在. 解释二:闭包是函数和相关 ...
- c语言中的c语言中realloc()函数解析
c语言中realloc()函数解析 真是有点惭愧,这些内容本应该很早就掌握的,以前只是糊里糊涂的用,不知道在内存中具体是怎么回事,现在才弄清楚. realloc(void *__ptr, size_t ...
- 01-最大子列和问题(java)
问题描述:给定N个整数的序列{A1,A2,A3,…,An},求解子列和中最大的值. 这里我们给出{-2,11,-4,13,-5,-2}这样一个序列,正确的最大子列和为20 该题是在数据结构与算法中经常 ...