touch命令
touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 tip:文件已存在则刷新时间
使用者权限:所有权限用户
语法
touch [-acfm] [-d<日期时间>] [-r<参考文件或目录>] [-t<日期时间>] [--help] [--version] [文件或目录…]
- 参数说明:
- a 改变档案的读取时间记录。
- m 改变档案的修改时间记录。
- c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
- f 不使用,是为了与其他 unix 系统的相容性而保留。
- r 使用参考档的时间记录,与 --file 的效果一样。
- d 设定时间与日期,可以使用各种不同的格式。
- t 设定档案的时间记录,格式与 date 指令相同。
- --no-create 不会建立新档案。
- --help 列出指令格式。
- --version 列出版本讯息。
使用 touch 创建一个空文件
在 Linux 系统上使用 touch
命令创建空文件,键入 touch
,然后输入文件名。如下所示
touch czbk-devops.txt
touch a{1..10}.txt
关于stat命令:
stat命令用于显示inode内容。
stat以文字的格式来显示inode的内容。
stat [文件或目录]
vi/vim
使用vi/vim其实就相当于我们在Windows系统中创建文件、打开文件、编辑文件、保存文件操作
-
vi是
visual interface
的简称, 是linux中最经典的文本编辑器。- vi的特点
- 只能是编辑 文本内容, 不能对 字体 段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
- vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
- vi的特点
-
vim是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
- 命令模式
vim txtfile.txt
-
编辑模式
在 vi 中除了常用
i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
- 末行模式
- :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
- :q! 当vim进入文件对文件内容有操作但不想保存退出
- :wq 正常保存退出
- :wq! 强行保存退出,只针对与root用户或文件所有人生效
文件查看
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看小文件内容 |
02 | less -N 文件名 | less | 分频 显示大文件内容 |
03 | head -n 文件名 | 查看文件的前一部分 | |
04 | tail -n 文件名 | 查看文件的最后部分 | |
05 | grep 关键字 文件名 | grep | 根据关键词, 搜索文本文件内容 |
总结:
以上5个命令都可以查询文件的内容,他们的功能如下
通过
cat
会一次显示所有的内容, 适合 查看内容较少 的文本文件
less
命令适合查看 内容较多 的文本文件通过
head
命令查看文档的前几行内容通过
tail -10f 文件
命令 查看文档(日志)的后几行内容通过
grep
命令 搜索存在 关键字 的行
-
cat
- -n 显示行号
-
less
- -N 显示行号
- 全屏导航
- ctrl + F - 向前移动一屏
- ctrl + B - 向后移动一屏
- ctrl + D - 向前移动半屏
- ctrl + U - 向后移动半屏
- 单行导航
- j - 向前移动一行
- k - 向后移动一行
- 其它导航
- G - 移动到最后一行
- g - 移动到第一行
- q / ZZ - 退出 less 命令
-
tail
显示 txtfile.txt 文件的最后 3 行
tail -3 aaa.txt
动态显示文档的最后内容,一般用来查看日志
tail -f aaa.txt 动态显示 txtfile.txt 文件的最后 10 行
tail -4f aaa.txt 动态显示最后4行
显示文件txtfile.txt 的内容,从第 2 行至文件末尾
tail -n +2 aaa.txt
展示最后45个字符
tail -c 45 aaa.txt
- head
- grep
搜索 aaa文件中关键字 eeee 的行并显示行号
grep -n eeee aaa.txt
查找sshd的进程信息(包含grep进程)
ps -ef | grep sshd
查找sshd的进程信息(不包含grep进程)
ps aux | grep sshd | grep -v "grep"
查找sshd进程个数
ps -ef|grep -c sshd
touch命令
touch命令用于创建文件、修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。 tip:文件已存在则刷新时间
使用者权限:所有权限用户
语法
touch [-acfm] [-d<日期时间>] [-r<参考文件或目录>] [-t<日期时间>] [--help] [--version] [文件或目录…]
- 参数说明:
- a 改变档案的读取时间记录。
- m 改变档案的修改时间记录。
- c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
- f 不使用,是为了与其他 unix 系统的相容性而保留。
- r 使用参考档的时间记录,与 --file 的效果一样。
- d 设定时间与日期,可以使用各种不同的格式。
- t 设定档案的时间记录,格式与 date 指令相同。
- --no-create 不会建立新档案。
- --help 列出指令格式。
- --version 列出版本讯息。
使用 touch 创建一个空文件
在 Linux 系统上使用 touch
命令创建空文件,键入 touch
,然后输入文件名。如下所示
touch czbk-devops.txt
touch a{1..10}.txt
关于stat命令:
stat命令用于显示inode内容。
stat以文字的格式来显示inode的内容。
stat [文件或目录]
vi/vim
使用vi/vim其实就相当于我们在Windows系统中创建文件、打开文件、编辑文件、保存文件操作
-
vi是
visual interface
的简称, 是linux中最经典的文本编辑器。- vi的特点
- 只能是编辑 文本内容, 不能对 字体 段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
- vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
- vi的特点
-
vim是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
- 命令模式
vim txtfile.txt
-
编辑模式
在 vi 中除了常用
i
进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
- 末行模式
- :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
- :q! 当vim进入文件对文件内容有操作但不想保存退出
- :wq 正常保存退出
- :wq! 强行保存退出,只针对与root用户或文件所有人生效
vim定位行
光标在第五行显示
vim aaa.txt +5
vim 异常处理
如果 vim异常退出, 在磁盘上可能会保存有 交换文件
rm -rf .aaa.txt
操作扩展
要熟练使用vi/vim, 首先应该学会怎么在 命令模式下 快速移动光标 编辑操作命令 能够和移动命令一起使用
1) 上 下 左 右
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
也可以使用键盘上的上下左右箭头,这个更有方向感。
2) 行内移动
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首, 第一个不是空白字符的位置 | |
$ | 行尾 |
3) 行数移动
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
: 数字 | 移动到数字对应的 行数 |
4) 屏幕移动
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
5) 选中文本(可视模式)
- 学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码
- 在 vi/vim 中要选择文本, 需要显示 visual 命令切换到 可视模式
- vi/vim 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式
- 按 ESC 可以放弃选中, 返回到 命令模式
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视化模式 | 选中光标经过的完整行 |
Ctrl + v | 可是块模式 | 垂直方向选中文本 |
6) 撤销和恢复撤销(保命指令)
在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次的命令(ctrl + z) |
Ctrl + r | uredo | 恢复撤销的命令 |
7) 删除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在的字符,或者选中的文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行, 可以删除多行 |
D | delete | 删除至行尾 |
提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本
删除命令可以和移动命令连用, 以下是常见的组合命令(扩展):
命令 | 作用 |
---|---|
dw | 从光标位置删除到单词末尾 |
d} | 从光标位置删除到段落末尾 |
ndd | 从光标位置向下连续删除 n 行 |
8) 复制和剪切
- vi/vim 中提供有一个 被复制文本的缓冲区
- 复制 命令会将选中的文字保存在缓冲区
- 删除 命令删除的文字会被保存在缓冲区
- 在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
命令 | 英文 | 功能 |
---|---|---|
yy | copy | 复制行 |
d(剪切命令) | delete | 剪切 |
dd(剪切) | delete | 剪切一行, 可以 ndd 剪切n行 |
p | paste | 粘贴 |
提示:
- 命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x
- 命令 y 类似于 图形界面的 复制操作 -- Ctrl +
- 命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v
- vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.
注意
- vi中的 文本缓冲区 和 系统的 剪切板 不是同一个
- 所以在其他软件中使用
Ctrl + C
复制的内容, 不能再vi
中通过p
命令粘贴 - 可以在 编辑模式 下使用 鼠标右键粘贴
9) 替换
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式, 替换完成后, 按下ESC
, 按下ESC
可以回到 命令模式- 替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改
10) 缩排和重复执行
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
- 缩进命令 在开发程序时, 统一增加代码的缩进 比较有用!
- 一次性 在选中代码前增加 4 个空格, 就叫做 增加缩进
- 一次性 在选中代码前删除 4 个空格, 就叫做 较少缩进
- 在 可视模式 下, 缩排命令 主需要使用 一个
>
或者<
在程序中, 缩进 通常用来表示代码的归属关系
- 前面空格越少, 代码的级别越高
- 前面空格越多, 代码的级别越低
11) 查找
常规查找
命令 | 功能 |
---|---|
/str | 查找str |
-
查找到指定内容之后, 使用
Next
查找下一个出现的位置n
: 查找下一个N
: 查找上一个
-
如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可
-
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
- 在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过
12) 查找并替换
- 在
vi/vim
中查找和替换命令需要在 末行模式 下执行 - 记忆命令格式
:%s///g
- 全局替换
-
一次向 替换文件中的 所有出现的旧文本
-
命令格式如下
:%s/旧文本/新文本/g
- 可视区域替换
- 先选中 要替换文字的 范围
- 命令格式如下
:s/旧文本/新文本/g
- 确认替换:
c confirm 确认
-
如果把末尾的
g
改成gc
在替换的时候, 会有提示! 推荐使用 -
命令格式如下
:%s/旧文本/新文本/gc
y
-yes
替换n
-no
不替换a
-all
替换所有q
-quit
退出替换l
-last
最后一个, 并把光标移动到行首^E
向下滚屏^Y
向上滚屏
cat less head tail grep
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看小文件内容 |
02 | less -N 文件名 | less | 分频 显示大文件内容 |
03 | head -n 文件名 | 查看文件的前一部分 | |
04 | tail -n 文件名 | 查看文件的最后部分 | |
05 | grep 关键字 文件名 | grep | 根据关键词, 搜索文本文件内容 |
总结:
以上5个命令都可以查询文件的内容,他们的功能如下
通过
cat
会一次显示所有的内容, 适合 查看内容较少 的文本文件
less
命令适合查看 内容较多 的文本文件通过
head
命令查看文档的前几行内容通过
tail -10f 文件
命令 查看文档(日志)的后几行内容通过
grep
命令 搜索存在 关键字 的行
-
cat
- -n 显示行号
-
less
- -N 显示行号
- 全屏导航
- ctrl + F - 向前移动一屏
- ctrl + B - 向后移动一屏
- ctrl + D - 向前移动半屏
- ctrl + U - 向后移动半屏
- 单行导航
- j - 向前移动一行
- k - 向后移动一行
- 其它导航
- G - 移动到最后一行
- g - 移动到第一行
- q / ZZ - 退出 less 命令
-
tail
显示 txtfile.txt 文件的最后 3 行
tail -3 aaa.txt
动态显示文档的最后内容,一般用来查看日志
tail -f aaa.txt 动态显示 txtfile.txt 文件的最后 10 行
tail -4f aaa.txt 动态显示最后4行
显示文件txtfile.txt 的内容,从第 2 行至文件末尾
tail -n +2 aaa.txt
展示最后45个字符
tail -c 45 aaa.txt
- head
- grep
搜索 aaa文件中关键字 eeee 的行并显示行号
grep -n eeee aaa.txt
查找sshd的进程信息(包含grep进程)
ps -ef | grep sshd
查找sshd的进程信息(不包含grep进程)
ps aux | grep sshd | grep -v "grep"
查找sshd进程个数
ps -ef|grep -c sshd
echo
- 输出控制台
echo hello world 如果字符串有空格, 为了避免歧义 请增加 双引号 或者 单引号 echo "hello world"
- 重定向
>
(覆盖) 和>>
(追加)
命令 | 作用 |
---|---|
结果 > 文件名 | > 表示输出, 会覆盖文件的原有内容 |
命令 >> 文件名 | >> 表示追加, 会将内容追加到已有文件的末尾 |
命令 &>> 文件 | &>> 表示不区分错误类型 都放到 日志中 |
awk
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
数据准备:aaa.txt文本内容
zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46
命令 | 含义 |
---|---|
awk -F ',' '{print $1, $2, $3}' 文件 | 操作1.txt文件, 根据 逗号 分割, 打印 第一列 第二列 第三列 内容 |
OFS="字符" | output field separator 设置分隔符 |
awk -F ' ' '{print toupper($2)}' aaa.txt | 操作aaa.txt文件, 根据 空格 分割, 打印 第二列 内容 |
awk 'BEGIN{初始化操作}{每行都执行} END{结束时操作}' 文件名 | BEGIN{ 这里面放的是执行前的语句 } {这里面放的是处理每一行时要执行的语句} END {这里面放的是处理完所有的行后要执行的语句 } |
选项 | 英文 | 含义 |
---|---|---|
-F ',' | field-separator | 使用 指定字符 分割 |
$ + 数字 | $1表示文本行中第一个数据字段 | |
$0 | $0表示整行文本 | |
NF | field | 表示当前行共有多少个字段 |
$NF | 代表 最后一个字段 | |
$(NF-1) | 代表 倒数第二个字段 | |
NR | 代表 处理的是第几行 |
转义序列 | 含义 |
---|---|
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
函数名 | 含义 | 作用 |
---|---|---|
toupper() | upper | 字符 转成 大写 |
tolower() | lower | 字符 转成小写 |
length() | length | 返回 字符长度 |
搜索含有 zhang 和 li 的学生成绩
cat aaa.txt awk '/zhang|li'
cat aaa.txt | awk -F ' ' '{print $1,$2,$3}'
awk -F ' ' '{OFS="==="}{print $1, $2, $3}' aaa.txt 分隔符为 ===
cat aaa.txt | awk -F ' ' '{print toupper($1)}' 将第一段内容转成大写显示
ip add | grep global | awk '{print $2}' 取ip地址
cat czbk-txt.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}' 查看总分
cat czbk-txt.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR}' 查看总分, 总人数
cat czbk-txt.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR, (total/NR)}' 查看总分, 总人数, 平均分
软连接(快捷方式)
ln(选项)(参数)
- -b或--backup:删除,覆盖目标文件之前的备份;
- -d或-F或——directory:建立目录的硬连接;
- -f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;
- -i或——interactive:覆盖既有文件之前先询问用户;
- -n或--no-dereference:把符号连接的目的目录视为一般文件;
- -s或——symbolic:对源文件建立符号连接,而非硬连接;
- -S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾
- 会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;
- -v或——verbose:显示指令执行过程;
- -V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串;
- --help:在线帮助;
- --version:显示版本信息。
ln -s 目标文件路径 快捷方式路径
将目录/usr/mengqc/mub1
下的文件m2.c链接到目录/usr/liu
下的文件a2.c
cd /usr/mengqc ln /mub1/m2.c /usr/liu/a2.c
在执行ln命令之前,目录/usr/liu
中不存在a2.c文件。执行ln之后,在/usr/liu
目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用ls -l
命令可以看到链接数的变化。
在目录/usr/liu
下建立一个符号链接文件abc,使它指向目录/usr/mengqc/mub1
ln -s /usr/mengqc/mub1 /usr/liu/abc
执行该命令后,/usr/mengqc/mub1
代表的路径将存放在名为/usr/liu/abc
的文件中.
find 查找命令
find [参数选项] <指定目录> <指定条件> <指定内容>
- -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
- -amin n : 在过去 n 分钟内被读取过
- -anewer file : 比文件 file 更晚被读取过的文件
- -atime n : 在过去 n 天内被读取过的文件
- -cmin n : 在过去 n 分钟内被修改过
- -cnewer file :比文件 file 更新的文件
- -ctime n : 在过去 n 天内创建的文件
- -mtime n : 在过去 n 天内修改过的文件
- -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
- -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
- -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
- -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
- -type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
将当前目录及其子目录下所有文件后缀为.c
的文件列出来
find . -name "*.c"
将当前目录及其子目录中的所有文件列出
find . -type f