Linux

作者 : admin 本文共8161个字,预计阅读时间需要21分钟 发布时间: 2024-06-16 共1人阅读

目录

第一章 初识Linux

第四章 文件管理与常用命令

1.文件基础知识

2.文件显示命令

3.文件内容查询

4. 文件和目录基本操作

5. 文件复制、移动、删除

7. 链接

8. 文件访问权限

第五章用户与用户组

第六章软件包管理RPM和YUM数据库

1. rpm包相关

2. yum相关

第七章Linux磁盘管理

1. 常用命令:

2. 磁盘相关

第八章Linux编程

第九章进程管理

1.进程基础

2. at和batch

3. crontab命令

5. 启动/重启/停止服务

第十章Shell编程

1.shell基础

2.变量定义

3.数值计算

4. 实例


第一章 初识Linux

自由软件的含义:

Linux 中的自由软件(Free Software)是指符合以下四项自由的软件:

  1. 自由运行软件,不论出于何种目的。
  2. 自由学习软件的工作原理,并修改以满足自己的需求。这需要获取软件的源代码。
  3. 自由重新分发软件的副本,无论是否修改过。
  4. 自由分发软件的修改版本,以便整个社区都能从中获益。

第四章 文件管理与常用命令

1.文件基础知识

(1)文件类型及区分:

文件类型

ls -l或ll命令输出的第一个字符

普通文件

目录文件

d

字符设备文件

c

块设备文件

b

链接文件

l

管道文件

p

套接字文件

s

Linux插图

(2)常用系统目录:

  • /:根目录
  • /boot: 启动相关文件
  • /mnt:挂载目录
  • /root:root用户家目录
  • /home:普通用户家目录,如/homt/user1
  • /dev: 设备文件目录
  • /etc: 配置文件目录

2.文件显示命令

(1)cat命令:显示文件内容

(2)more命令:分页显示文件内容

3.文件内容查询

grep命令:

  • grep abc /etc/passwd 普通查找(查找返回的是行,只是没有行号)
  • grep abc /etc/passwd /etc/shadow 在多个文件中查找
  • grep -l abc file1 file2 file3 列出包含指定字符串的文件的文件名
  • grep -n abc file 查找指定字符串并显示匹配行的行号
  • grep -n abc file1 file2 在两个文件中查找指定字符串并显示匹配行的行号
  • grep -v “#” file1显示不匹配的行
  • grep ^root /etc/passwd 显示匹配指定行首的行
  • grep abc$ file 列出文件中所有已abc结尾的行

Linux插图(1)

4. 文件和目录基本操作

(1)Tab 自动补全命令

(2) man命令查看帮助信息

5. 文件复制、移动、删除

(1)cp命令

  • cp file /dir 直接复制
  • cp file /dir/newfilename 复制并改名
  • cp file1 file2 /dir 复制多个文件
  • cp -r /dir1 /dir2 将目录/dir1及其所有子目录和文件递归复制到/dir2中

Linux插图(2)

(2)mv命令

  • mv file1 file2 将 file1 重命名为 file2
  • mv file1 /dir 将 file 移动到目录 /dir 中

(3)mkdir命令

  • mkdir dirName 当前目录下创建新目录
  • mkdir /tmp/dirName 指定绝对路径创建新目录
  • mkdir -p dir1/dir2/dir3 创建多级目录

(4)rmdir命令:只能删除空目录

(5)rm命令

  • rm file 删除文件
  • rm -f file 强制删除文件
  • rm -r dir 删除目录及其子目录
  • rm -rf dir 强制删除目录及其子目录

7. 链接

(1)硬链接与软连接(符号链接)

  • 硬链接相当于源文件可以同步更新的备份,软连接相当于快捷方式
  • 硬链接不能跨文件系统,不能链接目录
  • 删除源文件,硬链接不会有影响,软链接变无效

(2)创建:

  • 硬链接 ln source linkfile
  • 软链接ln -s source linkfile

Linux插图(3)

8. 文件访问权限

