Linux期末复习
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