Linux期末复习

本文介绍了Linux的基本命令,包括文件系统目录结构、用户身份与文件权限管理,以及Vim文本编辑器的使用。此外,还涵盖了正则表达式、grep、sed和awk的命令行工具,磁盘管理和Shell编程,最后讨论了计划任务的设置。内容详尽,适合Linux学习者复习巩固。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux基本命令(所有命令严格区分大小写)

(一)Linux文件系统目录结构

绝对路径:从根目录(“/”)开始。Eg:/etc/passwd、/usr/bin、/dev/sda
相对路径:不是从“/”开始,而是从当前目录开始的路径,如dev/sdb、../home/fishyoung
在这里插入图片描述
1.pwd 显示用户当前所处的工作目录
2.cd 用于切换工作路径。
切换到根目录下:cd /
切换到家目录下的Test目录下:cd /home/Test
切换到上一级: cd ..
3.ls 用于显示目录中的文件信息
-a 查看当前目录下的所有文件及目录(包含隐藏文件)
-l 以长格式查看文件的属性、大小等详细信息
4.echo 用于屏幕上输出信息
-n 不换行输出内容
-e 解析转义字符

假设当前所处的目录是ssh,完成下面两个要求。
(1)切换到fishyoung目录,分别采用绝对路径和相对的路径的方法。
绝对路径:cd /home/fishyoung
相对路径:cd ~
(2)列出lvm目录下所有文件(包括隐藏)的属性、大小等信息,分别采用绝对路径和相对的路径的方法。Ls –la …/etc/lvm
绝对路径:ls -la /etc/lvm
相对路径:ls –la ../lvm

(二)基 本 命 令

1.mkdir 创建目录
(1)在家目录下创建目录test,并在test下创建test1、test2、test3、test4、test5目录

mkdir -p /home/test/test{1..5}

(2)在当前目录下创建A目录及A目录下的B、C、D、E、F目录

mkdir -p A/{B..F}
mkdir {A..F}

2.rm 删除文件或者目录
(1)将刚刚创建的test目录及其子目录test1、test2、test3、test4、test5删除

rm -r test/test{1..5}

(2)将刚刚创建的A目录及A目录下的B、C、D、E、F目录强制删除

rm -rf A/{B..E}

(3)删除普通文件1.txt

rm 1.txt

3.touch 创建空白文件
(1)在当前目录下创建空白文件1.txt、2.sh

touch 1.txt 2.sh

4.cp 复制文件或者目录
(1)将当前目录下的1.txt文件复制到/etc下

cp 1.txt /etc

(2)将当前目录下的A目录复制到test

cp -r A test

5.mv 移动文件或者目录、重命名
(1)将当前目录下的1.txt文件移动到test目录里面

mv 1.txt test/

(2)将当前目录下的2.sh文件移动到test目录里面并重命名为

test.sh
mv 2.sh ./test/test.sh

6.cat 查看文件内容并显示在屏幕上,一般用于查看内容较少的文件
head/tail 查看文件前十/后十行,加参数“-n”,查看文件前n/后n行
(1)利用cat查看passwd文件

cat /etc/passwd

(2)查看passwd文件文件前3行

head -3 /etc/passwd

(3)查看passwd文件文件后5行

tail -5 /etc/passwd

(4)查看passwd文件文件最后10行

tail  /etc/passwd

7.file 查看文件类型
8.压缩/解压缩文件

gzip/gunzip[参数选项]文件

tar[参数选项]归档文件名 需归档的原文件或目录 //归档语法
tar[参数选项]归档文件名[-C目标目录]//解归档语法

9.输入输出重定向、管道符

管道命令符“ | ”的作用是将前一个命令的标准输出作为后一个命令的标准输入

“命令A | 命令B | 命令C”。

10.uname 查看系统内核与系统版本等信息
11.whereis 寻找命令的可执行文件所在的位置
12.history 显示历史执行过的命令
13.date 显示或设定系统的日期与时间

(三)综合训练

1.列出当前目录下包括隐藏文件在内的所有文件和目录。

ls -a

2.用man命令查看ls命令的使用手册。

man ls

3.在当前目录下,创建目录test。

mkdir test

4.进入test目录,利用pwd查看当前工作目录。

cd test;pwd

5.利用touch命令,在/root目录创建一个新的空文件newfile。

touch /root/newfile

6.利用cp命令复制系统文件/etc/profile到当前目录下。

cp /etc/profile ./

7.复制文件profile为一个新文件profile.bak。