1)ls -l (ll)命令显示结果字符串,ls –a显示全部文件

(2)chmod 命令

  • 数字法:chmod 755 file
  • 加减法:chmod u+w,g+x,o+x file chmod a+x file chmod +w file
  • 等号法:chmod u=rw,g=rw,o=r file
  • 设置目录权限:chmod -R 777 dir

(3)chown命令:改变文件所有者chown user file

(4)chgrp命令:改变文件所属组chgrp newgrp file

Linux插图(4)

在 Linux 文件权限中,rwx 分别代表以二进制形式的数值:

  1. r (read) 表示读权限,对应二进制数值 4。
  2. w (write) 表示写权限,对应二进制数值 2。
  3. x (execute) 表示执行权限,对应二进制数值 1。

755 权限的含义:

  1. 第一个 7 代表文件/目录的所有者拥有读(r)、写(w)和执行(x)的权限。
  2. 第二个 5 代表文件/目录的所属组成员拥有读(r)和执行(x)的权限,但没有写(w)权限。
  3. 第三个 5 代表其他用户也拥有读(r)和执行(x)的权限,但同样没有写(w)权限。

第五章用户与用户组

1. 配置文件(1)/etc/passwd /etc/shadow /etc/group /etc/gpasswd

Linux插图(5)

2. useradd命令:新增用户useradd newusername

3. passwd命令

  • 设置自己的密码:passwd
  • 设置其他用户密码(root可执行):passwd user1
  • 直接设置其他用户密码(root可执行): echo “newpassword” | passwd –stdin user
  • 锁定/解锁用户(root可用):passwd -l user passwd -u user

4. userdel命令:删除用户 userdel user

5. groupadd命令:增加组

6. groupmod命令:修改组信息

  • -g:修改GID
  • -n:修改组名

Linux插图(6)

7. gpasswd命令:指定组属性

  • gpasswd group:设定组密码
  • gpasswd -A group:指定组管理员(root专用)
  • gpasswd -M user1,user2 group :添加组成员
  • gpasswd -a user1,user2 group::添加组成员(组管理员用)
  • gpasswd -d user group: 删除组成员(组管理员用)

Linux插图(7)

第六章软件包管理RPM和YUM数据库

1. rpm包相关

(1)安装:rpm -ivh package.rpm,注意使用包全名

安装 nginx 软件包: rpm -ivh nginx-1.14.0-1.el7.ngx.x86_64.rpm

(2)查询:rpm -q package_name,注意使用软件名

查询是否安装了nginx: rpm -q nginx

(3)卸载:rpm -e package_name

卸载 nginx: rpm -e nginx

2. yum相关

(1)yum命令需要在联网的环境下或者设置本地yum源。

(2)在联网的环境下可以自动解决依赖性的问题。

(3)yum install 软件名(如yum install mysqld)

yum install package_name

(4)yum remove 软件名卸载

yum remove package_name
yum remove mysqld

第七章Linux磁盘管理

1. 常用命令:

(1)mount:挂载命令

  • mount /dev/sr0 /mnt/cdrom:挂载设备到挂载点
格式: mount [-t 文件系统类型] [-o 挂载选项] 设备文件 挂载点
例如: mount /dev/sr0 /mnt/cdrom - 将 /dev/sr0 设备挂载到 /mnt/cdrom 目录下
  • umount /mnt/cdrom:卸载挂载点
格式: umount 挂载点或设备文件
例如: umount /mnt/cdrom - 卸载 /mnt/cdrom 目录下的设备
  • mount -o remount,noexec /dev/sdb2: -o后接特殊选项,此例为重新挂载并制定不允许在该分区执行可执行文件
mount 命令用于挂载文件系统。
-o 选项用于指定挂载选项。
remount 选项用于重新挂载已挂载的文件系统。这样可以在不卸载文件系统的情况下,修改挂载选项。
noexec 选项用于禁止在该文件系统上执行二进制程序或脚本。这可以增加系统的安全性,防止恶意程序在该分区上执行。

综合起来,mount -o remount,noexec /dev/sdb2 命令的作用是:

