Linux的目录结构是一个树形结构。
windows
在Linux系统中,路径之间的层级关系,使用:/来表示(开头的/表示根目录)
什么是命令、命令行
学习Linux,本质上是学习在命令行下熟练使用Linux的各类命令。
Linux命令基础格式
通用格式:command [options] [parameter]
command: 命令本身
-options: [可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节。
parameter:[可选,非必选] 命令的参数,多数用于命令的指向目标等。
示例:
ls -l /home/itheima
,ls是命令本身,-l是选项,/home/itheima是参数。
cp -r test1 test2
,cp是命令本身,test1和test2是参数。
ls命令的作用是列表目录下的内容,语法细节如下:
ls [-a -l -h] [Linux路径]
当不使用选项和参数,直接使用ls命令本体,表示:以平铺形式,列出当前工作目录下的内容。
HOME目录和工作目录 ○ 直接输入ls命令,表示列出当前目录下的内容。 ○ Linux系统的命令行终端,再启动的时候,默认加载: ■ 当前登录用户的HOME目录作为当前目录,所以ls命令列出的事HOME目录的内容。 ■ HOME目录:每个Linux操作用户在Linux系统的个人账户目录,路径:/home/用户名
ls命令的参数和选项 ○ 不添加就是展示当前目录的文件。 ○ -h:需要和-l选项搭配使用,以更加人性化的方式显示文件的大小单位。 ○ -a:all的意思,列出全部文件(包含隐藏的文件/文件夹)。 ○ -l:以列表(竖向排列)的形式展示内容,并展示更多信息。 ○ 可以组合使用:ls-l-a = ls -la = ls-al。 ○ 可以加参数 /home/mango查看参数下的目录文件/文件夹。
cd 切换工作目录(Change Directory)
○ 语法:cd[Linux路径]
192192
○ cd命令无需选项,只有参数,表示要切换到那个目录下
○ cd命令直接执行,不写参数,表示回到用户的HOME目录
pwd查看当前工作目录
○ pwd:(Print Work Directory)
○ 语法:pwd
○ pwd命令,无选项,无参数,直接输入Pwd即可。
cd相对路径和绝对路径 ○ 绝对路径:以根目录为起点,描述路径的一种写法,路径描述以/开头 ■ cd /home/mango/Desktop ○ 相对路径:以当前目录为起点,描述路径的一种写法,路径描述无需以/开头。 ■ cd Desktop
cd特殊路径符 ○ . 表示当前目录,比如cd./De sktop表示切换到当前目录下的Desktop目录内,和cd Desktop效果一致。 ○ .. 表示上一级目录,比如:cd..即可切换到上一级目录,cd../..切换到上二级的目录 ○ ~ 表示HOME目录
创建目录命令(mkdir)
mkdir: Make Directory
语法:mkdir [-p] Linux路径
创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作,涉及到权限问题,HOME外无法成功。(谨慎进入root超级管理管权限!!)
清屏命令
文件操作命令partl(touch、cat、more)
touch创建文件
语法:touch Linux路径
cat命令 查看文件内容
more命令查看文件内容
cat是直接将内容全部显示出来
more支持翻页,如果文件内容过多,可以一页页的展示
语法:more Linux路径
cp复制文件文件夹(copy)
mv移动文件或文件夹(move)
语法:mv 参数1 参数2
/home/mango/test/*
最后是*的话就是移动这个文件夹的所有文件rm可用于删除文件、文件夹(remove)
语法:rm [-r -f]参数1 参数2……参数n
同cp命令一样,-r选项用于删除文件夹
-f表示force,强制删除(不会弹出提示确认信息)
参数1,参数2,……参数n表示要删除的文件或文件夹路径,按照空格隔开。可以一次性删除多个目标。
rm删除文件,文件夹-通配符
rm命令支持通配符*,用来做模糊匹配
符号*表示通配符,即匹配任意内容(包含空):
test*
,表示匹配任何以test开头的内容*test
,表示匹配任何以test结尾的内容*test*
,表示匹配任何包含test的内容可以通过su - root
并输入明码进入root超级管理员
也可以直接使用sudo -i加密码进入root
which命令
find命令-按文件名查找文件
find命令-按文件大小查找
语法: find 起始路径 -size + | -n[kMG]
示例:
find / -size -10k
find / -size +100M
find / -size +1G
grep命令从文件中通过关键字过滤文件行。
语法:grep [-n] 关键字 文件路径
wc命令做数量统计(可以统计文件的行数,单词数量等)
语法:wc [-c -m -l -w]文件路径
管道符
cat itheima.txt | grep itheima
echo命令在命令行内输出指定的内容。
语法:echo 输出内容跟
无需选项,只有一个参数,表示要输出的内容,复杂内容可以使用” “包围
echo Hello Linux
输出:Hello Linux
带有空格或\等特殊符号,建议使用双引号包围
反引号`
echo pwd
本意思是输出当前的工作路劲,但是pwd被作为普通字符输出了重定向符
>
,将左侧命令的结果,覆盖写入到符号右侧指定的文件中。
>>
,将左侧命令的结果,追加写入到符号右侧指定的文件中。
xxxxxxxxxx
31echo "hello Linux" >test.txt
2echo "hello test.txt">test.txt
3echo "mango hello">>test.txt
tail 命令
使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改
语法:tail [-f -num] Linux路径
vi\vim是visual interface的简称,是Linux中最经典的文件编辑器
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
三种工作模式
命令模式(Command mode):
输入模式(Insert mode)
底线命令模式(Last line mode)
工作模式转换
vi/vim 文件路径
命令模式快捷键
模式 | 命令 | 描述 |
---|---|---|
命令模式 | i | 在当前光标位置进入输入模式 |
命令模式 | a | 在当前光标位置之后进入输入模式 |
命令模式 | I | 在当前行的开头,进入输入模式 |
命令模式 | A | 在当前行的结尾,进入输入模式 |
命令模式 | o | 在当前光标的下一行进入输入模式 |
命令模式 | O | 在当前光标的上一行进入输入模式 |
命令模式 | esc | 任何情况下输入ESC都能回到命令模式 |
命令模式 | 命令 | 描述 | 命令模式 | 命令 | 描述 |
---|---|---|---|---|---|
命令模式 | 键盘上、键盘k | 向上移动光标 | 命令模式 | dd | 删除光标所在行的内容 |
命令模式 | 键盘下、键盘j | 向下移动光标 | 命令模式 | ndd | n是数字,表示删除当前光标向下的n行 |
命令模式 | 键盘左、键盘h | 向左移动光标 | 命令模式 | yy | 复制当前行 |
命令模式 | 键盘右、键盘l | 向右移动光标 | 命令模式 | nyy | n是数字,复制当前和下面的n行 |
命令模式 | 0 | 移动光标到当前行的开头 | 命令模式 | p | 粘贴复制的内容 |
命令模式 | S | 移动光标到当前行的结尾 | 命令模式 | u | 撤销修改 |
命令模式 | pageup(PgUp) | 向上翻页 | 命令模式 | ctrl + r | 反向撤销修改 |
命令模式 | pagedown(PgDn) | 向下翻页 | 命令模式 | gg | 跳到首行 |
命令模式 | / | 进入搜索模式 | 命令模式 | G | 跳到行尾 |
命令模式 | n | 向下继续搜索 | 命令模式 | dG | 从当前行开始,向下全部删除 |
命令模式 | N | 向上继续搜索 | 命令模式 | dgg | 从当前行开始,向上全部删除 |
命令模式 | dS | 从当前光标开始,删除到本行结尾 | 命令模式 | d0 | 从当前光标开始,删除到本行开头 |
底线命令模式
命令模式 | 命令 | 描述 |
---|---|---|
底线命令模式 | :wq | 保存并退出 |
底线命令模式 | :q | 仅退出 |
底线命令模式 | :w | 仅保存 |
底线命令模式 | :set nu | 显示行号 |
底线命令模式 | :set paste | 设置粘贴模式 |
底线命令模式 | :q! | 强制退出 |
无论是Windows,MacOS、Linux均采用多用户的管理模式进行权限管理。
在Linux系统中,拥有最大权限的账户名为:root(超级管理员)
而在前期,我们一直使用的账户是普通的用户:mango
root用户拥有最大的系统权限,而普通用户会被限制。
su命令就是用于账户切换的系统命令:Switch User
语法;su [-] [用户名]
如果用于sudo权限也可以直接使用sudo -i和普通用户密码进入root
不建议长期使用root,避免带来系统的损坏。
可以使用sudo命令,为普通的命令授权,临时以root 身份执行。
语法:sudo 其它命令
为普通用户配置sudo认证
切换到root用户,执行visudo命令,会自动通过vi编辑器打开:、etc、sudoers
在文件的最后添加:mango ALL=(ALL) NOPASSWD:ALL
最后通过wq保存
切换会普通用户,执行的sudo命令均以root运行。
Linux系统中可以:
Linux中关于权限的管控级别有2个级别,分别是:
用户组管理
一下命令需要root用户执行
创建用户组
groupadd 用户组名
删除用户组
groupdel 用户组名
用户管理(需要root用户)
创建用户
ueradd [-g -] 用户名
删除用户
userdel [-r] 用户名
查看用户所属组
id[用户名]
修改用户所属组
usermod -aG 用户组 用户名
,记住那个指定用户加入指定用户组getent
getent passwd
认知权限信息
意义:
针对文件和文件夹的不同
r,针对文件可以查看文件内容
w,针对文件表示可以修改此文件
x,针对文件表示可以将文件作为程序执行
chmod修改权限信息
可以使用chmod命令、修改文件文件夹的权限信息。
注意:只有文件、文件夹的所属用户或root用户可以修改。
语法:chmod [-R] 权限 文件或文件夹
示例:
chmod u=rwx,g=rx,o=x hello.txt
,将文件权限修改为:rwxr-x--x
chmod -R u=rwx,g=rx,o=x test
,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x
使用数字序号标记权限
权限可以用3为数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其他用户权限。
数字的细节如下:r记为4,w记为2,x记为1
ctrl + c强制停止
ctrl + d退出或等出
历史命令搜索
可以通过history命令,查看历史输入过的命令
可以通过:!命令前缀,自动执行上一次匹配前缀的命令
可以通过快捷键:ctrl+r,输入内容去匹配历史命令
入宫搜索到的内容你需要,那么:
光标移动快捷键
清屏
yum命令(适用与centos)
yum:RPM包软件管理器,用于自动化安装配置Linux,并可以自动解决依赖问题。
语法:yum [-y] [install | remove | search] 软件名称
yum命令需要root权限,可以su或sudo提权
yum名需要联网。
centos:.rpm,yum
apt命令(适用于Ubuntu)
语法: apt [-y] [install | remove | search] 软件名称
用法和yum一致,同样需要root权限
Ubuntu:.deb
Linux系统很多软件(内置或第三方)均支持使用systemctl命令控制:启动、停止、开机自启,能够被systemctl管理的软件,一般也称之为:服务
语法:systemctl start | stop | status | enable | disable 服务名
系统内置的服务比较多,比如:
ln命令创建软连接
在系统中创建软连接,可以将文件,文件夹链接到其它位置。
语法:ln -s 参数1 参数2
实例:
ln -s /ect/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum
date命令
通过date命令可以在命令行查看系统的时间
语法:date [-d] [+格式化字符串]
-d按照给定的字符串显示日期,一般用于日期计算
格式化字符串:通过特定的字符串标记,来控制显示的日期格式
示例:
date
直接查看时间。date +%Y-%m-%d
查看2024-9-8这样格式的日期(一定要注意前面有一个+号)date "+%Y-%m-%d %H:%M:%S"
日期和时间之间有一个空格,最好用双引号将他们弄在一起。date命令进行日期加减
-d选项,可以按照给定的字符串显示日期,一般用于日期计算
date -d ”+1 day“ +%Y-%m-%d
显示后一天的日期时间标记:
-d选项可以和格式化字符串配合一起使用。
修改Linux时区
xxxxxxxxxx
21 rm -f /etc/localtime
2 sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntp程序
可以通过ntp程序西东校准系统时间
安装ntp:yum -y insatll ntp
启动并设置开机自启:
systemctl start ntpd
systemctl enable ntpd
也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com
IP地址
特殊IP地址
127.0.0.1,这个IP地址用户指代本机
0.0.0.0,特殊IP地址
主机名
在Linux中修改主机名
域名
IP地址实在是难以记忆,有没有什么办法可以通过主机名或替代的字符地址去代替数字化的IP地址呢?实际上,我们一直都是通过字符化的地址去访问服务器,很少指定IP地址比如,我们在浏览器内打开:www.baidu.com,会打开百度的网址其中,www.baidu.com,是百度的网址,我们称之为: 域名!
域名解析
流程
先查看本机的记录(私人地址本)
在联网去DNS服务器询问。
为什么需要固定IP?
当前虚拟机的Linux操作系统,其IP地址是同构DHCP服务获取的。
DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
原因
在VMware Workstation 中配置固定IP
俩个步骤:
ping命令
检查指定的网络服务是否是可以连通状态
语法:ping [-c num] ip或主机名
ping -c 3 baidu.com
)加-c后面需要加一个ping次数的参数wget命令
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url
curl命令
curl可以发送http网络请求,可用于;下载文件、获取信息等
语法:curl [-O] url
端口的概念
端口,是设备与外界通讯交流的出入口,端口分为:物理端口和虚拟端口俩类
端口
Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:
查看端口占用
可以通过Linux命令去查看端口占用情况
yum -y install nmap
可以通过netstat命令查看指定端口的占用情况
netstat -anp | grep 端口号
,安装netstat:yum -y install net-tools
进程的概念
查看进程
可以通过ps命令查看Linux系统中的进程信息
语法:ps [-e -f]
从左到右分别是:
查看指定进程
在FinalShell中,执行命令:tail,可以看到此命令一直阻塞在哪里
在FinalShell中,复制一个标签页,执行:ps -ef
找出tail这个程序的进程信息
问题:是否发现,列出的信息太多,无法准确找到
ps -ef | grep tail
就可以找到tail的。关闭进程
在Windows系统中,可以通过任务服务器进行关闭
在Linux中,可以通过kill命令关闭进程
kill [-9] 进程ID
查看系统资源占用
可以通过top命令查看CPU、内存使用情况,类似Windows的任务管理器
默认5秒刷新一次,语法:直接输入top即可,按q或ctrl+c退出
top命令内容解释
top命令选项
top交互式选项
磁盘信息监控
使用df命令,可以查看磁盘的使用情况
语法:df [-h]
可以使用iostat查看CPU,磁盘的相关信息
语法:iostat [-x] [num1] [num2]
网络状态监控
可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)
语法:sar -n DEV num1 num2
在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。比如,cd命令的本体就是:/usr/bin/cd这个程序文件
环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行
环境变量是一种keyValue型结构,即名称和值,比如HOME:/home/mango,用户的HOME路径
PATH记录了系统执行任何命令的搜索路径:
$符号
自行设置环境变量
Linux环境变量可以用户自行设置,其中分为:
临时设置,语法:export 变量名=变量值
永久生效
source 配置文件
,进行立刻生效,或重新登录FinalShell生效。在FinalShell软件的下方窗体中,提供了Linux的文件系统试图,可以方便的:
rz,sz命令
rz,sz命令需要安装,可以通过:yum -y install lrzsz
压缩格式
tar命令
.tar,称之为tarball;归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件的体积减少,仅仅简单的封装。
.gz,也常见.tar.gz,gzip格式压缩文件,即使用gzip压缩算法文件将文件压缩到一个文件内,可以极大的减少压缩后的体积
针对这俩种格式都可以使用tar命令
语法:tar [-c -v -x -f -z -C] 参数1 参数2 ……参数n
zip命令压缩文件
可以使用zip命令,压缩文件为zip压缩包
语法:zip [-r] 参数1 参数2 ……参数n
unzip命令解压文件
unzip [-d] 参数