目录
Linux目录结构以及路径表达形式
在windows系统中,系统可以有多个盘符,比如C盘、D盘、E盘等等,但是Linux没有盘符这个概念,只有一个根目录 / ,和windows一样是树形结构,所有的文件都在他的下面,如图:
windows目录:
Linux目录:
在Windows中,路径之间的层级关系用\来表示,而在Linux中用/表示。
比如在D盘的date目录下面有一个main.cpp文件,我们就这么表示他的路径:
D:\date\main.cpp
D:表示D盘,\表示层级关系
比如在Linux根目录下面也有一个 date目录,下面有也一个main.cpp文件,我们就这么表示他的路径:
/date/main.cpp
其中第一个/表示根目录,后面的/表示层级关系。
Linux命令
学习Linux,本质上就是在学习在命令行下熟练使用Linux的各种命令,他的命令行的操作效率是远大于他的图形化操作效率的。
Linux命令基础格式
在Linux系统中,无论是什么命令,都有其通用的格式:
command [-options] [parameter]
其中command是命令本身,-options是命令的一些选项,parameter是命令的参数,后面两者是可选非必填的。
例如:
ls -l /home/main.cpp 就是用列表的形式展示/home/main.cpp里面的内容;
cp -r text1 text2 就是让cp
命令以递归的方式复制文件夹text1变成text2。
所以Linux命令就是由本体、选项、参数三部分构成的。
ls命令
ls(list)的命令的作用就是以平铺的形式列出当前工作目录下的内容,默认情况下是home目录(默认在:/home/用户名)。
部分ls命令的选项以及选项的组合使用:
-
-l:
- 作用:以长格式显示文件和目录的详细信息,包括文件类型、权限、硬链接数、所有者、所属组、文件大小、修改时间及文件名等。
- 示例:
ls -l
-
-a:
- 作用:显示所有文件和目录,包括以点(
.
)开头的隐藏文件和目录。 - 示例:
ls -a
- 作用:显示所有文件和目录,包括以点(
-
-h:
- 作用:与
-l
选项结合使用,以人类可读的格式显示文件大小,将文件大小以更直观的单位(如 KB、MB、GB 等)显示出来。 - 示例:
ls -lh
- 作用:与
-
-t:
- 作用:按照文件的修改时间进行排序,最新修改的文件排在最前面。
- 示例:
ls -lt
-
-S:
- 作用:按照文件大小进行排序,从大到小排列。
- 示例:
ls -S
-
-r:
- 作用:反转排序顺序。可与其他排序选项(如
-t
、-S
等)结合使用,改变原本的排序方向。 - 示例:
ls -rt
- 作用:反转排序顺序。可与其他排序选项(如
-
-R:
- 作用:以递归的方式显示目录及其子目录下的所有文件和目录信息。
- 示例:
ls -R
目录切换命令(cd/pwd)
使用cd(change directory)命令就可以切换当前的工作目录,例如,在默认情况下我们的默认工作目录在home目录,我们在finalshell用cd切换到根目录:
如果cd后面不接参数,默认情况下是回到home目录。
上述我们用ls来验证当前的工作目录是不恰当的,它显示的是当前的工作目录里面的内容。我们可以用pwd(print working directory)命令来查看当前的工作目录:
相对路径和绝对路径
相对路径:
比如我们想找到根目录下lib的games目录:
相对路径就是以当前目录为起点,路径的描述不需要以/为开头;
绝对路径:
如果想找的路径不在当前目录的下面,就不能用相对路径来查找,就必须使用绝对路径查找。
Linux中的一些特殊路径符号:
“.”(当前目录符)
-
含义及作用:“.” 表示当前目录本身。在一些情况下,比如执行某个程序或脚本时,如果需要指定在当前目录下进行操作,可以使用 “.” 来表示当前目录的路径。
-
示例:若有一个脚本文件 “test.sh” 位于当前目录下,要执行它,可以输入 “./test.sh”,这里的 “.” 就是指当前目录,告诉系统在当前所在的目录中寻找并执行这个脚本。
-
“..”(上级目录符)
-
含义及作用:“..” 用于指代当前目录的上一级目录。在进行文件路径操作时,比如切换目录(使用 “cd” 命令)等,可以利用 “..” 快速回到上一级目录或者构建相对路径。
-
示例:假设当前目录是 “/home/user/documents”,那么执行 “cd..” 命令,就会切换到 “/home/user” 目录,也就是当前目录的上一级目录。如果执行“cd../..”那么就会切换到“/home"目录。
-
“-”(上一次所在目录符)
-
含义及作用:“-” 用于表示上一次所在的目录。在切换目录的操作中,当需要频繁在两个相邻目录之间来回切换时,可以利用 “-” 这个符号快速实现。
-
示例:假设先从目录 “A” 切换到目录 “B”,然后执行 “cd -”,就会再次回到目录 “A”,也就是上一次所在的目录。
-
“~”(home符)
- 含义及作用:“~” 代表当前用户的主目录。每个用户在 Linux 系统中都有一个专属的主目录,通常位于 “/home” 目录下(对于普通用户),以用户的用户名作为目录名。使用 “~” 可以方便地在命令中指定用户主目录相关的路径。
- 示例:要查看用户主目录下的文件列表,可以输入 “ls ~”,这就相当于输入 “ls /home/user”(假设当前用户是 “user”),会列出用户主目录下的所有文件和目录。
创建目录命令(mkdir)
基础语法:mkdir [选项] 目录名
例如我们在home目录下简单创建一个yong文件夹:
我们可以看到在home路径下多了个yong文件夹。
部分常用选项参数:
-p:
- 作用:递归创建目录。如果要创建的目录路径中包含不存在的父目录,使用该选项可以自动创建这些父目录,确保目录创建成功。
- -v:
- 作用:在创建目录时显示详细的创建过程信息,即会输出正在创建的目录名称等相关信息。
例如如果我们想创建一个层级文件夹,我们就必须加上选项参数,不然会创建失败,因为目录路径中 包含不存在的父目录:
以上是在home文件夹内创建,如果脱离home目录创建文件夹会涉及权限问题,例如:
文件操作命令
1、touch 创建文件
touch linux路径
touch命令没有选项,参数必填,表示要创建的文件路径,相对,绝对,特殊路径都可以使用。例如:
2、cat 查看文件内容
cat和touch命令一样没有选项,参数必填,表示要查看的文件路径,相对,绝对,特殊路径都可以使用。
比如我们在上述创建的yong.txt写上以下内容:
3、more 查看文件内容
more和cat一样可以查看文件内容,但是和cat不一样的是 ,cat是直接把内容显示出来,more支持翻页,如果文件内容过多,可以一页一页展示。
查看的过程中通过空格翻页,通过q退出查看。
4、cp(copy)命令复制文件夹
语法:cp [-r] 参数1 参数2
其中-r选项可选,用于复制文件夹,参数1是被复制的文件或者文件夹,参数2是要复制去的地方。
5、mv(move)移动文件或文件夹
语法:mv 参数1 参数2
参数1表示被移动的文件或者文件夹,参数2表示要移动的地方。
如果目标不存在,则自身进行改名,确保目标存在。
当使用 mv
命令尝试把一个文件移动到另一个文件时,实际上是将源文件移动到目标文件所在的目录,并将其重命名为目标文件的名称。
6、rm(remove)删除文件、文件夹
语法:rm [-r -f] 参数1 参数2 ....参数N
-r和cp一样,用于文件夹操作;-f表示force,表示强制删除(不会弹出提示确认信息)
rm命令支持通配符*,匹配任意内容,用来做模糊匹配:
*test,表示匹配任意以test开头的内容
test*,表示匹配任意以test结尾的内容
*test*,表示匹配任意包含test的内容
我们可以切换到root用户,普通用户下不会弹出确认信息:
查找操作
which命令
Linux命令他们的本体本质上就是一个个的二进制可执行程序,和windows中的.exe文件是一个意思。我们可以用which命令查看所使用的一系列命令程序的文件放哪里。
例如:
find命令-按文件名查找文件
语法:find 起始路径 -name "被查找文件名"
find 起始路径 -size +/- n[KMG]
find命令也可以搭配通配符来进行模糊名称查找。
-echo -tail -重定向符
echo命令
可以使用echo命令在命令行输出指定内容。
语法:echo "输出的内容"
反引号 `
被他包围的内容会被当做命令去执行,而不是普通字符。
命令替换功能:
反引号允许将一个命令的输出作为另一个命令的参数来使用。当 Shell(如 Bash 等常见的 Linux Shell)遇到反引号包裹的内容时,会先执行反引号内的命令,然后将该命令的输出结果替换到原本反引号所在的位置,作为外层命令的参数继续执行外层命令。
重定向符:>和>>
>将左侧命令的结果覆盖写道右侧的指定文件中;
>>将左侧命令的结果追加写道右侧的指定文件中;
例如:
只要能产生结果的都可以往右边写。比如:
tail命令
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改。
语法:
tail [-f -num] Linux路径
其中选项-f表示持续跟踪,-num表示查看尾部多少行,不填默认是十行。
Ctrl+c可以强制停止持续跟踪。
-grep -wc -管道符
grep
通过grep命令,可以从文件中通过关键字过滤文件行。
语法:grep [-n] 关键字 文件路径
选项 -n可选,表示结果中显示匹配的行号。
参数关键字和文件路径必须填,代表要过滤的关键字和过滤内容的文件路径,可作为内容输入端口。
例如:
wc
可以通过wc命令统计文件的行数,单词数量等。
语法:wc [-c -m -l -w] 文件路径
选项 -c:统计bytes数量。
-m:统计字符数量。
-l:统计行数。
-w:统计单词数量。
参数文件路径可作为内容输入端口。
管道符 |
管道符的含义是:将管道符左边命令的结果作为右边命令的输入。
例如搭配grep、wc:
比如我们还可以统计文件数量等:
这些只是管道符在Linux中的部分常见应用场景,实际上它还有很多其他的应用,通过不同命令的嵌套组合可以实现各种各样的复杂任务。
vi\vim编辑器
vi 和 vim 都是在 Linux 和 Unix 系统中广泛使用的文本编辑器,vim 可以看作是 vi 的增强版。
不仅能编辑文本,而且还具有shell程序编辑功能,语法增亮、自动补全、多窗口操作、插件拓展等等。
vim有三个工作模式,默认在命令模式中。
在这个模式下,不能直接输入文本内容,但可以通过输入各种特定的命令字符来执行众多操作,比如移动光标、删除文本、复制粘贴文本、查找替换等。
从命令模式切换到输入模式有多种方式,如按 “i” 键可在当前光标位置插入文本;按 “a” 键可在当前光标后插入文本;按 “o” 键可在当前行下方新开一行并插入文本;按 “I” 键可移动到当前行的第一个非空白字符处并插入文本;按 “A” 键可移动到当前行的末尾并插入文本;按 “O” 键可在当前行上方新开一行并插入文本。按下Esc可切换命令操作。
在输入模式下,就如同在普通文本编辑器中一样,可以正常输入文字、数字、符号等各种字符内容,用于对文本进行编辑、添加新内容等操作。
从命令模式输入 “:” 即可进入底线命令模式
在底线命令模式下,主要用于执行一些全局的操作和设置,比如保存文件、退出编辑器、对文件进行查找替换等操作。
Vim 编辑器拥有丰富的键盘快捷指令,以下是一些常见且实用的:
光标移动类
- 基本方向移动:
- h:向左移动光标,相当于左箭头键。
- j:向下移动光标,相当于下箭头键。
- k:向上移动光标,相当于上箭头键。
- l:向右移动光标,相当于右箭头键。
- 以单词为单位移动:
- w:移动到下一个单词的开头。
- b:移动到上一个单词的开头。
- e:移动到当前单词的结尾。
- 行首行尾移动:
- 0(数字零):移动到当前行的开头(不包括缩进)。
- ^:移动到当前行的第一个非空白字符处。
- $:移动到当前行的末尾。
- 屏幕移动:
- Ctrl + f:向下滚动一屏。
- Ctrl + b:向上滚动一屏。
- Ctrl + d:向下滚动半屏。
- Ctrl + u:向上滚动半屏。
文本编辑类
- 插入模式切换:
- i:在当前光标位置插入文本(已介绍过)。
- a:在当前光标后插入文本(已介绍过)。
- o:在当前行下方新开一行并插入文本(已介绍过)。
- I:移动到当前行的第一个非空白字符处并插入文本。
- A:移动到当前行的末尾并插入文本。
- O:在当前行上方新开一行并插入文本。
-
删除操作:
- x:删除光标所在位置的一个字符。
- X:删除光标前面的一个字符。
- dd:删除当前行。
- D:删除从光标位置到当前行末尾的所有内容。
- dw:删除从光标位置到下一个单词开头的所有内容。
- db:删除从光标位置到上一个单词开头的所有内容。
-
复制粘贴操作:
- yy:复制当前行。
- p:将复制或剪切的内容粘贴到光标所在位置之后。
- P:将复制或剪切的内容粘贴到光标所在位置之前。
- y$:复制从光标位置到当前行末尾的所有内容。
- y^:复制从光标位置到当前行第一个非空白字符处的所有内容。
- yw:复制从光标位置到下一个单词开头的所有内容。
- yb:复制从光标位置到上一个单词开头的所有内容。
查找替换类
- 查找操作:
- / 关键词:在文档中向下查找指定的关键词,输入关键词后按回车键开始查找,按 “n” 键可继续查找下一个匹配项,按 “m” 键可查找上一个匹配项。
- ? 关键词:在文档中向上查找指定的关键词,同样输入关键词后按回车键开始查找,按 “n” 、“m” 键的作用与向下查找时相同。
- 替换操作:
- :s / 旧词 / 新词 /g:在当前行中将所有的旧词替换为新词,“g” 表示全局替换,如果不写 “g”,则只替换第一个匹配项。
- :% s / 旧词 / 新词 /g:在整个文档中将所有的旧词替换为新词。
文件操作类
- 保存文件:
- :w:保存当前正在编辑的文件。
- :w!:强制保存当前文件,即使文件有修改但未保存且可能存在权限问题等情况。
- 退出编辑器:
- :q:退出 vim 编辑器,如果文件有修改未保存,会提示错误信息。
- :q!:强制退出 vim 编辑器,会丢失修改的内容。
- :wq:保存并退出 vim 编辑器。
- :x:保存并退出 vim 编辑器,功能与:wq 类似,但如果文件未修改,:x 不会更新文件的修改时间。
结语
以上就是关于部分Linux基础命令的阐述和总结,如有不当还请指出~😎😎😎.