重新挂载 /dev/sdb2 分区,
在不卸载分区的情况下,
添加 noexec 选项,禁止在该分区上执行任何可执行文件。
  • mount -o remount,usrquota,grpquota /dev/sdb2: 重新挂载分区并写入用户磁盘配额文件和组磁盘配额文件
mount 命令用于挂载文件系统。
-o 选项用于指定挂载选项。
remount 选项用于重新挂载已挂载的文件系统。这样可以在不卸载文件系统的情况下,修改挂载选项。
usrquota 选项用于启用用户磁盘配额。这意味着系统会为每个用户记录磁盘使用情况,并根据配额进行限制。
grpquota 选项用于启用组磁盘配额。这意味着系统会为每个组记录磁盘使用情况,并根据配额进行限制。

2. 磁盘相关

(1)设备文件名 /dev/sda /dev/sdb

/dev/sda: 第一块 SCSI 或 SATA 硬盘
/dev/sdb: 第二块 SCSI 或 SATA 硬盘
依此类推,后续硬盘设备文件名为 /dev/sdc、/dev/sdd 等

(2)分区原则

  • 主分区最多4个
  • 扩展分区最多1个
  • 主分区和扩展分区加起来最多4个
  • 主分区和扩展分区分区号(1-4)
  • 扩展分区不能直接写入数据,需要分成逻辑分区
  • 逻辑分区的分区号从5开始,系统内第二块硬盘的第一个逻辑分区设备名为/dev/sdb5
假设有一块第二块硬盘 /dev/sdb

可以在 /dev/sdb 上创建 4 个主分区:
/dev/sdb1
/dev/sdb2
/dev/sdb3
/dev/sdb4
或者创建 1 个扩展分区 /dev/sdb4,然后在扩展分区内创建多个逻辑分区:
/dev/sdb5
/dev/sdb6
/dev/sdb7
/dev/sdb8 等

第八章Linux编程

1. vi相关:

(0)执行vi命令:

  • vi filename :打开或新建文件,并将光标置于第一行首
  • vi +n filename :打开文件,并将光标置于第n行首
  • vi + filename :打开文件,并将光标置于最后一行首
  • vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
  • vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
  • vi filename….filename :打开多个文件,依次进行编辑

(1)三种模式:运行vi命令进入命令模式,按a i o r(或A I O R)进入输入模式(插入模式),按ESC回到命令模式,输入:进入底行命令模式(底行模式、末行模式),按ESC重回命令模式。

(2)命令模式下的常用命令

  • 定位:H 移至屏幕顶端, M 移至屏幕中间,L 移至屏幕下端,n+空格向右移动n个字符,G 移动到最后一行,nG 移动至第n行,gg移动至第1行
H: 将光标移动到屏幕的顶端(第1行)
M: 将光标移动到屏幕的中间(第5行)
L: 将光标移动到屏幕的底端(第10行)
5 空格: 将光标向右移动5个字符
G: 将光标移动到最后一行(第10行)
3G: 将光标移动到第3行
gg: 将光标移动到第1行
  • 删除:x 向后删除一个字符,X向前删除一个字符,nx连续删除n个字符,dd删除当前行,ndd向后删除n行,d1G 删除第1行至当前行, dG删除当前行到最后一行
x: 删除当前光标所在的字符
X: 删除当前光标前面的字符
5x: 连续删除5个字符
dd: 删除当前行
5dd: 删除当前行到向下的4行,共5行
d1G: 删除第1行到当前行(不包括当前行)
dG: 删除当前行到最后一行
  • 复制:yy复制当前行,nyy向后复制n行,y1G复制第1行至当前行,yG复制当前行至最后一行,p粘贴在下一行,P粘贴在上一行
yy: 复制当前行
5yy: 复制当前行到向下的4行,共5行
y1G: 复制第1行到当前行(不包括当前行)
yG: 复制当前行到最后一行
p: 将复制的内容粘贴到当前光标所在行的下一行
P: 将复制的内容粘贴到当前光标所在行的上一行
  • 其他:u撤销,.重复,ZZ保存文件并退出
