Linux 命令

Linux终端常用快捷键

快捷键 说明
ctrl + f 向前移动光标
ctrl + b 向后移动光标
ctrl + a 移动到行首
ctrl + e 移动到行尾
ctrl + p 向上翻页
ctrl + n 向下翻页
ctrl + h 删除光标前一个字符
ctrl + d 删除光标当前字符
ctrl + u 删除光标至开始全部内容
ctrl + k 删除光标至末尾全部内容
ctrl + w 删除光标前单词
ctrl + y 粘贴使用ctrl +w/u/k快捷键删除的文本

帮助命令

man

查看帮助手册

帮助手册分为几个章节。

man man #查看man的帮助手册
  1. 可执行程序或 shell 命令
  2. 系统调用(内核提供的函数)
  3. 库调用(程序库中的函数)
  4. 特殊文件(通常位于 /dev)
  5. 文件格式和规范,如 /etc/passwd
  6. 游戏
  7. 杂项(包括宏包和规范,如 man(7),groff(7))
  8. 系统管理命令(通常只针对 root 用户)
  9. 内核例程 [非标准]

tips:

  • 各个部分可能对同一个输入有不同解释,如sleep在第一章节,讲解sleep命令,在第三详解讲解库函数

参数

  • f 显示给定关键字的简短描述信息。

    man -f sleep #
    man 3 sleep #查看sleep的库函数
  • k 根据关键词搜索帮助手册

    man -k disk #查看所有和disk相关的手册  帮助文档中的(1)等,代表是第一章节
  • w 显示手册文件所在位置

    man -w ls #显示ls手册存放的位置 

whatis

查询一个命令执行什么功能,将查询结果打印到终端,该命令其实是将man命令的第一行输出

whatis ls #查看ls执行什么功能    和man -f ls和此输出相同

info

阅读info格式的文件。

info可显示更完整的最新的信息,比man会更加详细。man会简短很多

info ls # n和p进行翻页 space向下滚动  backspace向上滚动   q推出
info -w ls#ls的info文档存放位置

文件和目录命令

touch

改变已有文件的时间戳属性。创建新的空文件。

touch test1.txt test2.txt

参数

  • a 改变文件的读取时间记录

  • m 改变文件的修改时间记录

  • r 使用参考文件的时间记录(后面的文件属性赋值给前面的文件属性)

    touch -f test2.txt ref.txt
    touch --file test2.txt ref.txt
  • c 不创建新文件

    touch -c test3.txt
    touch --no-create nofile.txt
  • d 使用指定字符串表示时间

    touch -d "tomorrow" file.txt
    touch --date "tomorrow" file.txt
  • t 设定文件的时间记录

    touch -t 2201011030.55 file.txt #时间为2022年一月一号十点半55秒

mkdir

创建目录。当存在相同名字的文件时,会创建失败

参数

  • p 递归创建多级目录

    mkdir -p test1/test2/test3
  • m 建立目录的同时设置目录的权限

    mkdir -m 700 dir1
  • v 显示目录的创建过程

rm

删除文件和目录

参数

  • f 忽略不存在的文件,不会出现警告信息
  • i 删除前会询问用户是否操作
  • -r/-R 递归删除
  • -v 显示指令的详细执行过程

rmdir

删除空目录,非空则报错

参数

  • p 递归删除指定目录下的所有父级目录
  • v 显示指令的详细执行过程

mv

移动文件和重命名文件

参数

  • i 当存在同名文件,则询问是否覆盖

  • f 覆盖已有文件,不进行提示

  • b 文件存在时,覆盖前创建一个备份

    mv -b newfile.txt dir/
    
    #newfile.txt
    #newfile.txt~(备份文件)
  • -u 源文件比目标文件新,目标文件不存在时,才执行移动此操作

cp

复制文件或目录

参数

  • f 目标文件存在,直接覆盖
  • i 目标文件存在,询问是否覆盖
  • r 递归赋值文件和目录
  • b 覆盖已存在的文件前先进行备份
  • v 显示详细操作过程
  • a 赋值目录时 使用,保留链接和文件属性,且赋值目录中的全部内容

cd

切换目录

特殊目录

cd ~ #家目录
cd . #当前目录
cd .. #上一级目录
cd / #根目录
cd - #上次目录
cd #家目录
## 相对路径和绝对路径
# 起始路径为/的时绝对路径,其他为相对路径

