详细内容见:预防rm误删文件的3种方法
rm
命令替换为一个交互式命令,提示用户确认删除操作:alias rm='rm -i'
这样,每次使用rm
命令时,系统都会提示确认。
trash-cli
工具将删除的文件移动到回收站,而不是直接删除。安装trash-cli
后,可以使用trash-put
命令代替rm
:sudo apt install trash-cli trash-put filename
/etc/fstab
文件来挂载分区为只读:/dev/sdX /mount/point ext4 ro,defaults 0 2
命令:touch filename
tip1:touch file.txt
命令不会覆盖已存在的file.txt
文件。它会更新该文件的最后修改时间。如果文件不存在,则会创建一个新的空文件。
命令:rm filename
其英文全称为remove
常用参数:
-i
:交互模式,删除前询问。interactive
-f
:强制执行操作。这里指强制删除,忽略不存在的文件,不提示确认。force
-r
:递归删除目录及其内容。recursive
容易踩缝纫机的命令:rm -rf
😋
命令:mkdir Directory_name
命令:rmdir Directory_name
或rm -r Directory_name
其英文全称为Remove Directory
区别:rmdir
只能删除空目录,rm -r
可以删除非空目录(因为-r
表示递归地对目录进行操作,其英文为recursive
)
命令:pwd
其英文全称为Print Working Directory
命令:cd
其英文全称为Change Directory
当前位于root
目录,即root用户的家目录~
,linux中用/
表示根目录,
其中.
表示的是当前目录,..
表示的上级目录。
下面是进入share目录并返回根目录的事例:
命令:ls
其英文全称为List
常用参数及使用方法如下:
-a
:显示所有文件和目录,包括隐藏文件(以.
开头的文件或目录)。all
-l
:以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。long
-h
:与-l
结合使用,以人类易读的格式显示文件大小(如K
、M
、G
等)。human-readable
-R
:递归列出子目录的内容。recursive
-t
:按文件修改时间排序显示。time
命令: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
命令:mv
mv
命令和rm
命令的使用方式很相似,但是mv
是用来移动文件或者目录的,同时还可以进行重命名。rm
命令则是用来删除文件或者目录的。
常用参数:
-i
:交互模式,覆盖前询问。
-f
:强制执行操作。这里指强制覆盖。
英文全称为force
-u
:只在源文件比目标文件新时才进行移动,即仅更新较新的文件
英文全称updata
命令: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
- 代表“保存并退出”,相当于 :wq
w
- word (跳转到下一个单词的开头)b
- backup (跳转到上一个单词的开头)0
- beginning (跳转到行的开头)进入编辑模式:
i
- insert (插入,即在光标前插入文本)a
- append (追加,即在光标后插入文本)o
- open (在当前行之下新开一行,并进入插入模式)命令:
cp [选项] 源文件 目标文件or目标目录
cp -r 源目录 目标目录
注意:cp命令复制到目标文件时,默认覆盖 目标文件中的数据
常用选项:
-r
或 -R
:递归复制目录及其内容。-i
:在覆盖文件之前提示确认。-v
:显示正在复制的文件。-u
:只在源文件比目标文件新,或目标文件不存在时复制。-n
(no-clobber),cp
命令不会覆盖已存在的目标文件,等于说不执行cp命令(没啥用)讲test.txt文件的内容复制到demo.txt中
cp命令覆盖目标文件内容
命令: ln
ln
可用于创建硬链接或符号链接(软链接)ln
命令也可用于在文件系统中创建硬链接或符号链接(软链接)。
以下是详细说明:
硬链接是文件系统中的多个文件名指向同一个物理文件数据块。删除任何一个硬链接,文件数据不会被删除,直到所有指向该数据块的链接都被删除。
注意:硬链接就是给一个数据块起了很多个别名。故修改源文件,硬链接文件内容也会改变
命令格式:
ln 源文件 目标文件
示例:
这将在当前目录中创建一个名为 woidemo.txt
的硬链接,指向 hdemo.txt
。两者共享相同的数据块。
符号链接是一个指向另一个文件或目录的路径名的文件。删除符号链接不会影响目标文件,但删除目标文件会导致符号链接失效。
注意:修改符号链接文件内容,源文件也会改变
ln -s 源文件 目标文件
这将在当前目录中创建一个名为 nm.txt
的符号链接,指向 hdemo.txt
。nm.txt
只是指向 hdemo.txt
的路径。
常用选项:
-s
:创建符号链接。-f
:强制创建链接,覆盖已有文件。-v
:详细模式,显示创建的链接信息。-i
:交互模式,文件存在则提示用户是否覆盖。-n
:把符号链接视为一般目录。注意:
如果不指定 /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
或 --expression=
:在命令行中直接指定脚本进行文本处理。例如:
sed -e 's/old/new/' filename
这会将文件 filename
中的 “old” 替换为 “new”。
注意:源文件实际内容未发生改变
-f
或 --file=
:从指定的脚本文件中读取脚本进行文本处理。例如:
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”。
注意:源文件实际内容未发生改变
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
命令非常简单但功能强大,适用于各种文本输出场景,无论是直接输出文本,还是在脚本中输出变量值或格式化文本。
-i
:忽略大小写进行搜索。
grep -i "pattern" filename
这会查找 filename
文件中与 “pattern”(忽略大小写)匹配的所有行。-v
:反转匹配,即显示不匹配的行。
grep -v "pattern" filename
这会查找 filename
文件中不包含 “pattern” 的所有行。-n
:显示行号。
grep -n "pattern" filename
这会查找 filename
文件中与 “pattern” 匹配的所有行,并在每一行前显示行号。-c
:统计匹配的行数。
grep -c "pattern" filename
这会输出 filename
文件中与 “pattern” 匹配的行数。grep -i "pattern" filename # 忽略大小写搜索 grep -v "pattern" filename # 反转匹配,显示不匹配的行 grep -n "pattern" filename # 显示匹配行的行号 grep -c "pattern" filename # 统计匹配行的数量
这些参数使 grep
命令在文本搜索时更加灵活和强大,适用于各种不同的搜索需求。