u: 撤销上一次操作
.: 重复上一次操作
ZZ: 保存文件并退出编辑器

(3)底行模式下的常用命令

  • 保存::w :w! :wq :q! :wq! :w file n1,n2 w newfile
:w: 保存当前文件
:w!: 强制保存当前文件
:wq: 保存文件并退出编辑器
:q!: 不保存退出编辑器
:wq!: 强制保存并退出编辑器
:w file: 将当前文件另存为"file"
:n1,n2 w newfile: 将第n1行到第n2行的内容保存到新文件"newfile"中
  • 行号::se nu :se nonu :set nu : set nonu
:se nu: 显示行号
:se nonu: 隐藏行号
:set nu: 同:se nu
:set nonu: 同:se nonu
  • 查找: :/str 向下搜索str ,:?str 向上搜索str ,n 往前重复上次搜索,N往后重复上次搜索
:/str: 向下搜索字符串"str"
:?str: 向上搜索字符串"str"
n: 重复上一次的向下搜索
N: 重复上一次的向上搜索
  • 替换::s/old/new 本行替换一次,:s/old/new/g本行全部替换,:n1,n2s/old/new/g从第n1行到第n2行全部str1替换为str2
:s/old/new: 替换当前行中首次出现的"old"为"new"
:s/old/new/g: 替换当前行中所有的"old"为"new"
:n1,n2s/old/new/g: 将第n1行到第n2行中所有的"old"替换为"new"

第九章进程管理

1.进程基础

(1)ps aux或ps -elf获取快照

(2)top命令动态获取系统信息(前5行)

2. at和batch

(1)配置文件:/etc/at.allow /etc/at.deny

(1) ps aux 或 ps -elf 命令可以获取系统进程的快照信息,包括进程ID、用户、CPU和内存占用等。
(2) top 命令可以动态显示系统信息,前5行包括系统负载、正在运行的进程数、CPU使用情况、内存使用情况等。

(2)at 时间:at now +5 minutes, at now +3 days, at 23:00 2021-11-20, at midnight 2021-11-11

(1) /etc/at.allow 和 /etc/at.deny 是at任务的配置文件,可以控制哪些用户可以使用at命令。
(2) at 命令可以指定在未来某个时间执行任务,支持多种时间格式,如:
- at now +5 minutes: 5分钟后执行
- at now +3 days: 3天后执行
- at 23:00 2021-11-20: 2021年11月20日23点执行
- at midnight 2021-11-11: 2021年11月11日午夜执行

(3)atq命令:查询当前at任务

atq 命令可以查询当前at任务队列。

(4)atrm jobno:删除at任务

atrm jobno 命令可以删除指定at任务。

(5)batch命令不需要指定具体时间,其他与at一样

batch 命令与at类似,但不需要指定具体时间,系统会在负载较低时执行。

3. crontab命令

(1)配置文件:/etc/cron.allow /etc/cron.deny /etc/crontab

/etc/cron.allow:
这个文件控制哪些用户可以使用 crontab 命令来设置计划任务。
如果这个文件存在,只有被列在这个文件中的用户才能使用 crontab。
如果这个文件不存在,则所有用户都可以使用 crontab。
/etc/cron.deny:
这个文件控制哪些用户不能使用 crontab 命令来设置计划任务。
如果这个文件存在,被列在这个文件中的用户将不能使用 crontab。
如果这个文件不存在,所有用户都可以使用 crontab。
/etc/crontab:
这是系统级的 crontab 文件,里面定义了系统级的计划任务。
这个文件的格式与用户级的 crontab 文件格式相同,每一行代表一个计划任务。
与用户级 crontab 文件不同的是,这个文件还有一个额外的字段,用于指定任务应该由哪个用户执行。

(2)crontab -e命令:编辑当前用户的计划任务

Linux插图(8)

Linux插图(9)

Linux插图(10)

5. 启动/重启/停止服务