pwd

显示当前目录(绝对路径)

ls

显示指定目录下的文件属性和信息

参数

  • a 显示所有文件和目录(包括隐藏文件)
  • l 使用长格式列出文件及目录信息
  • r 相反次序显示(默认依英文字母次序)
  • t 依据最后修改时间排序
ls -ltr #时间倒序显示
  • h 带单位显示文件大小

  • A 同a,但不显示...

  • S依据文件大小排序

  • R 递归列出当前所有子目录

  • F 列出的文件名称加一个符号

tree

树状图列出目录内容

参数

  • a 显示所有文件和目录(包括隐藏文件)
  • L 层级显示
tree -L 1
  • t 以更改时间排序
  • r 倒序显示
  • f 显示完整的相对路径
  • d 显示目录,不显示文件

stat

显示文件和文件系统信息

比ls详细的多

stat file.txt

参数

  • f 显示文件系统信息
  • L 支持符号链接
  • -t 简洁输出

rename

修改文件名,使用字符串的方式进行批量修改

语法

rename 's/old-name/new-name/' files

# 原字符串 :需要被替换的字符串
# 目标字符串:目录中含有的原字符替换成目标字符串
# 文件:指定要改变文件名的文件列表

通配符

? 替代单个字符
* 替代多个字符

参数

  • n 模拟运行,不真实更改
  • v 输出每步执行信息
  • f 强制改写

basename

提取文件路径名的文件名

basename /etc/passwd #输出为passwd

参数

  • a 处理多个文件
  • s 删除指定后缀

dirname

去除文件名中的非目录部分

chattr lsattr

修改文件系统属性、显示文件系统属性

只有root用户可以用,该权限可以控制文件是否可被删除、修改等等一系列权限。可man chattr进行查看具体有哪些属性

http://c.biancheng.net/view/874.html

语法

chattr [-RVf] +-=[aAcCdDeijsStTu] files

参数

  • R 递归处理目录下所有文件
  • v 设置文件或目录版本
  • V 显示命令执行过程
  • +开启属性
  • -关闭属性
  • = 指定属性
chattr +i file.txt #file.txt 无法删除、重命名,无法创建只想该文件的链接,无法修改该文件的大部分数据,不能将数据写入该文件
chattr -i file.txt #解锁该文件,可进行一般操作

file

查看文件的类型

md5sum

生成和校验文件的md5值

参数

  • b 以二进制读取文件
  • t 以文本读入文件内容
  • c 根据已生成的md5值,对现存文件进行校验
  • –status 校验完成后,不生成信息,命令返回值为结果
md5sum file.txt > file.md5 #将文件的md5值算出来放入file.md5文件中
md5sum -c file.md5 #会显示OK
echo 111 >> file.txt # 将111写入file.txt文件末尾
md5sum -c file.md5 #会显示失败
md5sum -c --status file.md5 #只校验,将结果放入返回值 
echo $? # 打印上个命令返回值   1代表失败 0代表成功

find

搜索指定文件

选项

  • name 指定名称搜索
find . -name *.txt
  • size 指定大小搜索
find . -size +1k
  • user 指定用户
  • type 指定类型
  • perm 指定权限
  • i 不区分大小写
  • ! 查找不符合条件的文件

which

查找命令(系统命令)文件所在位置

whereis

查找命令(系统命令)的二进制程序、源代码和man手册页等相关文件的路径。

参数

  • b 查找二进制程序或命令
  • m 查找man手册命令

locate

快速查找文件或目录

chown

改变文件或者目录的用户 和用户组

sudo chown moliam:moliam file.txt #修改用户名和用户组
sudo chown moliam file.txt #只修改用户名
sudo chown :moliam file.txt #只修改用户组

参数

  • R 目录下的所有文件和目录都改变
  • c 显示变更信息

chgrp

更改文件用户组

sudo chgrp moliam file.txt

参数

  • R 递归处理
  • v 显示执行过程

chmod

改变文件和或目录权限

  • 数字模式
  • 字符模式

查找文本命令

grep

文本搜索工具

参数

  • i 忽略大小写
  • h 不输出文件名
  • r 递归搜索
  • l 只输出匹配文件名 不列出具体匹配行
  • n 列出所有匹配行并显示行号
  • c 统计匹配数量
  • v 反向查找
  • x 搜索某个文件中,进行精准匹配,行内有且只有
  • q 是否包含某个关键词,返回输出结果(0包含,1不包含)
  • b 打印偏移量,字节为单位
  • F 固定字符串的内容
  • E 支持扩展的正则表达式

