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系统中创建文件、打开文件、编辑文件、保存文件操作

  1. vi是 visual interface的简称, 是linux中最经典的文本编辑器。

    • vi的特点
      • 只能是编辑 文本内容, 不能对 字体 段落进行排版
      • 不支持鼠标操作
      • 没有菜单
      • 只有命令
    • vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
  2. vim是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

  • 命令模式

vim txtfile.txt

  • 编辑模式

    在 vi 中除了常用 i 进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式

命令英文功能常用
iinsert在当前字符前插入文本常用
Iinsert在行首插入文本较常用
aappend在当前字符后添加文本
Aappend在行末添加文本较常用
o 在当前行后面插入一空行常用
O 在当前行前面插入一空行常用
  • 末行模式
    • :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
    • :q! 当vim进入文件对文件内容有操作但不想保存退出
    • :wq 正常保存退出
    • :wq! 强行保存退出,只针对与root用户或文件所有人生效
文件查看
序号命令对应英文作用
01cat 文件名concatenate查看小文件内容
02less -N 文件名less分频 显示大文件内容
03head -n 文件名 查看文件的前一部分
04tail -n 文件名 查看文件的最后部分
05grep 关键字 文件名grep根据关键词, 搜索文本文件内容

总结:

以上5个命令都可以查询文件的内容,他们的功能如下

通过 cat 会一次显示所有的内容, 适合 查看内容较少 的文本文件

less 命令适合查看 内容较多 的文本文件

通过 head 命令查看文档的前几行内容

通过 tail -10f 文件 命令 查看文档(日志)的后几行内容

通过 grep 命令 搜索存在 关键字 的行

  1. cat

    • -n 显示行号
  2. less

    • -N 显示行号
    • 全屏导航
      • ctrl + F - 向前移动一屏
      • ctrl + B - 向后移动一屏
      • ctrl + D - 向前移动半屏
      • ctrl + U - 向后移动半屏
    • 单行导航
      • j - 向前移动一行
      • k - 向后移动一行
    • 其它导航
      • G - 移动到最后一行
      • g - 移动到第一行
      • q / ZZ - 退出 less 命令
  3. tail

    • 22082911

显示 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

  1. head
  2. grep
    • 22082912

搜索 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系统中创建文件、打开文件、编辑文件、保存文件操作

  1. vi是 visual interface的简称, 是linux中最经典的文本编辑器。

    • vi的特点
      • 只能是编辑 文本内容, 不能对 字体 段落进行排版
      • 不支持鼠标操作
      • 没有菜单
      • 只有命令
    • vi编辑器在 系统管理 服务器管理 编辑文件时, 其功能永远不是图形界面的编辑器能比拟的
  2. vim是从 vi (系统内置命令)发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

  • 命令模式

vim txtfile.txt

  • 编辑模式

    在 vi 中除了常用 i 进入编辑模式 外, 还提供了一下命令同样可以进入编辑模式

命令英文功能常用
iinsert在当前字符前插入文本常用
Iinsert在行首插入文本较常用
aappend在当前字符后添加文本
Aappend在行末添加文本较常用
o 在当前行后面插入一空行常用
O 在当前行前面插入一空行常用
  • 末行模式
    • :q 当vim进入文件没有对文件内容做任何操作可以按"q"退出
    • :q! 当vim进入文件对文件内容有操作但不想保存退出
    • :wq 正常保存退出
    • :wq! 强行保存退出,只针对与root用户或文件所有人生效
vim定位行

光标在第五行显示

vim aaa.txt +5

vim 异常处理

如果 vim异常退出, 在磁盘上可能会保存有 交换文件

rm -rf .aaa.txt

操作扩展

要熟练使用vi/vim, 首先应该学会怎么在 命令模式下 快速移动光标 编辑操作命令 能够和移动命令一起使用

1) 上 下 左 右

1558278451153

命令功能手指
h向左食指
j向下食指
k向上中指
l向右无名指

也可以使用键盘上的上下左右箭头,这个更有方向感。

2) 行内移动

命令英文功能
wword向后移动一个单词
bback向前移动一个单词
0 行首
^ 行首, 第一个不是空白字符的位置
$ 行尾

3) 行数移动

命令英文功能
gggo文件顶部
Ggo文件末尾
数字gggo移动到 数字 对应行数
数字Ggo移动到 数字 对应行数
: 数字 移动到数字对应的 行数

4) 屏幕移动

命令英文功能
Ctrl + bback向上翻页
Ctrl + fforward向下翻页
HHead屏幕顶部
MMiddle屏幕中间
LLow屏幕底部

5) 选中文本(可视模式)

  • 学习 复制 命令前, 应该先学会 怎么样选中 要复制的代码
  • 在 vi/vim 中要选择文本, 需要显示 visual 命令切换到 可视模式
  • vi/vim 中提供了 三种 可视模式, 可以方便程序员的选择 选中文本的方式
  • 按 ESC 可以放弃选中, 返回到 命令模式
命令模式功能
v可视模式从光标位置开始按照正常模式选择文本
V可视化模式选中光标经过的完整行
Ctrl + v可是块模式垂直方向选中文本

6) 撤销和恢复撤销(保命指令)

在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑操作

命令英文功能
uundo撤销上次的命令(ctrl + z)
Ctrl + ruredo恢复撤销的命令

7) 删除文本

