笔记中命令在无特殊说明情况下以CentOS 7为准

(参考视频:https://www.bilibili.com/video/BV1WY4y1H7d3?p=1

一、基础篇

1.1 Linux文件系统目录结构

系统学习Linux笔记_1
来源:菜鸟教程</figcaption></figure>

系统学习Linux笔记_2

图中小箭头表示该文件实际位置在别处
  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
  • /proc
    proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp\_echo\_ignore\_all
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
  • /selinux
     这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
  • /srv
     该目录存放一些服务启动之后需要提取的数据。
  • /sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
  • /usr
     usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
  • /usr/bin:
    系统用户使用的应用程序。
  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:
    内核源代码默认的放置目录。
  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

1.2 文件基本属性

1.2.1 基本属性

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 。

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。

363003\_1227493859FdXT

从左至右用 0-9 这些数字来表示。

第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;

第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

1.2.2 Linux文件属主和属组

1、chgrp:更改文件属组

语法:

chgrp [-R] 属组名 文件名

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名

chown [-R] 属主名:属组名 文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@www ~] cd ~

[root@www ~]# chown bin install.log

[root@www ~]# ls -l

- rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log

[root@www ~]# ls -l

- rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

3、chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx--- 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是 770。变更权限的指令 chmod 的语法是这样的:

 chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更

举例来说,如果要将 .bashrc 这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc

- rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc

[root@www ~]# chmod 777 .bashrc

[root@www ~]# ls -al .bashrc

- rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

4、符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • user:用户
  • group:组
  • others:其他

那么我们就可以使用 u, g, o 来代表三种身份的权限。

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmodu
g
o
a
+(加入)
-(除去)
=(设定)
r
w
x
文件或目录

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

#  touch test1    // 创建 test1 文件

\# ls -al test1    // 查看 test1 默认权限

- rw-r--r-- 1 root root 0 Nov 15 10:32 test1

\# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限

\# ls -al test1

- rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

#  chmod  a-x test1

\# ls -al test1

- rw-r--r-- 1 root root 0 Nov 15 10:32 test1

1.3 vim文本编辑

1.3.1 vim的三种模式

基本上 vi/vim 共分为三种模式,分别是命令模式编辑模式一般模式

系统学习Linux笔记_5

1.3.2 vim快捷命令

参考外部网站:https://www.runoob.com/linux/linux-vim.html

1.4 网络配置

1.4.1 VMware的三种网络连接模式

桥接模式:虚拟机直接连接外部网络(对外部网络可见),主机起到网桥的作用,虚拟机的地位和主机相同,从路由器分配独立的IP地址。

NAT模式:主机和虚拟机构建一个专用网络,使用NAT对虚拟机进行IP转换(虚拟机对外部网络不可见)。此时虚拟机单独组成一个局域网,此时主机和虚拟机并不在一个网段,无法进行通信,所以又虚拟一个网卡(VMnet8)来连接至虚拟机所在的局域网。

仅主机模式:这种模式仅仅只让虚拟机与主机通信,不连接至Internet

系统学习Linux笔记_6

系统学习Linux笔记_7

1.4.2 配置静态IP

参考博客文章:在虚拟机中设置静态IP(centos为例)

1.4.3 配置主机名

hostname #查看当前主机名

vim /etc/hostname  #修改主机名

#修改后重启即可显示新主机名

#方法二

hostnamectl set-hostname ...

#实时生效
#修改hosts文件

vim /etc/hosts

1.5 系统管理

1.5.1 service 服务管理

一个正在执行的程序或命令,称为“进程”

启动后一直存在、常驻内存的进程,一般称为“服务”

systemctl start|stop|restart|status servicename #基本语法

/usr/lib/systemd/system/    #服务所在目录

1.5.2 系统的运行级别

系统学习Linux_8

1. CentOS 7的运行级别简化为:

multi-user.target == 原运行级别3(多用户有网,无GUI)
garphical.target == 原运行级别5(多用户有网,有GUI)

2. 查看当前默认运行级别
1
systemctl get-default
3. 切换运行级别
1
2
init 3 //switch runlevel 3
init 5 //switch runlevel 5

1.5.3 配置服务开机自启

1. CentOS 7之前
1
2
3
4
5
chkconfig --list //Centos 7之前查看自启服务(SysV)

chkconfig network off/on //关闭network开机自启

chkconfig --level 3 network off/on //针对某一运行级别设置开机自启

系统学习Linux_9

2. CentOS 7之后
1
2
3
4
systemctl list-unit-files //查看开机自启服务

systemctl disable/enable NetworkManager(SerciseName)
//对于CentO S 7及以上使用systemctl控制开机自启(这里以NetworkManager为例)
3.练习_设置防火墙
1
2
3
systemctl status firewalld.service //CentOS 7之前防火墙为iptables

systemctl disable firewalld.service //turn off firewalld Auto-start

1.5.4 关机重启

系统学习Linux_10

选项 功能
-H 相当于--halt,停机
-r shurdown -r == reboot 重启
参数 功能
now 立刻执行
时间 多少时间后执行(单位是分钟)

二、实操篇

2.1 帮助命令

1. 基本语法
1
man [命令或配置文件]  //获取帮助信息(全)

系统学习Linux笔记_11

使用例:man ls

2. 内置命令和外部命令
  • Linux中命令分为内置命令(cd、exit等),外部命令(ls)。直接使用man查询内置命令会显示Bash(内置命令内嵌在Bash中),查询内置命令时可以使用 man -f [命令]

  • 便捷查询:

    • 内置命令: help [命令](help只能查询内置命令)
    • 外置命令: [命令] --help
3. 常用快捷键
快捷键 功能
ctrl+c 停止进程
ctrl+l 清屏,等同于clear
↑,↓ 查询执行过的命令
tab 补全命令或文件名

2.2 常用基本命令——文件目录类

1. pwd: 显示当前工作目录的绝对路径

1
2
[hiyoung@VM-4-10-centos ~]$ pwd
/home/hiyoung

2. cd: 切换路径

1
2
3
4
5
6
7
8
9
10
11
12
#使用绝对路径切换
[hiyoung@VM-4-10-centos network-scripts]$ cd /home/hiyoung/
[hiyoung@VM-4-10-centos ~]$ pwd
/home/hiyoung
#使用相对路径切换
[root@VM-4-10-centos home] cd hiyoung/
[root@VM-4-10-centos hiyoung] cd ../www/
[root@VM-4-10-centos www] pwd
/home/www
#cd -: 切换到上一次浏览的目录
[root@VM-4-10-centos www] cd -
/home/hiyoung