linux之文件操作和权限
Posted taosiyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之文件操作和权限相关的知识,希望对你有一定的参考价值。
文件查看
cat显示文本
cat [option] ... [file] ...
cat -E a.txt # 显示$符号
cat -n a.txt # 对显示的每一行加行号
cat -b a.txt # 对非空行进行编号
cat -s a.txt # 对连续的空行就行压缩
tac倒叙显示
less分屏显示文本或stdin输出
space空格 # 向下翻屏
enter # 向下翻一行
q # 退出
/文本 # 搜索,搜索结果高亮显示
n # 向下找到
N # 向上查找
less是man命令的默认分页器
more 分页显示文本
more [options…] file...
1.默认情况下显示读取的百分比
2.读取完成自动退出
q # 退出
-d # 显示翻屏和退出的提示
# 空格翻一屏,回车翻一行
head 显示文本的前面的内容
head [option] … [file]…
默认显示前10行
1. -# 显示前#行
2. -n # 显示前#行
3. -c# 显示前#个字节
tail 显示文本的后面的内容
# tail n. 尾,尾巴
tail [options]…[file]…
默认显示后10行
1. -# 显示后#行
2. -n # 显示后#行
3. -c# 显示后#个字符
4. -f 追踪显示文件fd新追加的内容,常用与日志监控
tailf 类似于tail-f当文件不增长时并不访问文件
'\n'也计算在字符内
cut切割
cutOPTION...[FILE]...
-c # 按照字符切割
tail passwd |cut -c2-5
-d # 指定切割符,默认是tab
-f # 显示第#个字段
#,#,# 显示离散的多个
#-# 表示连续的
1-5,# 可结合使用
paste合并
paste # v.粘贴
合并两个文件同行号的列到一行
paste[option]...[file]...
-d # 指定以# 分割,默认是tab键拼接
-s # 将所有的行按列显示
wc(word count)对文本进行统计
1.计数单词总数、行总数、字节总数和字符总数
2.可以对文件或者stdin中的数据进行统计
wc
行数 单词数 字节
-l # 只显示行数. line
-w # 字显示单词数. word
-c # 只显示字节数.
-m # 表示字符数,包含'\n'.
-L # 最长行字节的个数.
sort排序
sort [OPTION]... [FILE]...
1.把整理过的文本显示在stdout 不改变原始文件
默认按照字母排序
-r # reverse,倒叙
-R # 随机排序
-n # 按照数字排序
-f # 忽略大小写
-t # 指定分隔符
-k # 指定按照第#个字段,进行排序
-t 和 -k 绑定使用
uniq 删除重复行
# 相邻,完全一样
1.从输入中删除前后相接的重复的行
uniq [option] ...[file]
-c 显示相同数目出现的次数
-d 只显示重复行
-u 显示从没重复过的行
pv(page) uv(user)
diff 对比文件
diff filename filename
[root@centos ~]#diff f3 f4
12a11 # 行数对行数
< d # 多了什么
chown 修改所有者和组
修改文件的属主:chown
chown [option]…[owner][:[group]] file
[root@centos ~]#ll f1
-rw-r--r--. 1 root root 16 7月 6 00:36 f1
[root@centos ~]#chown test2 f1
[root@centos ~]#chown :test2 f1
[root@centos ~]#ll f1
-rw-r--r--. 1 test2 test2 16 7月 6 00:36 f1
命令中的冒号也可以用.替代
-R 递归
--reference 以谁作为模板
[root@centos ~]#ll a.sh
-rwxrwxrwx. 1 root root 30 7月 5 21:41 a.sh
[root@centos ~]#chown --reference=f1 a.sh
[root@centos ~]#ll a.sh
-rwxrwxrwx. 1 test2 test2 30 7月 5 21:41 a.sh
修改文件的属组 chgrp
chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE... -R 递归
文件权限
9位表示权限
3组(3位表示一组)
- 文件权限主要是对三类对象进行定义
- owner 属主 u
- group 属组 g
- other 其他 o
- all 全部 a
- 每个文件针对每类访问者都定义了三种权限
- r read
- w write
- x excut
- 文件
- r 可以使用文件查看类工具获取其内容
- w 可以修改其内容
- x 可以执行
- 目录
- r 可以使用ls 查看此目录的文件列表
- w 可在此目录中创建文件,也可以删除此目录中的文件
- x 可以使用ls查看,可以cd将进入
数字表示权限
chmod
- 可以直接使用+-来设置
- 也可以使用数字来设置
- r 4
- w 2
- x 1
修改文件属性
chmod [OPTION]... OCTAL-MODE FILE... -R: 递归修改权限
chmod [OPTION]... MODE[,MODE]... FILE... MODE:
修改一类用户的所有权限: u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限 u+ u-g+g-o+o-a+a-+-
chmod [OPTION]... --reference=RFILE FILE...
参考RFILE文件的权限,将FILE的修改为同RFILE
设定文件特殊权限
chattr +i 不能删除,改名,变更
chattr +a 只能追加内容
lsattr 显示特殊权限
vi
文本编辑器
vim vi的增强版本
打开文件
vim [option] … file...
+# 打开文件后,让光标处于第#行的行首
+/PATTERN 打开文件后,光标处于第一个被parrent匹配到的行首
-b file 二进制方式打开文件
-d file1 file2 对比多个文件
-m file 只读打开文件
-e 直接进入ex 模式(末行模式)
+# 直接定位到第#行
如果该文件存在,文件被打开并显示内容
如果文件不存在,当编辑后第一次存盘时创建它
vim的模式
按键行为是依赖于vim的模式
- 命令模式:默认模式,移动光标,剪切/粘贴文本
- 插入或者编辑模式:修改文本
- 扩展命令模式(末行模式):保存、退出等
esc 键 退出当前模式
模式转换
- 命令模式 —> 插入模式
- i 在光标所在处输入
- I 在当前光标所在行的行首输入
- a 在光标所在处后面输入
- A 在光标所在行的行尾输入
- o 在当前光标所在行的下方打开一个新行
- O 在当前光标所在行的上方打开一个新行
- 插入模式 —> 命令模式
- esc
- 命令模式—> 末行模式
- :
- 扩展命令模式—>命令模式
- esc enter
- esc esc
关闭文件
- 扩展命令模式
- w保存
- :q 退出
- :q! 强制退出
- :wq 保存退出
- :x 保存退出
- 命令模式
- ZZ 保存退出
- ZQ 不保存退出
扩展命令模式
- 按“:”进入ex模式
- 创建一个命令提示符:处于底部的屏幕左侧
- 命令:
- w 写(存)磁盘文件
- wq 保存并退出
- x 写入并退出
- q 退出
- q! 不存盘退出
- r filename 读文件内容到当前文件中
- w filename 将当前文件内容写入另外一个文件,另存为
- !command 执行命令
- r!command 读入命令的输出
命令模式光标跳转
- 字符键跳转
- h 左
- l 右
- j 下
- k 上
- # command 跳转#个字数的字符
- 单词间跳转
- w 下一个单词的次首
- e 当前或者下一个单词的词尾
- b 当前或者前一个单词的词首
- #command 跳转#个单词
- 当前页跳转
- H 页首
- M 中间
- L 页底
- zt 将光标所在行移动到屏幕顶端
- zz 将光标所在行移动到屏幕中间
- zb 将光标所在行移动到屏幕底端
- 行首行尾跳转
- ^ 跳转至行首的第一个非空白字符
- 0 跳转至行首
- $ 跳转至行尾
- 行间移动
- #G 扩展命令模式下:#跳转至第#行
- G 最后一行
- 1G gg 第一行
- 句间移动:(.空格为一句)
- ):下一句
- (: 上一句
- 段落间移动(空行)
- 下一段
- 上一段
- 翻屏操作
- ctrl+f 向文件尾部翻一屏
- ctrl+b 向文件首部翻一屏
- ctrl+d 向文件尾部翻半屏
- ctrl+u 向文件首部翻半屏
命令模式操作
- 字符编辑
- x 删除光标处的字符
- #x:删除#个字符
- xp 交换光标所在处的字符与后面的字符
- ~ 转换大小写
- J 删除当前行后的换行符
- 替换
- r 替换光标所在处的字符
- R 切换成替换模式
- 删除
- d 删除,可以结合光标跳转字符
- d$ 删除到行尾
- d^ 删除到非空行首
- d0 删除到行首
- dw: 删除一个单词
- de: 向后删除一个单词
- db 想前删除一个单词
- \COMMAND
- dd 删除光标所在的行
- #dd 多行删除
- dgg 删除到文件首部
- dG 删除到文件尾部
- D 相当于d$
- 复制
- y 复制,可以结合光标跳转字符
- y$
- y0
- y^
- ye
- yw
- yb
- #command
- yy 复制行
- yG 复制到几位
- ygg 复制到开头
- #yy 复制多行
- Y 复制整行
- 粘贴
- p 如果是整行,则粘贴当前行所在行的下方,否则,则粘贴在当前光标所在行的后面
- P如果是整行,则粘贴当前行所在行的上方,否则,则粘贴在当前光标所在行的前面
- 改变命令
- c 修改后切换成插入模式
- c$
- c^
- c0
- cb
- ce
- cw
- #command
- cc 删除当前行并输入新的内容
- #cc
- C 删除当前光标至行尾,并切换成插入模式
- 10ialex [esc] 粘贴10次alex
- 查找
- /pattern 从当前光标所在处向文件底部查找
- ?pattern 从当前光标所在处向文件首部查找
- n 与命令同方向
- N 与命令反方向
- 撤销更改
- u 撤销最近的更改
- #u 撤销之前多次更改
- U 撤销光标落在这行后所有此行的更改
- ctrl+r 重做最后的 撤销更改
- . 重复前一个操作
- n. 重复前一个操作n次
扩展命令模式
地址定界
:start,end
# 具体第#行
#,# 从左侧#表示起始行,到右侧#表示结尾行
#,+# 从左侧#表示的起始行,加上右侧#表示的行数 :2,+3 表示2到5行
. 当前行
$ 最后一行
$-# 倒数第#+1行
.,$-1相当于当前行到倒数第二行
% 全文
/pat1/,/pat2/ 从第一个被pat1匹配到的行开始,一直到第一次被pat2匹配到的行开始
#, /pat/
/pat/,$
使用方式 后跟一个编辑命令
- d
- y
- w file :将范围内的行另存到指定的文件中
- r file 在指定位置插入指定文件中的内容
查找并替换
要使用地址定界进行查找和替换
- :s 在扩展模式下完成查找替换操作
- 格式 :s/要查找的内容/替换为的内容/装饰器
- 要查找的内容:可使用模式
- 要替换的内容:不能使用正则,但可以使用\1,\2等形式的分组,还可以使用“&”引用前面查找到整个内容
- 修饰符
- i 忽略大小写
- g 全局替换 默认情况下,每一行至替换第一个出现的
- gc 全局替换,每次替换前询问是否替换
- 查找替换中的分隔符/可以替换成其他字符
- @
- #
可视化模式
- 允许选择的文本块
- v 面向字符
- V 面向行
- ctrl -v 面向块
- 可以化键可以与移动键结合使用
- w ) 箭头等
- 突出显示的文字可以被删除,复制,变更,过滤,另存为,替换等
多文件操作
vim file1 file2 file3
- :next 下一个
- :prev 前一个
- :first 第一个
- :last 最后一个
- :wall 保存所有
- :qall 退出所有
- :wqall 保存并退出全部
- :xall保存并退出全部
使用多个窗口
- 多文件分割
- vim -o|-O file1 file2
- -o 水平分割
- -O 垂直分割
- 切换 ctrl+w,上下左右箭头
- 单文件分割
- ctrl-w,s 水平分割
- ctrl-w,v 垂直分割
- ctrl-w,q 取消相邻窗口
- ctrl-w,o 取消全部窗口
- :wqall
定制vim的工作特性
- 配置文件:永久生效
- 全局:/etc/vimrc
- 个人:~/.vimrc
- 扩展模式:当前vim进程有效
- 行号 set nu set nu 取消set no nu setmenu
- 忽略字符大小写(搜索) set ic 取set noic
- 自动缩进(和上一行对齐) set ai 取消 set noai
- 高亮搜索 set hlsearch 取消 set nohlsearch
- 语法高亮 syntax on 取消 syntax off
- 文件格式
- 启用windows格式: set fileformat=dos
- 启用unix格式:set fileformat=unix
- 简写 set ff=doc|unix
- sz从虚机中下载文件
- 设置贯标所在行的标识线 set cul set nocul
- 获取帮助 :set all
- vim 内置帮助
- :help
- :help topic
- vimtutor
新建用户
useradd # 新建用户#
passwd # 设置密码#
vim完python文件
vim 文件名.py # 新建文件
./ 文件名.py # 运行这个文件,如果不指定解释器会报错
解决办法:
1.which python # 获得python的路径
py文件内
#!/bin/python
# 指定解释器(shabang),此处写which获得的python路径(系统默认解释器bash).
2.py文件内
coding:utf-8 # 指定编码
python 文件名.py运行
设定特殊权限 chattr和lsattr
chattr +i 文件 # 不能增删改(即使是root用户)
lsattr 查看属性
chattr -i 文件 # 取消属性
chattr +a 只能追加数据
以上是关于linux之文件操作和权限的主要内容,如果未能解决你的问题,请参考以下文章
linux常用命令之------文件操作文件查看权限打包压缩
学习Linux须知1.1之Linux属性权限,以及解决你没有权限操作此文件