命令英文功能
xcut删除光标所在的字符,或者选中的文字
d(移动命令)delete删除移动命令对应的内容
dddelete删除光标所在行, 可以删除多行
Ddelete删除至行尾

提示: 如果使用 可视模式 已经选中了一段文本, 那么无论使用 d 还是 x, 都可以删除选中文本

删除命令可以和移动命令连用, 以下是常见的组合命令(扩展):

命令作用
dw从光标位置删除到单词末尾
d}从光标位置删除到段落末尾
ndd从光标位置向下连续删除 n 行

8) 复制和剪切

  • vi/vim 中提供有一个 被复制文本的缓冲区
    • 复制 命令会将选中的文字保存在缓冲区
    • 删除 命令删除的文字会被保存在缓冲区
    • 在需要的位置, 使用 粘贴 命令可以将缓冲对的文字插入到光标所在的位置
命令英文功能
yycopy复制行
d(剪切命令)delete剪切
dd(剪切)delete剪切一行, 可以 ndd 剪切n行
ppaste粘贴

提示:

  • 命令 d 、x 类似于图形界面的 剪切操作 -- ctrl + x
  • 命令 y 类似于 图形界面的 复制操作 -- Ctrl +
  • 命令 p 类似于图形界面的 粘贴操作 -- Ctrl + v
  • vi中的文本缓冲区只有一个,如果后续做过 复制、剪切操作, 之前缓冲区中的内容会被替换.

注意

  • vi中的 文本缓冲区 和 系统的 剪切板 不是同一个
  • 所以在其他软件中使用 Ctrl + C 复制的内容, 不能再 vi 中通过 p 命令粘贴
  • 可以在 编辑模式 下使用 鼠标右键粘贴

9) 替换

命令英文功能工作模式
rreplace替换当前字符命令模式
Rreplace替换当前行光标后的字符替换模式
  • R 命令可以进入 替换模式, 替换完成后, 按下ESC , 按下 ESC 可以回到 命令模式
  • 替换命令 的作用就是不用进入 编辑模式, 对文件进行 轻量级的修改

10) 缩排和重复执行

命令功能
>>向右增加缩进
<<向左减少缩进
.重复上次命令
  • 缩进命令 在开发程序时, 统一增加代码的缩进 比较有用!
    • 一次性 在选中代码前增加 4 个空格, 就叫做 增加缩进
    • 一次性 在选中代码前删除 4 个空格, 就叫做 较少缩进
  • 可视模式 下, 缩排命令 主需要使用 一个 > 或者 <

在程序中, 缩进 通常用来表示代码的归属关系

  • 前面空格越少, 代码的级别越高
  • 前面空格越多, 代码的级别越低

11) 查找

常规查找

命令功能
/str查找str
  • 查找到指定内容之后, 使用 Next 查找下一个出现的位置

    • n : 查找下一个
    • N : 查找上一个
  • 如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可

  • 单词快速匹配

命令功能
*向后查找当前光标所在单词
#向前查找当前光标所在单词
  • 在开发中, 通过单词快速匹配, 可以快速看到这个单词在其他位置使用过

12) 查找并替换

  • vi/vim 中查找和替换命令需要在 末行模式 下执行
  • 记忆命令格式
:%s///g
  1. 全局替换
  • 一次向 替换文件中的 所有出现的旧文本

  • 命令格式如下

    :%s/旧文本/新文本/g
    
  1. 可视区域替换
  • 先选中 要替换文字的 范围
  • 命令格式如下
:s/旧文本/新文本/g
  1. 确认替换:

c confirm 确认

  • 如果把末尾的 g 改成 gc 在替换的时候, 会有提示! 推荐使用

  • 命令格式如下

    :%s/旧文本/新文本/gc
    
  1. y - yes 替换
  2. n - no 不替换
  3. a - all 替换所有
  4. q -quit 退出替换
  5. l - last 最后一个, 并把光标移动到行首
  6. ^E 向下滚屏
  7. ^Y 向上滚屏
cat less head tail grep
序号命令对应英文作用
01cat 文件名concatenate查看小文件内容
02less -N 文件名less分频 显示大文件内容
03head -n 文件名 查看文件的前一部分
04tail -n 文件名 查看文件的最后部分
05grep 关键字 文件名grep根据关键词, 搜索文本文件内容

总结:

以上5个命令都可以查询文件的内容,他们的功能如下

通过 cat 会一次显示所有的内容, 适合 查看内容较少 的文本文件

less 命令适合查看 内容较多 的文本文件

通过 head 命令查看文档的前几行内容

通过 tail -10f 文件 命令 查看文档(日志)的后几行内容

通过 grep 命令 搜索存在 关键字 的行

  1. cat

    • -n 显示行号
  2. less

    • -N 显示行号
    • 全屏导航
      • ctrl + F - 向前移动一屏
      • ctrl + B - 向后移动一屏
      • ctrl + D - 向前移动半屏
      • ctrl + U - 向后移动半屏
    • 单行导航
      • j - 向前移动一行
      • k - 向后移动一行
    • 其它导航
      • G - 移动到最后一行
      • g - 移动到第一行
      • q / ZZ - 退出 less 命令
  3. tail

    • 22082911

显示 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

  1. head
  2. grep
    • 22082912

搜索 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表示整行文本
NFfield表示当前行共有多少个字段
$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