一、 Linux命令基础
1、 Linux命令基础
-
Linux介绍
-
Linux系统的安装与配置
-
命令提示符
-
Linux命令基本格式
(1)Linux命令的组成:命令名称,选项,
参数 (2)基本格式:命令名 [选项] [参数] (3)规则:命令的各组成部分之间用空格分隔;命令的输入以回车键结束;一般一行输入一条命令
2、熟练使用文件、目录(文件夹)类命令
-
浏览目录(文件夹)类命令 (1)pwd命令: ① 功能:显示用户当前所处的目录 ② 示例:pwd (2)cd命令: ① 功能:在不同目录间进行切换 ② 示例:cd /etc # 切换目录到/etc下 cd ~ 或 cd # 切换到用户目录 ③ 绝对路径和相对路径 a. 绝对路径:从根目录开始,表示一个文件或目录(文件夹)的位置路径 # 始终以根目录为参考起始点 b. 相对路径:从当前位置开始,表示一个文件或目录(文件夹)的位置路径 # 始终以当前位置为参考起始点 “.” 代表当前目录 “..” 代表当前目录的父目录(上一级目录) c. 示例: 当前路径在: /etc/gdb 查看/etc/passwd文件的详细信息: ls -l /etc/passwd # 绝对路径表示文件位置路径 ls -l ../passwd # 相对路径表示文件位置路径 (3)ls命令: ① 功能:列出文件或目录(文件夹)信息 ② 命令格式:ls 【选项】【目录或文件】 ls命令的常用选项如下。 -a:显示所有文件,包括以“.”开头的隐藏文件。 -A:显示指定目录下所有的子目录及文件,包括隐藏文件。但不显示“.”和“..”。 -c:按文件的修改时间排序。 -C:分成多列显示各行。 -d:如果参数是目录,则只显示其名称而不显示其下的各个文件。往往与“-l”选项一起使用,以得到目录的详细信息。 -l:以长格形式显示文件的详细信息。 -i:在输出的第一列显示文件的i节点号。 ③ 示例: 详细信息方式查看/etc目录: ls -l etc/
-
浏览文件类命令 查看文件内容的命令:5个 (1)cat命令 ① 功能:主要用于滚屏显示文件内容或是将多个文件合并成一个文件 ② 命令格式:cat [选项] 文件名 常用选项如下: -b:对输出内容中的非空行标注行号。 -n:对输出内容中的所有行标注行号。 ③ 示例: cat /etc/passwd # 查看/etc/passwd文件的内容 cat -n /etc/passwd # 查看/etc/passwd文件的内容,输出所有内容行并显示每行行号
(2)more命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,退出(Q) ② 命令格式:more [选项] 文件名 常用选项: -num:这里的num是一个数字,用来指定分页显示时每页的行数。 +num:指定从文件的第num行开始显示 ③ 示例:more /etc/passwd (3)less命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,向上一页(B),退出(Q) ② 命令格式:less [选项] 文件名 ③ 示例:less /etc/passwd (4)head命令 ① 功能:查看文件内容(查看文件前面n行,默认前10行) ② 命令格式:head [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 ③ 示例1:head /etc/passwd # 默认前10行 示例2:head -n 2 /etc/passwd # 查看前2行 示例3:head -c 2 /etc/passwd # 查看前2个字符 (5)tail命令 ① 功能:查看文件内容(查看文件尾n行,默认尾10行) ② 命令格式:tail [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 +num:从第num行开始显示指定文件的内容。 ③ 示例1:tail /etc/passwd # 默认尾10行 示例2:tail -n 2 /etc/passwd # 查看尾2行 示例3:tail -c 2 /etc/passwd # 查看尾2个字符
3、目录操作类命令
(1)mkdir命令
① 功能:用于创建一个目录(文件夹) ② 命令格式:mkdir [选项] 目录名 常用选项: -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:直接创建目录文件:mkdir /mydir # 在根目录直接创建一个目录文件mydir 示例2:创建多级目录文件:mkdir -p /d1/d2/d3/d4 # 一次创建多级的目录 (2)rmdir命令 ① 功能:用于删除空目录 ② 命令格式:rmdir [选项] 目录名 常用选项: -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:rmdir /f1 # 删除空目录/f1 示例1:rmdir -p /d1/d2/d3/d4 # 删除多级的空目录(如果被删目录的父目录也是空目录,则一同删除)
4、文件操作类命令
(1)touch命令 ① 功能:用于建立文件或更新文件的修改日期 ② 命令格式:touch [选项] 文件名 常用选项: -d yyyymmdd:把文件的存取或修改时间改为yyyy年mm月dd日。 -a:只把文件的存取时间改为当前时间。 -m:只把文件的修改时间改为当前时间 ③ 示例1:touch /mydir/f1 # 直接创建文件/mydir/f1 (2)cp命令 ① 功能:意为copy,用于复制(或改名)文件或目录 ② 命令格式:cp [选项] 源 目标位置 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例1:基本使用: # 把源文件/etc/passwd复制到/mydir目录下 cp /etc/passwd /mydir 或 cp /etc/passwd /mydir/ 示例2:选项 -a: cp -a /etc/passwd /mydir 示例3:选项 -f: cp -f /etc/passwd /mydir 示例4:选项 -i: cp -i /etc/passwd /mydir 示例5:选项 -R:cp -R /etc/yum /mydir # 复制一个具有多级子目录的文件夹 ④ 改名:文件和目录(文件夹) 说明:复制命令中,如果目录位置是目录,则文件或目录复制过去,还是原名; 如果目录位置给了文件名,则文件或目录复制过去,文件名为新给的名字; 示例1: cp /etc/passwd /mydir/ppp # 复制后文件名为ppp (3)mv命令 ① 功能:用于文件或目录的移动或改名 ② 命令格式:mv [选项] 源文件或目录 目标文件或目录 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例参照cp命令(注意:系统文件、目录,如/etc/passwd,/etc/yum不要移动)
(4)rm命令 ① 功能:主要用于文件或目录的删除 ② 命令格式:rm [选项] 文件名或目录名 常用选项: -i:删除文件或目录时提示用户。 -f:删除文件或目录时不提示用户。 -R:递归删除目录,即包含目录下的文件和各级子目录。 ③ 例1:删除/md/f1文件 rm /md/f1 或者 rm -i /md/f1 # 删除文件,有提示 rm -f /md/f1 # 直接删除文件,没有提示 例2:删除/md 目录(文件夹) cd / rm -fR /md # 删除/md目录(文件夹) (5)命令 :whereis命令 ① 功能:whereis命令用来寻找命令的可执行文件所在的位置 ② 语法:whereis [选项] 命令名称 常用选项: -b:只查找二进制文件。 -m:只查找命令的联机帮助手册部分。 -s:只查找源代码文件 (6)whatis命令 ① 功能:whatis命令用于获取命令简介 ② 语法:whatis 命令名称 (7)find命令 ① 功能:find命令用于文件查找。它的功能非常强大。 ② 语法:find [路径] [匹配表达式] -name filename:查找指定名称的文件 -user username:查找属于指定用户的文件 -group grpname:查找属于指定组的文件 -size n:查找大小为n块的文件 -inum n:查找索引节点号为n的文件 -type:查找指定类型的文件 -mtime n, -ctime n :类似于atime,但检查的是文件内容、文件索引节点被修改的时间 -newer file:查找比指定文件新的文件,即最后修改时间离现在较近 -exec command {} \;:对匹配指定条件的文件执行command命令 -ok command {} \;:与exec相同,但执行command命令时请求用户确认 ③ 例:查找文件名为passwd的文件 cd / find -name passwd # 从当前根目录开始,按文件名查找文件名为passwd的文件 find /etc -name passwd # 从指定的/etc目录开始找 ④ 通配符: a. * # 任意个数的任意字符 b. ? # 任意一个字符
例:
cd /
字符开头的
find -name pass* # 根目录下,查找文件名以pass字符开头的文件 find /etc -name pass* # 指定的/etc目录查找
字符结尾的
find -name *wd # 根目录下,查找文件名以wd字符结尾的文件
包含字符 find -name ass # 根目录下,查找文件名包含ass字符的文件 find /etc -name pass?? (8)locate命令 ① 功能:locate命令 ,也用于在Linux系统中查找文件,和find相比其功能要弱很多,不能够进行精确查寻, 但locate命令的查找速度很快,其工作原理与find不同:find命令是直接在文件系统中进行查找; 而locate命令是在一个索引库中进行查找,索引库中存放系统中所有文件名称信息 ② 例:locate passwd (9)grep命令 ① 功能:用于查找文件中包含有指定字符串的行 ② 语法:grep [选项] 要查找的字符串 文件名 常用选项: -v:列出不匹配的行。 -c:对匹配的行计数。 -l:只显示包含匹配模式的文件名。 -h:抑制包含匹配模式的文件名的显示。 -i:对匹配模式不区分大小写 ③ 例: grep root /etc/passwd # 从/etc/passwd文件内容中查找返回包含root字符的行 grep -i ROOt /etc/passwd # -i 查找的字符串root不区分大小写 (10)管道命令符: | ① 功能:grep命令也常和符号“|”一起使用,符号“|”为管道命令符,其作用是连接两个命令, 将前面一个命令的输出作为后面一个命令的输入。 ② 例:grep root /etc/passwd 使用管道命令符重新实现下 cat /etc/passwd | grep root
-
浏览目录(文件夹)类命令
(1)pwd命令: ① 功能:显示用户当前所处的目录 ② 示例:pwd (2)cd命令: ① 功能:在不同目录间进行切换 ② 示例:cd /etc # 切换目录到/etc下 cd ~ 或 cd # 切换到用户目录 ③ 绝对路径和相对路径 a. 绝对路径:从根目录开始,表示一个文件或目录(文件夹)的位置路径 # 始终以根目录为参考起始点 b. 相对路径:从当前位置开始,表示一个文件或目录(文件夹)的位置路径 # 始终以当前位置为参考起始点 “.” 代表当前目录 “..” 代表当前目录的父目录(上一级目录) c. 示例: 当前路径在: /etc/gdb 查看/etc/passwd文件的详细信息: ls -l /etc/passwd # 绝对路径表示文件位置路径 ls -l ../passwd # 相对路径表示文件位置路径 (3)ls命令: ① 功能:列出文件或目录(文件夹)信息 ② 命令格式:ls 【选项】【目录或文件】 ls命令的常用选项如下: -a:显示所有文件,包括以“.”开头的隐藏文件。 -A:显示指定目录下所有的子目录及文件,包括隐藏文件。但不显示“.”和“..”。 -c:按文件的修改时间排序。 -C:分成多列显示各行。 -d:如果参数是目录,则只显示其名称而不显示其下的各个文件。往往与“-l”选项一起使用,以得到目录的详细信息。 -l:以长格形式显示文件的详细信息。 -i:在输出的第一列显示文件的i节点号。 ③ 示例: 详细信息方式查看/etc目录: ls -l etc/
-
浏览文件类命令 查看文件内容的命令:(1)cat命令 ① 功能:主要用于滚屏显示文件内容或是将多个文件合并成一个文件 ② 命令格式:cat [选项] 文件名 常用选项如下: -b:对输出内容中的非空行标注行号。 -n:对输出内容中的所有行标注行号。 ③ 示例: cat /etc/passwd # 查看/etc/passwd文件的内容 cat -n /etc/passwd # 查看/etc/passwd文件的内容,输出所有内容行并显示每行行号
-
(2)more命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,退出(Q) ② 命令格式:more [选项] 文件名 常用选项: -num:这里的num是一个数字,用来指定分页显示时每页的行数。 +num:指定从文件的第num行开始显示 ③ 示例:more /etc/passwd (3)less命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,向上一页(B),退出(Q) ② 命令格式:less [选项] 文件名 ③ 示例:less /etc/passwd (4)head命令 ① 功能:查看文件内容(查看文件前面n行,默认前10行) ② 命令格式:head [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 ③ 示例1:head /etc/passwd # 默认前10行 示例2:head -n 2 /etc/passwd # 查看前2行 示例3:head -c 2 /etc/passwd # 查看前2个字符 (5)tail命令 ① 功能:查看文件内容(查看文件尾n行,默认尾10行) ② 命令格式:tail [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 +num:从第num行开始显示指定文件的内容。 ③ 示例1:tail /etc/passwd # 默认尾10行 示例2:tail -n 2 /etc/passwd # 查看尾2行 示例3:tail -c 2 /etc/passwd # 查看尾2个字符
-
目录操作类命令 (1)mkdir命令 ① 功能:用于创建一个目录(文件夹) ② 命令格式:mkdir [选项] 目录名 常用选项:
-p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:直接创建目录文件:mkdir /mydir # 在根目录直接创建一个目录文件mydir 示例2:创建多级目录文件:mkdir -p /d1/d2/d3/d4 # 一次创建多级的目录
(2)rmdir命令 ① 功能:用于删除空目录 ② 命令格式:rmdir [选项] 目录名 常用选项: -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:rmdir /f1 # 删除空目录/f1 示例1:rmdir -p /d1/d2/d3/d4 # 删除多级的空目录(如果被删目录的父目录也是空目录,则一同删除)
文件操作类命令
(1)touch命令 ① 功能:用于建立文件或更新文件的修改日期 ② 命令格式:touch [选项] 文件名 常用选项:
-d yyyymmdd:把文件的存取或修改时间改为yyyy年mm月dd日。 -a:只把文件的存取时间改为当前时间。 -m:只把文件的修改时间改为当前时间 ③ 示例1:touch /mydir/f1 # 直接创建文件/mydir/f1
(2)cp命令 ① 功能:意为copy,用于复制(或改名)文件或目录 ② 命令格式:cp [选项] 源 目标位置 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例1:基本使用: # 把源文件/etc/passwd复制到/mydir目录下 cp /etc/passwd /mydir 或 cp /etc/passwd /mydir/ 示例2:选项 -a: cp -a /etc/passwd /mydir 示例3:选项 -f: cp -f /etc/passwd /mydir 示例4:选项 -i: cp -i /etc/passwd /mydir 示例5:选项 -R:cp -R /etc/yum /mydir # 复制一个具有多级子目录的文件夹 ④ 改名:文件和目录(文件夹) 说明:复制命令中,如果目录位置是目录,则文件或目录复制过去,还是原名; 如果目录位置给了文件名,则文件或目录复制过去,文件名为新给的名字; 示例1: cp /etc/passwd /mydir/ppp # 复制后文件名为ppp
(3)mv命令 ① 功能:用于文件或目录的移动或改名 ② 命令格式:mv [选项] 源文件或目录 目标文件或目录 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例参照cp命令(注意:系统文件、目录,如/etc/passwd,/etc/yum不要移动)
(4)rm命令 ① 功能:主要用于文件或目录的删除 ② 命令格式:rm [选项] 文件名或目录名 常用选项: -i:删除文件或目录时提示用户。 -f:删除文件或目录时不提示用户。 -R:递归删除目录,即包含目录下的文件和各级子目录。 ③ 例1:删除/md/f1文件 rm /md/f1 或者 rm -i /md/f1 # 删除文件,有提示 rm -f /md/f1 # 直接删除文件,没有提示 例2:删除/md 目录(文件夹) cd / rm -fR /md # 删除/md目录(文件夹) (5)命令
二、云课笔记
获取视频下载方法
C:\Users\14949\Desktop\新建文件夹>pip install you-get
C:\Users\14949\Desktop\新建文件夹>you-get +视频链接
Linux系统命令使用体验
1、uname命令
# 使用uname查看当前系统的内核 shiyanlou:-/$ uname # uname跟参数查看参数详情 shiyanlou:-/$ uname -a # 查看当前命令如:uname 有哪些参数,以及这些参数的作用 shiyanlou:-/$ uname --help
# 安装一个figlet,作用:将输入的文本转化为大字体的工具 shiyanlou:-/$ sudo apt-get install figlet # 显示大字体 # 查看当前命令如:uname 有哪些参数,以及这些参数的作用 shiyanlou:-/$ figlet gu jin long
2、ls命令
在Linux中使用是最多的,查看当前目录的文件或目录
# 查看当前操作系统根目录下的所有文件或目录 shiyanlou:-/$ ls / # 查看当前操作系统根目录下的home目录中文件或文件夹 shiyanlou:-/$ ls /home/ # -l的作用:长数据串列出:包含文件的属性与权限等相关信息(常用),l表示(length) shiyanlou:-/$ ls -l /home/ #-a的作用:显示隐藏文件或目录 shiyanlou:-/$ ls -a /home/ # -al的作用:以长数据方式显示隐藏的文件或目录 shiyanlou:-/$ ls -al /home/ # -R的作用:查看/home/目录下的文件和文件夹包含的子目录 shiyanlou:-/$ ls -R /home/
3、man命令
查看"说明书"
# 命令:man 指令名称(如:ls),这时就可以去看它的说明。参数说明 shiyanlou:-/$ man ls # 查看完"说明书"后按键盘上的 q 键就可以退出,q的意思是:quit
4、mkdir命令
创建目录的操作命令,在windos系统中称为“文件夹”专业用语为“目录”
# 查看当前目录的完整路径 shiyanlou:project/ $ pwd # 创建一个目录 shiyanlou:project/ $ mkdir /home/project/demo01/
要求:需要在 /home/project/web/game/lol/ 在Windows的C盘创建/web/game/lol/ 比较麻烦,如果层级多了就很麻烦
# 递归创建多级目录结构 shiyanlou:project/ $ mkdir -p /home/project/web/game/lol/
-p: 递归创建目录,即创建目录的上一级目录尚未创建,则先创建上一级目录
要求:需要在 /home/project/study/html/js
,/home/project/study/login/js
, /home/project/study/student/js
,我们怎么来进行创建?
# 递归创建多层目录分层创建结构 shiyanlou:project/ $ mkdir -p /home/project/study/{html,login,student}/js/
注意:{html,login,student}
不能有任何空格以,逗号
进行分隔
扩展思考1: 需要创建/home/project/student/20220015~ /home/project/student/20220078
的所有目录
# 递归创建多层目录分层创建结构 shiyanlou:project/ $ mkdir -p /home/project/student/{20220015..20220078}/
扩展思考2:需要创建/home/project/student/id20220015info~ /home/project/student/id20220078info
的所有目录
shiyanlou:project/ $ mkdir -p /home/project/student/id{20220015..20220078}info/
5、cd命令
目录切换命令
未切换前的目录
切换目录后
..
表示:退回上一级目录
~
通常表示当前用户的 home
目录
进入上一次所在的工作目录(-
)
cd ~ cd /etc cd -
这个命令还可以返回多层的上级目录,只需要组合使用即可:
cd ../..
6、touch命令
创建文件的相关命令
# 查看当前目录的完整路径 shiyanlou:project/ $ pwd /home/project # 在当前目录创建文件 shiyanlou:project/ $ touch demo.py # 通过相对路径在其它目录创建文件 shiyanlou:project/ $ touch ../shiyanlou/test01.txt shiyanlou:project/ $ ls ../shiyanlou Code Desktop test01.txt test02.txt # 通过绝对路径在其它目录创建文件 shiyanlou:project/ $ touch /home/shiyanlou/test02.txt shiyanlou:project/ $ ls ../shiyanlou Code Desktop test01.txt test02.txt # 在当前目录批量创建文件1 shiyanlou:project/ $ touch {1..5}.py # 在当前目录批量创建文件2 shiyanlou:project/ $ touch demo{1..5}.py
7、查看命令 cat 、head 、tail
3 查看指定文件的内容 shiyanlou:project/ $ cat /etc/passwd # 查看指定文件的内容并显示行号 shiyanlou:project/ $ cat -n /etc/passwd # 查看指定文件所有的内容,包括一些不可见的符号,比如换行符。 shiyanlou:project/ $ cat -A /etc/passwd # 除此以外,cat 还可以作为输入,需要配合重定向符号 >>,可以将获取的内容重定向到另一个文件里。 shiyanlou:project/ $ touch 1.txt shiyanlou:project/ $ cat 1.txt shiyanlou:project/ $ cat /etc/passwd >> 1.txt shiyanlou:project/ $ cat 1.txt
head
命令,它可用于查看文件的开头部分的内容,默认情况下显示前 10 行的内容。
head /etc/passwd
head
也有几个常用的参数,如下:
选项 | 说明 |
---|---|
-n <数字> | 指定显示头部内容的行数 |
-c <字符数> | 指定显示头部内容的字符数 |
-v | 总是显示文件名的头信息 |
-q | 不显示文件名的头信息 |
比如只显示前五行的内容:
head -n 5 /etc/passwd
tail
命令用于输入文件中的尾部内容,默认在终端上显示指定文件的末尾 10
行。
tail /etc/passwd
与 head
命令类似,tail
命令也可以使用 -n
参数来指定查看的行数。如查看末尾的 5 行内容:
tail -n 5 /etc/passwd
8、匹配指定字符grep命令
作用:在指定的文件里面查找包含指定内容的部分
语法:grep 要查找的内容 在那个文件进行查找
shiyanlou:project/ $ grep shiyanlou /etc/passwd shiyanlou:x:5000:5000::/home/shiyanlou:/usr/bin/zsh
9、echo命令(了解)
作用:主要是输出字符串和查找变量
# 使用 echo 我们可以便捷的输出一串字符串。 shiyanlou:project/ $ echo "hello world" hello world # 查看环境变量 PATH shiyanlou:project/ $ echo $PATH # echo 还可以在字符串里使用一些特殊符号,比如换行符和指标符号等 echo "hello\tworld" echo "hello\nworld" 对于此类型的字符串,我们通常使用双引号 " 包裹,如果使用单引号,则会原样输出: shiyanlou:project/ $ echo 'hello\tworrld' hello worrld shiyanlou:project/ $ echo 'hello\nworld' hello world
10、重定向命令的特殊性
含义:改变标准的输入源(键盘)和标准的输出源(显示器)
>, >>, <, <<
>
输出到指定的文件里面(覆盖)
>>
输出到指定的文件里面(追加)
<
将原来需要键盘输入的数据,改为由文件内容取代
<<
标准输入中读取数据,一直到遇到分界符为止
shiyanlou:project/ $ touch test shiyanlou:project/ $ cat /etc/passwd > test shiyanlou:project/ $ cat /etc/passwd >> test01 shiyanlou:project/ $ echo "hello you do" >> test01 # 一下内容做了解 shiyanlou:project/ $ sort zahngsan lisi wangwu a b c a b c lisi wangwu zahngsan
11、阶段形回顾
1、请问创建目录的命令是什么? mkdir
2、创建目录时最常用的参数时什么? -p
3、请问从当前目录切换到指定目录的命令时什么? cd
4、请问创建文件的命令是什么? touch
, 常用参数时什么?{}
5、请问查看某个文件的命令是什么? cat
6、cat命令最常用的参数又哪些? -n, -A
7、请问查看文件内容前指定行数或尾数的命令是什么? head, tail
8、请问匹配文件中相关字符的命令是什么? grep
12、文本编辑器 vim简单使用
语法:vim [文件名称]
,注意:如果文件存在打开进行编辑,如果不存在自动创建
shiyanlou:project/ $ vim test.txt
1.按i
键进入插入状态,可以在文件中进行编辑内容
2.编辑完成后,按ESC
键,退出编辑状态
3.输入:wq
进行保存内容, :wq
(write quit [中文含义:写入并保存])
13、复制命令
cp
命令带的功能主要是复制,同时具备粘贴性
语法:cp[参数] [需要复制的文件] [复制的具体位置]
shiyanlou:project/ $ touch hello.css shiyanlou:project/ $ ls hello.css shiyanlou:project/ $ ls ../ project shiyanlou shiyanlou:project/ $ ls ../shiyanlou Code Desktop shiyanlou:project/ $ cp hello.css /home/shiyanlou shiyanlou:project/ $ ls ../shiyanlou Code Desktop hello.css
目录复制操作
shiyanlou:project/ $ mkdir html shiyanlou:project/ $ touch html/demo.html shiyanlou:project/ $ cp -r html /home/shiyanlou shiyanlou:project/ $ ls ../shiyanlou Code Desktop html shiyanlou:project/ $ ls ../shiyanlou/html demo.html shiyanlou:project/ $
14、移动文件或目录mv命令
mv命令的作用:move file (移动文件或目录)
语法:mv [参数] [需要移动的文件或目录] [移动到的位置]
shiyanlou:project/ $ touch index.html shiyanlou:project/ $ ls ../shiyanlou Code Desktop shiyanlou:project/ $ mv index.html /home/shiyanlou shiyanlou:project/ $ ls ../shiyanlou Code Desktop index.html
提问:mv命令在Linux中称为:移动文件或目录,请问在Windows跟mv同一个意思的操作 是什么相操作?
Windows中:剪切
+ 粘贴
移动目录的操作 加重命名
shiyanlou:project/ $ touch user.css shiyanlou:project/ $ mv user.css /home/shiyanlou/index.css shiyanlou:project/ $ ls ../shiyanlou Code Desktop index.css index.html shiyanlou:project/ $ mkdir test shiyanlou:project/ $ touch test/test.java shiyanlou:project/ $ mv test /home/shiyanlou/kechuang shiyanlou:project/ $ ls ../shiyanlou Code Desktop index.css index.html kechuang lanqiao
15、删除rm命令
作用:remove(移除)的缩写
,用于删除文件或目录
Linux删除文件或目录与windows 删除的区别:Linux直接删除,Windows中有一种操作是 先删除到回收站,
# 删除文件 shiyanlou:project/ $ touch demo.txt shiyanlou:project/ $ rm demo.txt # 删除目录 shiyanlou:project/ $ mkdir lanqiao shiyanlou:project/ $ touch lanqiao/demo{1..5}.html shiyanlou:project/ $ rm -r lanqiao shiyanlou:project/ $ mkdir lanqiao shiyanlou:project/ $ touch demo{1..10}.html shiyanlou:project/ $ rm demo{1..10}.html shiyanlou:project/ $ mkdir test shiyanlou:project/ $ touch test/test{1..5}.txt shiyanlou:project/ $ rm test/test{1..5}.txt shiyanlou:project/ $ mkdir test shiyanlou:project/ $ touch test/test{1..5}.java shiyanlou:project/ $ rm -ri test # 参数i的作用:在删除前逐个询问是否删除,输入y表示删除,而输入n表示不删除 rm:是否进入目录'test'? y rm:是否删除普通空文件 'test/test1.java'? n rm:是否删除普通空文件 'test/test2.java'? n rm:是否删除普通空文件 'test/test3.java'? y rm:是否删除普通空文件 'test/test4.java'? n rm:是否删除普通空文件 'test/test5.java'? n rm:是否删除目录 'test'? y rm: 无法删除 'test': 目录非空
16、文件下载命令wget
wget
命令主要通过指定的URL(网址)进行下载文件
# 下载图片文件 # 下载js文件 wget https://labfile.oss.aliyuncs.com/courses/1379/jquery.min.js
-
-O
保存为指定的文件名(大写的字母 o) -
-c
启用断点续传,在下载大文件的时候建议(超过200M)
17、打包解包命令tar
tar
(磁带归档),打包文件的命令。打包格式:.tar.gz
, .tar.bz2
等都是压缩后的.tra
包
# 打包文件 shiyanlou:project/ $ tar -cf bin.tar /usr/local/bin tar: 从成员名中删除开头的“/” # shiyanlou:project/ $ tar -fc bin.tar /usr/local/bin # tar: 您必须从"-Acdtrux", "--delete"或是"--test-label"中指定一个选项 #请用“tar --help”或“tar --usage”获得更多信息。 # 错误点:-f参数必须跟文件名 # 打包为gzip格式文件,需要添加参数z shiyanlou:project/ $ tar -czf bin_gzip.tar /usr/local/bin tar: 从成员名中删除开头的“/” # 解包.gzip文件 # x 表示从打包文件中释放文件 # -C 表示指定要释放的目录位置 shiyanlou:project/ $ tar -zxf bin_gzip.tar.gz -C /home/shiyanlou/ shiyanlou:project/ $ ls ../shiyanlou/ Code Desktop usr
tar
有几个常用的参数,如下:
-
-c
建立新的打包文件 -
-f
指定包文件 -
-v
显示打包/释放的过程 -
-z
支持 gzip 处理文件 -
-j
支持 bzip2 处理文件 -
-t
显示打包的文件的内容 -
-r
添加文件到已经打包的文件 -
-x
从打包的文件中释放文件 -
-C
释放到指定目录
18、多平台解压缩命令zip和unzip
zip命令
:多平台之间的解压缩操作
# -r 表示递归处理,将指定目录下的所有文件和 子文件目录进行一起打包 # -q 表示安静模式,不显示执行的过程 # -o 表示输出文件的名称,需要在所有参数最后,文件名的前面 shiyanlou:project/ $ zip -r -q -o zipbin.zip /usr/local/bin # 要显示整个打包执行的过程 shiyanlou:project/ $ zip -r -o test.zip /usr/local/bin # -9 表示压缩的级别,9体积较小但是压缩耗时最长 shiyanlou:project/ $ zip -r -9 -q -o ltest.zip /usr/local/bin # -1 表示研所的级别,1体积较大但是压缩耗时最短 shiyanlou:project/ $ zip -r -1 -q -o 9test.zip /usr/local/bin 总用量 121964 -rw-r--r-- 1 shiyanlou shiyanlou 64854627 4月 25 14:55 9test.zip -rw-r--r-- 1 shiyanlou shiyanlou 60031054 4月 25 14:55 ltest.zip # -e表示创建加密,在压缩过程需要我们输入二次密码,注意:密码必须要一致 shiyanlou:project/ $ zip -r -e -o pwdtest.zip /usr/local/bin shiyanlou:project/ $ touch file.txt shiyanlou:project/ $ zip -r -e -o pwdtest.zip file.txt
unzip解压操作
# 直接解压,有查看解压的执行过程 shiyanlou:project/ $ unzip pwdtest.zip # 解压操作,但是不显示解压的执行过程,同时将解压存放到指定的目录(如果目录不存在就新建) shiyanlou:project/ $ unzip pwdtest.zip -d mydir
19、文件类型和权限
shiyanlou:project/ $ ls -alh ~
shiyanlou:project/ $ touch log.txt shiyanlou:project/ $ ls -lh log.txt -rw-r--r-- 1 shiyanlou shiyanlou 0 6月 15 17:03 log.txt shiyanlou:project/ $ chmod u=rwx,g=rwx,o=rw- log.txt shiyanlou:project/ $ ls -lh log.txt -rwxrwxrw- 1 shiyanlou shiyanlou 0 6月 15 17:03 log.txt
-
使用操作符形式修改权限
操作符形式是在字符形式的基础上对文件或目录使用 +/-
操作符来设置权限。
通过 +
符号增加相应的权限,-
符号减去相应的权限。
chmod u+x,g+x,o-rw install.log
-
使用数字形式修改权限
# 修改文件权限为 `rwxrwxrwx` chmod 777 install.log # 修改文件权限为 `rwx------` chmod 700 install.log # 修改文件权限为 `rwxr-xr-x` chmod 755 install.log
20、归属关系(权限设置命令chown)
chown
主要作用改变文件或目录的所有权,注意:该命令需要超级管理员root的权限才能执行该命令
# sudo命令表示临时调用root权限 # sudo chown root test 这个语法的作用:sudo(临时调用root权限) chown(权限设置命令) root(需要设置用户名) test(需要修改权限的文件或目录的命令) shiyanlou:project/ $ mkdir test shiyanlou:project/ $ sudo chown root test shiyanlou:project/ $ ls -l 总用量 0 drwxr-xr-x 2 root shiyanlou 6 6月 16 11:22 tes # root:root的作用:冒号左边root表示所有者权限,右边root表示所属组权限 shiyanlou:project/ $ mkdir test01 shiyanlou:project/ $ sudo chown root:root test01 shiyanlou:project/ $ ls -l 总用量 0 drwxr-xr-x 2 root root 6 6月 16 11:33 test01 shiyanlou:project/ $ mkdir -p test02/log shiyanlou:project/ $ ls -l test02 总用量 0 drwxr-xr-x 2 shiyanlou shiyanlou 6 6月 16 11:37 lo # -R参数的作用表示递归修改目录下所有的 shiyanlou:project/ $ sudo chown -R root:root test02 shiyanlou:project/ $ ls -l test02 总用量 0 drwxr-xr-x 2 root root 6 6月 16 11:37 log
-
使用字符形式修改权限
在 chmod
命令参数中,u
代表所有者,g
代表所属组,o
代表其他用户,a
代表所有人。
修改 install.log
文件的权限设置成全部为可读、可写、可执行。
chmod u=rwx,g=rwx,o=rwx install.log
-
使用操作符形式修改权限
操作符形式是在字符形式的基础上对文件或目录使用 +/-
操作符来设置权限。
通过 +
符号增加相应的权限,-
符号减去相应的权限。
chmod u+x,g+x,o-rw install.log
-
使用数字形式修改权限
# 修改文件权限为 `rwxrwxrwx` chmod 777 install.log # 修改文件权限为 `rwx------` chmod 700 install.log # 修改文件权限为 `rwxr-xr-x` chmod 755 install.log
权限编码
数字 | 字符 | 文件/目录 |
---|---|---|
4 | r | 查看文件内容/查看目录下的文件或目录名称 |
2 | w | 修改文件内容/在目录下增删改 |
1 | x | 执行一些程序或脚本/可以用命令切换目录 |
21、文件查找命令whereis
whereis
作用:通过一个保存有系统中所有文件名和目录名的数据库中去查找
#搜索Java命令相关的文件 shiyanlou:project/ $ whereis java java: /usr/bin/java /usr/share/java /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/share/man/man1/java.1.gz #搜索ls 命令它的"说明书"man的文件 shiyanlou:project/ $ whereis -m ls ls: /usr/share/man/man1/ls.1.gz #搜索date命令二进制文件 shiyanlou:project/ $ whereis -b date date: /usr/bin/date #指定目录搜索date二进制文件 shiyanlou:project/ $ whereis /usr date -B usr: date: /usr/bin/date /usr/share/man/man1/date.1.gz
-
-f
:定义搜索范围。 -
-b
:仅搜索二进制文件。 -
-m
:仅搜索man
手册。 -
-s
:仅搜索源。
22、环境变量export和source命令
export
命令:主要是标记和导出相关环境变量(
类似于在Windows中新建环境变量)
source
命令:bash(cmd),通常用于重新执行修改后的初始文档(类似于在Windows中环境变量建立好以后进行保存的过程 )
# 创建变量 shiyanlou:project/ $ export testenv=lanqiao # 输出变量的值 shiyanlou:project/ $ echo $testenv lanqiao # 查看系统的环境变量文件的内容 shiyanlou:project/ $ cat ~/.zshrc # -p是输出当前生效的环境变量 shiyanlou:project/ $ export -p # 将自己编写的环境变量用过重定向追加到 ~/.zshrc 文件尾部 shiyanlou:project/ $ echo "export NEWENV=lanqiao" >> ~/.zshrc #让生效系统的环境变量 shiyanlou:project/ $ source ~/.zshrc # 查看环境变量的值 shiyanlou:project/ $ echo $NEWENV lanqiao # 检查 ~/.zshrc 文件内容是否有export newenv=lanqiao 的相关变量 shiyanlou:project/ $ cat ~/.zshrc
23、巩固环境变量
问题:大家通过学习我们在哪些地方运用过环境变量?
(1)、Java JDK windows MySQL
(2)、Linux它也有 环境变量的运用
问题:请描述一下Windows环境变量定义的流程
是什么?再给大家去比较Linux相同原理之处
(1)、Windows设置环境变量的操作流程:进入高级系统设置 --> 环境变量 --> 设置 --> 新建 --> 确定 --> 应用(保存执行)
(2)、Linux设置环境变量操作流程:进入(写入)~/.zshrc
--> export
--> source
24、Linux软件安装
Linux
发行版本基本都各自的软件包管理,Ubuntu
使用apt和dpkg,企业CentOS
使用yum和rpm。
dpkg(包管理工具)
,下载和已安装的.deb软件包进行管理。
安装软件的基本语句:sudo dpkg -i [filename].deb
(-i 对应的英文 intall)
卸载软件的基本语句:sudo dpkg -r [filename].deb
(-r 对应的英文 remove)
查看系统中已经安装的包语句:dpkg -l
(-l 对应的英文 list)
提示:dpkg的缺点:无法进行依赖关系的对应安装
重点:安装命令 apt
安装语法:sudo apt install SoftwareName
(SoftwareName:安装包名)
卸载语法:sudo apt remove SoftwareName
25、综合巩固训练
见五练习题
26、再次讲解存在问题
1.打包解压工具tar,参数如下: 打包常用参数 c
:表示创建新的打包文件 f
:表示指定包文件,一般在文件名前面 z
:表示文件类型为tar.gz格式 j
:表示文件类型为tar.bz2格式 注意:参数只有-cf时,打包格式为tar
shiyanlou:project/ $ tar -cf testbin.tar /usr/local/bin shiyanlou:project/ $ tar -zcf testbin.tar.gz /usr/local/bin shiyanlou:project/ $ tar -jcf testbin.tar.bz2 /usr/local/bin
解包常用参数: x
:表示需要释放的文件 f
:表示指定需要释放的包文件,一般在文件名前面 z
:表示需要释放的文件类型为tar.gz格式 j
:表示需要释放的文件类型为tar.bz2格式 c
:表示指定要释放到的目录位置(目录必须存在)
shiyanlou:project/ $ tar -xf testbin.tar shiyanlou:project/ $ tar -zxf testbin.tar.gz -C /home/shiyanlou shiyanlou:project/ $ ls -l /home/shiyanlou
2.权限修改和设置 r
表示读取权限 对应数字为4 w
表示写入权限 对应数字为2 x
表示执行权限 对应数字为1
shiyanlou:project/ $ sudo chmod u=rwx,g=rw,o=x testbin.tar shiyanlou:project/ $ ls -l shiyanlou:project/ $ sudo chmod 761 usr shiyanlou:project/ $ ls -l
三、基本概念
简单分类
-
Windows: 微软公司的操作系统。
-
Mac: 苹果公司的类 Unix 操作系统。
-
Linux: 基于 Linux 内核的类 Unix 操作系统总称,如 Ubuntu 和 CentOS 。
Unix 是最早的多用户、多任务操作系统。
文件管理
在 Linux 操作系统中,所有作系统管理的资源,例如网络接口卡、磁盘驱动器、输入输出设备、普通文件或是目录都被看作是一个文件。
文件类型
Linux 支持 5 种文件类型 :
文件类型 | 描述 | 示例 |
---|---|---|
普通文件 | 存储信息和数据 | 代码、可执行文件、图片 |
目录文件 | 管理文件和子目录 | 文件夹 |
链接文件 | 不同目录下文件共享 | 对于每个符号链接,都由系统创建链接文件指向具体位置 |
设备文件 | 访问硬件设备 | 键盘、鼠标 |
命名管道 | 进程之间的通信 |
目录结构
Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录 /root:
常见子目录说明:
-
/bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;
-
/etc: 存放系统管理和配置文件;
-
/home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
-
/usr : 用于存放系统应用程序;
-
/opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
-
/proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
-
/root: 超级用户(系统管理员)的主目录(特权阶级^o^);
-
/sbin: 存放二进制可执行文件,只有 root 才能访问。通常存放系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
-
/dev: 用于存放设备文件;
-
/mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
-
/boot: 存放用于系统引导时使用的各种文件;
-
/lib : 存放着和系统运行相关的库文件 ;
-
/tmp: 用于存放各种临时文件,是公用的临时文件存储点;
-
/var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
-
/lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。
四、基本命令
Linux命令大全:http://man.linuxde.net/
目录切换命令
-
CD USR
: 切换到该目录下usr目录 -
光盘..(或光盘../)
: 切换到上一层目录 -
cd /
: 切换到系统根目录 -
cd ~
: 切换到用户主目录 -
cd -
: 切换到上一个操作所在目录
目录操作命令
-
mkdir 目录名称
: 增加目录 -
ls或者
ll(ll是ls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息 -
查找目录 参数
: 寻找目录(查)示例:
-
列出当前目录及子目录下所有文件和文件夹:
find .
-
在目录下查找以.txt结尾的文件名:
/home``find /home -name "*.txt"
-
同上,但忽略大小写:
find /home -iname "*.txt"
-
当前目录及子目录下查找所有以.txt和.pdf结尾的文件:或
find . \( -name "*.txt" -o -name "*.pdf" \)``find . -name "*.txt" -o -name "*.pdf"
-
-
mv
目录名称 新目录名称: 修改目录的名称(改)注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。后面会介绍到MV命令的另一个用法。
-
mv 目录名称 目录的新位置
: 移动目录的位置---剪切(改)注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与CP的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
-
cp -r 目录名称 目录拷贝
的目标位置
: 拷贝目录(改),-r代表递归拷贝注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
-
rm [-rf]
目录: 删除目录(删)注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用 目录/文件/压缩包
rm -rf
文件操作命令
-
touch 文件名称
: 文件的创建(增) -
cat/more/less/tail 文件名称
文件的查看(查)-
cat
: 查看显示文件内容 -
more
: 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看 -
less
: 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看 -
tail-10
: 查看文件的后10行,Ctrl+C结束
注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化
-
-
vim
文件: 修改文件的内容(改)vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。
在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:
vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q!(输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)
-
rm -rf
文件: 删除文件(删)同目录删除:熟记 文件 即可
rm -rf
文件压缩命令
1)打包并压缩文件:
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。 命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件
其中:
z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
比如:假如test目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt
或:tar -zcvf test.tar.gz /test/
2)解压压缩包:
命令:tar [-xvf] 压缩文件
其中:x:代表解压
示例:
1 将/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz
2 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf test.tar.gz -C /usr
(- C代表指定解压的位置)
操作权限命令
操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。通过 ls -l
命令我们可以 查看某个目录下的文件或目录的权限
示例:在随意某个目录下ls -l
第一列的内容的信息解释如下:
下面将详细讲解文件的类型、Linux中权限以及文件有所有者、所在组、其它组具体是什么?
文件的类型:
-
d: 代表目录
-
-: 代表文件
-
l: 代表软链接(可以认为是window中的快捷方式)
Linux中权限分为以下几种:
-
r:代表权限是可读,r也可以用数字4表示
-
w:代表权限是可写,w也可以用数字2表示
-
x:代表权限是可执行,x也可以用数字1表示
文件和目录权限的区别:
对文件和目录而言,读写执行表示不同的意义。
对于文件:
权限名称 | 可执行操作 |
---|---|
r | 可以使用cat查看文件的内容 |
w | 可以修改文件的内容 |
x | 可以将其运行为二进制文件 |
对于目录:
权限名称 | 可执行操作 |
---|---|
r | 可以查看目录下列表 |
w | 可以创建和删除目录下文件 |
x | 可以使用cd进入目录 |
需要注意的是超级用户可以无视普通用户的权限,即使文件目录权限是000,依旧可以访问。 在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
-
所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 。
-
文件所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组 用ls ‐ahl命令可以看到文件的所有组 也可以使用chgrp 组名 文件名来修改文件所在的组。
-
其它组
除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
我们再来看看如何修改文件/目录的权限。
修改文件/目录的权限的命令:chmod
示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限, 其他用户只有读的权限
chmod u=rwx,g=rw,o=r aaa.txt
上述示例还可以使用数字表示:
chmod 764 aaa.txt
补充一个比较常用的东西:
假如我们装了一个zookeeper,我们每次开机到要求其自动启动该怎么办?
-
新建一个脚本zookeeper
-
为新建的脚本zookeeper添加可执行权限,命令是:
chmod +x zookeeper
-
把zookeeper这个脚本添加到开机启动项里面,命令是:
chkconfig --add zookeeper
-
如果想看看是否添加成功,命令是:
chkconfig --list
用户管理命令
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
Linux用户管理相关命令:
-
useradd 选项 用户名
:添加用户账号 -
userdel 选项 用户名
:删除用户帐号 -
usermod 选项 用户名
:修改帐号 -
passwd 用户名
:更改或创建用户的密码 -
passwd -S 用户名
:显示用户账号密码信息 -
passwd -d 用户名
: 清除用户密码
useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
用户组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
Linux系统用户组的管理相关命令:
-
groupadd 选项 用户组
:增加一个新的用户组 -
groupdel 用户组
:要删除一个已有的用户组 -
groupmod 选项 用户组
: 修改用户组的属性
其他常用命令
-
PWD
: 显示当前所在位置 -
sudo + 其他命令
:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。 -
grep 要搜索的字符串 要搜索的文件 --color
: 搜索命令,--color代表高亮显示 -
ps -
ef/ps -``aux
: 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis
(查看包括 redis 字符串的进程),也可使用 。pgrep redis -a
注意:如果直接用ps((Process Status))命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。
-
kill -9 进程
的 pid: 杀死进程(-9
表示强制终止。)先用ps查找进程,然后用kill杀掉
-
网络通信命令:
-
查看当前系统的网卡信息:ifconfig
-
查看与某台机器的连接情况:ping
-
查看当前系统的端口使用:netstat -an
-
-
net-tools 和 iproute2 : 起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持。Linux IP命令类似于ifconfig,但功能更强大,旨在替代它。更多详情请阅读如何在Linux中使用IP命令和示例
net-tools``iproute2
-
shutdown
: : 指定现在立即关机;:指定5分钟后关机,同时送出警告信息给登入用户。shutdown -h now``shutdown +5 "System will shutdown after 5 minutes"
-
重启
:重启
: 重开机。reboot -w
: 做个重开机的模拟(只有纪录并不会真的重开机)。
五、练习题
Linux抽问:
1~9
1、使用帮助参数查看ls命令的使用方法
shiyanlou:project/ $ ls --help
2、查看Linux内核发行号
shiyanlou:project/ $ uname -r
3、查看Linux内核完整信息
shiyanlou:project/ $ uname -a
4、查看Linux根目录下面的所有文件或目录
shiyanlou:project/ $ ls /
5、查看Linux根目录下的home目录中文件或目录,显示文件的属性与权限等相关信息
shiyanlou:-/$ ls -l /home/
6、查看Linux根目录下的home目录中文件或目录,长数据方式显示隐藏的文件或目录
shiyanlou:project/ $ ls -al /home/
7、查看 /home/ 目录下的文件和目录包含的子目录
shiyanlou:-/$ ls -R /home/
8、使用"说明书"命令查看ls命令的信息,查阅完成后退出
shiyanlou:-/$ man ls # 查看完"说明书"后按键盘上的 q 键就可以退出,q的意思是:quit
9、在/home/project/目录中创建 MyStudy目录
shiyanlou:project/ $ mkdir MyStudy
10~19
10、在/home/project/目录中创建 web/lib/css多层目录结构
shiyanlou:project/ $ mkdir -p /home/project/web/lib/css/
11、在/home/project/目录中创建 site/bin/java,site/src/java,site/test/java 相关多层目录结构
shiyanlou:project/ $ mkdir -p /home/project/site/{bin,src,test}/java
12、在/home/project/目录中创建 log/20230101 ~ log/20230112 相关多层目录结构
shiyanlou:project/ $ mkdir -p /home/project/log/{20230101..20230112}/
13、将登录用户当前使用目录切换到 10 题的css目录中
shiyanlou:project/ $ cd /home/project/web/lib/css/
14、在css目录中创建一个reset.css文件
shiyanlou:css/ $ touch reset.css # 或 shiyanlou:css/ $ touch /home/project/web/lib/css/reset.css
15、在css目录中创建test01.css ~ test10.css的文件
shiyanlou:css/ $ touch /home/project/web/lib/css/test{01..10}.css
16、查看/etc/passwd的内容并显示行号
shiyanlou:project/ $ cat -n /etc/passwd
17、查看/etc/passwd的内容包括一些不可见的符号,如:换行符
shiyanlou:project/ $ cat -A /etc/passwd
18、在/home/project/ 新建 data.txt文件,然后将/etc/passwd内容重定向到data.txt中
shiyanlou:project/ $ cat /etc/passwd >> data.txt
19、查看/etc/passwd 前8行内容
shiyanlou:project/ $ head -n 8 /etc/passwd
20~29
20、查看/etc/passwd 前 50个字节内容
shiyanlou:project/ $ head -c 50 /etc/passwd
21、查看/etc/passwd 后9行内容
shiyanlou:project/ $ tail -n 9 /etc/passwd
22、查找/etc/passwd 能匹配到 shiyanlou的相关内容
shiyanlou:project/ $ grep shiyanlou /etc/passwd
23、在/home/project/ 新建 file.txt文件,然后将/etc/passwd 能匹配到 shiyanlou的相关内容重定向到file.txt文件中,最后查看 file.txt内容
shiyanlou:project/ $ touch /home/project/file.txt shiyanlou:project/ $ grep shiyanlou /etc/passwd > /home/project/file.txt shiyanlou:project/ $ cat /home/project/file.txt
24、将/home/project/web/lib/css/reset.css文件 复制到 /home/shiyanlou/目录中
shiyanlou:project/ $ cp /home/project/web/lib/css/reset.css /home/shiyanlou/
25、将/home/project/site/bin/目录中的java目录复制到 /home/shiyanlou/目录中
shiyanlou:project/ $ cp -r /home/project/site/bin/java /home/shiyanlou/
26、将/home/project/web/lib/css/reset.css文件 移动到 /home/shiyanlou/目录中并重命名为index.css
shiyanlou:project/ $ mv /home/project/web/lib/css/reset.css /home/shiyanlou/index.css
27、将/home/project/site/bin/目录中的java目录移动到 /home/shiyanlou/目录中并重命名为python
shiyanlou:project/ $ mv /home/project/site/bin/java /home/shiyanlou/python
28、删除/home/shiyanlou/index.css文件
shiyanlou:project/ $ rm /home/shiyanlou/index.css
29、删除/home/shiyanlou/python目录
shiyanlou:project/ $ rm -r /home/shiyanlou/python
30~35
30、将/home/shiyanlou 目录打包到当前project目录下,打包格式为:shiyanshou.tar.gz
shiyanlou:project/ $ tar -czvf shiyanshou.tar.gz /home/shiyanlou/
31、将/home/shiyanlou 目录打包到当前project目录下,打包格式为:shiyanshou.tar.bz2
shiyanlou:project/ $ tar -cjvf shiyanshou.tar.bz2 /home/shiyanlou/
32、将 /usr/local/man 目录加密打包到 当前project目录下,密码为 123456,并命名为 man.zip。
shiyanlou:project/ $ zip -P 123456 -r man.zip /usr/local/man/ # 或 shiyanlou:project/ $ zip -r -e man.zip /usr/local/man
33、将project目录下man.zip解压到project目录man路径下
shiyanlou:project/ $ unzip -P 123456 man.zip -d /home/project/man/ # 或 shiyanlou:project/ $ unzip man.zip -d /home/project/man
34、将project目录下web目录权限修改为所有者只能读写执行,所属组只能读写,所有人能读的相关权限。
shiyanlou:project/ $ chmod 764 /home/project/web
35、将project目录下web目录及其文件和子目录的归属修改为所有者root,所属组root
shiyanlou:project/ $ sudo chown -R root:root /home/project/web/
Linux 常用命令速查表
目录操作
-
cd
:返回自己 $HOME 目录 -
cd {dirname}
:进入目录 -
pwd
:显示当前所在目录 -
mkdir {dirname}
:创建目录 -
mkdir -p {dirname}
:递归创建目录 -
pushd {dirname}
:目录压栈并进入新目录 -
popd
:弹出并进入栈顶的目录 -
dirs -v
:列出当前目录栈 -
cd -
:回到之前的目录 -
cd -{N}
:切换到目录栈中的第 N 个目录,比如 cd -2 将切换到第二个
文件操作
-
ls
:显示当前目录内容,后面可接目录名:ls {dir} 显示指定目录 -
ls -l
:列表方式显示目录内容,包括文件日期,大小,权限等信息 -
ls -1
:列表方式显示目录内容,只显示文件名称,减号后面是数字 1 -
ls -a
:显示所有文件和目录,包括隐藏文件(.开头的文件/目录名) -
ln -s {fn} {link}
:给指定文件创建一个软链接 -
cp {src} {dest}
:拷贝文件,cp -r dir1 dir2 可以递归拷贝(目录) -
rm {fn}
:删除文件,rm -r 递归删除目录,rm -f 强制删除 -
mv {src} {dest}
:移动文件,如果 dest 是目录,则移动,是文件名则覆盖 -
touch {fn}
:创建或者更新一下制定文件 -
cat {fn}
:输出文件原始内容 -
any_cmd > {fn}
:执行任意命令并将标准输出重定向到指定文件 -
more {fn}
:逐屏显示某文件内容,空格翻页,q 退出 -
less {fn}
:更高级点的 more,更多操作,q 退出 -
head {fn}
:显示文件头部数行,可用 head -3 abc.txt 显示头三行 -
tail {fn}
:显示文件尾部数行,可用 tail -3 abc.txt 显示尾部三行 -
tail -f {fn}
:持续显示文件尾部数据,可用于监控日志 -
nano {fn}
:使用 nano 编辑器编辑文件 -
vim {fn}
:使用 vim 编辑文件 -
diff {f1} {f2}
:比较两个文件的内容 -
wc {fn}
:统计文件有多少行,多少个单词 -
chmod 644 {fn}
:修改文件权限为 644,可以接 -R 对目录循环改权限 -
chgrp group {fn}
:修改文件所属的用户组 -
chown user1 {fn}
:修改文件所有人为 user1, chown user1:group1 fn 可以修改组 -
file {fn}
:检测文件的类型和编码 -
basename {fn}
:查看文件的名字(不包括路径) -
dirname {fn}
:查看文件的路径(不包括名字) -
grep {pat} {fn}
:在文件中查找出现过 pat 的内容 -
grep -r {pat} .
:在当前目录下递归查找所有出现过 pat 的文件内容 -
stat {fn}
:显示文件的详细信息
用户管理
-
whoami
:显示我的用户名 -
who
:显示已登陆用户信息,w / who / users 内容略有不同 -
w
:显示已登陆用户信息,w / who / users 内容略有不同 -
users
:显示已登陆用户信息,w / who / users 内容略有不同 -
passwd
:修改密码,passwd {user} 可以用于 root 修改别人密码 -
finger {user}
:显示某用户信息,包括 id, 名字, 登陆状态等 -
adduser {user}
:添加用户 -
deluser {user}
:删除用户 -
w
:查看谁在线 -
su
:切换到 root 用户 -
su -
:切换到 root 用户并登陆(执行登陆脚本) -
su {user}
:切换到某用户 -
su -{user}
:切换到某用户并登陆(执行登陆脚本) -
id {user}
:查看用户的 uid,gid 以及所属其他用户组 -
id -u {user}
:打印用户 uid -
id -g {user}
:打印用户 gid -
write {user}
:向某用户发送一句消息 -
last
:显示最近用户登陆列表 -
last {user}
:显示登陆记录 -
lastb
:显示失败登陆记录 -
lastlog
:显示所有用户的最近登陆记录 -
sudo {command}
:以 root 权限执行某命令
进程管理
-
ps
:查看当前会话进程 -
ps ax
:查看所有进程,类似 ps -e -
ps aux
:查看所有进程详细信息,类似 ps -ef -
ps auxww
:查看所有进程,并且显示进程的完整启动命令 -
ps -u {user}
:查看某用户进程 -
ps axjf
:列出进程树 -
ps xjf -u {user}
:列出某用户的进程树 -
ps -eo pid,user,command
:按用户指定的格式查看进程 -
ps aux | grep httpd
:查看名为 httpd 的所有进程 -
ps --ppid {pid}
:查看父进程为 pid 的所有进程 -
pstree
:树形列出所有进程,pstree 默认一般不带,需安装 -
pstree {user}
:进程树列出某用户的进程 -
pstree -u
:树形列出所有进程以及所属用户 -
pgrep {procname}
:搜索名字匹配的进程的 pid,比如 pgrep apache2 -
kill {pid}
:结束进程 -
kill -9 {pid}
:强制结束进程,9/SIGKILL 是强制不可捕获结束信号 -
kill -KILL {pid}
:强制执行进程,kill -9 的另外一种写法 -
kill -l
:查看所有信号 -
kill -l TERM
:查看 TERM 信号的编号 -
killall {procname}
:按名称结束所有进程 -
pkill {procname}
:按名称结束进程,除名称外还可以有其他参数 -
top
:查看最活跃的进程 -
top -u {user}
:查看某用户最活跃的进程 -
any_command &
:在后台运行某命令,也可用 CTRL+Z 将当前进程挂到后台 -
jobs
:查看所有后台进程(jobs) -
bg
:查看后台进程,并切换过去 -
nohup {command}
:长期运行某程序,在你退出登陆都保持它运行 -
nohup {command} &
:在后台长期运行某程序 -
wait
:等待所有后台进程任务结束