文章目录
- 预防rm事故-血的教训😢
- 1. 使用别名:
- 2. 启用回收站:
- 3. 只读文件系统:
- 一、文件管理
- 1.1 touch-文件创建
- 1.2 rm-文件删除
- 1.3 mkdir-目录创建
- 1.4 rmdir-目录删除
- 1.5 pwd-显示当前目录
- 1.6 cd-切换当前目录
- 1.7 ls-列出文件和目录
- 1.8 cat-显示文件内容
- 1.9 mv-移动文件或者目录
- 1.10 vi or vim-文件编辑
- 1.11 cp-复制文件
- 1.12 ln-创建链接(重点)
- 硬链接(Hard Link)
- 符号链接(Symbolic Link)
- 总结
- 1.13 find-查找
- 参数说明:
- 动作说明:
- 1.15 echo-输出
- 基本用法:
- 示例:
- 常用选项:
- 常见的转义字符:
- 示例总结:
- 1.16 grep-文本搜索
- 常用参数:
- 示例总结:
预防rm事故-血的教训😢
详细内容见:预防rm误删文件的3种方法
1. 使用别名:
- 创建别名来保护常用的删除命令。例如,可以将
rm命令替换为一个交互式命令,提示用户确认删除操作:
alias rm='rm -i'
这样,每次使用rm命令时,系统都会提示确认。
2. 启用回收站:
- 可以使用
trash-cli工具将删除的文件移动到回收站,而不是直接删除。安装trash-cli后,可以使用trash-put命令代替rm:
sudo apt install trash-cli
trash-put filename
3. 只读文件系统:
- 对于不需要频繁修改的目录或分区,可以将其设置为只读。修改
/etc/fstab文件来挂载分区为只读:
/dev/sdX /mount/point ext4 ro,defaults 0 2
一、文件管理
1.1 touch-文件创建
命令:touch filename
tip1:touch file.txt命令不会覆盖已存在的file.txt文件。它会更新该文件的最后修改时间。如果文件不存在,则会创建一个新的空文件。


1.2 rm-文件删除
命令:rm filename
其英文全称为remove
常用参数:
-i:交互模式,删除前询问。
英文全称为interactive-f:强制执行操作。这里指强制删除,忽略不存在的文件,不提示确认。
英文全称为force-r:递归删除目录及其内容。
英文全称为recursive
容易踩缝纫机的命令:rm -rf😋


1.3 mkdir-目录创建
命令:mkdir Directory_name


1.4 rmdir-目录删除
命令:rmdir Directory_name或rm -r Directory_name
其英文全称为Remove Directory
区别:
rmdir只能删除空目录,
rm -r可以删除非空目录(因为-r表示递归地对目录进行操作,其英文为recursive)

1.5 pwd-显示当前目录
命令:pwd
其英文全称为Print Working Directory

1.6 cd-切换当前目录
命令:cd
其英文全称为Change Directory
当前位于root目录,即root用户的家目录~,linux中用/表示根目录,
其中.表示的是当前目录,..表示的上级目录。
下面是进入share目录并返回根目录的事例:

1.7 ls-列出文件和目录
命令:ls
其英文全称为List
常用参数及使用方法如下:
-a:显示所有文件和目录,包括隐藏文件(以.开头的文件或目录)。
英文全称all-l:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。
英文全称long-h:与-l结合使用,以人类易读的格式显示文件大小(如K、M、G等)。
英文全称human-readable-R:递归列出子目录的内容。
英文全称recursive-t:按文件修改时间排序显示。
英文全称time

1.8 cat-显示文件内容
命令:cat
其英文全称为Concatenate
cat命令可以查看文件里面的内容,更多的使用命令可以使用--help命令查看:
-
-a,–show-all等价于-vET
-
-b,–number-non空白数非空输出行,覆盖-n
-
-e, 等价于-vE
-
-E,–show-结束显示$在每一行的末尾
-
-n,–number编号所有输出行,即在输出时在前面加上编号
英文全称:number -
-s,–crick-空白抑制重复的空输出行
-
-t等价于-vT
-
-t,–show-tabs将制表符显示为
^I -
-v,–show非打印使用^和M-表示法,LFD和TAB除外
1.读取内容:
命令:cat filename

