行号:
显示行号: set number (命令模式下)
取消行号: set nonumber(命令模式下)
默认显示行号:
一: 编辑/etc/vimrc 文件 vim /etc/vimrc
二:在文件开端 插入 set number
vim 编辑器
1.vim的三种使用模式
① vim + 文件名 进入文件 (当前处于命令模式)
② 命令模式下输入 i o a 进入文本编辑模式 (按Esc键退出编辑模式进入命令模式)
③ 命令模式下输入 : 进入末行模式,编辑输入命令以回车结束运行
④ 末行模式下输入 wq 回车保存退出
2.编辑模式下的命令常用操作
① 插入
i 在光标所在字符前插入
I 在光标所在行前插入
a 在光标所在字符后插入
A 在光标所在行尾插入
o 在光标下插入新行
O 在光标上插入新行
② 定位
小范围移动 h j k l 对应方向左上下右,可替换方向键使用
:set nu + 回车 设置行号
:set nonu + 回车 取消行号
数字 + 回车 当前行数向下移动之前数字的行数
gg 到文章第一行
G 到文章最后一行
nG 到第n行
:n + 回车 到第n行
$ 移至行尾
0 移至行首
^ 移至行首
③ 删除
x 删除光标所在字符
nx 删除光标所在后n个字符(包含光标所在字符)
D 删除光标所在字符至行尾(包含光标所在字符)
dd 删除光标所在行(整行删除,光标移至下一行)
ndd 删除光标所在后n行(包含光标所在行)
dG 删除光标所在行至结尾(包含光标所在行)
dgg 删除光标所在行至行首(包含光标所在行)
:n1,n2d+回车 删除指定范围的行数
④ 复制和剪切
yy 复制当前行
nyy 复制当前以下n行
dd 剪切当前行
ndd 剪切当前以下行数
P,p 在光标所在行上下粘贴
⑤ 替换和撤销(命令模式下)
r 取代光标所在字符
R 开启替换模式直到按Esc结束
u 撤销
Ctrl + r 反撤销
⑥ 搜索和替换
/string 查找指定字符串
n 从结果中查找下一个
N 从结果中查找上一个
:%s/old/new/g 全文替换指定字符串
:%s/old/new/c 全文替换指定字符串,每次替换询问
:n1,n2s/old/new/g 在指定范围替换指定字符串
小技巧
:1,5s/^/#/g 注释1到5行
:1,5s/^#//g 取消注释
:1,5s/^/\/\//g 文件头加上//
:1,5s/^\/\///g 取消//
⑦ 保存和退出
:w 保存修改
:w newfilename 另存为新文件名
:wq 保存并退出
ZZ 保存并退出
:q! 不保存修改直接退出
:wq! 保存修改并退出(文件所有者或root可用)
x 保存修改并退出没有修改的话不会更新时间
⑧ 显示颜色高亮
:noh 不要高亮
:syntax on 开启颜色
:syntax off 关闭颜色
vim配置文件
自定义配置 ~/.vimrc文件,没有手动创建,写入设置及时生效
linux常用命令
基础:
ls 直接回车,显示目录下内容
ls -l 长格式显示
-rw------- 1 root root 1190 08-10 23:37 anaconda-ks.cfg
权限位 引用数 所有者 所属组 大小 最后一次修改时间 文件名
ls -a 显示所有文件(包含隐藏文件)
ls -la 多个参数合并简写(大多可无需组合)
ls -h 文件大小显示为常见大小单位 B KB MB
ls -d 显示目录本身而不是里面的子文件
文件颜色及类型
默认色代表普通文件
绿色代表可执行文件
红色代表tar包文件
蓝色代表目录文件
粉色代表图像文件
青色代表链接文件
黄色代表设备文件
背景红色代表损坏的链接文件
更多的文件颜色详见:/etc/DIR_COLOR
常见文件类型
-普通文件
d目录文件
l链接文件
命令提示符
[root@localhost src]#
[当前登录用户@主机名 当前所在目录]#
#超级用户
$普通用户
当前所在目录
用户家目录~
管理员 /root
普通用户 /home/用户名
Linux系统严格区分大小写,包括命令和文件名
目录操作命令
cd 切换所在目录
cd ~ 进入当前用户的家目录
cd 进入当前用户的家目录
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
pwd显示当前所在目录
Linux常见目录
/ 根目录
/bin 命令保存目录(普通用户就可以读取的命令)
/boot 启动目录启动相关文件
/dev 设备文件保存目录
/etc 配置文件保存目录
/home 普通用户的家目录
/lib 系统库保存目录
/mnt 挂载目录
/root 超级用户的家目录
/tmp 临时目录(重启后可清空)
/sbin 命令保存目录(超级管理员才能使用的目录)
/proc 记录服务器内存和CPU情况的动态文件系统
/sys 记录服务器内存和CPU情况的动态文件系统
/usr 系统软件资源目录
/usr/bin/ 系统命令(普通用户)
/usr/sbin/ 系统命令(超级用户)
/usr/local/ 常用安装软件目录
/var 系统相关文档内容
/var/log/ 系统日志位置
/var/spool/mail/ 系统默认邮箱位置
/var/lib/mysql/ 默认安装的MySQL的库文件目录
mkdir 建立目录
mkdir -p 11/22/33/44 -p是递归,一次性建立多个递归文件夹
rmdir 删除目录(只能删除空目录)
rm 文件名 删除文件
rm -r 递归删除目录
-f 强制取消询问模式
-rf 删除文件和目录
文件操作命令
touch 创建空文件或修改文件时间
touch filename
rm 删除
rm -rf 文件名
-r 删除目录
-f 强制
cat 查看文件内容,从头到尾
cat -n 文件名
-n列出行号
more 文件名 分屏显示文件内容
f向下翻页
Enter逐行向下翻页
空格向下翻页
b向上翻页
q退出
head 文件名 显示文件头
head -n 行数 文件名 指定显示文件头几行
head -n 20 文件名
head -20 文件名
tail -n 行数 文件名 指定显示文件尾行
ln 链接文件 (文件名都必须写绝对路径,否则软连接移后失效)
ln -s 源文件 目标文件 //软链接,相当于Windows快捷方式
ln 源文件 目标文件 //硬链接,拷贝加同步更新
//不能给目录不能跨分区
文件和目录都能操作的命令
复制
cp 源文件 目标位置
cp aa /tmp/ 原名复制
cp aa /tmp/bb 改名复制
剪切或改名
mv 源文件 目标位置
mv /root/aa /tmp/
mv aa bb
权限管理
分析权限位
-rw-------. 1 root root 1190 08-10 23:37 anaconda-ks.cfg
权限位 引用数 所有者 所属组 大小 最后一次修改时间 文件名
权限位是十位
第一位:代表文件类型
- 普通文件
l 链接文件
d 目录文件
后九位:属主权限u 属组权限g 其他人权限o
r 读 4
w 写 2
x 执行(execute) 1
(后续)10 . selinux 相关 + acl权限
修改权限 chmod
逻辑描述法:
chmod u+x aa aa文件的属主加上执行权限
chmod u-x aa aa文件的属主减去执行权限
chmod g+w,o+w aa 多个身份用','分隔
chmod u=rwx aa aa文件的属主不考虑当前权限直接赋予指定权限
chmod a-x aa a代表所有身份(u,g,o)
数字描述法(二进制法)
chmod 755 aa
chmod 644 aa
添加用户
useradd 用户名 #添加用户
passwd 用户名 #为用户设置密码
su 用户名 #切换到其他用户
实验
root用户创建一个目录(默认rwxr-xr-x),在目录中新建一个文件,
然后将新建的文件设为777,普通用户不能删除该文件
原因:rwx权限对于目录和文件,实际意义是不一样的
文件:
r cat more head tail 查看文件内容
w echo vim 修改文件内容
x sh (execute) 执行
目录:
r ls find tree 列出文件
w touch mkdir rm 创建删除文件
x cd 进入目录
结论:
对文件有写权限,只代表可以修改这个文件,要想删除文件,需要对文件所在目录有写权限。
只要对目录有写权限,目录中的文件,就算是root创建的,普通用户一样能删除。
赋予权限要合理
对目录w权限,就意味着需要有rwx
对脚本执行,需要rx 并对该目录有rx权限
修改属主和属组
chown 用户名 文件名 改变文件属主
chown user1 aa user1用户必须存在
chown user1:user1 aa 改变属主同时改变属组
chgrp 组名 文件名 改变文件属组
问题:
为何新建文件权限644,新建目录755?
答:
创建文件的默认权限掩码值umask显示0022第一位特殊权限位不提,
其他为三类用户的权限掩码值,用做大权限777减去掩码值就是创建文件的默认权限
疑问:
新建目录mkdir test 默认是755权限
新建文件touch file 默认是644权限
解答:
Linux安全机制,不给新建文件X权限。
帮助命令
man 查看命令的帮助(只用于有文件实体的命令)
help 查看shell内核命令
查找命令
whereis 命令名 查找命令的命令,同时看到帮助文档位置
which 还可看到命令别名
find 搜索文件命令
准备知识:
通配符——常用于文件查找
* 任意字符任意多个
? 任意字符一个
[] 指范围值
^ 反向匹配
正则表达式——常用于内容查找
. 除换行外任意符号
* 任意个
? 0或1个
^ 开头
find 查找位置 -name 文件名
find / -name aabbcc 精确查找文件aabbcc
find /etc -name init* 查找在/etc下以init开头的文件
-user 用户名 按照属主用户名查找文件
-group 组名 按照属组组名查找文件
find / -size +50k 查找/下大于50k的文件
-type 类型 按照文件类型查找 f:普通 d:目录 l:链接
find /root -perm 644 按照权限查找
-iname 按照文件名查找,不区分大小写
find / -inum 2739078 按照i节点查找
find /etc –size -10M -a -size +1M 查找小于10M并大于1M的文件(-o或者)
find /etc -name inittab -exec ls -l {} \; 找到文件后查看详情
{} 表示find查询的结果集
\ 是转义符 表示一个命令或符号使用其本身的意义,不使用别名
; 分号是表示语句的结束
{} \; 固定格式,只能这样写。注意中间的空格。
转义符的作用是什么?
在linux中有一个别名机制,如rm删除文件,执行的却是rm -i(用which rm 可以查看命令别名),
使用rm删除文件前会提示,就是因为rm -i这个参数。如果想使用命令原意,可以在加\转义,
如:\rm test.txt 则不会提示,直接删除
grep “字符串” 文件名 查找符合条件的字串行。
grep -i “root” /etc/passwd
-v 反向选择
-i 忽略大小写
find:
在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配。通配符是完全匹配。
grep:
在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式匹配,正则表达式是包含匹配
压缩和解压缩
tar -zcvf 压缩文件名 源文件
tar -zcvf aa.tar.gz aa
-z 压缩.gz格式 -j 压缩.bz2格式
-c:打包
-v:显示压缩过程
-f:指定压缩包名
注意:选项f必须在最后,否则报错。
tar -zxvf 压缩文件名 解压缩同时解打包
-x 解压缩
tar -ztvf aa.tar.gz 查看不解包
tar -jtvf aa.tar.bz2
-t 只查看,不解压
tar -jxvf root.tar.bz2 -C /tmp/ 指定解压缩位置
网络命令
ping 测试网络连通性
ping -c 次数 ip 探测网络通畅
ifconfig 查询本机网络信息(类似windows中的ipconfig /all)
关闭和重启命令
shutdown -h now 没有特殊情况,使用此命令
-h 关机
-r 重启 等同于 reboot
挂载命令
光盘挂载
mount -t 文件系统 设备描述文件 挂载点(已经存在空目录)
mount -t iso9660 /dev/cdrom /mnt/cdrom
光盘卸载
umount /dev/cdrom
umount /mnt/cdrom 强调:退出挂载目录,才能卸载
shell小技巧
什么是shell?
命令解析器,帮助人机交互的翻译官!
windows的桌面也是shell的一种!
( ( ( (硬件)内核)shell命令解释器)外层应用程序)
使用Tab键命令补全
快捷操作
CTRL+C 终止命令
CTRL+A 光标到行首
CTRL+E 光标到行尾
CTRL+U 剪切光标前内容
CTRL+K 剪切光标后内容
CTRL+Y 粘贴剪切的内容
CTRL+L 清理屏幕
CTRL+D 注销登陆相当于exit和logout或者保存
CTRL+Z 将进程在后台挂起
CTRL+R 出现'':自动补全最近一次相关命令
命令历史
history 列出所有的命令(默认最多保存条数1000)
!序号 执行历史中第几个命令
!命令 执行最近的这条命令
按向上(或向下)箭头,翻出历史记录
家目录 .bash_history
命令别名
添加一个别名(临时):
alias copy=cp 就可以用copy来复制文件了
如果有参数:
alias drm="rm -rf"
删除别名:
unalias copy
别名永久生效:在用户宿主目录 ~/.bashrc 文件中添加别名信息如:alias vi=vim。
重启生效或者source ~/.bashrc及时生效