文件管理: 增,删,改,查
目录:
增
mkdir 创建目录
常用选项:
-p 如果父目录不存在,将父目录一起创建
# mkdir -p /a/b/c //创建联级目录/a/b/c
删
rm 删除
常用选项:
-r 删除目录用
-f 强制删除,不进行确认
# rm -rf /a //直接删除/a目录
*危险操作
改
mv 1.重命名 2.移动
语法:
mv 源 目标
# mv /a/b /b //将/a下的b移动到/b目录下
# mv /a/b /b/abc //将/a下的b移动到/b目录下,并重命名为abc(如果abc目录不存在)
源: 要移动的文件
目标: 要移动到哪里去
如果目标目录存在,则为移动; 如果目标目录不存在,则重命名
#mv c n m k b //把c n m k 移动到b
复制目录时加-r:
#cp -r b c //(把b复制到c)
查
ls 查看目录下所有的文件
常用选项:
-a 查看所有文件,包含隐藏文件
-l 以长格式显示
-d 查看目录本身的信息,一般和-l结合使用
普通文件:
增
touch 1.创建空白文件 2.如果文件已存在,修改文件时间
# echo hello > /test/b.txt //>:重定向
//如果/test/b.txt不存在,创建该文件,内容为hello
//如果文件存在,覆盖文件内容
# > abc //创建一个空白文件
# cp /test/passwd /a
//cp:复制. 在/a目录下创建文件passwd,内容和/test/passwd一样
扩展:
文件属性(文件元数据): stat
atime 访问时间,一般一天的第一次访问会被改掉
mtime 内容修改时间,修改文件内容会改变
ctime 属性修改时间,修改文件属性会改变
删
rm 删除文件
改
名字: mv
内容: vi/vim
查
cat: 查看文件内容,一般用于小文件(处理标准输入) 输入源:键盘输入;管道输入;文件
tac:逆序显示
-n: 显示行号
more: 分页显示文件内容,空格键翻页.缺点:只能往下翻
less: 可上下翻,支持关键字查找
head: 显示文件前n行,默认为10行
# head -5 /etc/passwd //显示passwd文件的前5行
tail: 显示文件后n行,默认为10行
# tail -3 /etc/passwd //显示passwd文件的后3行
# tail -0f /test/a.txt //监控a.txt文件的变化
文件管理(续)
[图片上传失败...(image-8b9577-1541676919840)]
一切皆文件
普通文件和目录不能重名
文件的命名不能使用/
文件名严格区分大小写
文件命名尽量少用特殊符号
文件的后缀没有特殊含义, 只是为了方便管理员来区分文件
# 文件类型(七种)
ll /bin
lrwxrwxrwx. 1 root root 7 7月 17 17:47 /bin -> usr/bin //看第一个字符
- file,普通文件
d 目录
l 软链接
s 套接字文件
b 块文件
c 字符文件
p 管道文件
file /bin
======================================
VIM
文件描述符
0 标准输入:键盘输入
1 标准输出:程序正确执行输出的内容
2 错误输出:程序错误执行输出的内容
重定向
<:输入重定向
:标准输出重定向
:标准输出追加重定向
2>:错误输出重定向
&>:所有输出重定向
#&> /dev/null <=> 1> /dev/null 2>&1
#1> file1 2> file2 //标准输出重定向到file1,错误输出重定向到file2
管道
用|表示,把前一条命令的标准输出作为后一条命令的标准输入
例: 打印passwd文件第8行:
halt:x:7:0:halt:/sbin:/sbin/halt
# echo hello | tee /tmp/a.txt //tee 即在屏幕上输出,又保存到a.txt
# echo hello world | tee >> a.txt 追加到a.txt
vi/vim编辑器
[图片上传失败...(image-f8b556-1541677102726)]
编辑模式
i 在光标前插入
a 在光标后追加
o 在光标所在行的下一行编辑
命令模式 [图片上传失败...(image-8e1719-1541677102726)]
D:从光标处删除到行尾
[图片上传失败...(image-e38761-1541677102726)]
尾行模式 [图片上传失败...(image-cdad67-1541677102725)]
set list:显示控制符号
扩展: 可视块模式
[图片上传失败...(image-54aba5-1541677102725)]
shift+v :进入可视行
vim -O /etc/hostname /etc/passwd //同时编辑两个文件
ctrl ww //切换文件
qall //退出所有
vimdiff /etc/passwd /test/pass //比较两个文件的不同
sed命令
sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。sed是按行来处文本内容的。在shell中,使用sed来批量修改文本内容是非常方便的。
选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。
function:
a :新增行, a 的后面可以是字串,而这些字串会在新的一行出现(目前的下一行)
c :取代行, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除行,因为是删除,所以 d 后面通常不接任何参数,直接删除地址表示的行;
i :插入行, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示法,例如 1,20s/old/new/g 一般是替换符合条件的字符串而不是整行
一般function的前面会有一个地址的限制,例如 [地址]function,表示我们的动作要操作的行。下面我们通过具体的例子直观的看看sed的使用方法。
网友评论