2.写入内容(默认覆盖):
命令:cat >filename,若文件名不存在,则会自动创建
退出编辑:CTRL+D

3.显示行数
命令:cat -n filename

4.将源文件的内容追加到目标文件中
使用:>>重定向运算符
命令:cat source_file >> target_file

1.9 mv-移动文件或者目录
命令:mv
mv命令和rm命令的使用方式很相似,但是mv是用来移动文件或者目录的,同时还可以进行重命名。rm命令则是用来删除文件或者目录的。
常用参数:
-
-i:交互模式,覆盖前询问。 -
-f:强制执行操作。这里指强制覆盖。
英文全称为force -
-u:只在源文件比目标文件新时才进行移动,即仅更新较新的文件
英文全称updata
1.10 vi or vim-文件编辑
命令:vim filename
末行模式:
:w- write (保存文件):q- quit (退出 Vim):q!- quit! (强制退出 Vim,不保存修改):wq- write quit (保存并退出 Vim):wq!- write quit (保存并强制退出 Vim)

命令模式:
dd- delete (删除当前行)yy- yank (复制当前行)p- paste (粘贴)u- undo (撤销上一步操作)G- goto (跳转到文件的末尾)gg- goto (跳转到文件的开头)ZZ- 代表“保存并退出”,相当于:wqw- word (跳转到下一个单词的开头)b- backup (跳转到上一个单词的开头)0- beginning (跳转到行的开头)
进入编辑模式:
i- insert (插入,即在光标前插入文本)a- append (追加,即在光标后插入文本)o- open (在当前行之下新开一行,并进入插入模式)
1.11 cp-复制文件
命令:
- 复制文件:
cp [选项] 源文件 目标文件or目标目录 - 复制目录:
cp -r 源目录 目标目录
注意:cp命令复制到目标文件时,默认覆盖 目标文件中的数据
常用选项:
-r或-R:递归复制目录及其内容。-i:在覆盖文件之前提示确认。-v:显示正在复制的文件。-u:只在源文件比目标文件新,或目标文件不存在时复制。-n(no-clobber),cp命令不会覆盖已存在的目标文件,等于说不执行cp命令(没啥用)
-
讲test.txt文件的内容复制到demo.txt中

-
cp命令覆盖目标文件内容

1.12 ln-创建链接(重点)
命令: ln
ln 可用于创建硬链接或符号链接(软链接)
ln 命令也可用于在文件系统中创建硬链接或符号链接(软链接)。
以下是详细说明:
硬链接(Hard Link)
硬链接是文件系统中的多个文件名指向同一个物理文件数据块。删除任何一个硬链接,文件数据不会被删除,直到所有指向该数据块的链接都被删除。
注意:硬链接就是给一个数据块起了很多个别名。故修改源文件,硬链接文件内容也会改变
-
命令格式:
ln 源文件 目标文件 -
示例:

这将在当前目录中创建一个名为
woidemo.txt的硬链接,指向hdemo.txt。两者共享相同的数据块。
符号链接(Symbolic Link)
符号链接是一个指向另一个文件或目录的路径名的文件。删除符号链接不会影响目标文件,但删除目标文件会导致符号链接失效。
注意:修改符号链接文件内容,源文件也会改变
- 命令格式:
ln -s 源文件 目标文件

这将在当前目录中创建一个名为 nm.txt 的符号链接,指向 hdemo.txt。nm.txt 只是指向 hdemo.txt 的路径。
常用选项:
-s:创建符号链接。-f:强制创建链接,覆盖已有文件。-v:详细模式,显示创建的链接信息。-i:交互模式,文件存在则提示用户是否覆盖。-n:把符号链接视为一般目录。
总结
- 硬链接:多个文件名指向同一个数据块,所有硬链接文件内容一致。
- 符号链接:文件名指向另一个文件的路径,删除目标文件后,符号链接失效。
1.13 find-查找
注意:
如果不指定 /path/to/directory,find 命令将默认在当前工作目录及其所有子目录中进行搜索。
当你需要在Linux系统中查找特定的文件或目录时,find 命令是一个非常有用的工具。它能够根据多种条件精确地定位文件,以下是它的一些主要用法:
-
按文件名查找:
使用
-name选项可以根据文件名查找文件。例如,如果你想找到名为file.txt的文件,可以执行类似这样的命令:find /path/to/directory -name "file.txt"这将在指定目录及其子目录中查找名为
file.txt的文件。

