Linux基础详解

目录

一、安装Linux分区方案

二、Linux常用简单命令

1、 破解其他Linux系统密码

2、命令使用帮助系统

3、Man看命令的使用手册

4、Linux文件系统 

5、ls命令

6、cp命令

7、mv命令

8、pwd命令

9、rm命令

10、stat命令

11、touch命令

12、mkdir命令

13、rmdir命令

14、file命令

三、Linux的用户

1、在Linux中什么是用户?

2、groupadd命令

3、gpasswd命令

4、newgrp命令

5、usermod命令

6、userdel命令

四、Linux权限

1、rwx权限

2、ACL权限

文件硬链接(索引)

文件软连接(快捷方式)

权限实践

(1)、chown命令

(2)、chgrp命令

3、特殊权限

SUID

SGID

lsattr

五、shell

1、通配符

2、变量

本地变量

环境变量

全局环境变量

用户环境变量

3、shell脚本

4、计划任务

crontab工具

六、IO

1、IO重定向

2、find命令

3、管道“|”命令

3、wc命令

七、循环语句

1、for循环


一、安装Linux分区方案

分区类型分区作用

分区大小

/boot 分区

启动分区

200MB引导

/根分区

使用LVM

50G

swap

交换分区

64G或256G

以前内存只有8G的时候swap建议是内存的两倍:

  • 4-16G内存,建议swap分4G
  • 16-64G内存,建议swap分16G
  • >64G内存,建议swap分64G

安装系统最少三个区:/boot、/和swap。

系统盘超过2TB,装完系统是无法启动的,超过2TB的硬盘格式要转换为GPT格式,正常硬盘是MBR模式。

系统盘超过2TB转换为GPT后需要再分一个区/boot/efi 200MB

高危命令:

