从零开始学大数据(三):Linux常用基础命令(上)
Linux刚面世时并没有图形界面, 所有的操作全靠命令完成, 如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等
在职场中,大量的服务器维护工作 都是远程通过SSH客户端来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成。
Linux部分常用命令:
Linux文件系统目录树
windows系统可以拥有多个盘符, 如 C盘、D盘、E盘。
Linux没有盘符这个概念, 只有一个根目录/, 所有文件都在它下面:
Linux主要目录:
/bin:二进制命令所在的目录 /boot:系统引导程序所需要的文件目录,引导系统开机 /dev:设备软件目录,磁盘,光驱, /etc:系统配置,启动程序 /home:普通用户的家,目录默认数据存放目录 /lib:启动系统和运行命令所需的共享库文件和内核模块存放 /mnt:临时挂载储存设备的挂载点, /proc:操作系统运行时,进程信息和内核信息存放在这里 /root:Linux超级权限用户root的家目录 /sbin:和管理系统相关的命令,【超级管理员用】 /tmp:临时文件目录,这个目录被当作回收站使用 /usr:用户或系统软件应用程序目录 /var:存放系统日志的目录 注意:一般不要操作非自己创建的目录和文件,否则可能导致服务器崩溃。 |
命令帮助手册
因为一个命令有很多可选项, 死记硬背肯定不行, 所以需要借助手册查阅.
在线手册:https://www.runoob.com/linux/linux-command-manual.html
help命令
命令格式:command --help例子:ls --help
说明: 显示 command 命令的帮助信息
缺点: 虽然可以查询命令的帮助信息, 但是没有提供 翻页、搜索功能.
man命令
命令格式:man command例子:man ls
说明: 查询command命令的使用手册
man 时 manual 的缩写, 是Linux提供的一个手册, 包含了绝大部分的命令、函数的详细使用说明.
使用 man 时的操作键:
文件和目录的常用命令
目标:学习掌握以下命令
查看目录内容:ls
切换目录:cd
创建和删除操作:touch、 rm、 mkdir
拷贝和移动文件:cp、 mv
查看文件内容:cat、 less、tail、head、 grep
其他:echo、 重定向 > 和 >>、 管道 |
2.1、查看目录内容
2.1.1、终端使用技巧
A、自动补全
在敲出 文件/ 目录 / 命令 的前几个字母之后, 按下 tab键
如果还存在其他 文件 / 目录 / 命令, 再按一下tab键, 系统会提示可能存在的命令
B、曾经使用过的命令
使用 上 / 下 光标键可以在曾经使用过的命令之间来回切换
如果想要退出选择, 并且不想执行当前选中的命令, 可以按 ctrl + c
2.1.2、ls命令说明
ls 是英文单词list的简写, 其功能为列出目录的内容,是用户最常用的命令之一
因为需要编辑服务器上的文件, 所以需要先确认指定目录下是否存在
linux 下文件和目录的特点:
linux文件 或者 目录 名称最长可以 256 个字符
以 . 开头的文件为隐藏文件, 需要用 -a 参数才能显示
. 代表当前目录
.. 代表上一级目录
案例:
1 创建文件 01.txt2 创建隐藏文件 02.txt3 罗列隐藏文件和非隐藏文件
2.1.3、ls命令常用选项
如果 只使用ls命令 就只能看到当前目录下 非隐藏 文件。
如果想增强功能,就需要学习更多的选项
案例:
1 切换到 /usr/tmp 清空内容2 创建隐藏文件 非隐藏文件 目录3 查看当前目录内容 (缺点: 隐藏文件看不到)4 查看当前目录所有内容 (既包含隐藏, 也包含非隐藏)5 查看目录内容的详细信息(查看文件类型、权限、大小等 缺点:文件大小没有单位)6 简化合并 查看目录内容的详细信息(要显示文件大小)
命令如下:
2.1.4、ls命令中通配符的使用
准备工作
# 切换到临时目录(先使用, 稍候讲解)cd /usr/tmp# 清空目录内容(先使用, 稍候讲解)rm -rf *# 创建文件touch a23.txt 11.txt 111.txt 112.txt 123.txt 223.txt 323.txt 423.txt 523.txt# 查看目录内容ls
代码如下
案例:
1 查看以 1 开头的文件或目录2 查看以 3.txt 结尾的 文件或目录3 查看含有3的文件列表4 查看第二个字符是2的文件5 查看 第一个字符是 1到5, 以23.txt结尾 的 目录或文件名
2.2、切换目录
2.2.1、cd命令
cd 是英文单词 change directory 的缩写, 其功能为 更改当前的工作目录, 也是用户最常用的命令之一
注意: linux的所有 目录 和 文件名 都是大小写敏感的
需求:
1 查看当前所在目录2 切换到 /usr/local3 切换到 上一级目录 /usr4 后退到上一次访问的目录中
代码如下:
2.2.2、相对路径和绝对路径
2.2.2.1、相对路径
特征: 相对路径输入路径时, 最前面不是以 "/" 开始的, 表示相对 当前目录 所在的位置
缺点: 参照工作目录 发生变化 相对路径也要发生变化
演示案例:
需求1: 当前工作目录是 /usr, 使用相对路径 切换到 /usr/tmp 目录下需求2: 当前工作目录是 /root, 使用相对路径 切换到 /usr/tmp 目录下
在root目录下时,无法使用相对路径实现切换到/usr/tmp目录
代码如下:
2.2.2.2、绝对路径
特征: 绝对路径 在输入路径时, 最前面是以 / 开始的, 表示从 根目录 开始的具体目录位置
优点: 定位准确, 不会因为 工作目录变化 而变化
演示案例:
需求1: 当前工作目录是 /usr, 使用绝对路径 切换到 /usr/tmp 目录下需求2: 当前工作目录是 /root, 使用绝对路径 切换到 /usr/tmp 目录下
小结:
相对路径 在输入路径时, 最前面不是以 / 开始的 , 表示相对 当前目录 所在的目录位置
绝对路径 在输入路径时, 最前面是以 / 开始的, 表示 从 根目录 开始的具体目录位置
2.3、创建和删除操作
2.3.1、创建文件
命令格式:touch 文件
案例:
第一步: 创建一个空白文件touch 不存在的文件第二步: 修改文件的末次修改日期touch 存在的文件
小结:
通过 touch 文件名 创建文件 和 修改文件的末次访问时间
2.3.2、创建目录
命令格式:mkdir 文件目录
案例:
第一步: 创建 没有层级关系的目录(单层次目录)mkdir 目录名第二步: 创建 有层级关系的目录(创建多层次目录)mkdir -p 目录1/目录2/目录3
mkdir命令选项:
2.3.3、删除文件或目录
通过 rm -rf 文件/目录 命令实现删除文件和目录的功能
rm 对应的英文是 remove 含义: 删除
案例1: 删除文件 (有提示)
rm 文件
案例2: 删除文件 (取消提示)
rm -f 文件
案例3: 删除目录
rm -rf 目录
案例4: rm 结合 通配符
常用通配符:*?[abc][a-z]rm -rf *.txt
小结:
通过 rm -rf 文件/目录 完成删除 文件或目录的功能.
注意: 使用 rm 命令要小心, 因为文件删除后不能恢复
记住:在企业开发中,自己只删除自己创建的文件
2.4、拷贝和移动文件
2.4.1、tree命令
通过 tree 命令可以以树状图列出文件目录结构
准备工作:# 创建目录mkdir -p /export/aaa/bbb/ccc# 创建文件touch /export/aaa/01.txt /export/aaa/02.txttouch /export/aaa/bbb/03.txt /export/aaa/bbb/04.txttouch /export/aaa/bbb/ccc/05.txt /export/aaa/bbb/ccc/06.txt
案例1:以树形结构显示目录中的文件和目录
##如果指定目录, 就显示指定目录的内容##如果不指定目录,就显示当前目录的内容tree [目录]提示:默认没有安装tree时,需要联网安装# 安装 tree组件yum -y install tree# 卸载 tree组件yum -y remove tree
案例2:只显示当前目录中的文件夹(目录)
tree -d [目录]
案例3:显示指定的两层
tree -L n [目录]
2.4.2、cp命令(拷贝)
通过 cp 实现复制将指定的 文件 或 目录 复制到 两一个 文件 或 目录中
案例1: 备份指定文件
cp 文件1 备份文件名
使用场景:当需要对服务器中的相关配置文件进行修改时,或其他软件中的配置文件进行修改时(例:mysql):
建议先对要修改的配置文件进行:cp操作 备份操作
案例2: 将文件复制到目录中
cp 文件1 目录/
案例3: 将文件复制到另一个文件中, 实现覆盖效果
cp 文件1 文件2(存在的)
案例4: 复制目录 到指定 目录中
cp -r 目录1/ 目录2/
小结:
cp命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录中
2.4.3、mv命令(移动)
通过mv 命令可以用来 移动 文件 或 目录, 也可以给 文件或目录重命名
案例1: 将文件 移动 另一个目录中
mv 文件 目录/
案例2: 重命名
mv 旧文件名 新文件名
案例3: 将目录移动到 另一个目录中
mv 被移动目录 目标目录
2.5、查看文件内容
准备工作:
# 清空指定目录内容cd /export/rm -rf *# 复制 /etc/passwd 文件 到 /export/ 目录中cp /etc/passwd /export/# 复制 /etc/profile 文件 到 /export/ 目录中cp /etc/profile /export/# 罗列目录中内容tree /export
2.5.1、cat命令
通过 cat 会一次显示所有的内容, 适合 查看内容较少 的文本文件
案例1: 显示文件内容
cat 文件名
案例2: 显示文件内容(显示行号 包含空行)
cat -n 文件名
缺点: 空行也显示行号
案例3: 显示文件内容(显示行号 排除空行)
cat -b 文件名
扩展:nl 文件名 也可以实现 非空行显示行号的效果
小结:
通过 cat 文件名 查看小文件内容
2.5.2、less命令
通过 less [参数] 文件名 命令可以用于分屏显示文件内容, 每次只显示一页内容
less 命令适合查看 内容较多 的文本文件
准备工作:# >> 重定向这个命令, 为了课程需要 我们先用, 后面我们会讲# 将文件 /etc/profile 的内容 追加到 /export/01.txt目录中cat /etc/profile >> /export/01.txtcat /etc/profile >> /export/01.txtcat /etc/profile >> /export/01.txtcat /etc/profile >> /export/01.txtcat /etc/profile >> /export/01.txt
案例1 : 分屏显示文件内容
less -N 文件名 ###分屏展示文件内容,适合大文件
使用 less 的操作键:
案例2 : 根据关键词搜索内容
# 根据关键词搜索/word
小结:
针对 linux中的文本文件信息,可以使用cat或less进行查看
通常cat适用于文本内容比较少的情况下 命令:cat 文件名 cat -n 文件名 nl 文件名
less适用文本内容比较多的情况 命令:less -N 文件名
常用操作:
f 下一页
b 上一页
q 退出
/检查的关键字 搜索文本中的关键字
n:向下继续检索
N:向上检索
2.5.3、head命令
通过 head 命令查看文档的前几行内容
准备工作:
# 准备一个26个字母的文件,上传到 /export/ 目录下
案例1: 查看文件的前5行内容
head -n 数字 文件
2.5.4、tail命令
tail命令用来查看文档(日志)的后几行内容
案例1: 查看文档的最后10行内容
tail -10 文件
案例2: 动态显示文档的最后内容,一般用来查看日志
tail -f 文件名
使用场景:在开发中当某个服务启动后,需要监控该服务中的相关参数信息时,会查看服务的日志文件信息
在开发中,通常会把一些日志信息,写入到一个log文件中。当遇到一些bug时,需要对当前的log文件进行日志的监控或查看。会使用:tail -f log日志文件 监控日志中输出的信息,从而来排查bug
案例3: 动态显示文档的最后10行内容
tail -100f 文件名
小结:
通过 head 命令查看文档的前几行内容
head -n 数值 文件名 --查看文件的前n行信息
通过 tail -10f 文件 命令 查看文档(日志)的后几行内容
tail -数值 文件名 --查看文件的后n行信息
tail -f 文件名 --动态的查看文件中的信息 (会一直滚屏)
2.6、其他命令
2.6.1、管道 |
通过 命令1 | 命令2 可以将命令1的结果 通过 命令2 作进一步的处理
案例1 : 过滤 /etc/ 目录下 以 pro 开头的文件
ls /etc/ | grep ^pro
案例2 : 搜索 存在关键字 的行数
ls /etc | grep ^pro | wc -l
命令:wc[参数] [文件] ###打印文件的行数, 单词数, 字节数
参数:-l ###显示行数
小结: 管道符:|
作用:把执行的第一个命令结果,放入到管道中,用来执行第二个命令
例:ls /etc | grep ^pro
第一个命令:查看/etc下所有的文件或目录
第一个命令执行结果:/etc下所有的文件和目录
第二个命令:grep ^pro 搜索以pro开头的文件或目录
第二个命令执行结果:把/etc下所有的文件或目录中,以pro开头检索出来
2.6.2、echo命令
echo string 将字符串输出到控制台 , 通常会和 重定向 联合使用
演示案例:
echo hello# 如果字符串有空格, 为了避免歧义 请增加 双引号 或者 单引号echo "hello world"
2.6.3、重定向 >(覆盖)和>>(追加)
默认情况下linux执行命令后,命令的结果会输出到控制台
通过 重定向 可以将结果 输出到文件
案例1: 将 命令的成功结果 覆盖 指定文件内容
echo 2222 > 01.txt
案例2: 将 命令的成功结果 追加 指定文件的后面
echo 3333333 >> 01.txt
案例3: 将 命令的失败结果 追加 指定文件的后面
cat 不存在的目录 &>> error.log
小结:
通过 命令 > 文件 将命令的成功结果 覆盖 指定文件内容
通过 命令 >> 文件 将命令的成功结果 追加 指定文件的后面
通过 命令 &>> 文件 将 命令的失败结果 追加 指定文件的后面
2.6.4、&&和||
案例1:如果创建目录成功, 就提示创建成功
mkdir -p 正确目录 && echo "提示创建目录成功
案例2:如果创建目录失败, 就提示创建失败
mkdir 错误目录 || echo "提示创建目录失败"
练习:
1 如果创建目录成功, 就切换到指定目录
2 如果创建文件成功, 就罗列新建文件 所在目录的内容
2.6.5、软链接(创建快捷方式)
软链接也叫符号链接,相当于windows的快捷方式。主要使用场景:当文件存储的目录比较深时,为了快速的去访问藏的比较深的文件,可以给这类文件创建一个访问的快捷方式。
软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体。删除源文件,软链接文件依然存放,但是无法访问指向的源文件路径内容了。失效的时候一般是红字白底闪烁提示。
命令格式:ln -s /源文件的绝对路径 快捷方式的访问路径
小结:
注意: 必须 增加 -s , 否则 就变成了 硬链接。
硬链接的作用之一是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据。
之所以文件建立了硬链接就会防止数据误删,是因为文件系统的原理是,只要文件的索引节点还有一个以上的链接(仅删除了该文件的指向),只删除其中一个链接并不影响索引节点本身和其他的链接(数据的实体并未删除),只有当最后一个链接被删除后,此时如果有新数据要存储到磁盘上,被删除的文件的数据块及目录的链接才会被释放,空间被新数据暂用覆盖。