目录
Linux 目录结构:
在Linux操作系统中,文件系统以一个单一的树状结构开始于根目录(用 /
表示)。以下是一些主要的目录及其用途:
/
(根目录):所有文件和目录的起点。/bin
:包含基本系统命令的二进制文件。/sbin
:包含系统管理员使用的二进制文件。/etc
:包含系统配置文件。/dev
:包含设备文件。/proc
:包含系统进程的信息。/var
:包含变量文件,如日志文件、数据库文件等。/tmp
:用于存放临时文件。/usr
:用于存放用户程序和文件。/home
:包含普通用户的主目录。
Linux 系统:
- 使用正斜杠
/
来分隔路径中的各个部分,表示文件或目录的层级关系。 - 例如:
/home/user/documents/file.txt
表示在根目录下的home
目录中,有一个名为user
的目录,在该目录下有一个名为documents
的目录,最后在该目录下有一个名为file.txt
的文件。 - 出现在开头的/表示:根目录
- 出现在后面的/表示:层次关系
在Linux中,命令有其通用的格式:
command [-options] [parameter]
command: 命令本身
-options: [可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
parameter: [可选,非必填]命令的参数,多数用于命令的指向目标等
[],表示可选的意思
Linux命令的本体就是一个个的二进制可执行程序,和Windows系统中的.exe文件,是一个意思。
ls [-a -l -h] [linux路径]
基本的
ls
命令用于列出指定目录下的子目录和文件列表。如果不指定任何路径,则默认列出当前工作目录的内容。
选项:
-a
: 显示所有文件和目录,包括以点(.
)开头的隐藏文件。-l
: 使用长格式列出文件和目录的详细信息,包括权限、所有者、大小、最后修改日期等。-h
: 与-l
选项配合使用,以可读的格式(例如 KB、MB)显示文件大小。
选项可以组合使用
参数:
[linux路径]
: 指定要列出内容的目录路径。如果不提供此参数,ls
命令会列出当前目录的内容。
cd [Linux路径]
cd
命令是用于在文件系统中更改目录的命令。它允许用户从一个目录移动到另一个目录。
其中 [Linux路径]
是您想要切换到的目录的路径。这可以是一个绝对路径(从根目录开始的完整路径)或相对路径(从当前目录开始的路径)。
cd
命令通常不带选项,它只接受参数。参数指定了您想要切换到的目标目录。
如果您直接执行 cd
命令而不带任何参数(即 cd
),它将带您回到您的HOME目录。这是 cd
命令的一个特殊功能,它提供了一个快速回到起始点的快捷方式。
pwd
pwd
命令用于显示用户当前所在的目录路径,即当前工作目录(Working Directory)的完整路径。
使用 ls
命令可以列出当前目录下的文件和目录,但它不会显示当前目录的路径。因此,如果要确认当前所在的具体路径,使用 pwd
命令是更为恰当的方式。
pwd
命令是 “Print Working Directory” 的缩写,它的作用正是打印出当前的工作目录。
语法非常简单:直接输入 pwd
而不需要任何选项或参数。
当您在终端中输入 pwd
并按回车键时,系统会立即返回当前工作目录的路径。
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以/开头
特殊路径符:
• . 表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致
• .. 表示上一级目录,比如:cd .. 即可切换到上一级目录,cd ../.. 切换到上二级的目录
• ~ 表示HOME目录,比如:cd ~ 即可切换到HOME目录或cd ~/Desktop,切换到HOME内的Desktop目录
mkdir [-p] Linux路径
通过mkdir命令可以创建新的目录(文件夹)。
参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可
-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
-
在没有父目录的情况下直接创建子目录会报错:
尝试在Linux系统中创建一个新目录,但指定的路径中包含的父目录并不存在时,mkdir命令会报错,因为它无法创建一个不存在的父目录的子目录。 -
通过-p选项来创建整个链条:
使用mkdir -p
命令可以一次性创建整个目录链,包括所有必要的父目录。如果父目录已经存在,mkdir不会重复创建它们,只会创建那些不存在的目录。例如,命令mkdir -p /home/user/newdir/subdir
会创建/home/user/newdir
以及其下的/home/user/newdir/subdir
,即使/home/user/newdir
之前不存在。 -
创建文件时需要修改权限,确保操作都在HOME目录内:
在Linux系统中,文件权限决定了用户能否创建、读取、写入或执行文件。如果用户尝试在没有适当权限的目录中创建文件或目录,操作可能会失败。通常,普通用户在自己的HOME目录下拥有完全的权限,但在其他目录下可能没有权限创建文件或目录。
touch Linux路径
通过touch命令创建文件。
touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用
cat Linux路径
通过cat命令查看文件的内容。
cat同样没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用
more Linux路径
more命令同样可以查看文件内容,同cat不同的是:
只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符都可以使用
在查看过程中,用户可以通过输入空格键来翻页,也可以通过输入q来退出查看。
cp [-r] 参数1 参数2
cp命令可以用于复制文件\文件夹,cp命令来自英文单词:copy
- -r选项,可选,用于复制文件夹使用,表示递归
- 参数1,Linux路径,表示被复制的文件或文件夹
- 参数2,Linux路径,表示要复制去的地方
复制文件夹,必须使用-r选项,否则不会生效
mv 参数1 参数2
mv命令可以用于移动文件\文件夹,mv命令来自英文单词:move
- 参数1,Linux路径,表示被移动的文件或文件夹
- 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
目标不存在,则有改名的效果
rm [-r -f] 参数1 参数2 ...参数n
rm命令可用于删除文件、文件夹
- -r选项用于删除文件夹
- -f表示force,强制删除(不会弹出提示确认信息)
- •普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
- •所以一般普通用户用不到-f选项
- 参数1、参数2、......、参数n 表示要删除的文件或文件夹路径,按照空格隔开
rm命令支持通配符 *,用来做模糊匹配
在root管理员用户下执行:
rm -rf /
rm -rf /*
效果等同于在Windows上执行C盘格式化。
which 要查找的命令
可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里
find 起始路径 -name "被查找文件名"
在Linux系统中,我们可以通过find命令去搜索指定的文件。类似在图形化中,通过系统提供的搜索功能,搜索指定的文件。
可以切换到root用户以获得管理员权限,执行命令:su - root,输入密码,确保拥有最大权限。
例如:
查找文件名叫做:test的文件,从根目录开始搜索:
find / -name “test”
被查找文件名,支持使用通配符 * 来做模糊查询。
find 起始路径 -size +|-n[kMG]
按文件大小查找文件
- +、-表示大于和小于
- n表示大小数字
- kMG表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
grep [-n] 关键字 文件路径
通过grep命令,从文件中通过关键字过滤文件行。
- 选项-n,可选,表示在结果中显示匹配的行的行号。
- 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
wc [-c -m -l -w] 文件路径
通过wc命令统计文件的行数、单词数量等。
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
管道符:|
管道符的含义:将管道符左边命令的结果,作为右边命令的输入。
可以嵌套使用
echo 输出的内容
使用echo命令在命令行内输出指定内容。
复杂内容可以用””包围
带有空格或\等特殊符号,使用双引号包围,因为不包围的话,空格后很容易被识别为参数2
通过将命令用反引号(通常也称之为飘号)`将其包围,被`包围的内容,会被作为命令执行,而非普通字符
重定向符:>和>>
- >,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
- >>,将左侧命令的结果,追加写入到符号右侧指定的文件中
tail [-f -num] Linux路径
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改。
- 参数,Linux路径,表示被跟踪的文件路径
- 选项,-f,表示持续跟踪
- 选项, -num,表示,查看尾部多少行,不填默认10行
vi\vim编辑器
vi\vim 文件路径
如果文件路径表示的文件不存在,那么此命令会用于编辑新文件
如果文件路径表示的文件存在,那么此命令用于编辑已有文件
vim兼容全部的vi功能
vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器。
同图形化界面中的 文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
通过vi/vim命令编辑文件,会打开一个新的窗口:命令模式窗口
命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。 此模型下,不能自由进行文本编辑。
输入模式(Insert mode)
也就是所谓的编辑模式、插入模式。 此模式下,可以对文件内容进行自由编辑。
底线命令模式(Last line mode)
以:开始,通常用于文件的保存、退出。
-
命令模式(Command Mode):这是启动vi/vim后默认进入的模式。在命令模式下,可以执行各种编辑命令,如移动光标、删除文本、复制和粘贴等,但不直接输入文本。
-
输入模式(Insert Mode):在命令模式下,通过输入特定的插入命令(如
i
、a
、o
等),可以进入输入模式。在输入模式下,可以像使用普通文本编辑器一样编辑文件。 -
底线命令模式(Last Line Mode):在命令模式下,通过输入冒号
:
可以进入底线命令模式。在这个模式下,您可以执行保存文件、退出编辑器、查找和替换文本等操作。
以下是这些模式之间的转换方法:
-
命令模式到输入模式:在命令模式下,输入以下命令之一可以进入输入模式:
i
:在光标位置前插入a
:在光标位置后插入o
:在光标所在行的下一行插入新行I
:在当前行的行首插入A
:在当前行的行尾插入- 等等。
-
输入模式到命令模式:只需按下
Esc
键即可退回到命令模式。 -
命令模式到底线命令模式:在命令模式下,输入
:
(冒号)即可进入底线命令模式。 -
底线命令模式到命令模式:在底线命令模式下,按下
Enter
键执行命令后,会自动回到命令模式。
命令模式快捷键
在命令模式下,Vi/Vim 提供了许多快捷键来提高编辑效率。以下是一些常用的命令模式快捷键:
光标移动
h
或←
:向左移动光标。j
或↓
:向下移动光标。k
或↑
:向上移动光标。l
或→
:向右移动光标。0
(数字零):移动到行首。^
:移动到行首的第一个非空白字符。$
:移动到行尾。w
:移动到下一个单词的开头。W
:移动到下一个空白分隔的单词的开头。e
:移动到当前单词的末尾。E
:移动到当前空白分隔的单词的末尾。b
:移动到上一个单词的开头。B
:移动到上一个空白分隔的单词的开头。{
:移动到上一段的开头。}
:移动到下一段的开头。gg
:移动到文件的开头。G
:移动到文件的末尾。nG
:移动到第 n 行的开头(n 是行号)。
文本操作
x
:删除光标所在位置的字符。X
:删除光标前一个位置的字符。d
:开始删除操作,后面可以跟移动命令(如dw
删除单词,dd
删除整行)。c
:开始修改操作,后面可以跟移动命令(如cw
修改单词,cc
修改整行)。y
:复制文本,后面可以跟移动命令(如yw
复制单词,yy
复制整行)。p
:在光标后粘贴。P
:在光标前粘贴。u
:撤销最后一次修改。Ctrl + r
:重做最后一次撤销。
搜索和替换
/
:正向搜索(输入模式)。?
:反向搜索(输入模式)。n
:重复上一次搜索。N
:反向重复上一次搜索。
窗口操作
:split
或:sp
:水平分割窗口。:vsplit
或:vsp
:垂直分割窗口。Ctrl + w
+h/j/k/l
:在窗口之间切换。
其他
.
:重复上一次的修改操作。Esc
:退出插入模式、底线命令模式等,返回命令模式。
底线命令模式快捷键
文件操作
:w
:保存文件(write)。:wq
或:x
:保存并退出文件。:q
:退出文件(如果未做修改)。:q!
:强制退出文件,不保存更改。:w filename
:将当前缓冲区保存到另一个文件。:saveas filename
:另存为另一个文件名。
编辑操作
:e filename
:编辑另一个文件。:split filename
:水平分割窗口并打开另一个文件。:vsplit filename
:垂直分割窗口并打开另一个文件。:bn
:跳转到下一个缓冲区。:bp
:跳转到上一个缓冲区。
搜索和替换
:/pattern
:从当前光标位置向下搜索模式。:?pattern
:从当前光标位置向上搜索模式。:%s/old/new/g
:在整篇文章中替换所有的 “old” 为 “new”。:%s/old/new/gc
:在整篇文章中替换所有的 “old” 为 “new”,并在每次替换前进行确认。
设置和选项
:set number
:显示行号。:set nonumber
:不显示行号。:set spell
:开启拼写检查。:set nospell
:关闭拼写检查。:set tabstop=4
:设置制表符宽度为4个空格。:syntax on
:开启语法高亮。:syntax off
:关闭语法高亮。
其他
:!command
:执行一个外部命令。:r !command
:读取外部命令的输出并将其插入到文件中。:history
:显示命令历史。:help command
:显示关于 “command” 的帮助。
底线命令模式下的命令通常以冒号 :
开头,后面跟随命令和参数。
命令选项说明
任何命令都支持:--help 选项, 可以通过这个选项,查看命令的帮助。
如:ls --help, 会列出ls命令的帮助文档
如果想要查看命令的详细手册,可以通过man(manual, 手册)命令查看
比如:
大多数手册都是全英文的,如果阅读吃力,可以通过重定向符:man ls > ls-man.txt,输出手册到文件,然后通过翻译软件翻译内容查看