Linux

Linux用户和用户组管理

基本概念

  1. Linux用户和用户组
    Linux 是多用户多任务操作系统,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响;linux 正是通过权限划分,给予不同用户不同权限,每个用户在权限允许范围内完成不同的任务,来实现多用户运行机制

而给授予权限的时候,对用户分别授予不太合理,应该建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要这个权限的用户放入这个组中(这就是用户组)

用户和用户组的对应关系有以下 4 种:
① 一对一:一个用户可以存在一个组中,是组中的唯一成员;
② 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
③ 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
④ 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展

  1. Linux的UID和GID
    登陆 Linux 系统时,虽然输入的是自己的用户名和密码,但其实 Linux 并不认识你的用户名称,它只认识用户名对应的 ID 号(也就是一串数字)。
    Linux 系统将所有用户的名称与 ID 的对应关系都存储在 /etc/passwd 文件中(包含内容如下)

[root@localhost ~]# vi /etc/passwd
#查看一下文件内容
root: x :0:0:root:/root:/bin/bash
bin: x :1:1:bin:/bin:/sbin/nologin
daemon: x :2:2:daemon:/sbin:/sbin/nologin
adm: x :3:4:adm:/var/adm:/sbin/nologin
…省略部分输出…

用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell

① 其中用户名是方便记忆的,计算机真正存储的是UID,UID是0~65535 之间的数,不同范围的数字表示不同的用户身份

0:超级用户,管理员

1~499:系统用户/伪用户,系统使用,系统用户无法用来登录系统,但也不能删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。

499~65535:普通用户

② 密码位x标识用户有密码,但密码都是保存在/etc/shadow 文件中,/etc/shadow 文件只有 root 用户拥有读权限

③ GID:是用户的初始组ID
初始组:指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。

将群组ID存在/etc/group下,内容如下

[root@localhost ~]#vim /etc/group
root: x :0:
bin: x :1:bin,daemon
daemon: x :2:bin,daemon
…省略部分输出…
lamp: x :502:

组名:组密码:GID(组ID):组中用户

① 其中组中用户默认包含以这个组作为初始组的用户,而只显示以他作为附加组的用户
② 组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中

详细操作

  1. 添加新的系统用户(修改密码后才算真正的创建成功)

useradd 选项 用户名

选项:
-u 手动指定用户的UID,(注意范围,500~65535)

-c comment 指定一段注释性描述。

-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。

-g 初始组 指定用户所属的初始组,一般以和用户名相同的组作为用户的初始组,不配置会自动创建

-G 附加组,指定用户所属的附加组。

-s Shell文件 指定用户的登录Shell。

==useradd 命令有很多默认的配置值,这些默认值存在/etc/default/useradd 和 /etc/login.defs

  1. 修改用户密码(使用root去修改)

[root@localhost ~]#passwd [选项] 用户名

  1. 修改用户信息

usermod 选项 用户名

-u, -c, -d, -g, -G, -s和useradd一样
-u 手动指定用户的UID,(注意范围,500~65535)

-c comment 指定一段注释性描述。

-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。

-g 初始组 指定用户所属的初始组,一般以和用户名相同的组作为用户的初始组,不配置会自动创建

-G 附加组,指定用户所属的附加组。

-s Shell文件 指定用户的登录Shell。

多出来了-I, -L和-U
-l 用户名:修改用户名称

  1. 删除用户

[root@localhost ~]# userdel -r 用户名

-r 选项表示在删除用户的同时删除用户的家目录。

  1. 查看用户的UID GID和附加组信息

[root@localhost ~]# id 用户名

  1. 用户切换

su -用户名

-表示当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境

  1. 添加用户组

groupadd -g 组名

  1. 修改用户组

[root@localhost ~]# groupmod [选现] 组名

-g GID:修改组 ID;
-n 新组名:修改组名;

如:#把组名group1修改为testgrp

#groupmod -n testgrp group1

  1. 删除用户组(不能删初始组)

[root@localhost ~]#groupdel 组名

  1. 把用户添加进组或从组中删除

[root@localhost ~]# gpasswd 选项 组名