cp profile profile.bak

8.以长格式显示文件profile、lnsprofile和lnhprofile的详细信息

ls –l profile lnsprofile lnhprofile

用户身份与文件权限管理

(一)用户

1.用户分类:系统管理员(root)、系统用户(不可登录)和普通用户(可登录)
2.useradd 添加新的用户账户

useradd[参数选项]用户名

3.passwd 设置用户登录密码

passwd[参数选项][用户账户名]

4.usermod 修改用户的属性

usermod[参数选项]用户账户名

5.userdel 删除用户

userdel[-r]用户账户名

6.例题
(1)创建普通用户marry。useradd marry
(2)给用户marry设置密码。passwd marry
(3)完全删除用户marry。userdel –r marry

(二)组

1.groupadd 增加一个新的用户组
groupadd[-g]用户组
2.groupmod 修改用户组的属性
groupmod[参数选项]用户组
3.groupdel 删除用户组
groupdel[参数选项]用户组名
4.例题
(1)创建的groupA和groupB两个用户组。

groupadd groupA groupB

(2)修改组groupA的GID号为3333和groupB的组名为NewgroupB。

groupmod –g 3333 groupA

groupmod –n NewgroupB groupB

(3)删除上述创建的groupA和NewgroupB两个用户组。

Groupdel groupA NewgroupB

(三)文件权限

在这里插入图片描述
在这里插入图片描述
【练习】请分别计算数字表示法744、632、453、751所对应的字符表示法,然后把rwxrw-rw-、rw-rw–wx、rw-r-xr–转换成数字表示法。

744:rwxr--r--
632:rw--wx-w-
453:r--r-x-wx
751:rwxr-x--x
rwxrw-rw-:766
rw-rw--wx:663
rw-r-xr--:654

1.文件权限的更改
(1)chown 更改文件的所属主和所属组

chown[-R ]账户名[:组名]文件名

(2)chmod 改变用户对文件的读写执行权限

chmod[-R ]ijk文件名

同时chmod还支持使用“rwx”的方式来设置权限,可以使用u、g、o来代表user、group、others的属性,a则代表 all(全部),可以针对u、g、o、a增加或者减少某个权限(读、写或执行)。

chmod u+x g-w o=r 文件名

【例题1】为文件1.txt所属主添加写权限

chmod u+w 1.txt

【例题2】为文件1.txt所属组添加可执行权限

chmod g+x 1.txt

【例题3】将1.txt文件权限修改为“chmod 743”,则它的权限结构为

rwxr---wx

Vim

Vi/Vim文本编辑器

(1)一般模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
(2)编辑模式:正常的文本录入。
(3)命令模式:保存或退出文档,以及设置编辑环境。
在这里插入图片描述

正则表达式

在这里插入图片描述
[a-z]匹配所有小写单个字母
[A-Z]匹配所有单个大写字母
[a-zA-Z]匹配所有的单个大小写字母
[0-9]匹配所有单个数字
[a-zA-Z0-9]匹配所有数字和字母
1)写出满足下列条件的所有行的正则表达式。
①以“a”开头。 ^a
②以“b”结尾。 b$
③以“c”“d”或“e”开头。 1
④以小写字母开头。 2
⑤匹配所有数字。 [0-9]

grep

grep 参数 正则表达式 文件名
-i: ignorecase,忽略字符的大小写;
-o∶仅显示匹配到的字符串本身;
-n:显示行号
【练习】利用grep在/etc/passwd中完成以下操作
1.找出有关root的行

grep -n ‘root’ /etc/passwd

2.找出root开头的行

grep -n ‘^root’ /etc/passwd

3.匹配以root开头或者以admin开头的行

grep -n ‘^root’|’^admin’ /etc/passwd

4.过滤出bin开头的行,并显示行号

grep -n ‘^bin’ /etc/passwd

5.利用查找普通文件中指定字符串命令查询/etc/passwd文件中以admin开头的行。

grep -n ‘^admin’ /etc/passwd

6.利用grep工具过滤出grep.txt文件中包含数字的行。

grep -n ‘[0-9]/etc/passwd

sed

sed [选项] [sed内置命令字符] [输入文件]
选项:
在这里插入图片描述
sed常用内置命令字符∶
在这里插入图片描述
sed匹配范围
在这里插入图片描述
1.输出/etc/passwd文件第2,3行的内容

sed -n ‘2,3’p /etc/passwd

2.过滤出含有admin的字符串行

sed -n ‘/admin/’p /etc/passwd