-
按文件类型查找:
使用
-type选项可以根据文件类型查找文件。常见的文件类型包括普通文件 (f) 和目录 (d)。例如,要查找所有普通文件,可以执行以下命令:find /path/to/directory -type f这将列出指定目录及其子目录中的所有普通文件。
示例:
如果你想查找所有以 .py 结尾的文件,可以使用 find 命令结合 -name 选项来实现。这样可以过滤出所有符合条件的文件路径。
假设你希望在 /home/user 目录及其所有子目录中查找所有以 .py 结尾的文件,可以执行以下命令:
find /home/user -type f -name "*.py"

这条命令的含义是:
find /home/user:从/home/user目录开始搜索。-type f:限定查找对象为普通文件。-name "*.py":指定文件名模式为*.py,即以.py结尾的文件。
输出示例:
如果 /home/user 目录下有文件 script.py 和子目录 code,子目录中有文件 utils.py,那么上述命令的输出可能是:
/home/user/script.py
/home/user/code/utils.py
注意事项:
- 使用
-name "*.py"来指定文件名模式时,通配符*表示零个或多个字符,而.py则确保文件以.py结尾。 - 如果需要进一步操作这些找到的文件,可以结合
-exec选项执行其他命令,例如复制、移动或删除文件。
通过这种方式,你可以非常方便地查找并操作指定类型的文件,如 Python 脚本文件 .py。
-
按文件大小查找:
使用
-size选项可以按照文件的大小查找文件。可以指定大小的单位(如M表示兆字节)。例如,要查找大于100MB的文件,可以执行以下命令:find /path/to/directory -size +100M这将列出指定目录及其子目录中大于100MB的文件。
-
按修改时间查找:
使用
-mtime、-atime或-ctime选项可以按照文件的修改时间、访问时间或状态更改时间查找文件。例如,要查找最近7天内修改过的文件,可以执行以下命令:find /path/to/directory -mtime -7这将列出指定目录及其子目录中在最近7天内修改过的文件。

-
按文件权限查找:
使用
-perm选项可以按照文件权限查找文件。例如,要查找权限为755的文件,可以执行以下命令:find /path/to/directory -perm 755这将列出指定目录及其子目录中权限为755的文件。
-
按用户或组查找:
使用
-user或-group选项可以按照文件的所有者或所属组查找文件。例如,要查找属于用户username的文件,可以执行以下命令:find /path/to/directory -user username这将列出指定目录及其子目录中属于用户
username的文件。 -
执行操作:
使用
-exec选项可以对找到的文件执行特定的操作。例如,要删除所有以.txt结尾的文件,可以执行以下命令:find /path/to/directory -name "*.txt" -exec rm {} \;这将删除找到的所有
.txt文件。
echo 命令用于在终端中显示一段文字或变量的值。它是一个非常常用的命令行工具,尤其在 shell 脚本中,用于输出文本到标准输出。以下是 echo 命令的详细介绍和一些常见的用法示例:
1.14 sed-文本流编辑
sed 是一个强大的文本流编辑工具,常用于在 Linux 和 Unix 系统中处理和转换文本数据。
它的名字来源于其英文全称 stream editor(流编辑器)。
sed 主要用于从输入流(例如文件或管道)中读取数据,对数据进行编辑处理,然后将结果输出到标准输出或文件中。
注意:在默认情况下,sed 命令不会改变源文件的数据。具体来说,当你在使用 sed 命令时,它会按照指定的编辑命令处理输入的文本,并将结果输出到标准输出(通常是终端)。这意味着 sed 命令会显示处理后的文本内容,但不会修改原始文件。
以下是对 sed 命令中参数和动作的说明:
参数说明:
-
-e <script>或--expression=<script>:在命令行中直接指定脚本进行文本处理。例如:sed -e 's/old/new/' filename这会将文件
filename中的 “old” 替换为 “new”。
注意:源文件实际内容未发生改变