rm -rf /*

二、Linux常用简单命令

Linux用户信息在/etc/passwd中

Linux用户密码信息在/etc/shadow中

备份存放密码文件,改掉不知道的用户密码,用完了再cp回去就可以了,这样恢复密码了,这样会影响所有用户(如果很多人改密码),那就只单独复制这个用户的这段。

离职的人,在密码前加个感叹号,需要用的时间取消掉就行。

usermod -L user1就是锁定用户,原理就是密码前加了一个感叹号。

usermod -U user1就是解锁用户,原理就是密码的感叹号取消掉。

在Linux中root因为他的UID是0所以是管理员,改了root的UID他就不是了。

admin的UID为0,这个时候他就是管理员了。

1、 破解其他Linux系统密码

把root的X去掉,这样随便su - XX都不会需要输入密码

进救援模式恢复密码,用光盘启动,只要光盘能引导

(1)、进入第三个菜单

(2)、进入第二个子菜单

(3)、输入1

(4)、回车得到一个命令行

(5)、输入chroot /mnt/sysimage进了真系统,用光盘启动,把真正的硬盘挂载到了假系统(光盘的系统)的sysimage系统上了

change root切换根

去掉X

 su 加“-”才能完整切换到其他用户的身份

2、命令使用帮助系统

正常的命令由三部分组成,每个部分用空格隔开,并且严格区分大小写

命令组成方式

command

options

arguments

命令选项参数

3、Man看命令的使用手册

例如date:
man date
date [OPTION]...[+FORMAT]
[]:可选项
...:代办列表
-a | -b | -c | -d:代办多选一
大写字母:代办必选项
<>:代办必选项

 

4、Linux文件系统 

文件系统结构:一切从根开始,Linux一切皆文件。

目录位置目录作用
/根目录
/rootroot的家目录

路径分为:相对路径和绝对路径

  • 相对路径:从当前目录开始。
  • 绝对路径:一切从根开始。

Linux下每个目录都有两个隐藏的文件夹

提示符意义

"."

代表当前目录

“..”

代表上一级目录

 

安装软件:

[root@classroom tmpl# ls
vsftpd-3.0.3-28.el8.x86_64.rpm
[root@classroom tmp]# rpm -ivh vsftpd-3.0.3-28.el8.x86_64.rpm

 查看软件包装的位置:

[root@classroom tmp]#rpm -ql vsftpd
/etc/logrotate.d/vsftpd

5、ls命令

ls:列出当前目录的下文件和文件夹。

文件颜色作用
蓝色

标识文件夹、目录。

黑色

标识普通文件。

绿色

标识可执行文件、命令。

青色

标识链接文件、快捷方式。

ls参数作用
-a

all,显示所有文件,包括隐藏文件,以“.”开头的文件。

-l

用长格式的方式显示。

-R

递归显示当前目录和子目录的内容

-ld

显示目录本身

-i

inode number索引号

 删除隐藏文件用rm -rf .*,删除当前目录所有隐藏文件,但是“.”和“..”无法删除。

6、cp命令

cp:复制文件和目录。

cp参数作用
-r

递归复制

-p

保留权限和时间戳

-a

等同于执行了-p、-r、-d

-i

人机交互,默认带

CP操作

cp操作

作用

cp /etc/passwd /tmp/

复制单个文件到目的目录,复制/etc/passwd到/tmp/目录下。

cp /etc/group /etc/profile /tmp/

复制多个文件到目的目录,复制 /etc/group和 /etc/profile到/tmp/目录下。

cp -r /etc/ /tmp/

整个文件夹复制

7、mv命令

mv:移动或改名

mv操作作用

mv passwd.t passwd.2

将passwd.t改名为passwd.2

8、pwd命令

pwd:显示当前工作目录。

9、rm命令

rm:remove删除

rm -rf /*,牢底坐穿操作。

extundelete工具恢复rm -rf删除的目录(ext3和ext4类型文件系统)

rm参数作用

-r

递归操作

-f

force,强制删除

删除一个文件只是删除了索引,一个文件由索引和数据块组成(索引和block)

索引:记录了文件名、大小、权限、时间、指针。

10、stat命令

stat:查看文件三个时间戳(最近访问、最近更改、最近改动)

11、touch命令

touch:创建空文件或者更新时间戳。

12、mkdir命令

mkdir:创建文件夹。

13、rmdir命令

rmdir:删除空文件夹。

14、file命令

file:查看文件类型。

三、Linux的用户

1、在Linux中什么是用户?

Linux系统重,每个用户都拥有一个唯一的UID,user id number。

UID为0就是管理员,root默认UID=0。

普通用户UID>=1000(老版本从500开始,新的是红帽7开始)

1-999系统用户使用。

[root@Believe ~]# cat /etc/passwd |grep sky
sky:x:1000:1000:sky:/home/sky:/bin/bash
sky用户各项参数介绍
skyx10001000

sky

/home/sky

/bin/bash

用户名

用户是否需要身份验证,取消掉就能免密登录

UID标识用户,不可重复

GID标识用户组

用户描述信息

用户家目录,自动创建的,用户登录默认进入家目录

shell命令解释器,常用的/bin/bash

默认一个用户没有设置密码,是处于锁定状态

,标识为“!!”

还有一个是/sbin/nologin,usermod -s /sbin/nolgin user3 该用户就无法登录了。

像某些邮箱服务器、ftp服务器场景,这样操作能不影响使用邮件收发和ftp使用,但是不能登录本机,提高了系统安全性。

 执行创建user1用户会自动执行以下操作:


[root@Believe ~]# useradd user1
  • 创建user1用户
  • 创建user1组
  • 创建user1的家目录
  • 将user1用户加入user1组

Linux中所有关于用户的信息

存放用户信息:

[root@Believe ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 2693 12月  5 15:31 /etc/passwd

存放密码信息:

[root@Believe ~]# ls -l /etc/shadow
----------. 1 root root 1974 12月 17 16:33 /etc/shadow

2、groupadd命令

groupadd:创建一个组

[root@Believe ~]# groupadd IT
[root@Believe ~]# cat /etc/group | grep IT
IT:x:1002:

 查看IT组中有哪些成员

[root@Believe ~]# cat /etc/group |grep IT
IT:x:1001:user2,user3,user1,root

存在组信息:

[root@Believe ~]# ls -l /etc/group
-rw-r--r--. 1 root root 1071 12月  5 15:31 /etc/group

存放组密码信息:

[root@Believe ~]# ls -l /etc/gshadow
----------. 1 root root 954 12月  5 15:31 /etc/gshadow

Linux中把用户信息/etc/passwd、用户密码信息/etc/shadow、组信息/etc/group、组密码信息/etc/gshadow这四个文件迁移到其他Linux系统,就把用户迁移过去了。

3、gpasswd命令

gpasswd:设置组密码。

4、newgrp命令

newgrp:登录组。

5、usermod命令

usermod:修改用户信息。

参数作用
-G

将用户加入指定组

命令作用

[root@Believe ~]# usermod -G IT user1

将user1加入到IT组中

[root@Believe ~]# usermod -G IT user1
[root@Believe ~]# id user1
uid=1001(user1) gid=1002(user1) 组=1002(user1),1001(IT)

6、userdel命令

userdel:删除用户。
 

四、Linux权限

在Linux系统当中,我们把访问文件的用户分为三类:
  • 文件的拥有人(user)
  • 文件的拥有组(group)
  • 其他人(other)
[root@Believe sky]# ll passwd
-rw-r--r--. 1 root IT 2607 11月 11 09:49 passwd
-rw-r--r--.1rootIT2607

11月 11 09:49

-:普通文件

d:文件夹

文件拥有人的权限

文件所属组的权限

其他人的权限(既不是文件拥有人又不在文件所属组的人)

如果变为“+”代表有更深层次的权限

文件:对于文件来说,这个代办文件的链接树,软链接是1,硬链接会变2。

文件夹:对于文件夹来说,这个代表文件夹下有多少个子目录。

文件拥有人

文件所属组

代办文件的大小,默认是字节,加-h查看

文件最后一次被修改时间

1、rwx权限

r:read读

w:write写

x:execute执行,文件有x代表有执行权限

2、ACL权限

权限还有个功能叫ACL:

看深层次的权限

深层权限

[root@Believe ~]# setfacl -m u:user1:rw- passwd
[root@Believe ~]# ll passwd
-rw-rw-r--+ 1 root root 2693 12月 18 14:26 passwd
[root@Believe sky]#  getfacl passwd
file: passwd
owner: root
group: root
user::rw-
user:user1:rw-
group::r--
mask::rw-
other::r--
[root@Believe sky]# setfacl -b passwd
[root@Believe sky]# ll
总用量 4
-rw-r--r--. 1 root root 2607 11月 11 09:49 passwd
  • 文件硬链接(索引)

[root@Believe sky]# link passwd test/passwd.1
[root@Believe sky]# ls test/
[root@Believe sky]# ll passwd
-rw-r--r--. 2 root root 2607 11月 11 09:49 passwd
  • 文件软连接(快捷方式)

[root@Believe sky]# ll /etc/ssh/ssh_config
-rw-r--r--. 1 root root 1726 11月  8 14:59 /etc/ssh/ssh_config
[root@Believe sky]# ln -s /etc/ssh/ssh_config /sky/test/ssh_config.1
[root@Believe sky]# ll /etc/ssh/ssh_config
-rw-r--r--. 1 root root 1726 11月  8 14:59 /etc/ssh/ssh_config

看文件大小

[root@Believe sky]# ll passwd -h
-rw-r--r--. 2 root root 2.6K 11月 11 09:49 passwd
  • 权限实践

修改文件所有者为user1

[root@Believe sky]# ll passwd
-rw-r--r--. 2 root root 2607 11月 11 09:49 passwd
[root@Believe sky]# chown user1 passwd
[root@Believe sky]# ll passwd
-rw-r--r--. 2 user1 root 2607 11月 11 09:49 passwd

减文件所有者权限

[user1@Believe sky]$ ll passwd
-rw-r--r--. 2 user1 root 2607 11月 11 09:49 passwd
[user1@Believe sky]$ chmod u-rwx passwd
[user1@Believe sky]$ ll passwd
----r--r--. 2 user1 root 2607 11月 11 09:49 passwd

(1)、chown命令

chown:修改文件的拥有人。

语法:chown XX(用户) XX...XX(单个或多个文件)

参数作用
-R递归执行

(2)、chgrp命令

chgrp:修改文件所属组。

(3)、chmod命令

chmod:change modify改变文件权限,有两种修改方式数字或字符

字符方式
参数作用
u

文件拥有人

g

文件所属组

o

其他人

-

去掉权限

+

增加权限

=

不管原来什么权限,赋值对应的权限

u、g、o可以灵活组合

[root@Believe sky]# chmod ugo+rwx passwd
[root@Believe sky]# ll passwd
-rwxrwxrwx. 2 user1 root 2607 11月 11 09:49 passwd
[root@Believe sky]# chmod ug-rx passwd
[root@Believe sky]# ll passwd
--w--w-rwx. 2 user1 root 2607 11月 11 09:49 passwd

权限ACL

ACL权限赋值
setfacl -m u:user10:rwx /data
u:用户
[root@Believe /]# setfacl -m u:user10:rx believe/

去掉acl权限
[root@Believe /]# setfacl -x u:user10 believe/

但是有+号
[root@Believe /]# ls -ld believe/
drwxrwxrwx+ 2 root root 6 12月  3 10:38 believe/
-b移除所有ACL
[root@Believe /]# setfacl -b /believe/
[root@Believe /]# ls -ld believe/
drwxrwxrwx. 2 root root 6 12月  3 10:38 believe/

3、特殊权限

SUID

SUID:如果在一个命令上添加了SUID后,那么任何人在执行命令时,会临时得到该命令拥有人的权限。

SGID

SGID:如果在一个目录上添加SGID,那么任何人在该目录中创建的文件,会继承该目录拥有组的权限。

[root@Believe /]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 34512 8月  13 2018 /usr/bin/passwd

[root@Believe ~]# ls -l /usr/bin/mkdir
-rwxr-xr-x. 1 root root 106256 1月  11 2019 /usr/bin/mkdir
[root@Believe ~]# ls -ld /believe/dat
drwsr-xr-x. 2 root root 6 12月  4 17:10 /believe/dat

[root@Believe ~]# su - user10
[user10@Believe ~]$ ls -ld /believe/dat
drwsr-xr-x. 2 root root 6 12月  4 17:10 /believe/dat
[user10@Believe ~]$ cd /believe/dat
[user10@Believe dat]$ mkdir user10
[user10@Believe dat]$ ls
user10

sticky:QQ群空间,t权限,如果在一个目录上添加了sticky权限,那么仅root和文件拥有人可以删除文件。

[root@Believe ~]# chmod o+t /believe

有4个权限,suid=4,sgid=2,sticky=1

chmod 3777 /believe

这个3就是sgid和sicky

chattr

lsattr

lsattr:查看文件隐藏权限。

重启

1、reboot

2、shutdown -r now

3、init 6

关机

1、shutdown -n now

2、init 0

3、poweroff

五、shell

1、通配符

参数作用
*

匹配所有、匹配零个或者多个字符。

[root@Believe ~]# rm -rf passw*
[root@Believe ~]# rm -rf 1?.txt
[root@Believe ~]# rm -rf [abc].txt
[root@Believe ~]# rm -rf [^abc].txt

写个shell——1

需求:/目录使用率大于15%进行告警的shell

(1)、[root@Believe ~]# df -h
文件系统               容量  已用  可用 已用% 挂载点
devtmpfs               7.8G     0  7.8G    0% /dev
tmpfs                  7.8G     0  7.8G    0% /dev/shm
tmpfs                  7.8G  9.3M  7.8G    1% /run
tmpfs                  7.8G     0  7.8G    0% /sys/fs/cgroup
/dev/mapper/rhel-root   26G  4.5G   21G   18% /
/dev/sda2             1014M  164M  851M   17% /boot
/dev/sda1              599M  6.6M  593M    2% /boot/efi
tmpfs                  1.6G   28K  1.6G    1% /run/user/42
tmpfs                  1.6G  4.0K  1.6G    1% /run/user/0
(2)、[root@Believe ~]# df -h |grep -w /
/dev/mapper/rhel-root   26G  4.5G   21G   18% /
(3)、[root@Believe ~]# df -h |grep -w / |awk '{print $5}'
18%
(4)、[root@Believe ~]# df -h |grep -w / |awk '{print $5}' |sed 's/%//'
18
#!/bin/bash
rootpart=`df -h |grep -w / |awk '{print $5}' |sed 's/%//'`

if [ $rootpart -ge 15 ]; then

        echo " $rootpart root partition is full"

        fi
[root@Believe ~]# ./disks.sh
root partition is full

使用``也是$()引用命令的作用

[root@Believe ~]# touch a{1,3,5,7,9}.txt
[root@Believe ~]# ll
-rw-r--r--. 1 root root    0 12月 11 11:01 a1.txt
-rw-r--r--. 1 root root    0 12月 11 11:01 a3.txt
-rw-r--r--. 1 root root    0 12月 11 11:01 a5.txt
-rw-r--r--. 1 root root    0 12月 11 11:01 a7.txt
-rw-r--r--. 1 root root    0 12月 11 11:01 a9.txt 

2、变量

本地变量

本地变量:仅在当前shell中有效的变量(新打开一个shell窗口就无效了)

环境变量

环境变量:所有子shell中能继承的变量

export将本地变量转换为环境变量

[root@Believe ~]# export a1

所有变量只在内存中,重启就没有了。

全局环境变量

全局环境变量:写入/etc/profile中的变量就是全局变量。

[root@Believe ~]# vim /etc/profile

切换用户会读这个文件

排错思路:如果你写的脚本报错,不知道哪一行有问题,可以分段排错,在一段里写echo“测试”,执行输出代办上边内容没问题,然后就往下排。

[root@Believe ~]# source /etc/profile

把/etc/profile重新读到内存中

用户环境变量

用户环境变量:针对用户单独,用户环境变量优先于全局环境变量。

[user10@Believe ~]$ vim .bash_profile

history:显示历史命令,默认全局环境变量保留1000条记录,个人用户可以自定义修改。

历史记录越长越不安全

 

$PATH
[root@Believe ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
执行ls等同于执行/usr/bin/ls
[root@Believe ~]# /usr/bin/ls

如果我想在任何目录执行disks.sh可以如下操作:

[root@Believe ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root
或者是以下操作(变量可以嵌套自己)
[root@Believe tmp]# PATH=$PATH:/root
[root@Believe tmp]# disks.sh
18 root partition is full

下面这样就跟PATH变量没有关系了

[root@Believe ~]# ./disks.sh
18 root partition is full

/etc/bashrc、/etc/profile和用户下的.bash_profile、.bashrc这四个配置文件都是关于变量的

符号作用
\

去除特殊符号的意义(转义符)和''效果一样

''

遇到任何字符均不转义(原样输出)。

""

遇到任何字符均不转义(原样输出),除了以下四种情况:

(1)$

(2)\

(3)``等同于$()

(4)!:也有特殊意义

[root@Believe ~]# echo Your cost $5.00
Your cost .00
[root@Believe ~]# echo Your cost $5.00
Your cost $5.00
[root@Believe ~]# echo "Your cost $5.00"
Your cost .00
[root@Believe ~]# echo 'Your cost $5.00'
Your cost $5.00
[root@Believe ~]# touch a\ b
[root@Believe ~]# ls
1234.txt   视频   音乐     a5.txt   abc.txt           b.txt
123.txt    图片   桌面     a7.txt   ab.txt            c.txt
公共       文档   a1.txt   a9.txt   anaconda-ks.cfg   disks.sh
模板       下载   a3.txt  'a b'     a.txt

[root@Believe ~]# rm a\ b
rm:是否删除普通空文件 'a b'?y

单引号

[root@Believe ~]# echo '$A'
$A
[root@Believe ~]# echo '$A'
$A

引用命令历史记录里第十条命令

[root@Believe ~]# !10
usermod -G IT user1

 

使用感叹号进行反选,如果是双引号“”那就是执行某一个命令了

[root@Believe ~]# iptables -A INPUT ’!‘ -s 192.168.1.0/24 -j ACCEPT

3、shell脚本

脚本:创建一个文本文件,然后将你要执行的命令写入到文件中,并且给他一个执行权限。

写shell脚本步骤
步骤方法
步骤一

脚本的命名:

(1)、文件名尽量有意义。

(2)、以.sh结尾

步骤二

脚本第一行:

#:#是一个注释,描述,给未来维护的时候用。
 

#遇到!就会变得有意义,意思是声明。
 

#!/bin/bash:声明接下来写的脚步都用/bin/bash解释,这样移植到其他计算机,不加这个,其他计算机默认不是bash解释的话无法执行会失败,加了这个声明,移植到任何地方都是使用bash解释。

步骤三

写完给脚本一个执行权限

[root@Believe scripts]# chmod u+x mail_full.sh

4、计划任务

周期性计划任务

crontab工具

crontab:实现周期性计划任务的工具

参数

功能

-e

编辑

-l

查看

-r

删除

man 5 crontab

分、时、日、月、周

[root@Believe /]# crontab -e
* * * * * mkdir /sky10

[root@Believe /]# ll /
总用量 28
drwxr-xr-x.   3 root root   41 12月 12 16:39 back
drwxrwxrwx.   4 root root   29 12月  4 17:10 believe
lrwxrwxrwx.   1 root root    7 8月  12 2018 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 11月  8 14:54 boot
drwxr-xr-x.   2 root root    6 12月  3 10:38 data
drwxr-xr-x.  20 root root 3420 12月 17 15:16 dev
drwxr-xr-x. 135 root root 8192 12月 17 17:51 etc
drwxr-xr-x.   8 root root   86 12月  5 15:31 home
lrwxrwxrwx.   1 root root    7 8月  12 2018 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 8月  12 2018 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 8月  12 2018 media
drwxr-xr-x.   2 root root    6 8月  12 2018 mnt
drwxr-xr-x.   2 root root    6 8月  12 2018 opt
dr-xr-xr-x. 323 root root    0 12月 17 15:15 proc
dr-xr-x---.  15 root root 4096 12月 18 16:07 root
drwxr-xr-x.  40 root root 1180 12月 17 15:16 run
lrwxrwxrwx.   1 root root    8 8月  12 2018 sbin -> usr/sbin
drwxr-xr-x.   2 root root  109 12月 17 15:59 scripts
drwxr-xr-x.   4 root root   60 11月 14 17:33 sky
drwxr-xr-x.   2 root root    6 12月 13 15:03 sky10
drwxr-xr-x.   2 root root    6 8月  12 2018 srv
dr-xr-xr-x.  13 root root    0 12月 17 15:15 sys
-rw-r--r--.   1 root root    0 12月 13 14:42 test12.txt
drwxrwxrwt.  13 root root 4096 12月 18 16:07 tmp
drwxr-xr-x.  12 root root  144 11月  8 14:38 usr
drwxr-xr-x.  21 root root 4096 11月  8 14:54 var


[root@Believe /]# tail /var/log//cron
Dec 13 15:01:54 Believe crontab[29726]: (root) BEGIN EDIT (root)
Dec 13 15:02:01 Believe CROND[29731]: (root) CMD (/usr/bin/echo hello)
Dec 13 15:02:01 Believe CROND[29728]: (root) CMDOUT (hello)
Dec 13 15:02:15 Believe crontab[29726]: (root) REPLACE (root)
Dec 13 15:02:15 Believe crontab[29726]: (root) END EDIT (root)
Dec 13 15:03:01 Believe crond[1180]: (root) RELOAD (/var/spool/cron/root)
Dec 13 15:03:01 Believe CROND[29762]: (root) CMD (mkdir^I/sky10)
Dec 13 15:03:18 Believe crontab[29782]: (root) LIST (root)
Dec 13 15:04:01 Believe CROND[29785]: (root) CMD (mkdir^I/sky10)
Dec 13 15:04:01 Believe CROND[29783]: (root) CMDOUT (mkdir: 无法创建目录 “/sky10”: 文件已存在)

六、IO

Standard input(STDIN)标准输入,来自于键盘。

Standard output(STDOUT)标准输出,默认是终端。

Standard error(STDERR)错误输出,默认是终端。

1、IO重定向

IO重定向
符号

作用

>

输出重定向

2>

错误输出重定向

&>

所有输出重定向

>>

追加

2>>

错误追加

&>>

所有追加

语法格式:命令、重定向符号、文件名

command > filename

[root@Believe ~]# ls > /tmp/filelist.txt
[root@Believe ~]# cat /tmp/filelist.txt
1234.txt
123.txt
公共
模板
视频
图片
文档
下载
音乐
桌面
a1.txt
a3.txt
a5.txt
a7.txt
a9.txt
abc.txt
ab.txt
anaconda-ks.cfg
a.txt
b.txt
c.txt
disks.sh
initial-setup-ks.cfg

2、find命令

find:查找。

[root@Believe ~]# find /etc/ -name passwd > find1.out > fin2.err
输出如果没有文件,默认会创建一个空文件。

3、管道“|”命令

管道语法:command1 | command2

将command1的执行结果作为command2的输入

3、wc命令

wc:检查文件行数。

[root@Believe scripts]# wc -l ping.sh
12 ping.sh
[root@Believe scripts]#

[root@Believe scripts]# ls -l /etc/ | wc -l
261

测试案例:统计CPU使用最高的前五个,并邮件发给user1

[root@Believe scripts]# ps axo %cpu,%mem,pid,comm |sort -rn |head -n 5
%CPU %MEM   PID COMMAND
0.0  1.3  1848 gnome-shell
0.0  0.9   807 systemd-journal
0.0  0.3  2216 ibus-x11
0.0  0.2  2173 Xwayland

邮件发给user1
[root@Believe scripts]# ps axo %cpu,%mem,pid,comm |sort -rn |head -n 5  |mail -s "process info" user1

七、循环语句

1、for循环

NAME:变量

#!/bin/bash
for num in $(seq 1 1000)
do
touch /tmp/$num
done

 测试案例:创建文件内的用户,并且随机生成密码,账号密码输出到文件中,然后把账号密码已邮件邮件形式发送给root。

[root@Believe scripts]# cat /etc/passwd |grep /bin/bash |grep -v root |cut -d: -f1
admin
user1
user2
user3
user10
user11
#!/bin/bash
for users in $(cat /scripts/userlist.txt)
do
        useradd $users
        password=$(openssl rand -base64 6)
        echo $password | passwd --stdin $users
        echo "username: $users password: $password" | $(echo username: $users password: $password >> /root/userspassword.txt) | mail -s "username and password" root
done

--stdin标准输入,在下边这里就不用重复输入两次密码了

[root@Believe scripts]# echo redhat | passwd --stdin user1

在Linux中,任何操作都会有一个返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数通工程师小明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值