1vi和vim
vim是vi的升级版,加入了高亮更适合编程,是liunx中的文本编辑器
1.1vim + 文件: 打开文件,光标移动到末
1.2 vim +数字 文件: 打开文件,光标移动到数字行
1.3 vim + /p 文件:打开文件,并查找出p
1.4 vim模式
命令模式(编辑模式):键盘中输入的字符被当成命令
输入模式:键盘中输入的字符被当做内容
末行模式:复杂命令
下图为三种模式的切换
1.5删除操作
x 删除单个字母
3x 删除3个字母
dd 删除一行
dw 删除一个单词 , 加入p命令,是剪切的命令
d$从当前位置删除到行尾
d^从当前位置删除到行首
d命令的实质为 剪切
下面是末行模式
14,25d : 删除14到25行
.,25d: 从当前行到25行
.,.+5d: 从当前行删除6行
1.6 复制
yw: 复制一个单词
yy: 复制一行
1.7 粘贴 p命令
1.8 插入操作
a : 在光标后添加
i: 在光标当前位置添加
o: 在下一行添加(也就是在当前行添加一个空行)
O: 在当前行的上一行添加一个空行
1.9 移动光标(编辑模式)
w: 到下一个单词
^: 行中第一个字母(内容行首)
$: 绝对行尾
G: 文章末尾
gg: 文章开头
3gg: 移动到第三行
ctrl+ f /b 翻屏
1.10 撤销&重做
u 撤销
ctrl+r 重做 撤销的操作
1.11 查找和替换
%s/after/before/gi : %s 全文查找 ; 把after 替换为before ; gi 忽略大小写
/after : 查找 after
–n,N :上下查看查找到的内容
1.12 末行模式的一些命令
•set命令:
set nu number : 设置行号
set nonu nonumber : 取消设置行号
set readonly
tips: 要让行号永久生效需要修改下面的文件并加入set命令
vi /etc/vimrc 添加 set num
2 正则表达式
正则表达式分为: 基础和扩展两种
正则表达式由普通字符和元字符组成
–普通字符具有自身的字符意义
–元字符具有特殊意义(元字符分为:匹配操作符 和 重复操作符)
•基础匹配操作符
-\ 转意操作符,恢复元字符原有的字面意义
-. 匹配任意单个字符
-[][]中包含一个字符序列来匹配单个字符
-^ 匹配一行字符串的起始位置
-$ 匹配一行字符串的结束位置
-< 匹配一个单词的起始位置
-> 匹配一个单词的结束位置
•基础重复操作符
–* 重复前面的项零次或多次
•扩展匹配操作符
–| 连接操作符:或
–() 选择操作符
–\n 引用操作符
•扩展重复操作符
-? 重复前面的项零次或一次
-+ 重复前面的项一次或多次
-{n} 重复前面的项n次
-{n,} 重复前面的项n次到多次
-{n,m} 重复前面的项n次到m次
注意一点: . 是匹配任意字符*
单使用grep是不支持扩展操作符的,需要加\而不是/,下图中 | 是或者的意思,如果不想加入\进行转义,可以加入-E的参数
3 cut 分割命令
cut -d: -f1,7 文件 依据冒号分割 文件,并取出第一列和第七列
echo “hello world” | cut -d’ ’ -f1
输出结果为:hello
4 wc 命令
wc 统计数量
wc -c 文件 根据字节统计文件
wc -l 文件 统计文件的行
补充: 使用cat -A 可以查看文件中的末尾的隐藏信息,可以看出最后一个字符为
,
难
怪
在
正
则
表
达
式
中
,难怪在正则表达式中
,难怪在正则表达式中标识末尾.当使用wc计算文件时会把$也计算上.
5 sort 命令
•sort:排序文件的行,默认字典排序,默认使用ascii排序(), 字母在前,数字在后
–n:按数值排序(number) , 数值排序为,1,8,11,不带参数n排序为字典排序,1,11,8
–r:倒序
–t:自定义分隔符
–k:选择排序列(key)
–u:合并相同行
–f:忽略大小写
sort -nr 文件 根据文件中的值排序,逆序
sort -t: -k3 -nr 文件 -t:依据 : 分割文件; -k3 然后对第三列进行排序;-nr 根据选中的第三行的数值进行排序,逆序
6 权限
添加用户 useradd -g root zs 添加用户zs 所属的组为root
useradd ls 添加用户 , 默认为同名用户的组
/root 为root用户的家目录
/home/下的与用户同名的文件夹 为普通用户的家目录,其他用户无法进去(root除外,权限对root来说形同虚设)
chmod g+w 文件 给文件的所属组添加写的权限
chmod u/g/o+/_r/w/x 文件或者目录
家目录比较特殊,理论上来说,不让其他用户进入,所以一般不要不执行文件放到这个目录
目录的读权限必须依靠执行权限
为什么执行 程序要加 一个 ./?
上篇文章说过外部命令的执行会查找 $PATH , 当执行命令的时候,如果直接敲命令,假如hadopp,那么会去path中去找,如果敲./hadoop是指定了命令的全路径.
7 查看进程
7.1 ps
-a 列出所有用户的进程
-aux = -ef
ps -f 比 ps 多pid
7.2 netstat
-p 显示pid/pname
-l 显示监听的端口号
–tcp / --udp 查看tcp或者udp协议的进程
常用ntpl的参数和nupl
8 用户管理
8.1添加用户
useradd
8.2删除用户三步
a,userdel 用户名
b,删除家目录
c,删除邮件目录 /var/spool/mail/
8.3组管理
添加组:groupadd 组名
添加用户到组: usermod -G 组 用户;usermod -G share str 把用户str 添加到share组
图中把tiantain用户加入到share组,但是记得这里是添加,原来tiantain用户属于的tiantain组,现在还是一样,只不过有多添加到了share组
id 用户,查看用户信息包括用户名和组等信息
8.4改变文件或者目录的所有者或者组
chown 用户:组 目录(文件), -R为递归
9 awk
必须使用""不能用’’
10 作业
10.1 jdk的安装
-
rpm -ivh jdk-8u171-linux-x64.rpm
-
安装之后到 /usr/java/jdk1.8.0_171-amd64 目录查看
-
配置环境变量: vi ~/.bash_profile
-
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
-
source ~/.bash_profile
该方法配置用户环境变量,可以防止多用户环境变量冲突另一种方法为修改/etc下的profile文件,那种为修改系统变量
-
10.2一些命令
1、新建一个没有家目录的用户hadoop;
2、复制/etc/skel为/home/hadoop;
3、改变/home/hadoop及其内部文件的属主属组均为hadoop;
4、/home/hadoop及其内部的文件,属组和其它用户没有任何权限
useradd -M hadoop
cp -R /etc/skel/ /home/hadoop/
chown -R hadoop:hadoop hadoop/
chmod -R 700 hadoop/