Skip to content

文件命令

mkdir

make directoty

创建新目录

sh
mkdir [-p] Linux路径

Linux路径中如果存在不存在的父目录会创建失败

部分全称含义
-pparent如果父目录不存在,就一起创建
sh
#创建多个目录
mkdir a b c

touch

创建文件,如果文件已存在,则更新文件的时间戳

sh
touch PATH
  • PATH:路径,如果路径中存在不存在的父目录会创建失败
sh
touch a.txt b.txt c.txt
touch a.txt

提示

touch 原本 不是“创建文件”这个意思,它真正的设计目的其实是:更新文件的时间戳(timestamp)。创建文件只是它的一个 副作用

把文件的时间“碰一下”更新为当前时间即为touch

cat

concatenate(连接,合并)

查看文件内容

sh
cat PATH
  • PATH:路径

  • 查看文件内容
sh
cat file.txt
  • 创建文件
sh
cat > newfile.txt

然后输入内容,按 Ctrl+D 保存退出。

sh
$ cat > newfile.txt
Hello cat!
^D

more

分页查看文件

sh
more PATH
按键作用
空格(Space)向下翻一页
Enter向下翻一行
q退出
b向上翻一页

more 会显示当前阅读进度,例如:

sh
--More--(45%)

cp

copy

复制文件或目录

sh
cp [options] 源文件 目标文件
选项全称含义
-rrecursive递归,复制目录时必须使用
-iinteractive覆盖前提示

提示

cp 复制文件时,如果 目标文件已经存在,默认会直接覆盖,不会有任何提示。防止文件被覆盖,我们可以添加-i选项

sh
# 复制文件
cp hello.txt hello2.txt
# 复制文件夹
cp -r dir1 dir2

mv

move

移动文件或目录,也可以用来 重命名文件

sh
mv [options] 源文件/目录 目标文件/目录
选项全称含义
-iinteractive覆盖前提示
  • 把源文件或目录移动到目标位置

  • 如果目标是新文件名,则相当于重命名

  • 移动目录不需要 -rmv 会自动处理目录)

sh
# 移动文件
mv a.txt test/
# 移动目录
mv dir1/ dir2/
#重命名
mv oldname.txt newname.txt

mv处理目录为什么不需要-r,而cp需要-r

  • mv 并不需要深入文件夹内部去搬运每一个子文件。它只是修改了文件系统中的“路径指向”。这种操作是瞬间完成的,文件夹作为一个整体被处理,因此不需要递归(-r)。
  • cp 必须在目标位置创建一个全新的目录,然后进入原目录,读取每一个文件,并在新位置写入相同的数据。需要显式指定递归处理

rm

remove

删除文件或目录 的命令

sh
rm [-r -f] PATH
选项含义
-r递归删除目录
-f强制删除,不提示、不报错
-i删除前提示确认(interactive)

rm支持通配符*

sh
# 删除文件,并二次提示
rm -i hello.txt
# 删除文件夹
rm -r mydir
# 删除前缀是test的文件
rm test*
# 格式化Linux
rm -rf /

which

查找程序(命令可执行文件)路径

sh
whcih 程序名
sh
which cd
which java

find

用于在指定目录下 查找符合条件的文件或目录,find支持通配符

sh
find [搜索路径] [options] [匹配条件]
选项含义
-name区分大小写文件名
-iname不区分大小写
-path按路径匹配
-regex正则表达式匹配
-size按文件大小匹配
sh
# 按文件名查看
find . -name test.txt

grep

在文件中使用正则表达式进行全局搜索并输出匹配行

sh
grep [-n] REG PATH
  • REG:正则字符串
  • PATH:文件路径
选项含义
-i忽略大小写
-n显示行号
sh
 grep -n "hello" hello.txt
2:hello
4:hello2

管道符

把前一个命令的输出,作为后一个命令的输入。数据像水一样,从一端流到另一端。

sh
命令1 | 命令2

并不是所有命令都接受输入,如果帮助文档写了Read from standard input if no file is given,则说明支持流式输入

grep就支持流式输入,是最常使用管道符的命令,用于过滤过长的终端输出

sh
ls | grep '.txt'

echo

回声,含义就是输入什么,输出就是什么

输入字符串或模板字符串,输出解析结果

sh
echo "hello world" # hello world
echo "$(pwd)" # /Users/zurichscud

echo后可以跟如下三种格式的字符串:

类型是否解析变量是否解析命令
单引号 ' '
双引号 " "
不加引号不推荐不推荐
sh
 echo "当前工作目录是$(pwd)"
当前工作目录是/Users/zurichscud

解析命令有如下两种方式:

sh
echo "now is `pwd`"
echo "now is $(pwd)"

推荐使用$(command)更加现代化

重定向符

  • > :将左侧命令输出,覆盖写入右侧指定的文件中
  • >>:将左侧命令的结果,追加写入符号右侧指定文件中
sh
echo "Hello world" >> hello.txt
echo "hello" >hello.txt

tail

tail 是 Linux 中用于 查看文件末尾内容 的命令,常用于查看日志。默认显示 最后 10 行

sh
tail [-f -num] PATH
选项全称含义
-ffollow实时追踪文件新增内容(日志监控最常用)
-数字-显示最后 num 行
sh
tail -1 hello.txt