在(上)篇,我们详细的讲解了Shell脚本的基础知识和些许命令与实验,这次的的(下)篇,我们会详细讲解Shell脚本的常用命令
关于脚本的基础知识请各位移步到(上)篇啦~
一、设置主机名称
1、通过文件方式修改
vim /etc/hostname
示例
进入后,编辑
示例
注意:修改完毕文件后在当前的Shell中是不会生效的,如果需要看到效果,可以关闭当前Shell后,重新开启新的Shell
2、通过命令修改
hostnamectl hostname Lincoln
Lincoln为博主的用户名,这里你们替换成自己想要的用户名即可
示例
查看可以通过exit退出后重登查看
exit
exit输入后,输入自己的密码,重登即可看到名字已修改
二、网络管理命令(nmcil)
1、查看网卡
查看网卡的命令有很多,以下每条都是:
ip a s ens160
ifconfig ens160
nmcli device show ens160
nmcli device status
nmcli connection show ens160
示例
2、 设置和修改网卡
(1)网卡首次设置时
设置DHCP网络模式
nmcli connection add con-name ens160 \
> type enthernet ifname eth160 \
> ipv4.method auto
示例
设置静态网络模式(即自己手工配置)
nmcli connection add con-name ens160 type enthernet ifname eth160 \
> type enthernet ifname eth160 ipv4.method manual \
> ipv4.addresses 192.168.76.100/24 \
> ipv4.gateway 192.168.76.2
示例
(2)修改网卡时
修改ip地址
nmcli connection modify ens160 ipv4.addresses 192.168.76.200/24
示例
改完之后还需要重启与重新连接:
nmcli connection reload
nmcli connection up ens160
(3)一些注意点
- 当网卡未被设定时,对网卡的设定即改即生效
- 当网卡被设定过,通过命令更改后必须要重启刷新网卡才生效
三、打印字符的各种命令
1、打印连续数字
命令都是举些例子,大家从中举一反三
(1)连续打印三个数字
seq 1 3
seq
:
基础命令,用于生成数字序列(sequence)
1 3
(序列范围):
1
:序列起始值
3
:序列结束值
示例
(2)指定打印格式
seq -f "%03g" 1 3
-f "%03g"
(格式控制):
-f
:指定输出格式的选项(format)
"%03g"
:格式化字符串,其中:
%
:格式标识符起始符
0
:用零填充左侧空白
3
:总宽度为3个字符
g
:使用一般格式输出数字(自动选择浮点或整数表示)
示例
(3)设定打印步长
如:打印成1-3-5-7-9
seq 1 2 10
示例
2、反向打印文件内容
seq 1 9 > test
tac test
>
:重定向操作符,将命令输出保存到文件(覆盖已有内容)test
:目标文件名综合效果:创建一个名为
test
的文件,内容为1-9的垂直数字序列tac
:反转文件内容的行顺序(名称是cat
的反写)
示例
3、打印字符
(1)printf打印
打印字符
printf "hello world"
示例
打印字符指定格式
printf "hello world\n"
printf "hello\tworld\n"
示例
打印百分号
printf "3%%\n"
如果想打出%,则要连写两次%,即%%,才能打出
示例
打印整数、浮点数
整数
printf "%.0f" 3.1415926
示例
浮点数
printf "%.1f\n" 3.1415926
.1就表示保留一位小数位;.2就是保留两位,以此类推
示例
(2)echo打印
打印字符
echo "hello world"
示例
不换行打印
echo -n "hello world"
示例
解析转义字符
echo -e "hello world"
示例
4、sort命令
(1)前提准备
1)前提文件1——文件lin
用于对内容进行排序,默认排序行首第一个字符
vim lin
进入后编辑:
3
4
3
2
1
5
7
6
8
9
8
8
12
6
30
8
示例
2)前提文件2——文件lin1
vim lin1
进入后编辑:
4:3
2:4
3:3
1:2
9:1
8:5
8:7
8:6
8:8
8:9
8:8
8:8
8:12
8:6
8:30
8:8
示例
(2)命令
1)sort -n
纯数字排序
sort -n lin
示例
2)sort -r
倒叙
sort -rn lin
示例
3)sort -u
去掉重复
sort -un lin
示例
4)sort -o
输出到指定文件
sort -un lin -o test
示例
5)sort -t
指定分隔符
6)sort -k
指定排序的列
sort -n -t ":" -k 2 lin1
示例
5、uniq命令
对于命令输出的字符冗余部分进行处理
vim lin
进入后编辑:
3
4
3
2
1
5
7
6
8
9
8
8
12
6
30
8
(1)uniq -c
合并重复并统计重复个数
sort -n lin | uniq -c
示例
(2)uniq -d
显示重复的行
sort -n lin | uniq -d
示例
(3)uniq -u
显示唯一的行
sort -n lin | uniq -u
示例
6、cut命令
(1)前提准备
vim 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
1p:x:4:7:1p:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:hat:/sbin:/sbin/halt
mai1:x:8:12:mai1:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
示例
(2)cut -d :
指定“:冒号”为分隔符
(3)cut -f
指定显示的列 5第五列 | 3,5 3和5列 | 3-5 3到5列 | 5- 第五列以后 | -5 到第五列
cut -d : -f 1 passwd
cut -d : -f 1,5 passwd
cut -d : -f 1-3 passwd
cut -d : -f -3 passwd
cut -d : -f 3- passwd
示例
(4)cut -c
指定截取的字符(数字用法同-f)
cut -c 1-4 passwd
cut -c -8 passwd
cut -c 8- passwd
示例
四、xargs命令
1、xargs作用命令
echo /mnt/lin{1..3} | touch
示例
echo /mnt/lin{1..3} | xargs touch
示例
加上xargs就行了
2、多行输入单行输出
vim /mnt/lin
进入后编辑:
a a a a a a
b b b b b b
c c c c c c
d d d d d d
e e e e e e
f f f f f f
示例
xargs < /mnt/lin
示例
3、指定每行输出个数
xargs -n 3 < /mnt/lin
示例
4、指定分隔符
echo "lin:lin:lin" | xargs
示例
echo "lin:lin:lin" | xargs -d:
示例
5、用字符代替接收值
ls /mnt/* | xargs -Iword rm -fr word
示例
6、参数总结
-I
|
用于指定替换字符串,将输入数据中的特定字符串替换为命令行参数。
|
-n |
用于指定每次执行命令的参数个数。
|
-t |
用于打印执行的命令。
|
-p |
用于提示用户确认是否执行命令。
|
-r |
当标准输入为空时,不执行命令。
|