Linux基础

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

76fb0093b0d2635b

三、用户和权限

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协议相互传输文件。


皖ICP备2023003517号-1