?Linux的目录结构是一个树型结构
Windows系统可以拥有多个盘符,如C盘、D盘、E盘等
Linux没有盘符这个概念,只有一个根目录/,所有文件都在它下面。
Linux路径的描述方式
使用 ?/ 来表示
/usr/Local/hello.txt
出现在开头的 / 表示为 根目录
出现在后面的 / 表示为 层次关系
课后练习:
请根据语言描述,写出对应的Linux路径
1.在根目录下有一个文件夹test,文件夹内有一个文件hello.txt,去描述文件的路径
/test/hello.txt
2.在根目录下有一个文件star.txt,去描述文件的路径
/star.txt
3.在根目录下有一个文件夹itcast,在itcast文件夹内有文件夹star,在star文件夹内有文件hello.txt,请描述文件的路径。
/itcast/star/hello.txt?
?2.1 什么是命令、命令行
命令: 即Linux操作指令,是系统内置的程序,可以以字符化的形式去使用。
命令行:即Linux终端,可以提供字符化的操作页面供命令执行。
2.2 Linux命令的基础格式
command [-options]? [parameter]
command : 命令本身
-options :命令的一些选项,可以通过选项控制命令的行为细节。
parameter : 命令的参数,多数用于命令的指向目标等(多数为文件路径)。
注:语法中[],表示可选的意思。?
示例:
ls -l /home/itheima? ? ? ? ?ls是命令本身,-l是选项,/home/itheima是参数
这条命令的含义是以列表的形式,显示/home/itheima目录内的内容
2.3 ls命令的参数和选项
2.3.1?ls命令
作用:列出目录下的内容
语法:ls [-a -l -h] [Linux路径]
-a 显示隐藏文件(以 .开头的文件或文件夹默认被隐藏)
-l 以列表(竖向排列)的形式展示内容,并展示更多内容。
-h 显示文件的大小单位(h必须和l一起使用)
可以混搭使用
以下写法的功能都是-a 和-l 的功能
ls -la
ls -al
ls -l -a?
2.3.2 HOME目录
每一个用户在Linux系统的专属目录,默认在:/home/用户名
2.3.3 当前工作目录?
?Linux命令行在执行命令的时候,需要一个工作目录,打开命令行程序(终端)默认设置工作目录在用户的HOME目录
3.1 cd (Change Directory)切换工作目录
语法 :cd [Linux路径]?
cd? ?Linux路径 | 切换到该路径目录下 |
cd | 回到用户的HOME目录 |
?3.2 pwd(Print Work Directory) 查看当前工作目录
语法:pwd
课后练习
请使用cd命令并结合ls命令,任意在Linux文件系统内探索。并尝试找出名字叫做games的文件夹在哪里。
4.1 绝对路径
以根目录为起点,描述路径的一种写法,路径描述以 / 开头。
4.2 相对路径
以当前目录为起点,描述路径的一种写法,路径描述无需以 / 开头.。
4.3 特殊路径
特殊路径符 | 含义 | 示例 |
. | 当前目录 | cd ./Desktop |
.. | 上一级目录 | cd .. 或 cd ../.. |
~ | 用户的HOME目录 | cd ~ 或 cd ~/Desktop |
?
?./test/hello.txt 或 test/hello.txt
../test/hello.txt
~/test/hello.txt
?mkdir (Make Directory)
语法: mkdir [-p] Linux路径
参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可。
-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录。
注意:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作涉及到权限问题,HOME外无法成功。
?
mkdir -p ~/itacst/itheima/nice/666?
?6.1 touch 创建文件
语法:touch Linux路径
touch命令无选项,参数必填,表示在该路径下创建文件。
6.2 cat 查看文件内容
语法:cat Linux路径
cat同样没有选项,只有必填参数:被查看的文件路径,相对、绝对、特殊路径符都可以使用。
6.3 more 查看文件内容(支持翻页)
语法:more Linux路径
同样没有选项,只有必填参数:被查看的文件路径,相对、绝对、特殊路径符都可以使用。
在查看的过程中
按空格下一页
按B上一页
按回车下一行
按q退出查看
7.1 cp 复制文件或文件夹
语法:cp [-r] 参数1 参数2
-r选项,可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件或文件夹
参数2,Linux路径,表示要复制去的地方
示例
?将当前目录下的test.txt文件复制到当前文件夹的test2.txt
cp test.txt test2.test
?将当前目录下的test文件夹复制到当前目录下的test2文件夹
cp -r test test2?
?7.2 mv 移动文件或文件夹
语法:mv 参数1 参数2
参数1? ? ? ? Linux路径,表示被移动的文件或文件夹
参数2? ? ? ? Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
?示例
将当前目录下的test.txt移动到当前目录的test2.txt(若当前目录下无该文件,则起到改名的效果)
mv test.txt test2.txt
?在用户的家目录中,将text.txt移动到Desktop文件夹中
cd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 进入家目录
mv test.txt Desktop? ? ??
?7.3 rm 删除文件或文件夹
语法:rm [-r -f] 参数1 参数2 ... 参数N
-r 选项? ?删除文件夹
-f 选项 表示force , 强制删除(不会弹出确认信息)
? ? ? ? 1)普通用户删除内容不会弹出提示确认信息,只有root用户删除内容会有提示
? ? ? ? 2)所以一般普通用户用不到-f选项
参数1 参数2 ... 参数N 表示删除的文件或文件夹路径,按照空格隔开
rm命令支持通配符 * , 用来模糊匹配
符号*表示通配符,即匹配任意内容(包括空)
test*,表示匹配任何以test开头的内容
*test,表示匹配任何以test结尾的内容
*test*,表示匹配任何包含test的内容
示例?
经典的删库跑路
rm -rf /*? ? ? ? ? ?或? ? ?rm -rf /
?删除所有以test开头的文件或文件夹
rm -r test*
注意:加上-r选项不是只删除符合条件的文件夹,而是符合条件的文件夹和文件都删除。?
?8.1 which 查找命令的程序文件
因为每个命令的本质就是一个程序,
当你输入 which ls 系统会输出ls的程序文件位置?
8.2 find 查找指定文件(支持通配符)
8.2.1 find 按文件名查找文件?
语法1:find 起始路径 -name "被查找文件名"
示例
全屏搜索文件名为test的文件(注意:Ctrl+C 可强制退出全盘搜索)
find / -name "test"
全屏搜索文件名中含有test的文件
find / -name "*test*"
find 按文件大小查找文件
语法2:find 起始路径 -size +|- [KMG]
+、-? ? ?表示大于和小于
n? ? ? ? ? 表示大小数字
KMG? ? 表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
示例?
查找小于10kb的文件?
?find / -size? ?-10k
查找大于100MB的文件?
?find / -size? ?+100M
查找小于10kb的文件?
?find / -size? ?+1G
find / -name "*centos*"
find /usr -size +100M
?9.1 grep 从文件中通过关键字过滤文件行
?语法: grep [-n] 关键字 文件路径
-n? ?????????选项,可选,表示在结果中显示匹配的行的行号。
关键字? ??参数,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用""将关键字包围起来。
文件路径 参数,必填,表示要过滤内容的文件路径,可作为内容输入端口
?示例
?
9.2 wc 做数量统计?
语法:wc [-c -m -l -w] 文件路径
-c ????????????????????????选项 , 统计bytes数量
-m? ? ? ? ????????????????选项,统计字符数量
-l? ? ? ? ? ????????????????选项,统计行数
-w? ? ? ? ????????????????选项,统计单词数量
文件路径? ? ? ? ? ? ? 参数,被统计的文件,可作为内容输入
若什么选项都没有加上
wc 文件路径
则默认输出行数、单词数、字符数
9.3 管道符? |
?语法: 命令1? |? ?命令2
将命令1的结果,作为命令2的参数输入
如:? ? ? ? cat test.txt? | grep "what"
?
查找/user/bin的名为gtf的文件或文件夹?
?ls /user/bin? |? grep gtf
?嵌套用法
cat test.txt? |? grep test? |? grep can
cat test.txt | grep "itcast"?| wc -l
cat test.txt | grep "itheima" | wc -w
10.1 echo
?语法: echo 输出的内容
无需选项,只有一个参数,表示要输出的内容,复杂内容可以用""包围
示例
?在终端上显示:Hello Linux
echo Hello Linux? ? ? ? ? ? ? ? 或? ? ? ? ? ? ? ? echo "Hello Linux"
?注意:带有空格或\等特殊符号,建议使用双引号包围。
10.2 反引号? '
?被? '? 包围的内容,会被作为命令执行,而非普通字符
10.3 重定向符
>? ? ? ? ?将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>>? ? ? ?将左侧命令的结果,追加写入到符号右侧指定的文件中
示例
echo "test" > test.txt
?
echo "Hi boy"? > test.txt? , 再次执行,覆盖内容
?
echo "Hi girl"? >> test.txt? ,再次执行,使用>>追加新内容
?
10.4 tail?
查看文件尾部内容,并可以持续跟踪。常用于查看操作日志,报错日志等?
语法: tail [-f? -num] Linux路径
Linux路径? ? ? ? ? 参数,表示被跟踪的文件路径
-f? ? ? ? ? ? ? ? ? ? ? ? 选项,表示持续跟踪
-num? ? ? ? ? ? ? ? ? 选项,表示查看尾部多少行,不填默认10行
echo "我当前的工作目录是:'pwd'"? > work.txt
echo "test" >> work.txt
tail -f work.txt
11.1 vi\vim编辑器介绍?
vi 是visual interface 的简称,是Linux中最经典的文本编辑器
vim是vi的加强版。兼容了vi的所有指令,不仅能编辑文本,而且具有shell程序编辑的功能,可以通过不同颜色的字体辨别语法的正确性,极大方便了程序的设计和编辑性。
11.2 vi\vim编辑器的三种工作模式
命令模式(Command mode)
命令模式下,所敲的按键编辑器都理解为命令,以命令驱动不同的功能。
此模式下,不能自由进行文本编辑。
?输入模式(Insert mode)
也就是所谓的编辑模式、插入模式。
此模式下,可以对文件内容进行自由编辑。
底线命令模式(Last line mode)
?以:开始,通常用于文件的保存、退出。
11.2.1 命令模式
?如果需要通过vi\vim编辑器编辑文件,输入如下命令
vi 文件路径
vim 文件路径? ? ? ? 一般直接使用vim,因为vim兼容vi的所有功能
?注意:1)如果文件路径表示的文件不存在,那么此命令会用于编辑新文件。
? ? ? ? ? ? ?2)如果文件路径表示的文件存在,那么命令用于编辑已有文件。
示例
vim test.txt? ? ? ? 若文件不存在,会自动创建新文件并进入命令模式
再点击? i? ,进入输入模式
对内容进行编辑,输入this a test
点击Esc,退出输入模式,进入命令模式
在命令模式下,输入:进入底线命令模式
在底线命令模式下,输入:wq ,进行保存并退出
命令模式快捷键
以下为在命令模式下,各种进入输入模式的快捷键?
模式 | 命令 | 描述 |
命令模式 | i | 在当前光标位置进入输入模式 |
命令模式 | a | 在当前光标位置之后进入输入模式 |
命令模式 | I (大写i ) | 在当前行的开头,进入 输入模式 |
命令模式 | A | 在当前行的结尾,进入输入模式 |
命令模式 | o | 在当前光标下一行进入输入模式 |
命令模式 | O | 在当前光标上一行进入输入模式 |
输入模式 | Esc | 任何情况下点击Esc都能回到命令模式 |
?以下还有一些命令模式下的快捷键
命令 | 描述 | 命令 | 描述 |
键盘上、键盘k | 向上移动光标 | dd | 删除光标所在行的内容 |
键盘下、键盘j | 向下移动光标 | ndd | n是数字,删除当前光标向下n行 |
键盘左、键盘h | 向左移动光标 | yy | 复制当前行 |
键盘右、键盘L | 向右移动光标 | nyy | n是数字,复制当前行和下面的n行 |
0 | 移动光标到当前行的开头 | p | 粘贴复制的内容 |
$ | 移动光标到当前行的结尾 | u | 撤销修改 |
pageup(PgUp) | 向上翻页 | ctrl+r | 方向撤销修改 |
pagedown(PdDn) | 向下翻页 | gg | 跳到首行 |
/ | 进入搜索模式 | G | 跳到行尾 |
n | 向下继续搜索 | dG | 从当前行开始,向下全部删除 |
CTRL+n | 向上继续搜索 | dgg | 从当前行开始,向上全部删除 |
d$ | 从当前光标开始,删除到本行的结尾 | d0 | 从当前光标开始,删除本行的开头 |
?11.2.3 底线命令模式
?注意:点击Esc可退回命令模式。
以下为底线命令模式下的一些常用命令:?
:wq | 保存并退出 |
:q | 仅退出 |
:q! | 强制退出 |
:w | 仅保存 |
:set nu | 显示行号 |
:set nonu | 取消行号显示 |
:set paste | 设置粘贴模式 |
:set nopaste | 取消粘贴模式 |