对liunx而言 一切皆文件 既然是文件 就免不了各种文件操作 以下就是常用的文件操作命令
ls 命令 用来查看文件 liunx上长用的ll 实质上是ls -l的的别名
格式 ls [参数] [文件]
参数
ls -a列出目录下的所有文件,包括以.开头的隐含文件(常见的如.htaccess .git .svn文件)
ls -b 把文件名中不可输出的字符用反斜杠加字符编号的形式列出(友好的显示一些文件名非当前编码下的文件,比如子啊asc下中文名的文件)
ls -lh(或 ll -h) 显示文件的大小 单位b()
ls -t 按时间排序(通常查看上传路径文件很好用)
其它参数不常用 在此不做过多描述 想了解的可以自行搜索
mv命令是move的缩写,可以用来移动文件或者将文件改名
格式 mv [参数] 源文件 目标文件
参数
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
例1 把a.conf重命名为b.conf
例2 把a文件夹移动到 /home下
mv a.conf /home/b.conf
cp命令用来复制文件或者目录
格式 cp [参数] 源文件 目标文件
参数
-a 为每个已存在的目标文件创建备份
-b 在递归处理是复制特殊文件内容
-f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
-H 跟随源文件中的命令行符号链接
-l, --link 链接文件而不复制
-L, --dereference 总是跟随符号链接-n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
-P, --no-dereference 不跟随源文件中的符号链接
-p 等于--preserve=模式,所有权,时间戳 --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
-R, -r, --recursive 复制目录及目录内的所有项目
例1 备份a.conf文件
cp a.conf a.conf.bak
例2 拷贝文件夹a到 /home目录下
cp -r a/ /home/a
vim用来文件内容操作
格式 vim [filename]
编辑界面操作按键
gg 返回文件顶部
shift+g 到文件底部
i 编辑
:q 退出
:wq 保存并退出
:q! 强制退出 一般用于放弃修改文件
:wq! 强制保存并退出
/ 查询
:set nu 显示行号
:数字 跳转到指定行号
与sed和grep很相似,awk是一种样式扫描与处理工具
格式 awk [ -F re] [parameter...] ['prog'] [-f progfile][in_file...]
awk命令分两部分 {匹配模式操作} {filename} 基本格式 awk "匹配部分" "操作部分" 文件 其中匹配模式或者操作有一个即可 匹配模式支持正则 正则此处不介绍 只介绍简单用法
例1 读取apache服务器access_log 中的独立ip数
awk ‘{print $1}’ access_log | uniq -c 从access.log中读取第一个字断 并去重复 $1是读取文本文件第一个字断 如果文件分隔符不是空格 可以使用-F指定分隔符 $0读取整行
例2 取出/etc/password 中的所有用户
awk -F ':' '{print $1}' etc/password -F指定分隔符为:号
awk的用法还有很多 不仅仅上述 由于篇幅问题 在此不做过多讲解 望见谅
tail 命令从指定点开始将文件写到标准输出
格式 tail [必要参数] [选择参数] [文件]
参数
-f 循环读取
-n 指定显示的行数
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
例1 读取日志文件最后100行
tail -n 100 access.log
例2 监控日志 日志若有内容更新则直接输出
tail -f access.log
例3 从第五行开始显示文件内容
tail -n +5 log2014.log
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
格式 sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参数
-b 忽略每行前面开始出的空格字符
-c 检查文件是否已经按照顺序排序
-f 排序时,忽略大小写字母
-M 将前面3个字母依照月份的缩写进行排序
-n 依照数值的大小排序
-o<输出文件> 将排序后的结果存入指定的文件
-r 以相反的顺序来排序
-t<分隔字符> 指定排序时所用的栏位分隔字符
-k 选择以哪个区间进行排序
-u 去重
例1 将a.txt 进行排序 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
sort a.txt
使用-r则倒序
例2 将b.txt去重
sort -u b.txt
与awk类似 sed功能更为强大 可以做 匹配替换 输出 插入 等等 两者都可以基于行来对文本文件进行处理 但sed对列的操作稍微差点 大部分人只学会了个sed -s 讲解sed的全部用法需要大量篇幅 这里向大家推荐一本书 <
格式 sed [-nefri] ‘command’ 输入文本
参数
a 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d 删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p 列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s 取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
n 取消自动打印模式空间
例子
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird