目录
1. 目录结构介绍
2. Linux命令基础
2.1 命令和命令行
2.2 格式
3. 常用命令
3.1 产看目录命令——ls
3.2 通配符
3.3 改变工作目录命令——cd
3.4 查看当前路径命令——pwd
3.5 创建新的目录命令——mkdir
3.6 创建文件目录命令——touch
3.7 查看文件内容命令——cat
3.8 查看文件内容命令——more
3.9 复制文件/文件夹命令——cp
3.10 移动文件或文件夹——mv
3.11 删除文件或目录命令——rm
3.12 查找命令的程序文件命令——which
3.13 查找指定文件命令——find
3.13.1 按照文件名进行查找
3.13.2 按照文件大小进行查找
3.14 在命令行内输出指定内容——echo
3.15 反引号`
3.16 重定向符
3.17 查看文件尾部内容以及跟踪文件的最新更改命令——tail
3.18 通过关键字过滤文件——grep
3.19 数量统计——wc
3.20 管道符
1. 目录结构介绍
在了解Linux的目录结构前,我们先了解一下Windows的,Windows系统可以拥有多个盘符。如C盘、D盘、E盘等:
在Windows系统中,路径之间的层级关系,使用:\来表示,例如表示hello.txt文件:
D:\data\work\hello.txt
但Linux没有盘符的概念,Linux只有一个根目录/,所有的文件都在它的下面,Linux的目录结构是一个树形结构:
在Linux系统中,路径之间的层级关系,使用:/来表示,例如表示hello.txt文件:
/usr/local/hello.txt
2. Linux命令基础
2.1 命令和命令行
命令:即Linux程序。一个命令就是一个Linux的程序。命令没有图形换页面,可以在命令行(终端中)提供字符化的反馈。
命令行:即Linux终端(Terminal),是一种命令提示符页面,以纯“字符”的形式操作系统,可以使用各种字符化命令对系统发出操作指令。
2.2 格式
command [-options] [parameter]
command:命令本身
-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
语法中的[],表示可选的意思
示例:ls -l /home/itheima,ls是命令本身,-l是选项,/home/itheima是参数,意思是以列表的形式,显示/home/itheima目录内的内容。
3. 常用命令
3.1 产看目录命令——ls
功能:产看目录
用法:ls [选项] [目录或文件]
选项:常用参数,-l、-a、-d、-f、-h等。
选项 | 参数含义 |
-l | 单列表输出 |
-a | 列表目录(文件夹)中所有文件。包括以“·”开头的隐藏文件 |
-d | 将目录名像其他文件一样列出,而不是只列出目录内容 |
-f | 不排序目录内容,按它们在磁盘上的存储的顺序列出 |
-h | 表示易于阅读的形式,列出文件的大小,如K,M,G(需要和-l组合使用) |
单列表输出:
列表目录(文件夹)中所有文件。包括以“·”开头的隐藏文件。
语法中的选项是可以组合使用的,比如-l和-a可以组合使用,写法:
ls -l -a
ls -la
ls -al
表示易于阅读的形式,列出文件的大小,如K,M,G:
3.2 通配符
通配符 | 含义 |
* | 代表任意个数字符 |
? | 代表任意一个字符,至少1个 |
[] | 表示可以匹配字符组中的任意一个 |
[abc] | 匹配a,b,c中的任意一个 |
[a-f] | 匹配从a到f范围内的任意一个字符 |
输入ls *.txt,查找所有以 .txt 结尾的文件:
输入ls test?.txt查找所有文件名为 test 后跟任意一个字符并以 .txt 结尾的文件,如①所示,它可以匹配 test1.txt、testA.txt,但不匹配 test10.txt。
输入ls test??.txt查找所有文件名为 test 后跟任意二个字符并以 .txt 结尾的文件,如②所示:
输入 rm [t]*.txt 删除以 t 开头的 .txt 文件,同样适用于其他操作例如查找等,这里只演示一种:
3.3 改变工作目录命令——cd
当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录,我们可以通过cd命令更改当前所在的工作目录。
功能:改变工作目录
用法:cd 目录名
常用特殊符号:~、-、·、··、
特殊符号 | 含义 |
~ | 表示用户主目录,即HOME变量指定的目录,如root用户的主目录为/root |
- | 表示前一个工作目录 |
·· | 表示上级目录 |
· | 表示当前目录 |
首先ls,查询当前目录下的文件,使用cd /跳转到根目录,再次使用ls查询当前目录下文件,可以发现已经跳转到根目录下,输入cd命令不携带参数,使用ls查询会发现又返回到主目录下了:
输入cd加路径,进入相应的文件位置:
如何区分上两级目录呢?
拓展:
绝对路径:以根目录为起点,描述路径的一种写法,路径描述以“/”开头。
相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以“/”开头。
3.4 查看当前路径命令——pwd
通过ls来验证当前的工作目录,其实是不恰当的,我们可以通过pwd命令,来查看当前所在的工作目录。
功能:查看当前路径
用法:pwd [选项]
选项:-l、-p
选项 | 参数含义 |
-l | 打印逻辑上的工作目录 |
-p | 打印物理上的工作目录 |
3.5 创建新的目录命令——mkdir
功能:创建新的目录
用法:mkdir [选项] 目录名
选项:-m、-p等;
选项 | 参数含义 |
-m | 对新建目录设置存取权限 |
-p | 可以是一个路径名称,若此路径中的某些目录不存在,再加上此选项后,系统将自动建立那些不存在的目录。 |
以下是几种创建方式,mkdir test1以相对路径创建,mkdir /home/my/test2以绝对路径创建,mkdir ~/test3在工作目录下创建,mkdir ./test在当前目录下创建:
注意:创建文件夹需要修改权限,需要确保操作均在HOME目录内,不要在HOME外操作
涉及到权限问题,HOME外无法成功。
拓展,将刚刚创建的文件删除使用rm -r 目录名命令。例如:
这里我们需要思考,上面全是创建的单目录,若是想创建多级目录,需要怎么做呢?我们要是直接创建,如下:
可以发现会报错,那时因为上级目录test1和work并不存在,所以无法创建666目录,因此可以通过-p选项,将一整条都创建完成:
3.6 创建文件目录命令——touch
功能:创建一个不存在的文件或者用来修改文件的时间戳
用法:touch [选项] 文件名
选项:-r,-t,-d等
- touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用
选项 | 参数含义 |
-r | 把指定文档或目录的日期时间设成与参考文档或目录相同的日期时间 |
-t | 按指定时间修改文件的访问时间,其他时间没有更新 |
-d | 修改文件的访问时间 |
如何区分文件和文件夹呢?可以看到如下,开头是d的表示是文件,-的表示是文件夹:
3.7 查看文件内容命令——cat
功能:准备好文件内容,可以通过cat产看内容
用法:cat Linux路径
- cat无选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符均可以使用
拓展:我们刚刚使用touch创建的文件实际里面没有内容,我们可以使用vi编辑器为其添加内容:
首先输入vi test.txt命令:
刚进入是命令模式,按i进入插入模式,输入hello world!!!:
输入完后,点击Esc退回命令模式,点击:+w+q进行回车保存退出:
由于vi编辑器篇幅,后续会有详细介绍,这里只是简单的使用。
回归正题,此时test.txt文件内已经有内容了,我们可以使用cat test.txt进行查看:
3.8 查看文件内容命令——more
功能:准备好文件内容,可以通过more产看内容
用法:more Linux路径
- more无选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符均可以使用
more和cat不同的是:
cat是直接将内容全部显示出来
more支持翻页,如果文件内容过多,可以一页页的展示
我们可以找到Linux系统的一个内置文件,例如:/etc/services。
首先使用cat命令:
使用more命令:
其中左下角为当前文档查看的进度,按空格进行翻页,按q退出:
3.9 复制文件/文件夹命令——cp
功能:复制命令
用法:cp [选项] 参数1 参数2
参数1:Linux路径,表示被复制的文件或文件夹
参数2:Linux路径,表示要复制去的地方
cp [选项] 源文件或目录 目标文件或目录
选项:-a、-d、-f、-i、-p、-r等
选项 | 参数含义 |
-a | 保留链接、文件属性,并复制子目录 |
-d | 复制时保留链接 |
-f | 删除已经存在的目标文件而不提示 |
-i | 在覆盖目标文件之前给出提示,要求用户确认,回答y时,目标文件将被覆盖,而且是交互式覆盖 |
-p | 此时cp命令除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中 |
-r | 若给出的源文件是一个目录文件,cp命令将递归复制该目录下的所有的子目录和文件,此时目录文件必须为一目录名 |
将test.txt复制到相对路径:
将test.txt复制到绝对路径:
可以发现以上两种方法均可以复制成功:
对文件夹的复制,需要注意使用-r:
3.10 移动文件或文件夹——mv
功能:移动文件/文件夹
用法:mv [选项] 参数1 参数2
参数1:Linux路径,表示被移动的文件或文件夹
参数2:Linux路径,表示要移动去的地方,如果目标不存在,则进行改名确保目标存 在
mv [选项] 源文件或目录 目标文件或目录
选项:-f、-i等
选项 | 参数含义 |
-i | 若mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,并要求用户回答y或n,这样可以避免覆盖文件 |
-f | 禁止交互操作。在mv操作要覆盖某个已有的目标文件时不给任何指示,在指定此选项后,i选项将不再起作用 |
可以先查看,到我们之前创建的一些文件和文件夹,将通过③进行文件的移动,将文件test.txt移动文件example当中,可以通过④或者⑤两种方式进行查看:
改名可以发现,下图通过mv命令将text1.txt改为test3.txt:
文件夹的移动,下图通过mv命令将example1移动到example:
参数-i的使用,若mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,并要求用户回答y或n,这样可以避免覆盖文件:
3.11 删除文件或目录命令——rm
功能:删除文件/文件夹
用法:rm [选项] 文件/目录
(也可以写作:rm [选项] 参数1 参数2.....参数N)
参数1、参数2、.....、参数N表示要删除的文件或文件夹路径,按照空格隔开
选项:-f、-r等
选项 | 参数含义 |
-i | 进行交互式删除 |
-f | 忽略不存在的文件,但从不给出提示,强制删除 (普通用户删除内容不会弹出提示,只有root管理员用户删除内容时会有提示,所以一般普通用户用不到-f选项) |
-r | 指示rm命令将参数中列出的全部目录和子目录均全部删除 |
首先,我们先来删除文件,如下图:
删除文件夹,可以发现不能直接使用rm命令,需要加上-r:
删除多个文件或者文件夹,①时删除多个文件夹,②是删除多个文件,③是同时删除文件和文件夹:
可以通过su - root并输入密码123456回车(和普通用户默认一样)临时切换到root用户体验,如①所示,若是密码认证失败如②所示更改密码,再次输入如③即可看到进入root用户:
若是无法正常进入root,可以参考:
如何在Ubuntu进入root模式以及gcc的安装_ubuntu root-CSDN博客
如何退出root:
方法一:输入exit,回车;
方法二:su 自己的用户名;
方法三:Ctrl+d。
注意!!!
千万千万不要在root管理用户下执行:rm -rf / 或者 rm -rf /*
效果等同在windows上执行C盘格式化。
3.12 查找命令的程序文件命令——which
在前面学习的Linux命令,其实他们的本体就是一个个的二进制可执行程序,与windows系统中的.exe文件,是一个意思,可以通过which命令,查看所使用的一系列命令的程序文件存放在哪里。
语法:which 要查找的命令
3.13 查找指定文件命令——find
3.13.1 按照文件名进行查找
功能:查找文件
用法:find 起始路径 -name “被查找的文件名”
为了方便后续搜索拥有最大权限,我们可以切换到root用户,方法参考3.10章节。
搜索根目录下所有test文件,会发现如下:
这里同样可以使用通配符,具体请看本文通配符章节。
3.13.2 按照文件大小进行查找
功能:查找文件
语法:find 起始路径 -size +|-n[kMG]
- +、-表示大于和小于
- n表示大小数字
- kMG表示大小单位,k(小写字母)表示kb,M表示MG,G表示GB
查找小于10KB的文件,由于文件太多可以使用Ctrl+c进行强制停止:
查找大于10MB的文件:
查找大于1GB的文件,我们可以随机挑选一个文件查看是否是大于1GB的文件:
3.14 在命令行内输出指定内容——echo
功能:在命令行内输出指定内容
语法:echo 输出的内容
无需选项,只有一个参数,表示要输出的内容,复杂内容可以用“”包围
例如:带有空格或者\等特殊符号,建议使用双引号包围,因为不包围,空格后很容易 识别成参数2,虽然在这里暂时不受影响
3.15 反引号`
对于①我们的本意是想输出工作路径,但是pwd被当作普通字符输出了,我们可以使用反引号将其包围,被`包围的内容,会被作为命令执行,为非普通字符:
3.16 重定向符
>,将左侧命令结果,覆盖写入到符号右侧指定文件中
可以看3.7小节,使用①②③创建一个文件,并给里面写入内容,通过④将左侧命令结果,覆盖写入到符号右侧指定文件中,通过⑤查看内容是否更改:
>>,将左侧命令结果,追加写入到符号右侧指定文件中,会将内容追加到已有文件的末尾
3.17 查看文件尾部内容以及跟踪文件的最新更改命令——tail
功能:查看文件尾部内容,跟踪文件的最新更改
语法:tail [选项] Linux路径
选项:-f,-num等
选项 | 参数含义 |
-f | 表示持续跟踪 |
-num | 表示查看尾部多少行,不填默认10行 |
通过重定向符将ls的内容写入到test当中:
通过tail test.txt进行查看,可以看到只列出了从后往前数的十个数据:
对于-num的使用:
对于 -f 的使用,需要远程控制,对test.txt文件写入数据,下面空白部分会实时显示所加入的数据(Ctrl+c退出):
3.18 通过关键字过滤文件——grep
功能:通过关键字过滤文件
语法:grep [选项] 关键字 文件路径
选项:-n,-v,-i等
- 关键字:表示过滤的关键字,带空格或其他特殊符号,建议使用“”将关键字包围起来
- 文件路径:表示要过滤的文件路径,可作为内容输入端口
选项 | 含义 |
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(类似于求反) |
-i | 忽略大小写 |
3.19 数量统计——wc
功能:统计文件的行数、单词数量等
语法:wc [选项] 文件路径
选项:-c、-m、-l、-w等
- 文件路径,可作为管道符的输入
选项 | 含义 |
-c | 统计bytes数量 |
-m | 统计字符数量 |
-l | 统计行数 |
-w | 统计单词数量 |
对每个选项的使用:
3.20 管道符
含义:将管道符左边的命令的结果,作为右边命令的输入
(可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左 右分为两端,左端塞东西(写),右端取东西(读))
管道符:|
在3.18我们知道,grep的文件路径:表示要过滤的文件路径,可作为内容输入端口,那么我们通过cat查看test.txt的文件,将查看的内容给右边,这样grep is+内容,就会对该内容进行筛选:
同样也可以将其适用于wc命令:
同样左边也不一定只能cat,只要能产生内容输出的皆可以使用,例如:ls。
Linux学习之vi/vim详细介绍_vi vim-CSDN博客
Linux学习_时光の尘的博客-CSDN博客