文件命令
mkdir
make directoty
创建新目录
mkdir [-p] Linux路径Linux路径中如果存在不存在的父目录会创建失败
| 部分 | 全称 | 含义 |
|---|---|---|
-p | parent | 如果父目录不存在,就一起创建 |
#创建多个目录
mkdir a b ctouch
创建文件,如果文件已存在,则更新文件的时间戳
touch PATH- PATH:路径,如果路径中存在不存在的父目录会创建失败
touch a.txt b.txt c.txt
touch a.txt提示
touch 原本 不是“创建文件”这个意思,它真正的设计目的其实是:更新文件的时间戳(timestamp)。创建文件只是它的一个 副作用。
把文件的时间“碰一下”更新为当前时间即为touch
cat
concatenate(连接,合并)
查看文件内容
cat PATH- PATH:路径
- 查看文件内容
cat file.txt- 创建文件
cat > newfile.txt然后输入内容,按 Ctrl+D 保存退出。
$ cat > newfile.txt
Hello cat!
^Dmore
分页查看文件
more PATH| 按键 | 作用 |
|---|---|
| 空格(Space) | 向下翻一页 |
| Enter | 向下翻一行 |
| q | 退出 |
| b | 向上翻一页 |
more 会显示当前阅读进度,例如:
--More--(45%)cp
copy
复制文件或目录
cp [options] 源文件 目标文件| 选项 | 全称 | 含义 |
|---|---|---|
-r | recursive | 递归,复制目录时必须使用 |
-i | interactive | 覆盖前提示 |
提示
cp 复制文件时,如果 目标文件已经存在,默认会直接覆盖,不会有任何提示。防止文件被覆盖,我们可以添加-i选项
# 复制文件
cp hello.txt hello2.txt
# 复制文件夹
cp -r dir1 dir2mv
move
移动文件或目录,也可以用来 重命名文件
mv [options] 源文件/目录 目标文件/目录| 选项 | 全称 | 含义 |
|---|---|---|
-i | interactive | 覆盖前提示 |
把源文件或目录移动到目标位置
如果目标是新文件名,则相当于重命名
移动目录不需要
-r(mv会自动处理目录)
# 移动文件
mv a.txt test/
# 移动目录
mv dir1/ dir2/
#重命名
mv oldname.txt newname.txtmv处理目录为什么不需要-r,而cp需要-r
mv并不需要深入文件夹内部去搬运每一个子文件。它只是修改了文件系统中的“路径指向”。这种操作是瞬间完成的,文件夹作为一个整体被处理,因此不需要递归(-r)。cp必须在目标位置创建一个全新的目录,然后进入原目录,读取每一个文件,并在新位置写入相同的数据。需要显式指定递归处理
rm
remove
删除文件或目录 的命令
rm [-r -f] PATH| 选项 | 含义 |
|---|---|
-r | 递归删除目录 |
-f | 强制删除,不提示、不报错 |
-i | 删除前提示确认(interactive) |
rm支持通配符*
# 删除文件,并二次提示
rm -i hello.txt
# 删除文件夹
rm -r mydir
# 删除前缀是test的文件
rm test*
# 格式化Linux
rm -rf /which
查找程序(命令可执行文件)路径
whcih 程序名which cd
which javafind
用于在指定目录下 查找符合条件的文件或目录,find支持通配符
find [搜索路径] [options] [匹配条件]| 选项 | 含义 |
|---|---|
-name | 区分大小写文件名 |
-iname | 不区分大小写 |
-path | 按路径匹配 |
-regex | 正则表达式匹配 |
-size | 按文件大小匹配 |
# 按文件名查看
find . -name test.txtgrep
在文件中使用正则表达式进行全局搜索并输出匹配行
grep [-n] REG PATH- REG:正则字符串
- PATH:文件路径
| 选项 | 含义 |
|---|---|
-i | 忽略大小写 |
-n | 显示行号 |
❯ grep -n "hello" hello.txt
2:hello
4:hello2管道符
把前一个命令的输出,作为后一个命令的输入。数据像水一样,从一端流到另一端。
命令1 | 命令2并不是所有命令都接受输入,如果帮助文档写了Read from standard input if no file is given,则说明支持流式输入
grep就支持流式输入,是最常使用管道符的命令,用于过滤过长的终端输出
ls | grep '.txt'echo
回声,含义就是输入什么,输出就是什么
输入字符串或模板字符串,输出解析结果
echo "hello world" # hello world
echo "$(pwd)" # /Users/zurichscudecho后可以跟如下三种格式的字符串:
| 类型 | 是否解析变量 | 是否解析命令 |
|---|---|---|
单引号 ' ' | ❌ | ❌ |
双引号 " " | ✅ | ✅ |
| 不加引号 | 不推荐 | 不推荐 |
❯ echo "当前工作目录是$(pwd)"
当前工作目录是/Users/zurichscud解析命令有如下两种方式:
echo "now is `pwd`"
echo "now is $(pwd)"推荐使用$(command)更加现代化
重定向符
>:将左侧命令输出,覆盖写入右侧指定的文件中>>:将左侧命令的结果,追加写入符号右侧指定文件中
echo "Hello world" >> hello.txt
echo "hello" >hello.txttail
tail 是 Linux 中用于 查看文件末尾内容 的命令,常用于查看日志。默认显示 最后 10 行。
tail [-f -num] PATH| 选项 | 全称 | 含义 |
|---|---|---|
-f | follow | 实时追踪文件新增内容(日志监控最常用) |
-数字 | - | 显示最后 num 行 |
tail -1 hello.txt