-
-f <script文件>或--file=<script文件>:从指定的脚本文件中读取脚本进行文本处理。例如:sed -f script.sed filename这会执行
script.sed中定义的脚本处理文件filename。 -
-n或--quiet或--silent:仅打印经过脚本处理后的输出结果,不打印未匹配的行。例如:sed -n 'p' filename这会只打印匹配的行。

-i,in-place操作
作用:使 sed 命令直接修改指定的源文件,而不是将修改后的结果输出到标准输出设备(通常是终端)。

动作说明:
-
a:在当前行的下一行添加指定的文本字符串。例如:sed '/pattern/a\This is a new line' filename这会在匹配
pattern的行之后添加 “This is a new line”。

-
c:用指定的文本字符串替换指定范围内的行。例如:sed '1,3c\This is the replacement line' filename这会用 “This is the replacement line” 替换文件
filename中的第 1 到第 3 行。 -
d:删除指定的行。例如:sed '/pattern/d' filename这会删除文件
filename中所有包含pattern的行。

-
i:在当前行的上一行添加指定的文本字符串。例如:sed '/pattern/i\This is a new line' filename这会在匹配
pattern的行之前添加 “This is a new line”。

-
p:打印经过选择的行。通常与-n参数一起使用,只打印匹配的行。例如:sed -n '/pattern/p' filename这会只打印文件
filename中匹配pattern的行。

-
s:使用正则表达式进行文本替换。例如:sed 's/hate/love/' filename这会将文件
filename中所有 “hate” 替换为 “love”。
注意:源文件实际内容未发生改变

1.15 echo-输出
基本用法:
echo [选项] [字符串...]
示例:
-
基本输出:
echo "Hello, World!"输出:
Hello, World! -
输出变量值:
NAME="Alice" echo "Hello, $NAME!"输出:
Hello, Alice! -
输出包含特殊字符的字符串:
echo "Hello, \$NAME!"输出:
Hello, $NAME! -
输出多行文本:
echo -e "Line1\nLine2\nLine3"选项
-e使echo解释转义字符(如\n表示换行)。输出:Line1 Line2 Line3
常用选项:
-
-e:启用解释反斜杠转义字符。echo -e "Line1\nLine2\nLine3" -
-n:输出文本后不换行。echo -n "Hello, World!" -
--help:显示echo命令的帮助信息。echo --help
常见的转义字符:
\n:换行\t:水平制表符(tab)\\:反斜杠\":双引号\':单引号
示例总结:
echo "Hello, World!" # 输出:Hello, World!
echo -n "Hello, World!" # 输出:Hello, World!(无换行)
echo -e "Line1\nLine2\nLine3" # 输出多行文本
NAME="Alice"
echo "Hello, $NAME!" # 输出变量值:Hello, Alice!
echo 命令非常简单但功能强大,适用于各种文本输出场景,无论是直接输出文本,还是在脚本中输出变量值或格式化文本。
1.16 grep-文本搜索
常用参数:
-
-i:忽略大小写进行搜索。- 解释:搜索时忽略大小写,即不区分大写和小写字母。
- 示例:
这会查找grep -i "pattern" filenamefilename文件中与 “pattern”(忽略大小写)匹配的所有行。
-
-v:反转匹配,即显示不匹配的行。- 解释:只显示不匹配指定模式的行。
- 示例:
这会查找grep -v "pattern" filenamefilename文件中不包含 “pattern” 的所有行。
-
-n:显示行号。- 解释:在输出的每一行前加上行号,表示匹配的行在文件中的位置。
- 示例:
这会查找grep -n "pattern" filenamefilename文件中与 “pattern” 匹配的所有行,并在每一行前显示行号。
-
-c:统计匹配的行数。- 解释:只输出匹配行的数量,而不是具体的行内容。
- 示例:
这会输出grep -c "pattern" filenamefilename文件中与 “pattern” 匹配的行数。
示例总结:
grep -i "pattern" filename # 忽略大小写搜索
grep -v "pattern" filename # 反转匹配,显示不匹配的行
grep -n "pattern" filename # 显示匹配行的行号
grep -c "pattern" filename # 统计匹配行的数量
这些参数使 grep 命令在文本搜索时更加灵活和强大,适用于各种不同的搜索需求。


















