目录
常见的文件、目录操作命令
- pwd: 查看当前用户的当前目录
- cd: 用来切换目录
- . : 表示当前目录
- .. : 表示当前目录的上一级目录
- - : 表示用cd命令切换目录所在目录
- ~ :表示用户主目录的绝对目录
- ls : 显示文件或者目录信息
- mkdir: 当前目录下创新一个空的目录
- rmdir: 要求目录为空
- touch: 生成一个空文件或者更改文件的时间
- cp: 复制文件或目录
- mv: 移动文件或目录、文件或目录改名
- rm: 删除文件或目录
- ln: 建立链接文件
- find: 查找文件
- file/stat: 查看文件类型或文件属性信息
- cat: 查看文本文件内容
- more: 分页查看文本文件内容
- less: 分页,搜索,回翻等操作查看文本文件内容
- tail -10: 查看文件的尾部的10行
- tail -f: 监控一个文件内容
- head -10: 查看文件的头部10行
- tar -zxvf:解压压缩包tar.gz
- gzip -d: 解压压缩包gz
- bzip2 -d: 解压压缩包bz2
- tar -cxvf:生成压缩包tar.gz
- gzip : 生成压缩包gz
- bzip2 : 生成压缩包bz2
- echo: 把内容重定向到指定的文件中 ,有则打开,无则创建
- 管道命令 | :将前面的结果给后面的命令,例如:ps aux | grep mysql,将ps显示的进程按照mysql的分组显示
- 重定向 >覆盖模式 >>追加模式:
echo "l love you" > amazing.txt
-
如上就是把l love you这句话写入amazing.txt并覆盖之前的内容
VIM程序编辑器
所有的 Unix Like 系统都会内建 vi 文书编辑器。
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。详情的可以参考vim的官方网站
基本上vim分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
命令模式(Command mode)
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式(Insert mode)
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
- Ctrl+n,自动补全
底线命令模式(Last line mode)
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
- wq \ ZZ 保存文件并退出
- q!\ ZQ 退出程序不保存
按ESC键可随时退出底线命令模式。
grep及正则表达式
grep——强大的文本搜索工具
grep 可以使用正则表达式搜索文本,并把匹配的行打印出来。
格式:grep [options] PATTERN [FILE...]
-
PATTERN 是查找条件:可以是普通字符串、可以是正则表达式,通常用单引号将RE括起来。
-
FILE 是要查找的文件,可以是用空格间隔的多个文件,也可是使用Shell的通配符在多个文件中查找PATTERN,省略时表示在标准输入中查找。
-
grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存为文件
正则表达式
1、基础内容
字符匹配
- 在正则表达式中,如果直接给出字符,就是精确匹配。
- \d 匹配一个数字
- \D 匹配一个非数字
- \w 匹配一个字母、数字或下划线_
- \W 匹配任何非单词字符,等价于“[^A-Za-z0-9_]"
- \s 匹配任何空白字符,包括空格、制表符、换页符等等,等价于[ \f\n\r\t\v]
- \S 匹配任何非空白字符
- \n 匹配一个换行符
- \r 匹配一个回车符
- \t 匹配一个制表符
数量匹配
- .匹配除“\n"之外的任何单个字符
- *匹配前面的子表达式零次或多次
- +匹配前面的子表达式一次或多次
- ?匹配前面的子表达式零次或一次
- {n},n是一个非负整数,匹配确定的n次
- {n,m},m和n均为非负整数,其中n<=m,最少匹配n次且最多匹配m次
- {n,},n是一个非负整数,至少匹配n次
- {,m} 匹配前面的正则表达式最多m次
范围匹配
- x|y 匹配x或y
- [xyz] 字符集合,匹配所包含的任意一个字符
- [^xyz] 负值字符集合,匹配未包含的任意字符
- [a-z] 字符范围,匹配指定范围内的任意字符
- [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符
来看一个稍微复杂的例子:\d{3,4}\s+\d{3,8}
我们来从左到右解读一下:
- \d{3,4}表示匹配3到4个数字,例如'010'、'0755';
- \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等;
- \d{3,8}表示3-8个数字例如'1234567'。
综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。
如果要匹配'010-12345'、'0755-26776666'这样的号码呢?
由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3,4}\-\d{3,8}。
但是,仍然无法匹配'010 - 12345',因为带有空格。所以我们需要更复杂的匹配方式。
2、进阶内容
要做更精确地匹配,可以用[]表示范围,比如:
- [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;
- [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等;
- [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;
- [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
- A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。
- ^表示行的开头,^\d表示必须以数字开头。
- $表示行的结束,\d$表示必须以数字结束。
系统管理命令
stat | 显示指定文件的详细信息,比ls更详细 |
who | 显示在线登陆用户 |
whoami | 显示当前操作用户 |
hostname | 显示主机名 |
uname | 显示系统信息 |
top | 动态显示当前耗费资源最多进程信息 |
ps | 显示瞬间进程状态 |
du | 查看目录大小 du -h /home带有单位显示目录信息 |
df | 查看磁盘大小 df -h 带有单位显示磁盘信息 |
ifconfig | 查看网络情况 |
ping | 测试网络连通 |
netstat | 显示网络状态信息 |
clear | 清屏 |
alias | 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit |
kill | 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。 |
系统服务管理
任务 | 旧指令CentOS6 | 新指令CentOS7 |
使某服务自动启动 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服务不自动启动 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
检查服务状态 | service httpd status | systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active) |
显示所有已启动的服务 | chkconfig --list | systemctl list-units --type=service |
启动某服务 | service httpd start | systemctl start httpd.service |
停止某服务 | service httpd stop | systemctl stop httpd.service |
重启某服务 | service httpd restart | systemctl restart httpd.service |
例如在搭建hadoop集成环境的时候需要关闭防火墙和防火墙自启动:(在root权限下)
Centos6.5:service iptables stop
chkconfig iptables off
Centos 7 : systemctl stop firewalld.service
systemctl disable firewalld.service
其他一些杂七杂八的东西
时间设置:date -s "2021-09-23 11:26:35"
终端显示:在/etc/profile这个环境变量里配置
PS1="\[\033[1;36;40m\][\[\033[0;32;40m\]\u@\h: \H \# \d \t \[\033[1;35;40m\]\w\[\033[1;36;40m\]]\[\033[1;33;40m\]\\$\[\033[1;37;40m\]"
再source一下就可以显示更详细的终端信息