① -a user 将 user 用户加入到群组中。
② -d user 将 user 用户从群组中移除。
③ -A user1,… 将群组的控制权交给 user1,… 等用户管理,也就是说,设置 user1,… 等用户为群组的管理员,仅 root 用户可用。
④ -M user1,… 将 user1,… 加入到此群组中,仅 root 用户可用。
⑤ -r 移除群组的密码,仅 root 用户可用。
⑥ -R 让群组的密码失效,仅 root 用户可用。
⑦ 选项为空时,表示给群组设置密码,仅 root 用户可用。

  1. 切换用户的有效组
    用户可以属于多个用户组,但是用户在创建文件后,默认生效的组身份是初始组
    newgrp 命令可以从用户的附加组中选择一个群组,作为用户新的初始组

[root@localhost ~]# newgrp 组名

Linux权限管理

基本概念

针对用户和用户组设定文件权限

  1. 文件的所有者就是文件的创建者,所属组可以对应到用户的初始组和附加组

  2. Linux的权限位:
    在这里插入图片描述
    在这里插入图片描述
    其中各个权限对应的数字如下:

r --> 4
w --> 2
x --> 1

由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限
拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:
所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5

在这里插入图片描述

第一位用户组用户普通用户
-rwxr-xr-x

第一位-为文件,d为目录

操作

  1. 更改文件和目录的所属组 changegroup

[root@localhost ~]# chgrp [-R] 所属组 文件名(目录名)
-R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。

  1. 修改文件和目录的所有者和所属组

[root@localhost ~]# chown [-R] 所有者:所属组 文件或目录

root 用户拥有最高权限,可以修改任何文件的权限,而普通用户只能修改自己文件的权限(所有者是自己的文件)

  1. 修改文件或目录的权限

[root@localhost ~]# chmod [-R] 权限值 文件名

-R(注意是大写)选项表示连同子目录中的所有文件,也都修改设定的权限
① 使用数字来代表权限值:如:

[root@localhost ~]# chmod 777 .bashrc

② 也可以使用字母来代表权限值,chmod 命令中用 u、g、o 分别代表 3 种身份,还用 a 表示全部的身份(all 的缩写)。另外,chmod 命令仍使用 r、w、x 分别表示读、写、执行权限。
在这里插入图片描述
如:

[root@localhost ~]# chmod u=rwx,go=rx .bashrc

  1. 如何查看文件的权限和拥有者

ls -al 文件
[root@localhost ~]# ls -al .bashrc
-rw-r–r--. 1 root root 176 Sep 22 2004 .bashrc

第一列:规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。

第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。

第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。

  1. 特殊权限
    a. SUID 特殊权限

