01_学习Linux命令的原因
-
Linux刚面世时并没有图形界面,所有的操作全靠命令完成,如:磁盘操作 文件存取 目录操作 进程管理 文件权限设定等
-
在企业中Linux服务器维护工作都是通过SSH客户端(如:SesureCRT)远程连接Linux服务器来完成的,并没有图形界面 所有的维护工作都需要使用命令来完成
-
在职场中, 作为一名程序员, 必须要或多或少的掌握一些Linux常用的终端命令
-
Linux发行版本的命令大概有200多个 但是常用的命令只有10多个而已
==学习终端命令的技巧==
不需要死记硬背, 对于常用命令, 用的多了, 自然就记住了
不要尝试一次学会所有的命令, 有些命令是非常不常用的,临时遇到, 临时百度就可以
02_终端命令格式
什么是命令?
命令也成为指令, 在Linux终端(命令行)中输入的能够被Linux系统识别的内容,成为命令
标准的Linux命令格式
指令主体 (空格) [-选项] (空格) [操作对象]
说明:
-
指令主体: 或者目录名称最长可以 256 个字符
-
选项: 可用来对命令进行控制, 也可以省略(可以包含多个选项)
-
操作对象: 传给命令的参数 可以是零个 一个或者多个
例如:让张三同学去楼下小卖铺买一瓶农夫山泉纯净水,在这个指令中:
“买东西”是指令的主体,纯净水是操作的对象,农夫山泉是操作的选项
03_Linux命令:操作目录(创建, 切换, 查看, 删除)
Linux下文件和目录的特点
-
Linux文件或者目录名称的最大长度为256个字符
-
以 ==. ==开头的文件为隐藏文件,普通情况下查看目录下的文件内容时不显示隐藏文件
-
==.== 代表当前目录
-
==..== 代表上一级目录
3.1 查看目录下内容
显示文件列表, 使用命令:ls
命令格式: ls [-选项] [路径]
ls是英文单词list的缩写, 其功能为列出目录中的内容
如果只是用ls命令,只能看到当前目录下非隐藏文件
ls常用选项
常用命令
ls 查看当前目录内容(缺点:隐藏文件看不到)
ls -l 以列表的形式显示文件的详细信息(缺点:文件大小显示的不符合我们习惯)
ls -l 也可以使用 ll代替 两者效果一致
ls -a 查看当前目录内容 包括隐藏文件
ls -al 查看目录内容的详细信息(查看文件类型 权限 大小等)
或者使用 ll -a
ls -lh 查看目录内容的详细信息 以K, M, G的方式显示文件大小
或者使用 ll -h
ls /usr 查看root目录下所有内容
3.2 切换目录
目录切换, 使用命令:cd
cd是英文单词 change directory 的缩写, 其功能为更改当前目录
注意:==Linux所有的 目录 和 文件名 都是大小写敏感的==
可以通过cd aaa/ 切换到当前目录下的 aaa目录下
示例:
cd 回到用户主目录
cd aaa 切换到当前目录下的aaa目录(相对路径)
cd /root/aaa 切换到指定目录(绝对路径)
cd .. 回到上一级目录
cd ../.. 回到上上一级目录
cd ../dir 回到上一级的dir目录
3.3 创建目录
创建目录,使用命令: mkdir (英文单词 make directory的缩写)
注意:新建目录中不能与当前目录中 已有的目录或文件 同名
命令格式: mkdir 目录名 创建没有层级关系的目录
mkdir test #在当前目录下创建一个名为test的新目录
命令格式:mkdir -p 目录1/目录2/目录3/... 创建有层级的目录
mkdir -p /root/ccc/ddd #在root目录下 创建ccc目录 在ccc目录下创建ddd目录
3.4 删除目录
删除目录 使用命令 rm (英文单词remove的缩写)
命令格式
==rm [选项] 目录名==
注意:rm命令既用于删除目录 也用于删除文
rm常用选项:
示例: rm -r 目录 删除目录有提醒
[root@node1 ~]# rm -r test #删除当前目录下 test目录
rm:是否删除目录 "test"?#给出提示信息, 确认是否删除
y删除 n 不删除 ctrl + c 退出删除
示例:rm -rf 目录 直接删除目录 (没有提示,不管当前目录下是否有内容)
3.5 查看当前所在目录
查看当前所在目录: pwd
04_Linux命令:操作文件(创建, 移动, 复制, 重命名, 查看内容)
4.1 创建文件
创建文件, 使用命令 touch
命令格式: touch 文件
示例:
touch hello.txt
touch /root/world.txt
4.2 移动文件
移动文或目录, 使用命令: mv (英文move的缩写)
将文件移动另一个目录中: ==mv 文件 目录==
mv world.txt ccc
将目录移动到另一个目录中:
==mv 被移动目录 目标目录==
[root@node1 ~]# mv ccc /root/aaa
[root@node1 ~]# ll /root/aaa
4.3 重命名
mv命令除了可以用来移动文件或者目录之外 还可以给文件或者目录重命名
命令格式 ==mv 旧文件名 新文件名==
[root@node1 ~]# mv hello.txt java.txt
[root@node1 ~]# ll
命令格式 ==mv 旧目录名 新目录名==
[root@node1 ~]# mv aaa hello
[root@node1 ~]# ll
4.4 复制文件
赋值文件使用命令: cp 命令格式 : ==cp 文件或者目录(源) 文件或目录(目标)==
==cp -r == 复制层级目录
示例:
将java.txt文件复制到hello文件夹
[root@node1 ~]# cp java.txt hello
[root@node1 ~]# ll hello/
将 java.txt复制到 php.txt
[root@node1 ~]# cp java.txt php.txt
[root@node1 ~]# ll
将 /root/hello目录复制到 /tmp下
[root@node1 ~]# cp -r /root/hello /tmp
[root@node1 ~]# ls /tmp
4.5 查看文件内容
使用cat命令可以查看文件中存储的具体内容
命令格式: cat 文件
[root@node1 ~]# cat /root/initial-setup-ks.cfg
05_压缩和解压命令
5.1 打包
生活中的示例: 将冬天的衣服放到袋中
在Linux中可以把多个文件打包成一个大文件, 且打包后的文件需以 .tar 结尾
tar是Linux中的打包命令
==tar -cvf 打包名.tar 被打包的目录==
==tar -cvf 打包名.tar 被打包的文件1 被打包的文件2 被打包的文件3==
tar的选项说明
练习题:
练习一
进入 /root/hello下 创建1.txt 2.txt 3.txt
将 1.txt 2.txt 3.txt 打包成123.tar文件
[root@node1 ~]# cd /root/hello/ #进入hello目录
[root@node1 hello]# touch 1.txt 2.txt 3.txt #创建 1.txt 2.txt 3.txt 文件
[root@node1 hello]# ll
[root@node1 hello]# tar -cvf 123.tar 1.txt 2.txt 3.txt #将 1.txt 2.txt 3.txt 压缩为 123.tar
[root@node1 hello]# ll
练习二
将/root/hello中的ccc目录 打包成 ccc.tar 文件
[root@node1 hello]# tar -cvf ccc.tar ccc #将ccc压缩为ccc.tar
[root@node1 hello]# ll
5.2 解压
生活中的事例: 从袋子中把冬天的衣服取出来
在Linux中,使用tar命令进行解压
==tar -xvf 打包名.tar #解压到当前目录下==
==tar -xvf 打包名.tar -C 解压到指定位置==
tar的选项说明
练习题:
练习一:
将 123.tar 解压到当前目录中
[root@node1 hello]# rm -rf 1.txt 2.txt 3.txt #将之前创建的三个文件删除掉
[root@node1 hello]# ll
[root@node1 hello]# tar -xvf 123.tar #将123.tar中的三个文件解压到当前目录中
[root@node1 hello]# ll
练习二:
将 ccc.tar 解压到 /root/hello/bbb 目录中
[root@node1 hello]# tar -xvf ccc.tar -C /root/hello/bbb #将ccc.tar解压到/root/hello/bbb中
[root@node1 hello]# ll bbb/
5.3 压缩和解压
在Linux中,最常用的压缩文件格式是 ==XXX.tar.gz==
在 ==tar==命令中有一个选项 ==-z== 可以调用==gzip==,从而可以方便的实现压缩和解压缩的功能
命令格式:
压缩文件
==tar -zcvf 打包压缩文件名.tar.gz 被压缩的文件/目录==
解压缩文件
==tar -zxvf 打包文件.tar.gz ==
解压缩到指定路径
==tar -zxvf 打包文件.tar.gz -C 目录路径==
tar的选项说明
练习题:
练习1: 将1.txt、2.txt、3.txt 打包压缩成 123.tar.gz文件(gzip压缩格式)
(tar -cvf 123.tar 1.txt 2.txt 3.txt tar -zcvf 123.tar.gz 1.txt 2.txt 3.txt)
练习2: 将有内容的ccc目录 打包成 ccc.tar.gz 文件(gzip压缩格式)
练习3: 将 123.tar.gz 解压到 当前目录中(gzip压缩格式)
练习4: 将 ccc.tar.gz 解包到 /root/hello/bbb 目录中(gzip压缩格式)
06_文件查找命令
6.1 find命令
find是linux中最常见的搜索命令, 用于查找符合条件的文件.
find 命令在Linux系统的整个目录结构中搜索文件, 并对搜索结果执行指定的操作.
find的使用格式如下:
==find <指定目录> <指定条件> <指定动作>==
-
<指定目录>: 所要搜索的目录及其所有的子目录. 默认为当前目录
-
<指定条件>: 所要搜索的文件的特征
-
<指定动作>:对搜索的结果进行特定的处理
如果什么参数都不添加, find默认搜索当前目录及其子目录,并且不过滤任何结果 (也就是返回所有的文件),将他们全部显示在屏幕上.
准备工作
# 新增目录 且 切换目录 且 新增文件
mkdir -p /export/aaa/bbb/ccc/ddd/eee/
touch /export/aaa/bbb/ccc/ddd/eee/abc.txt
touch /export/aaa/123.txt
touch /export/aaa/312.txt
cd /export
6.1.1 find命令的基本使用
通过find命令在特定的目录下(包括它的后代目录) 搜索符合条件的文件
find命令的基本使用格式:
说明:
-
如果省略路径, 表示在当前文件夹下查找
-
'*' 表示任意
示例1:搜索指定目录下,文件是 abc.txt的文件
#方式1:指定全部录
find /export/ -name 'abc.txt'
#方式2:当前目录
find . -name 'abc.txt'
示例2:搜索指定目录下,文件名 包含 1 的文件
# 创建测试文件
[root@node1 export]# touch /export/12.txt /export/616.txt /export/321.txt
# 实现
[root@node1 export]# find /export/ -name '*1*'
示例3:搜索指定目录下,所有以 .txt 为扩展名的文件
[root@node1 export]# find /export/ -name '*.txt'
示例:搜索指定目录下,所有以数字1开头的文件
[root@node1 export]# find /export/ -name '1*'
6.1.2 find命令扩展
在根目录下查找
find命令扩展
#在当前目录查找以.log结尾的文件, 并显示详细信息
[root@node1 export]# find . -name '*.txt' -ls
#查找当前目录以.log结尾的普通文件
[root@node1 /]# find . -type f -name '*.log'
#查找当前目录中大于10M的以.tar.gz结尾的文件
[root@node1 /]# find . -type f -name '*.tar.gz' -size +1M
./root/dir/redis-3.2.8.tar.gz
6.2 grep命令
grep命令: 用于==搜索关键字==
grep命令的作用之一:grep搜索文件中的关键字 (用于搜索文档内容中的关键字)
示例1:搜索存在关键字的行
#语法:grep 关键字 文件名
[root@node1 /]# grep of /etc/chrony.conf #在chrony.conf文件中搜索关键字 of
示例2:搜索存在关键字的行且显示行号
#语法:grep -n 关键字 文件名
#-n number 显示匹配行和行号
[root@node1 /]# grep -n of /etc/chrony.conf #在chrony.conf文件中搜索关键字 of 并显示行号
示例3:忽略大小写 搜索 存在关键字 的行
#语法: grep -i 关键字 文件名
#-i ignore-case 忽略大小写
grep -i se /etc/chrony.conf
07_系统管理命令
7.1 ps命令
ps命令用来列出系统中当前正在运行的进程(process)
语法: ps [options]
示例: ps -ef #查看所有的进程
示例:
ps -u root #查看root用户下所有进程
7.2 管道命令
管道是Linux命令中重要的一个概念,其作用是将一个命令的输出用作另一个命令的输入
管道命令格式: 命令1 | 命令2 | ... 管道符: |
示例:
#示例1:ps -ef 查询所有正在运行的进程
#示例2:grep mysql 搜索关键字mysql
ps -ef | grep mysql #查询进程中名字叫mysql的进程
7.3 kill命令
kill命令用于终止正在执行中的程序
语法:==kill pid(系统进程ID)==
示例:
[root@node1 /]# ps -ef | grep mysql 查看mysql的进程id
[root@node1 /]# kill 11266 #杀死进程为 1538 的进程
[root@node1 /]# kill -9 11266 #杀死进程为 1538的进程 数字9代表传递给kill的一个信号 告知强制杀死
08_用户和权限
8.1基本概念
用户是Linux系统工作中重要的一环,用户管理包括==用户与组管理==
在Linux系统中, 不论是由本地或者是远程登录系统, 都必须拥有一个账号, 并且对于不同的系统资源拥有不同的使用权限
对文件/目录的权限包括:
为了方便用户管理,Linux添加了组的概念
8.2 ls -l 扩展
ls -l 或 ll 可以查看文件夹下文件的详细信息,详细信息从左到右 依次是
8.3 用户管理
8.3.1 用户创建
示例
[root@node1 ~]# useradd itheima
[root@node1 ~]# passwd itheima
8.3.2 用户删除
示例
[root@node1 ~]# userdel -r itheima
8.4 权限管理
8.4.1 用户权限解读
r: 对文件,是指可读取内容;对目录,是可以ls
w: 对文件,是指可修改文件内容;对目录,是指可以在其中创建或删除子节点(目录或文件)
x: 对文件,是指是否可以运行这个文件;对目录,是指是否可以cd进入这个目录
8.4.2 用户权限修改
在linux中,修改用户权限使用命令: ==chmod==
修改用户权限方式1
chmod u+x 文件|目录 # + 表示新增权限 u表示user(属主)
chmod u-wx 文件|目录 # - 表示删除权限
chmod -R u+wx 目录 # R 表示权限会覆盖到当前目录以及目录下的子目录及文件
修改用户权限方式2
# 精确到 拥有者|组|其他 权限
chmod u=rwx,g=wx,o=w 文件|目录
修改用户权限方式3
chmod 755 文件|目录 # 7=4+2+1 rwx 5=4+1 rx 5=4+1 rx
chmod -R 755 目录
09_网络和服务管理命令
9.1 网络命令
9.1.1 hostname命令
在linux中查看主机名, 使用命令hostname
[root@node1 hello]# hostname
修改主机名称
修改方式一(临时修改)
[root@node1 hello]# hostname itheima
修改方式二(永久修改)
[root@node1 hello]# vim /etc/hostname
注意:修改文件中的主机名称后, 需要重启服务器
9.2 ifconfig命令
在Linux中查看主机IP地址 使用命令ifconfig
[root@node1 hello]# ifconfig
修改主机的ip地址:vim /etc/sysconfig/network-scripts/ifcfg-ens33
10_服务管理命令
service命令是用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态
service network status #查看网络服务状态
service network stop #停止网络服务
service network start #启动网络服务
service network restart #重启网络服务