service network start/restart/stop或者服务程序绝对地址+start/restart/stop。

service network start: 启动网络服务
service network restart: 重启网络服务
service network stop: 停止网络服务
这里的 network 可以替换为其他服务名称,比如 httpd(Apache HTTP 服务)、mysqld(MySQL 服务)等。
/usr/sbin/httpd start: 启动 Apache HTTP 服务
/usr/sbin/httpd restart: 重启 Apache HTTP 服务
/usr/sbin/httpd stop: 停止 Apache HTTP 服务
这种方法直接使用服务程序的绝对路径来操作服务,适用于任何服务。

第十章Shell编程

1.shell基础

(1)echo命令:-e -n:显示内容不换行

echo 命令用于在终端输出文本信息。
常用选项:
-e:启用转义字符,如 
 换行, 	 制表符等。
-n:不换行输出,即不自动在输出后添加换行符。

echo "Hello, World!"  # 输出 Hello, World!
echo -e "Hello
World" # 输出两行
echo -n "No newline"  # 输出 No newline (没有换行)

(2)重定向

>:以覆盖方式将输出重定向至文件

>>:以追加方式将输出重定向至文件

echo "This is a test" > test.txt # 将输出写入 test.txt 文件
echo "Appending to file" >> test.txt # 追加内容到 test.txt 文件

(3)管道符 |

管道符用于将一个命令的输出作为另一个命令的输入。

管道的基本语法:
命令1 | 命令2
示例:
ls -l | grep "file" # 列出当前目录下包含 "file" 的文件信息
cat file1.txt file2.txt | wc -l # 统计 file1.txt 和 file2.txt 的总行数
管道可以连接多个命令,实现复杂的操作:
ls *.txt | xargs rm -f # 删除当前目录下所有 .txt 文件

2.变量定义

(1)注意事项:=两边不能有空格;默认为字符串类型;如果有两个单词以上可以使用“”或’’引起来,“”里边特殊字符有固定含义,如$ ! . \ * 等,‘’里面均为普通字符。“反引号可以引用系统命令。

变量名和等号之间不能有空格
默认变量类型为字符串
使用双引号或单引号引用含有多个单词的变量
双引号中的特殊字符如 $ ! . \ * 等有特殊含义
单引号中的特殊字符视为普通字符
反引号 `` 可以引用系统命令的输出

(2)echo输出

name="John Doe"
echo $name # 输出 John Doe
echo "$name" # 输出 John Doe

(3)unset删除变量

unset name # 删除 name 变量

(3)环境变量:export关键字,建议变量名字全部大写字母,env查看,unset删除。

使用 export 关键字定义环境变量
环境变量名建议全部大写
env 命令可查看所有环境变量
unset 可删除环境变量

(4)预定义变量、位置参数变量

$0 表示脚本名称
$1, $2, $3... 表示脚本的位置参数变量

3.数值计算

(1)双小括号$(()):语法最松散,*等符号无需转义,运算符两侧空格可有可无,小括号头尾空格可有可无,变量引用时$符号可有可无,如a=11;b=22;c=$(( a + b )),与$[]功能相同。

a=11
b=22
c=$((a + b)) # c=33

(2)let:功能等同于双小括号,变量前可以不加$,=和其他运算符之间不能有空格。如let c=a+b,let c=$a+2

let c=a+b # c=33
let c=$a+2 # c=13

(3)expr命令:*等特殊符号必须转义(\*),运算符两边必须有空格,引用变量必须加$

c=$(expr $a + $b) # c=33
d=$(expr 5 \* 6) # d=30

4. 实例

(1)计算1+2+3+…+n.的和

n=100
sum=0
for ((i=1; i<=n; i++)); do
    sum=$((sum + i))
done
echo "The sum is: $sum" # 输出 5050

(2)计算n的阶乘。

n=5
fact=1
for ((i=1; i<=n; i++)); do
    fact=$((fact * i))
done
echo "$n! = $fact" # 输出 5! = 120

Linux插图(11)

本站无任何商业行为
个人在线分享 » Linux
E-->