[root@localhost ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 22984 Jan 7 2007 /usr/bin/passwd

SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。

① 可执行文件可以设置SUID,对目录设置无效
② 用户要对该文件有可执行权限
③ 用户执行该文件的时候,会以文件的所有者身份执行
④ SUID权限在文件的执行过程中有效,一旦执行完毕,身份的切换也随即消失

如何添加:
① 普通加法 chmod u+s /file

② 删除权限 chmod u-s /file

③ 数字加权 chmod 4777 /file

④ 删除权限 chmod 777 /file

b. SGID(可以设置在目录上)

[root@localhost ~]# ll /usr/bin/locate
-rwx–s--x. 1 root slocate 35612 8月24 2010 /usr/bin/locate

前面学习了 SetUID,那么,什么是 SetGID 呢?很简单,当 s 权限位于所属组的 x 权限位时,就被称为 SetGID,这个时候用户在执行具有 SGID 权限的可执行文件时,用户的群组身份会变为文件所属群组
举个例子,/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容,mlocate.db的权限如下:

-rwx–s--x root slocate /usr/bin/locate
-rw-r----- root slocate /var/lib/mlocate/mlocate.db

若使用vbird这个账号执行locate时,vbird就会获得用户组slocate支持,又由于用户组slocate对mlocate.db具有r权限,所以vbird就可以读取mlocate.db了。

如何添加:
① 普通加法 chmod g+s /file

② 删除权限 chmod g-s /file

③ 数字加权 chmod 2777 /file

④ 删除权限 chmod 777 /file

如果作用在目录上
当一个目录被赋予 SGID 权限后,进入此目录的普通用户,其有效群组会变为该目录的所属组,会就使得用户在创建文件(或目录)时,该文件(或目录)的所属组将不再是用户的所属组,而使用的是目录的所属组

c. SBIT(只对目录有效)

[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 4 root root 4096 Apr 19 06:17 /tmp

SBIT 权限仅对目录有效,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件

① 普通加法 chmod o+t /file

② 删除权限 chmod o-t /file

③ 数字加权 chmod 1777 /file

④ 删除权限 chmod 777 /file

  1. 查看文件的权限基本信息
    ls -al会列出该文件下的所有文件信息,包括隐藏的文件,而ls -l只列出显式文件,说明这两个命令还是不等同的!

ll不是命令,是ls -l的别名

安排周期任务crontab

[root@localhost ~]# crontab [选项] [file]

注意,这里的 file 指的是命令文件的名字,表示将 file 作为 crontab 的任务列表文件并载入 crontab,若在命令行中未指定文件名,则此命令将接受标准输入(键盘)上键入的命令,并将它们键入 crontab。

常用的命令选项
① -u user 用来设定某个用户的 crontab 服务,例如 “-u demo” 表示设备 demo
用户的 crontab 服务,此选项一般有 root 用户来运行。

② -e 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。

③ -l 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。

④ -r 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。

⑤ -i 在删除用户的 crontab 文件时,给确认提示。

[root@localhost !]# crontab -e
#进入 crontab 编辑界面。会打开Vim编辑你的任务

          • 执行的任务

在这里插入图片描述
强制递归删除

rm -rf 目录名

读取文件的每行的第一个字段

awk ‘{print $1}’ data2.txt

打包压缩(tar)

基本概念

  1. 打包和压缩的区别:
    打包:将多个文件和目录集中存储在一个文件中
    压缩:指的是利用算法对文件进行处理,从而达到缩减占用磁盘空间的目的;压缩包中的数据无法直接使用,使用前需要利用压缩工具将文件数据还原,此过程又称解压缩

基本操作

  1. 打包

[root@localhost ~]#tar [选项] 源文件或目录

一般使用cvf,打包多个文件用空格隔开,打包后文件名用.tar作为扩展

[root@localhost ~]#tar -cvf 打包后文件名.tar 源文件或目录 源文件或目录 源文件或目录

-c 将多个文件或目录进行打包。
-A 追加 tar 文件到归档文件。
-f 包名 指定包的文件名。包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;
-v 显示打包文件过程;
-r 向压缩归档文件末尾追加文件

tar -rf all.tar *.gif

-u 更新原压缩包中的文件

tar -uf all.tar *.gif

  1. 打包并压缩
    压缩命令不能直接压缩目录,必须先用 tar 命令将目录打包,然后才能用 gzip 命令或 bzip2 命令对打包文件进行压缩。例如

[root@localhost ~]#ll -d test test.tar
drwxr-xr-x 2 root root 4096 6月 17 21:09 test
-rw-r–r-- 1 root root 10240 6月 18 01:06 test.tar
#我们之前已经把test目录打包成test.tar文件
[root@localhost ~]# gzip test.tar
[root@localhost ~]# ll test.tar.gz
-rw-r–r-- 1 root root 176 6月 18 01:06 test.tar.gz
#gzip命令会把test.tar压缩成test.tar.gz

  1. 解打包

[root@localhost ~]#tar -xvf 压缩包

这样是默认解压到当前包下;如果想要指定解压位置,则需要使用 “-C(大写)” 选项。例如:

[root@localhost ~]# tar -xvf test.tar -C /tmp
#把文件包test.tar解打包到/tmp/目录下

  1. 查看文件包中有哪些文件

[root@localhost ~]#tar -tvf 压缩包

  1. 只是要tar命令做打包压缩(解压缩解打包)操作
    ① “.tar.gz” ,只不过是在打包或解打包前加了z
    a. 压缩

[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
#把/temp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,"-cvf"和打包选项一致

b. 解压

[root@localhost ~]# tar -zxvf tmp.tar.gz
#解压缩与解打包".tar.gz"格式

② .tzr.bz2,换成j

[root@localhost ~]# tar -jcvf tmp.tar.bz2 /tmp/
#打包压缩为".tar.bz2"格式,注意压缩包文件名
[root@localhost ~]# tar -jxvf tmp.tar.bz2
#解压缩与解打包".tar.bz2"格式

已经挂载的设备如何卸载

[root@localhost ~]# umount 设备文件名或挂载点

磁盘操作

基本概念

  1. 为什么要进行磁盘的分区
    ① 数据安全:
    a. 只用一个分区,若遇到系统需要重装或者分区需要进行格式化等,原有的重要文件无法在本硬盘保留,而若提前进行了合理分区,则用户数据不会收到影响

b. 同等外部条件下,读取越频繁,磁盘越容易受损,我们把读写频繁的目录挂载到一个单独的分区,可以把磁盘的损伤控制在一个集中的区域。

② 效率(针对目前常用的机械硬盘,固态硬盘方面还不太了解):
a. 分区将数据集中在某个磁柱的区段,当有数据要读取自该分区时, 硬盘只会搜寻相应区段,有助于数据读取的速度与效能的提升!

b. 磁盘不同区域(内圈与外圈,)的读取速度是不同的,磁盘越大,差别越明显,通常将读写频繁的目录挂载到读取速度更快的区域(总体来说,是推荐外圈),不常使用和变更的数据放在稍慢的区域将是一个比较好的选择。

  1. 主分区,扩展分区,逻辑分区
    在这里插入图片描述

具体操作

磁盘分区与格式化

  1. 使用fdisk-l查看磁盘分区情况,磁盘信息

fdisk -l

在这里插入图片描述

  1. fdisk /dev/sdb到要分区的磁盘
    在这里插入图片描述

  2. p查看分区情况,m查看帮助

  3. n 创建分区,p创建主分区,设置分区号和分区大小 +512M
    在这里插入图片描述

  4. n创建分区,e创建扩展分区,设置分区号和分区大小
    在这里插入图片描述

  5. n创建分区,l创建逻辑分区,设置分区号和分区大小
    在这里插入图片描述

  6. 分区完成w保存
    在这里插入图片描述

  7. 接下来我们需要将物理分区格式化成某一个文件系统,我们使用mkds进行分区格式化操作

mkfs - t ext3 /dev/sda

  1. 文件系统的挂载

mount /dev/sda /mnt/firstmnt
在这里插入图片描述

  1. 卸载
    在这里插入图片描述
  2. 自动挂载
    修改/etc/fstab文件如下,重启计算机后该分区将自动挂载。
    在这里插入图片描述

一个用户已经属于某一个或某几个组了,怎么让他加入新的组

查看用户所属组的组成员:

groups

让用户加入新组groupA不能直接使用

usermod -G groupA

这会让用户离开已在的组,仅仅加入groupA
应该使用

usermod -aG groupA user

查看用户的组id

[root@localhost ~]# usermod -G root lamp
#把用户加入root组
[root@localhost ~]# id lamp
uid=501(lamp) gid=501(lamp) groups=501(lamp),0(root)
#大家发现root组中加入了lamp用户的附加组信息

kill常用的几个signal

HUP 1 终端断线

INT 2 中断(同 Ctrl + C),但并不强制

QUIT 3 退出(同 Ctrl + \)

TERM 15 正常终止,是kill的默认信号

KILL 9 强制终止

CONT 18 继续(与STOP相反, fg/bg命令)

STOP 19 暂停(同 Ctrl + Z)

先用ps查找进程,再用kill杀掉

字符统计命令wc

#显示一个文件的行数
wc -l filename

#显示一个文件的字节数,每一行的换行符也要被计算上,UTF-8编码时,一个汉字是3字节,一个英文字符是一个字节
wc -c filename

#显示一个文件的字符数,一个汉字按一个字符算
wc -m filename

#显示一个文件中的最长行的长度
wc -L filename

#显示一个文件中字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
wc -w filename

#注意:每行结尾的换行符也算一个字符,空格也算一个字符
#采用UTF-8编码,所以一个汉字在这里被转换为3字节
#当使用-m选项时,一个汉字就作为一个字符计算

用来统计当前目录下的文件数

ls -l | wc -l

软件包的查询命令rpm和各种查询的方法

① 查询包是否安装
-q 查询

rmp -q 包名

② 查询所有已安装的rpm包
-a 所有

rpm -qa

③ 查询软件包的详细信息
-i 信息

rpm -qi 包名

④ 查询未安装包的信息

rpm -qip 包名

⑤ 查询包中文件的安装位置
-l 列表

rpm -ql包名

⑥ 查询系统文件属于哪个rpm包
-f 属于哪个软件包

rpm -qf

⑦ 查询包的依赖性

rpm -qR

日志文件的保存路径

/var/log/

网络接口的配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet       #网卡类型
DEVICE=eth0         #网卡接口名称
ONBOOT=yes          #系统启动时是否自动加载
BOOTPROTO=static    #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议
IPADDR=192.168.1.11      #网卡IP地址
NETMASK=255.255.255.0    #网卡网络地址
GATEWAY=192.168.1.1      #网卡网关地址
DNS1=10.203.104.41       #网卡DNS地址
HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址
BROADCAST=192.168.1.255  #网卡广播地址

ipconfig [interface] [options] address

添加路由的方法

  1. 使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了

#添加一条到莫格网段的路由(发往192.168.62这个网段的全部要经过网关192.168.1.1)
route add -net 192.168.0.0/24 gw 192.168.0.1
添加一条到某个主机的路由
route add -host 192.168.1.1 dev 192.168.0.1
#删除一条路由 删除的时候不用写网关
route del -net 192.168.122.0 netmask 255.255.255.0

  1. 在linux下设置永久路由的方法:
    在/etc/rc.local里添加

route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.3.254

查看linux当前的所有运行的网络服务

所有监听端口及对应的进程

netstat -tlnp

命令的聚合

find命令

find path -option [ -print ] [ -exec -ok command ] {} \

find
选项:
-name: 按照文件名搜索;搜索的文件名必须和你的搜索内容一致才能找到

[root@localhost ~]# find /-name yum.conf

-iname: 按照文件名搜索,不区分文件名大小;

[root@localhost ~]#find.-iname cangls

-inum: 按照 inode 号搜索;

[root@localhost ~]# find.-inum 262147

-size[±]大小:按照指定大小搜索文件,这里的"+“的意思是搜索比指定大小还要大的文件,”-" 的意思是搜索比指定大小还要小的文件
单位应该是
k
M
c:字节
不写默认为b 512byte
w:2子节
G

[root@localhost ~]# find.-size 25k

-atime [±]时间: 按照文件访问时间搜索
-mtime [±]时间: 按照文改时间搜索
-ctime [±]时间: 按照文件修改时间搜索

链接文件

在这里插入图片描述
在这里插入图片描述
目录项:
在这里插入图片描述
inode结构:
在这里插入图片描述

软链接:
软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
所以创建软链接会创建一个新的inode节点,其对应数据块内容存储所链接的文件名信息
要求:
① 软链接和软链接的文件可以不在同一个文件系统
② 可以给目录创建软连接
③ 软链接文件的源文件必须写成绝对路径,而不能写成相对路径

软连接的作用:
① 软链接主要是为了照顾管理员的使用习惯。比如,有些系统的自启动文件 /etc/rc.local 放置在 /etc 目录中,而有些系统却将其放置在 /etc/rc.d/rc.local 中,那么干脆对这两个文件建立软链接,不论你习惯操作哪一个文件,结果都是一样的

② 便于文件的管理,比如把一个复杂路径下的文件放到简单路径下

③ 解决空间不足,某个文件文件系统空间用完,但又想在他下面创建新目录,可以把另一个剩余空间多的文件系统的目录链接到该系统

硬链接:硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能
所以创建的硬链接并不会新建Inode而是links + 1,再在目录文件对应数据块上增加一条文件名和inode对应关系记录
要求:
① 硬链接和硬链接的文件必须在同一个文件系统
② 目录不能创建硬链接

ls -al 的第二列就是文件的硬链接数

ls -li 的第一列就是inode号

  1. 创建软连接:软连接的源文件要写成绝对路径
    给源文件创建软连接/temp

In -s /root/bols /tmp

创建硬链接
#给源文件建立硬链接文件 /tmp/test-hard

ln /root/test /tmp/test-hard

Linux文件系统

文件系统的层次结构

在这里插入图片描述
Linux操作系统中,所有的文件和目录都被组织成一个根节点 “/” 开始的倒置树状结构
① “/” 表示根目录

② “.” 表示当前目录

③ “…” 表示父目录

Linux的文件系统到底是怎么样的

首先对于文件的结构来说,windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区)(C; D; E等)

而对Linux来说,他的文件结构是单个的树状结构

分区是对磁盘进行的,把磁盘分区号以后,可以把不同的分区挂载到不同的目录上,就不同的分区对应着不同的目录

当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须先把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,而这些对应的动作就是“挂载”。 将物理分区细节屏蔽掉。用户只有统一的逻辑概念。所有的东西都是文件。

绝对路径和相对路径

① 绝对路径:从根目录 / 开始写,cd /root/Desktop

② 绝对路径:./Desktop,表示当前路径下的Desktop

Linux命令行下如何识别文件类型

在这里插入图片描述
蓝色是目录,黑色是文件

命令提示符

[root@localhost ~]#

① []:这是提示符的分隔符号,没有特殊含义。

② root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。

③ @:分隔符号,没有特殊含义。

④ localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。

⑤ ~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。家目录就是用户的初始登陆位置,用户在自己的家目录中拥有完整权限
a. 超级用户的家目录:/root。
b. 普通用户的家目录:/home/用户名。

⑥ #:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。

基本命令

  1. cd 切换目录

[root@localhost ~]# cd [相对路径或绝对路径]

特殊符号作 用
~代表当前登录用户的主目录
~用户名表示切换至指定用户的主目录
-代表上次所在目录
.代表当前目录
代表上级目录
  1. pwd 显示当前路径

[root@localhost ~]# pwd

  1. ls 查看目录下文件

[root@localhost ~]# ls [选项] 目录名称

  1. mkdir 创建目录

[root@localhost ~]# mkdir [-mp] 目录名

① -p 递归创建

② -m 手动设置权限

[root@localhost ~]# mkdir -m 711 test2

  1. touch 创建文件及修改文件时间戳

[root@localhost ~]# touch [选项] 文件名

① 访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。

② 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。

③ 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。

文本处理

vim

在这里插入图片描述
① 在vim的命令模式下,可使用方向键(上、下、左、右键)或 k、j、h、i 移动光标的位置,还可以对文件内容进行复制、粘贴、替换、删除等操作。

② 在输入模式下,编辑文件(命令模式下按i / l / o/ O/ a/ A 进入输入模式)

③ 在编辑模式下,执行保存,查找,替换等操作

cat

① 显示文件内容

[root@localhost ~]# cat [选项] 文件名

② 把文件1 文件2 合并输入到文件3

[root@localhost ~]# cat 文件1 文件2 > 文件3

more

当使用 cat 命令查看文件内容时,如果文件过大,以至使用PgUp+上箭头组合键向上翻页也无法看全文件中的内容,该怎么办呢?这就需要使用 more 命令。

[root@localhost ~]# more [选项] 文件名

more只能往后 less可以往前

输入输出重定向

  1. 输入重定向:指的是重新指定设备来代替键盘作为新的输入设备;

① < 将指定文件作为命令的输入设备

[root@localhost ~]# cat < /etc/passwd

② << 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符),这里的分界符其实就是自定义的字符串

[root@localhost ~]# cat << 0

③ 命令 < 文件 1 > 文件 2 将文件 1 作为命令的输入设备,该命令的执行结果输出到文件 2 中。

cat < /etc/passwd > a.txt

  1. 输出重定向:指的是重新指定设备来代替显示器作为新的输出设备。
    ① > 把命令执行的标准输出重定向到指定文件,会覆盖指定文件的已有数据

[root@localhost ~]# cat Linux.txt > demo.txt

② >> 不覆盖

③ 2> 写错误信息,会覆盖

④ 2>> 不覆盖

grep

grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以是单一的字符、字符串、单词或句子

[root@localhost ~]# grep [选项] 模式 文件名

awk

awk 命令逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理

[root@localhost ~]# awk [选项] ‘脚本命令’ 文件名

其中脚本命令由两部分组成,‘匹配规则{执行命令}’

[root@localhost ~]# awk ‘/^$/ {print “Blank line”}’ test.txt

awk还可以直接从脚本文件中读取命令 -f

[root@localhost ~]# cat awk.sh
{print $1 "'s home directory is " $6}
[root@localhost ~]# awk -F: -f awk.sh /etc/passwd

BEGIN用于在读取先执行,END在读取后执行

[root@localhost ~]# awk ‘BEGIN {print “The data3 File Contents:”}
{print $0}
END {print “End of File”}’ data3.txt
The data3 File Contents:
Line 1
Line 2
Line 3
End of File

shell

vim tets.sh #.sh只是为了见名思意
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本

shell变量

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。

使用 $

your_name=“qinjx”
echo $your_name
echo ${your_name} #花括号知识作为边界

只读变量

myUrl=“http://www.google.com”
readonly myUrl

删除变量 不能删只读

unset variable_name

变量类型

  1. 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  2. 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  3. shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

字符串
双引号里可以有变量,也可以出现转义字符

your_name=‘runoob’
str=“Hello, I know you are “$your_name”! \n”
echo -e $str

获取字符串长度

string=“abcd”
echo ${#string} #输出 4

数组

数组名=(值1 值2 … 值n)
${数组名[下标]}

管道命令

管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)

通过管道将ls -al的输出作为 下一个命令less的输入

$ ls -al /etc | less

用管道读取文件的每行的第一个字段

cat myfilr | awk ‘{print $1}’

linux考试

  1. 创建linux分区的时候一定要创建SWAP和根分区

  2. Linux分区必须有 文件系统分区 和 交换分区

  3. export定义shell的全局变量

  4. 在运行在多用户模式下的时候,CYRL+ALT+F 可以切换6个虚拟用户终端

  5. Linux启动的第一个进程init的的第一个脚本程序是/etc/rc.d/rc/sysinit

  6. 所有服务的启动脚本在/etc/rc.d/init.d

  7. startX用来启动X window

  8. Linux的默认分区是EXT3

  9. CTRL+ALT把鼠标从VM释放

  10. man可以让用户获得命令的详细了解

  11. Linux内核引导的时候,从文件/etc.ftsad读取要加载的文件系统,这个文件用来管理文件系统信息

  12. 网络管理的重要任务是 控制 和 监控

  13. 静态路由设当后,若网络拓扑发生变化,需要系统管理员修改路由设置

  14. Linux分区必须有 文件系统分区 和 交换分区

  15. mkdir -p 迭代创建 rm -r迭代删除 rm -f时强制删除 -i会给出提示(默认)

  16. cp 源 目标 mv 源 目标 tar 目标 源

  17. i节点和文件不是11对应的

  18. . vi命令模式下重复对上一次的操作

  19. 使得用户登陆验证,修改/etc/shadow脚本

  20. 就绪进程不是linux系统进程类型

  21. read命令读取文件的各个域的内容赋值给shell变量

  22. 硬链接只对文件进行链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. linux系统的开发模型是集市模型

  2. 与实时进程优先级有关的参数是 rt_priority

  3. 信号量是SYSTEM V进程间的通讯方式

  4. /etc/shadow存用户口令的加密信息

  5. 用户文件描述符0表示标准输入设备文件描述符

  6. rpm -e卸载软件包

  7. 进程有6种状态,使用exit系统调用后进入僵死

在这里插入图片描述
在这里插入图片描述

  1. 切换到用户John的主目录下 cd ~John

  2. named start启动DNS守护进程

  3. 光盘使用的文件系统类型是ISO 9660

  4. 软件安装包默认的打包格式是…rpm

  5. shadow只有root才有权限获取

  6. linux启动系统的内核程序在/boot

  7. init对应的配置文件的文件名是/etc/inittab pid是1

  8. linux以文件的方式访问设备

  9. 前台启动的进程使用ctrl+c终止

  10. 设置限制用户使用磁盘空间的命令是quota
    在这里插入图片描述

  11. vi的命令

  12. Linux缺省使用的文件系统是 Ext

  13. 关闭Linux系统 halt

  14. 关机 init 0

  15. 安装Linux操作系统的时候选择文本登陆方式,运行级为3

  16. tar的几个参数

  17. 存放linux基本命令的目录为/bin

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
44. 强制杀死某个进程 kill -9 pid

在这里插入图片描述
在这里插入图片描述

  1. useradd -d 指定用户目录

  2. linux安装时自动创建了根用户

在这里插入图片描述
在这里插入图片描述

  1. 显示当前目录 pwd

  2. vi里 o可以在光标当前所在行下添加新的行 .重复上次操作

  3. 文件查看less和more
    查看的时候向光标上下移动less

  4. l时软连接文件

  5. du可以显示目录的大小

在这里插入图片描述

  1. mv对文件重命名

  2. 第二个IDE为hdb

  3. 成批添加用户 newuser

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值