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的帮助手册
- 可执行程序或 shell 命令
- 系统调用(内核提供的函数)
- 库调用(程序库中的函数)
- 特殊文件(通常位于 /dev)
- 文件格式和规范,如 /etc/passwd
- 游戏
- 杂项(包括宏包和规范,如 man(7),groff(7))
- 系统管理命令(通常只针对 root 用户)
- 内核例程 [非标准]
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
head
显示文件开始的内容,默认显示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 协议 ,转载请注明出处!