Linux基础
一、初识linux
1. linux系统组成
- linux系统内核
- 内核提供系统最核心功能,如调度cpu、调度内存、调度文件系统、调度网络通讯、调度IO等
- 系统级应用程序
- 可以理解为出厂自带程序,如文件管理器、任务管理器、图片查看、音乐播放等
linux系统发行版:ubantu、centos、debian
二、linux基础命令
1. 目录结构
树形结构,linux没有盘符概念,所有文件都在根目录/下。
windows中层级关系用 \ 表示;linux中层次关系用 / 表示,开头的 / 表示根目录
2. 命令入门
command [-option] [parameter]
- command 命令本身
- -option 控制命令的行为细节
- parameter 命令参数,多用于命令的指向目标
3. 目录切换
cd [linux路径]
- cd命令无需选项,只有参数,表示要切换到哪个目录下
- cd命令直接执行,不写参数,表示回到用户的HOME目录
4. 相对路径、绝对路径和特殊路径符
绝对路径:以根目录为起点,路径描述以 / 开头
相对路径:以当前目录为起点,路径描述无需以 / 开头
特殊路径符:. - 当前目录;.. - 上一级目录;~ HOME目录
5. 创建目录命令 mkdir
6. 文件操作命令(touch、cat、cp、mv)
7. 查找命令(which、find)
通过which命令,查看所使用的一系列命令的程序文件存放在哪里。语法:which 要查找的命令
通过fing命令去搜索指定的文件。语法:find 起始路径 -name "被查找文件名",支持使用通配符 * 来做模糊查询。
8. grep、wc和管道符
可以通过grep命令,从文件中通过关键字过滤文件行。语法:grep [-n] 关键字 文件路径
可以通过wc命令统计文件的行数、单词数量等。语法:wc [-c -m -l -w] 文件路径
管道符 | 的含义是蒋管道符左边的命令结果,作为右边命令的输入
9.echo、tail和重定向符
可以使用echo命令在命令行内输出指定内容。语法:echo 输出的内容
可以通过将命令用反引号 ` 将其包围,被包围的内容会作为命令执行。pwd
重定向符:>和>>
- 1>,将左侧命令的结果覆盖写入符号右侧指定的文件中
- 2>>,将左侧命令的结果追加到符号右侧指定的文件中
可以通过tail命令查看文件尾部内容,跟踪文件的最新更改。语法:tail [-f -num] linux路径
10. vim编辑器
11. 三种工作模式
命令模式 Command mode
输入模式 Insert mode
底线命令模式 Last line mode
三、用户和权限
1. root用户
拥有最大权限的账户名:root 超级管理员
- 普通用户的权限,一般在其HOME目录内是不受限的
- 一旦出了HOME目录,大多数地方普通用户仅有只读和执行权限,无修改权限
可以通过su命令切换账户。语法:su [-] [用户名]
可以通过exit命令退回上一个用户。
可以通过sudo命令,为普通命令授权,临时以root身份执行。语法:sudo 其他命令
- 在其他命令之前带上sudo,即可为这一条命令临时赋予root授权
- 使用sudo之前需要为普通用户配置sudo认证
1.1 为普通用户配置sudo认证
- 切换到root用户,执行visudo命令,会自动通过vi编辑器打开 /etc/sudoers
- 在文件最后添加 user ALL=(ALL) NOPASSWD:ALL
- 其中NOPASSWD:ALL表示使用sudo命令无需输入密码
- 最后通过wq保存
2. 用户、用户组管理
linux系统中可以:
- 配置多个用户
- 配置多个用户组
- 用户可以加入多个用户组
linux关于权限管控有2个级别:
- 针对用户的权限控制
- 针对用户组的权限控制
groupadd/groupdel 创建/删除用户组
useradd [-g -d]/userdel [-r] 创建/删除用户组
id [用户名] 查看用户所属组
usermod -aG 将指定用户加入指定用户组
3. 查看权限控制
可以通过ls -l 以列表形式查看内容并显示权限细节。
权限细节分为10个槽位:
-/d/l(-表示文件;d表示文件夹;l表示软链接) + 所属用户权限 + 所属用户组权限 + 其他用户权限(r/w/x 或 -)
r读 w写 x执行 -无
4. 修改权限控制 - chmod/chown
可以使用chmod命令修改文件、文件夹的权限信息。语法:chmod [-R] 权限 文件或文件夹
注意:只有文件、文件夹的所属用户或root用户才可以修改。
4.1 权限的数字序号
第一位表示用户权限,第二位表示用户组权限,第三位表示其他用户权限
细节:r 记为4,w 记为2,x 记为1
可以使用chown命令修改文件、文件夹的所属用户和用户组。chown [-R] [用户] [:] [用户组] 文件或文件夹
四、linux实用操作
1. 各类小技巧
-
强制停止
ctrl + c 强制停止
-
退出、登出
ctrl + d 退出或登出
-
历史命令搜索
history 查看历史输入过的命令
! 命令前缀,自动执行上一次匹配前缀的命令
ctrl + r 输入内容匹配历史命令
-
光标移动
- ctrl + a,跳到命令开通
- ctrl + e,跳到命令结尾
- ctrl + 键盘左键,向左跳一个单词
- ctrl + 键盘右键,向右跳一个单词
-
清屏 ctrl + l 或者 clear 命令
2. 软件安装
yum命令:RPM包软件管理器,用于自动化安装配置linux文件,并可以自动解决依赖问题。语法:yum [-y] [install | remove | search] 软件名称
apt命令- 扩展:CentOS使用yun管理器,Ubuntu使用apt管理器。语法:apt [-y] [install | remove | search] 软件名称
3. systemctl
命令控制:启动、停止、开机自启。能够被systemctl管理的软件,一般称之为服务。语法:systemctl start | stop | status | enable | disable 服务名
系统内置的服务包括:
- NetwordManager,主网络服务
- network,副网络服务
- firewalld,防火墙服务
- sshd,ssh服务(FinalShell远程登录linux使用的就是中国服务)
除了内置的服务以外,部分第三方软件安装后也可以以systemctl进行控制。
4. 软链接
ln命令创建软连接,可以将文件、文件夹链接到其他位置,类似windows系统中的快捷方式。语法:ln -s 参数1 参数2
5. 日期、时区
可以通过date命令在命令行中查看系统时间。语法:date [-d] [+格式化字符串 %Y %y %m %d %H %M %S %s]
5.1 data命令进行日期加减
支持的时间标记有:year / month / day / hour / minute / second
5.2 修改linux时区
rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shagnhai /etc/localtime
可以通过ntp程序自动校准系统时间
6. IP地址、主机名
可以通过 ifconfig 命令查看本机ip地址
6.1 修改主机名
- 可以通过 hostname 命令查看系统主机名
- 可以通过 hostnamectl set-hostname 命令修改主机名
7. 网络传输
可以通过 ping 命令检查指定网络服务器释放可联通。语法ping [-c num] ip或主机名
可以通过 wget 在命令行内下载网络文件,非交互式的文件下载器。语法:wget [-b] url
可以通过 curl 返送http网络请求,可以用于下载文件、获取信息等。语法:curl [-O] url
7.1 端口
可以通过 netstat 命令查看端口占用情况。语法:netstat -anp | grep 端口号
8. 进程管理
每一个程序在运行的时候,便被操作系统注册为系统中的一个进程。并会为每一个进程分配一个独有的进程ID(进程号)。
可以通过 ps 命令查看系统中进程信息。语法:ps [-e -f]
可以通过 kill 命令关闭进程。语法:kill [-9] 进程ID
9. 主机状态
可以通过 top 命令查看CPU、内存使用情况,类似于任务管理器。
可以通过 df 命令 查看磁盘的使用情况。语法:df [-h]
可以使用 iostat 查看CPU、磁盘相关信息。语法:iostat [-x] [num1] [num2]
可以使用sar 命令查看网络的相关统计。语法:sar -n DEV num1 num2
10. 环境变量
环境变量史操作系统在运行时,记录的一些关键信息,用以辅助系统运行。可以通过 env 命令查看当前系统中记录的环境变量。环境变量是一种KeyValue型结构。
10.1 $符号
在linux系统中,$符号被用于取"变量"的值。语法:${PATH}
10.2 自行设置环境变量
语法:export 变量名=变量值
- 永久生效
- 针对当前用户生效,配置在当前用户的~/.bashrc文件中
- 针对所有用户生效,配置在系统的/etc/profile文件中
- 通过语法:source 配置文件,进行立刻生效
11. 上传、下载
可以通过 rz、sz 命令进行文件上传下载。命令需要通过apt -y install lrzsz 安装。
12. 压缩、解压缩
12.1 tar命令压缩解压缩文件
linux和Mac系统常用有两种压缩格式,后缀分别是:
- .tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单封装。
- .gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩的体积。
使用 tar 命令均可以对这两种格式进行压缩和解压缩的操作。语法:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
12.2 zip/unzip命令压缩解压缩文件
可以使用 zip 命令压缩文件为zip压缩包。语法:zip [-r] 参数1 参数2 ... 参数N
- 被压缩的包包含文件夹时,需要使用-r选项
可以使用 unzip 命令解压zip压缩包。语法:unzip[-d] 参数
13. scp命令
scp 命令是cp命令的升级版,即ssh cp,通过SSH协议完成的文件复制。可以通过scp 命令,在不同的linux服务器中,通过SSH协议相互传输文件。