touch命令:
- touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
- ls -l 可以显示档案的时间记录
- 使用者权限:所有权限用户
语法:
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
参数说明:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
–help 列出指令格式。
–version 列出版本讯息。
# 不存在就创建文件,存在就改时间属性
touch a.txt
# 批量创建空文件
touch a{1..10}.txt
# 查看文件详细信息
stat a.txt
vi与vim:
- 使用vi/vim其实就相当于我们在Windows系统中创建文件、打开文件、编辑文件、保存文件操作
- vi是 visual interface的简称, 是linux中最经典的文本编辑器。
vi的特点:
- 只能是编辑、文本内容,不能对字体段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
- vi编辑器在系统管理服务器管理、编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
vim介绍:
- vim:是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
- 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。
- vim 则可以说是程序开发者的一项很好用的工具。
vi/vim模式主要分为以下三种:
- 命令模式:在Linux终端中输入“vim 文件名”就进入了命令模式,但不能输入文字。
- 编辑模式:在命令模式下按i就会进入编辑模式,此时就可以写入程式,按Esc可回到命令模式。
- 末行模式:在命令模式下按:进入末行模式,左下角会有一个冒号出现,此时可以敲入命令并执行。
打开和新建文件:
- 使用vim不但可以打开一个现存的文件;也可以生成(vim后的文件不存在的情况下)一个文件;有点类似于我们在Windows中输入notepad命令一样,我们输入notepad后就会打开一个文本文档,然后进行编辑–另存为。
- 使用者权限:当前文件的权限用户
- 在终端中输入vim在后面跟上 文件名 即可
- 如果文件已经存在, 会直接打开该文件
- 如果文件不存在, 打开一个临时文件,保存且退出时就会新建一个文件
进入编辑模式命令:
命令 | 功能 |
---|---|
i | 在当前字符前插入文本 |
l | 在行首插入文本 |
a | 在当前字符后添加文本 |
A | 在行末添加文本 |
o | 在当前行后面插入空行 |
O | 在当前行前面插入空行 |
保存命令:
命令 | 功能 |
---|---|
:q | 不保存退出 |
:q! | 不保存强制退出 |
:wq | 正常保存退出 |
:wq! | 强制保存退出 |
vim创建和定位:
# 如果文件已存在会直接打开文件,不存在就打开临时文件,退出保存以后就新建了
vim 文件名
# 定位行
vim 文件名 a.txt +5
vim异常:
- 在Linux中修改文件时是不会在源文件上直接改的,而是先在
交换文件
中改,交换文件的后缀是.swp
,当修改完毕保存后,系统会再把交换文件的内容同步到源文件。 - 如果因为没有保存就关闭了虚拟机,再次打开是会提醒你是不是要恢复的,选择恢复或者或者直接删除交换文件就可以了
文件查找:
find:
find命令用来在指定目录下查找文件。
任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法
find <指定目录> <指定条件> <指定内容>
-name:按照名字查找文件
-ctime:按照时间查找文件 -n指n天内,+n指n天前
# 查找当前文件夹的指定文件,代码里的点是代表在当前目录下查找
find . -name "*.txt"
# 查找全盘的的指定文件,代码里的斜杠是代表在从根目录开始
find / -name "*.txt"
# 查找1天内操作过的文件
find . -ctime -1
读取命令read:
- read命令用于从标准输入读取数值。
- read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。
- read命令相当于在java SE阶段学习的键盘录入输入Scanner(read命令会比Scanner更强大),开发人员可以动态的与程序交互,
语法
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
简单读取
echo "请您输入网站名: "
#读取从键盘的输入
read website
echo "你输入的网站名是 $website"
exit 0 #退出
读取文件
-
每次调用 read 命令都会读取文件中的 “一行” 文本。当文件没有可读的行时,read 命令将以非零状态退出。
-
我们可以使用 cat 命令将结果直接传送给包含 read 命令的 while 命令。
测试文件 test.txt 内容如下:
AAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDD
================itzhuzhu
脚本如下,可以将脚本放到xxx.sh中进行执行
#!/bin/bash
count=1
cat test.txt | while read line
# cat 命令的输出作为read命令的输入,read读到>的值放在line中
do
echo "Line $count:$line"
count=$[ $count + 1 ] # 注意中括号中的空格。
done
echo "finish"
exit 0
文件查看:
命令 | 功能 |
---|---|
cat文件名 | 查看小文件内容 |
less-N文件名 | 分屏显示大文件内容 |
head-n文件名 | 查看文件的前一部分 |
tail-n文件名 | 查看文件的最后部分 |
grep 关键字 文件名 | 根据关键字搜索文本文件内容 |
cat:
# 查看a.txt的内容
cat a.txt
# 查看a.txt内容并加行号
cat -n a.txt
# 退出查看视图摁q
less:
# 查看a.txt的内容
less a.txt
# 查看a.txt的内容并加行号
less -N a.txt
tail:
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
# 显示文件最后3行
tail -3 b.txt
# 动态显示最后10行(动态就是一直刷新获取最新)
tail -f b.txt
# 动态显示最后4行
tail -4f b.txt
# 显示文件b.txt的内容,从第2行至文件末尾
tail -n +2 b.txt
# 显示最后45个字符
tail -c 45 b.txt
head:
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
# 显示文件的前10行
head b.txt
# 显示文件开头的5行
head -n 5 b.txt
# 显示前10字节
head -c 10 b.txts
grep:
- grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一行显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
语法:
grep [参数选项] 关键字 文件名
- -n:把包含关键字的行展示出来
- -i:把包含关键字的行展示出来,搜索忽略大小写
- -v:把不包含关键字的行展示出来
# 把包含关键字的行展示出来
grep 关键字 b.txt
# 把包含关键字的行展示出来加行号
grep -n 关键字 b.txt
# 把包含关键字的行展示出来,搜索忽略大小写
grep -i 关键字 b.txt
# 把不包含关键字的行展示出来
grep -v 关键字 b.txt
# 查找指定的进程信息,包括grep进程
ps -ef | grep 关键字
# 查找指定的进程信息,不包含grep进程
ps -ef | grep 关键字 | grep -v "grep"
# 查找指定进程名的个数
ps -ef grep -c 进程名
echo:
- echo命令有点类似于System.out.print(“hello”),但是,echo还有一个功能就是追加文件内容到文件,类似append文件流写入一样
- 使用者权限:所有用户
- echo string 将字符串输出到控制台 , 通常和重定向联合使用
echo字符串 | 展示文本 |
---|---|
echo字符串 > 文件名 | 将字符串写到文件中(覆盖文件内容) |
echo字符串 >> 文件名 | 将字符串写到文件中(不覆盖文件内容) |
cat不存在在的目录 & >>error.log | 将命令的失败的结果追加error.log文件的后面 |
# 输出hello world
echo "hello world"
# 将hello world写到a.txt
echo 要写的内容 > a.txt
echo "hello world" > a.txt
# 将hello world2写到a.txt,追加写入
echo 要写的内容 >> a.txt
echo "hello world2" >> a.txt
# 将abc文件的内容写到a文件,但是abc文件不存在就会把报错信息写到a文件中
cat abc.txt &>> a.txt