3.将文件中的admin全部替换成root

sed -n‘s/admin/root/gp’ /etc/passwd

4.用sed工具打印/etc/passwd文件的第5行内容。

sed -n ‘5’p /etc/passwd

5.用sed工具将/etc/passwd文件中第1-5行中‘admin’全局替换成‘root’。

sed ‘1,5s/admin/root/g’ /etc/passwd

6.把/etc/passwd ,用sed打印所有行。

sed p /etc/passwd

7.打印pwd.txt的第3~10行。

sed -n ‘3,10’p pwd.txt

8.打印pwd.txt中包含“root”的行。

sed -n ‘/root/’p pwd.txt

9.删除pwd.txt中包含“bash”的行。

sed ‘/bash/’d pwd.txt

10.替换pwd.txt 中“root”为“toor”。

sed ‘s/root/toor/g’ pwd.txt

awk

awk [选项] '匹配规则和处理规则 ’ [处理文本路径]
在这里插入图片描述
awk内置变量
在这里插入图片描述
1.查找/etc/passwd文件中所有包含“bash”的行。

awk ‘/bash/’ /etc/passwd

2.利用awk工具打印/etc/passwd最后一段

awk -F ’:’ ‘{print $NF}/etc/passwd

3.用“:”作为分隔符,查找第3段等于0的行。

awk -F ‘:’ ’$3==0’ /etc/passwd

4.awk工具中,用‘:’作为分隔符,查找/etc/passwd文件中第2段为“root”的行,并把该段的“root”替换成“admin”(可以连同sed一起使用)。

awk -F ‘:’ ‘$2==“root”’/etc/passwd | sed ‘s/root/toor/’

5.awk工具中,用 ‘:’作为分隔符,打印/etc/passwd文件第一段以及最后一段,并且中间用 ‘#’ 连接 (例如,第1行的形式 root#/bin/bash)。

awk -F ‘:' ‘{print $1#” $NF}’  /etc/passwd

磁盘管理

fdisk命令用于在交互式的操作环境中管理磁盘分区
mount [选项] [磁盘分区名] [挂载点]
umount [磁盘分区名或挂载点]
【例题】
1.把设备/dev/sdb2挂载到/guazai目录中

`mount /dev/sdb2 /guazai

2.假设有分区“/dev/sda3”,将其挂载到“/mnt/sda3”目录

mount /dev/sda3 /mnt/sda3

Shell编程

1.编写shell脚本,利用列表for循环,求出1-50以内所有能被3整除的数的和并输出结果。

#!/bin/bash
#for i in {1..50}
for i in `seq 1 50`
do
 if [[ $[i%3] –eq 0 ]]
 then
  sum=$[sum+i]
 fi
done
echo $sum

2.编写一个shell脚本,利用循环求出100以内所有能被3和5整除的数,并统计其个数。

#!/bin/bash
for((i=1;i<=100;i++))
do
 if [[ $[i%3] –eq 0 && $[i%5] –eq 0 ]]; then
  count=$[count+1]
 fi
done
echo $count

3.编写shell脚本,从键盘输入一个数N,利用for循环,求出1-N之间所有奇数的乘积,并输出结果。

Read –p “请输入一个数:” num
sum=1
for i in {1..num..2}
do
 sum=$[sum*i]
done
echo $sum

4.利用循环,写出九九乘法表
5.编写Shell脚本,输出1-100以内所有的数,遇到9或9的倍数就跳过,每行显示10个数。

#!/bin/bash
for((i=1;i<=100;i++))
do
 if [[ $[i%9] –eq 0 || $[i%10] –eq 9 || $[i/10] –eq 9 ]]; then
  continue
 else
  count=$[count+1]
  echo –en “$i\t”
 fi
 if [[ $[count%10] –eq 0 ]];then
  echo –e “\r”
 fi
done
echo –e “\r”

计划任务

在这里插入图片描述

符号含义
*表示该范围内的任意时间
表示间隔的多个不连续时间点
-表示一段连续的时间范围
/执行任务的间隔时间

每周六4点执行“/bin/sh /root/backup.sh”。

0 4 * * 6 /bin/sh /root/backup.sh

每月15日3点20分执行“/bin/sh /root/backup_month.sh”。

20 3 15 * * /bin/sh /root/backup_month.sh

每隔6小时执行“/bin/sh /root/who.sh”。

0 */6 * * * /bin/sh /root/who.sh

  1. cde ↩︎

  2. a-z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值