根目录 | / | |
当前目录 | . | 可以使用./xxx 来表示当前目录下的xxx文件 |
上级目录 | .. | 可以使用../xxx 来表示上级目录下的xxx文件 |
默认工作目录 | ~ | cd ~ 回到工作目录 |
注意: 每一个Linux用户都存在一个默认的工作目录,目录为/home/用户名,例如用户test,则它的目录为/home/test, 但是root用户不同,工作目录为/root
ls | 查看目录 参数: -a : 查看全部文件,包含隐藏文件(.开头) -l : 以列表形式展示 -h : 以l同时使用,将文件大小转化为带有单位的 |
pwd | print work directory 打印当前工作目录 |
cd | 移动工作目录 |
mkdir | 创建文件夹 参数: -p : 创建多级目录 |
touch | 创建文件 eg: touch test.txt |
cat | 查看文件内容,一次性加载全部内容展示 eg: cat test.txt |
more | 分屏查看文件内容,以分页的形式展示 操作: 空格键 : 向下翻页 b : 向上翻页 回车键 : 下一行 = : 显示当前行号 q : 退出 |
less | 分屏查看文件内容,可以查询关键字 操作: 翻页 : pageUp, pageDown, 空格键 /字符串 : 向下搜索,n下一个,N上一个 ?字符串 : 向上搜索,n下一个,N上一个 |
head | 查看文件头部内容 参数: -n : 显示头部的前几行内容,默认是10行 eg: head -n 2 xxx.txt |
tail | 查看文件尾部内容 语法: tail [参数] 文件路径 参数: -f : 持续跟踪 -n : 显示尾部的后几行内容,默认是10行 |
cp | 复制 eg: cp test.txt test1.txt 参数: -r : 复制文件夹,递归复制 |
mv | 移动 文件或文件夹 eg: mv test.txt ./desktop 将文件test.txt移动到当前目录的desktop文件夹中 mv test.txt test1.txt 将test.txt重命名为test1.txt |
rm | 删除 参数: -r : 删除文件夹,递归删除 -f : 强制删除,当登录用户为root,使用rm命令都会提示确认提醒,添加-f后,则不提示直接删除 支持通配符: * : 表示所有文件, rm -rf * *test : 表示文件名以test结尾的所有文件 test* : 表示文件名以test开头的所有文件 *test*: 表示文件名包含test的所有文件 |
which | 查找命令的文件位置 eg: which cd |
find | 查找文件位置 语法: find [起始位置] [参数] 参数: -name : 按照文件名查找,可以使用通配符 find / -name *test* 从根目录向下查找文件名包含test的所有文件 -user : 按照文件的创建用户查找 -size : 按照文件大小查找 参数: -|+ -表示小于,+表示大雨1 n 文件大小 kMG 大小单位 kb,MB,GB find / -size -10k 从根目录向下查找文件大小小于10k的所有文件 find / -size +10M 从根目录向下查找文件大小大于10M的所有文件 |
locate | 查找文件位置,Linux内部有一个locate映射数据库,数据不是事实更新的,所以使用locate前,最好先执行updatedb命令,更新locate数据库 语法: locate 文件名 |
grep | 通过关键字过滤文件中的行 语法: grep [参数] 关键字 文件路径 参数: -n : 在结果中显示行号 -i : 忽略大小写 -m : 最大匹配的行数,-m 2 只显示匹配大前2行 关键字 : 推荐使用双引号包裹 文件路径: 过滤内容的文件路径,也可以是管道的输入 |
wc | 统计文件的行数,单词数,字节数,字符数 语法: wc [参数] 文件路径 参数: -c : 字节数 -m : 字符数 -l : 行数 -w : 单词数 文件路径: 内容的文件路径,也可以是管道的输入 |
| | 管道,管道将左边命令的结果,作为右边命令的输入 |
echo | 在命令行打印指定内容 语法: echo "内容" |
`反引号 | 被`包裹的内容,会被作为命令执行,而非普通字符 eg: echo "当前的工作目录为:`pwd`" |
> | 将左侧命令的结果,覆盖写入到右侧指定文件内 eg: echo "123" > test.txt |
>> | 将左侧命令的结果,追加写入到右侧指定文件内 eg: echo "123" >> test.txt |
man | 命令的帮助文档 eg: man ls |
help | bash内容指令的帮助文档 eg: help cd |
--help | 命令的帮助文档 |
linux中的文本编辑器,vim是vi的加强版,兼容VI的所有命令,并且还具有shell程序的编程功能,可以使用不同的颜色来标记语法的正确性。
语法: vi / vim 文件 文件存在则是修改,不存在则是创建文件并修改
模式:
命令模式 | 敲击的按键被理解为命令,执行命令功能 |
输入模式 | 对内容自由编辑 |
命令模式的快捷键:
i | 当前光标位置进入输入模式 |
a | 当前光标位置之后进入输入模式 |
I | 当前行开头位置进入输入模式 |
A | 当前行结尾位置进入输入模式 |
o | 当前光标的下一行进入输入模式 |
O | 当前光标上一行进入输入模式 |
0 或 ^ | 移动光标到当前行的开头 |
$ | 移动光标到当前行的结尾 |
pageUp | 向上翻页 |
pageDown | 向下翻页 |
/ | 进入搜索模式 |
n | 搜索到内容后,向下继续搜索 |
N | 搜索到内容后,向上继续搜索 |
dd | 删除光标所在的行 |
ndd | n为数字,删除当前光标向下n行 |
yy | 复制光标所在的行 |
nyy | n为数字,复制当前光标向下n行 |
p | 粘贴 |
u | 撤销修改 |
ctrl + r | 反向撤销修改 |
gg | 跳到首行 |
G | 跳到最后一行 |
dG | 从当前行开始向下全部删除 |
dgg | 从当前行开始向上全部删除 |
d$ | 从当前光标删除到本行结尾 |
d0 | 从当前光标删除到本行首 |
w | 光标跳转到下一个单词 |
b | 光标跳转到上一个单词 |
dw | 删除一个单词 |
:wq | 保存退出 |
:q | 仅退出 |
:w | 仅保存 |
:q! | 强制退出 |
:set nu | 显示行号 |
输入模式:
ESC | 退出输入模式,进入命令模式 |
sed : 内容替换
语法: sed [参数] 'express' 文件路径
参数:
-e | 表示表达式,可以省略,不会再目标文件中生效,只是在控制台打印 |
-i | 在目标文件中生效 |
-f | 读取文件,按照文件内的表示进行操作 |
express举例:
"1i\a new line" | 表达式中用\进行分割,1表示第一行,i表示insert,\右边表示要插入的内容 |
"4a\a new line" | 表达式中用\进行分割,4表示第四行,a表示之后插入,\右边表示要插入的内容 |
"4d" | 4表示第四行,d表示删除 |
"4c\line" | 表达式中用\进行分割,4表示第四行,c表示覆盖,\右边表示要覆盖的内容 |
"1s/old/new" | 这里使用/进行分割,1代表第一行,s代表正则表达式匹配,old表示需要被替换的内容,new为替换的内容,只会匹配第一行的第一个old替换成new |
"1s/old/new/g" | /g表示全部替换,会将第一行的所有old替换成new |
"s/old/new" | 匹配所有包含old的行,只将行中第一个old替换成new |
"s/old/new/g" | 匹配所有包含old的行,将行中所有old替换成new |
cut : 切割,裁剪,按照默写字符进行分割后,获取某列的值
语法: cut [参数] 文件路径
参数:
-d | 分隔符,按照指定的分隔符分割内容,默认是制表符"\t" |
-f | 列号,获取第几列 |
例子:
echo "Hello my world, it is amazing" | cut -d " " -f 1
按照空格进行分割后,取第一列,结果为Hello
echo "Hello my world, it is amazing" | cut -d " " -f -3
按照空格进行分割后,取1到3列,结果为Hello my world,
echo "Hello my world, it is amazing" | cut -d " " -f 3-
按照空格进行分割后,取3列到最后一列,结果为world, it is amazing
awk : 分割,按照某些字符进行分割后,获取分割后的值
语法: awk [参数] '/pattern1/ {action1} /pattern2/ {action2}' 文件路径
参数:
-F | 指定分隔符,默认空格 |
-v | 指定变量,可以在action中使用 |
pattern | 表示在数据中需要查找的内容,可以包含正在表达式 |
action | 再找到匹配的行后,对其进行分割后,执行的一系列命令 |
内容变量:
FILENAME | 文件名 |
NR | 行号 |
NF | 列的个数 |
例子:
awk '\Hao\ {print $1}' 1.txt
从1.txt中查找哈有Hao的行,找到后使用空格进行分割,打印第一列的值
awk -F ":" '\Hao\ {print $1","$3}' 1.txt
从1.txt中查找哈有Hao的行,找到后使用:进行分割,打印第一列和第三列,使用,拼接
awk '\Hao\ {print "文件名:"FILENAME",行号:"NR",列数:"NF}' 1.txt
从1.txt中查找哈有Hao的行,找到后使用空格进行分割,打印文件名+行号+列数
^ | 以什么开头 |
$ | 以什么结尾,^$表示空白行 |
. | 表示任意一个字符,例如: echo root | grep r..t 匹配r+任意两个字符+t |
* | 匹配0到多次 .*表示任意多个字符 |
\ | 转移字符 |