egrep

查找指定的字符串,和grep -E一样支持正则表达式,但是增加了一些功能

示例

egrep 'a+' file.txt # 包含a的内容
egrep 'linux|666' file.txt #含有linux或者666
egrep '(linux)' file.txt #包含linux的整体内容
egrep 'linux$' file.txt #以linux结尾
egrep '^#' file.txt #以#开始
egrep '(ab){3}' file.txt # ababab的内容

cat

查看文本内容

参数

  • n 显示行号(空行编号)
  • s 去掉空行
  • b 显示行号(空行不编号)
  • E每行结束显示 $
  • T tab字符显示为^I(大写i)

more

分页显示文本文件内容

操作

  • 回车:下滚一行

  • 空格:下翻一页

参数

  • -num 指定每屏显示的行数
  • +num 从第num行开始显示
  • p 清除屏幕,再显示剩余内容
  • c 不滚屏,清除屏幕,再显示剩余内容
  • s 空行压缩成一行

less

分页显示文本内容

操作

  • 回车:下滚一行

  • 空格:下翻一页

  • j : 下滚一行

  • k:上滚一行

  • b :回翻一页

  • f:下翻一页

  • q:退出

  • /word 查找word

显示文件开始的内容,默认显示10行

参数

  • n 定义显示行数
head -n 5 file.txt # 显示前五行
head -n -6 file.txt # 显示后六行
  • c 指定字符数
head -c 5 file.txt # 显示前五个字符
head -c -6 file.txt # 显示后六个字符

tail

查看文件尾部内容,默认显示10行

参数

  • c N输出文件尾部的N个字节的内容
  • f 显示文件最新追加的内容
  • n N输出文件尾部N行内容
tail -n 20 file.txt #显示后20行内容
tail +20 file.txt  #从20行开始显示到末尾
tail -f file.txt #占用终端,会动态显示file.txt内容,查看动态增加的日志超级有用

tac

反向显示文件内容,最后一行显示在第一行,不是字符串直接逆序

nl

添加上行号显示

wc

统计文本信息(行数、字数、字节数)

参数

  • w 统计字数
  • c 统计字节数
  • l 统计行数
  • m 统计字符数
  • L 打印最长行的长度(不包含不可见字符)

split

文件分割,一行切割成一个文件

参数

split -2 file.txt #每两行切成一个小文件
  • b 指定大小切割
  • d 使用数字作为后缀
  • a 指定后缀长度

cut

从文本中截取内容。截取每一行的其中某列

参数

  • f 截取某一列的内容
  • –complement 截取非选择的内容
  • d 指定分隔符,默认为TAB
  • b 按字节进行提取
  • c 字符为单位进行分割,进行提取(中文占两个字节,英文一个字节)

paste

合成两个或多个文件。以纵列进行拼接

以行为单位,并不是直接放在一起。默认间隔符为TAB

参数

  • d 指定分隔符
  • s 以行形式进行拼接
ls | paste -d " " - - - - #当前目录下的文件,以一行四列进行拼接,间隔符为空格

sort

对文件内容进行排序,默认以首字符进行排序

  • n 按照数值大小排序
  • r 相反方向
  • t 指定分隔符
  • k 指定以某一列进行排序

uniq

去除文件的重复行,必须是连续的

参数

  • c 打印重复的次数
  • d 只显示重复的行
  • u 打印不重复的行

diff

逐行比较文件的差异

参数

  • y 并列的方式显示文件的异同
  • W 指定宽度显示
  • c 显示全部内容,并标出不同

显示格式

  • a 有新增行
  • c 有改变行
  • d 有删除行
  • | 前后两个文件内容有不同
  • </- 后面文件少了一行
  • >/+ 前面文件少了一行
  • ! 文件有差别行

join

连接两个文件。默认以第一列作为连接字段。但是只拼接重复的行,单独含有的则不拼接

参数

  • a1/a2 显示左边/右边的所有记录进行拼接
  • o 指定输出某一列
  • t 指定分隔符,默认为空格
  • v 1/v 2 显示不相同栏的行
  • j 指定某列作为匹配字段

tr

转换或删除文件中的字符


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!