shell脚本(一)

shell脚本(一)

1、常用命令

(1)系统管理

#useradd,添加新用户时默认会创建一个与用户名相同的用户组

#创建用户user1,并指定uid为1111,所属群组为2222(test),并且不建立家目录

groupadd test -g 2222

grep test /etc/group

useradd user1 -g 2222 -u 1111 -M

id user1

#创建用户user2,并指定uid为1112,所属群组为2222(test),并且建立家目录

useradd user2 -g 2222 -u 1112

ls /home

id user2

#userdel,默认不会删除家目录

#删除用户user1和user3(但不会删除家目录),删除user2并且删除家目录

userdel user1

userdel user3

userdel user2 -r

ls /home

#usermod,更改user4(1114)id为2224,群组test变为root,家目录变为/home/test

useradd user4 -u 1114 -g test

usermod -g root -u 2224 -d /home/test user4

id user4

grep user4 /etc/passwd

ll /home

chown -R user4:root /home/test

ll /home

#groupadd,新增群组test1,指定id=2223

groupadd test1 -g 2223

grep test1 /etc/group

#groupmod,重命名群组test1为test2,id=3333

groupmod test1 -n test2 -g 3333

grep test /etc/group

#groupdel,删除群组时必需确认群组没有其他成员

#删除包含成员的群组将会出错

#删除群组test和test2,test群组有成员删除会出错

groupdel test2

groupdel test

#passwd,更改密码,锁定/解锁用户,指定密码最短/最长/警告更改时间

#更改user4密码为love,只有root用户可以passwd 用户名

passwd user4

输入两次密码

#锁定用户user4和user5

passwd -l user4

#在/etc/shadow第2列前面加"!"表示用户被锁定

grep user4 /etc/shadow

#解锁用户user4

passwd -u user4

grep user4 /etc/shadow

#指定user4密码最短更改时间2天,最长7天,到期前3天警告

passwd user4 -n 2 -x 7 -w 3

grep user4 /etc/shadow

#chgrp,更改文件或者目录群组,将mount.sh群组由root改为test

(2)文件目录管理

#ls,-l以长格式显示,1-7列分别为:

#文件类型和权限、链接数、文件属主、文件属组、文件大小、最近修改时间、文件名

#ls,显示指定目录下所有文件,包含隐藏文件,大小以M为单位,并以修改时间排序

ls alc block-size=m /home

#不足1M以1M算,不足1G以1G算

#与-A与-a区别在于,前者不显示"."(当前目录)和".."(上一级目录)

ls Alc block-size=g /home

#ls默认以1行显示所有文件和目录,但不包含子目录

ls /home

#前者1行显示完,后者每一个文件或者目录占1行

ls -1 /home

#在目录后加反斜杠

ls -p /home

ls -lp /home

#递归式显示,UID和GID以数值代替,并按字母逆序排序

#-R:递归显示,-n:uid,gid数值显示,-r:按字母逆序排序

ls -R -n -r -al /home

#cp,默认不加参数无法复制目录

#-a:保留链接、文件属性,并递归复制目录

#-d:保留链接,-f:覆盖目标文件并且不提示,-p:附带复制修改时间和访问时间

#-r:递归复制目录,目标必需为目录,-l:不复制文件,只是链接文件

#将/home复制到/tmp,附带所有属性,并且强制覆盖目标文件

cp -apf /home /tmp

ls /tmp

#mv,-f:强制覆盖目标文件并且不提示,新版本已经默认保留权限

#将/home/aaa文件移动到/tmp,并且保留权限,如目标文件存在同样覆盖

ls -kl  /home/aaa

mv -f  /home/aaa  /tmp

ll /tmp/aaa

#两者比较,目标文件被覆盖,并且保留了权限

#rm,删除文件或者目录

#强制删除文件或者目录,如果目录有子目录一并删除

rm -rf /tmp/home

ll /tmp

#mkdir,建立目录,-p:如果路径某些目录不存在一并建立,-m:设定权限

#建立目录/home/bbb/ccc,并指定权限为777

mkdir -p -m 777 /home/bbb/ccc

#-m指定的是最深层目录权限,而缺少的目录权限是当前用户默认权限

#此处需要注意的是root的umask为0022,所以bbb权限为755,而不是777

#rmdir,只能删除空目录,-p:递归删除空目录,如果父目录为空一并删除

#加上-p后,如果父目录不为空,则提示错误,注意区别

mkdir -p bbb/ccc

mkdir -p bbb/ddd

rmdir -p bbb/ccc

ls bbb

rmdir -p bbb/ddd

ls

#stat,查看文件目录access、modify和change时间

#access为访问时

#modify为修改过内容时间,

#change为修改过状态时间,比如chmod、chown命令更改过权限等等

stat mount.sh

#touch,创建空文件,-a:只修改访问时间,-m:只修改修改时间

#-t:使用指定日期,-r:将指定文件日期修改为参考文件日期

#将访问时间改为20140102030405,修改时间改为20150102030405

touch -a -t 201401020304.05 bbb

touch -m -t 201501020304.05 bbb

stat bbb

#再将bbb改为参考文件ccc时间

stat ccc

touch -r ccc bbb

stat bbb

#file,测试文件类型,-b:不显示文件或目录名称

file mount.sh

file -b mount.sh

file test

file -b test

#ln,-b:覆盖目标文件前先备份,会在备份文件后面加字符串,-S:指定备份字符串

#-s:建立软链接,-d:建立硬链接

#软链接:相当于快捷方式,删除对原文件不影响

#硬链接:相当于原文件的一个"特殊"副本,删除对原文件不影响

#但修改内容同样指向原文件

#为bbb建立软链接,并且覆盖目标文件,指定备份字符串为".bk"

ln -s -b -S .bk bbb lnb

#删除软链接:原文件不受影响,但如果写入内容的话会写入到原文件

cat bbb

echo "test">lnb

cat bbb

#为bbb建立硬链接,可以看到ccc链接数值由1变为2

ln -d ccc ccchard

ll ccc

#删除硬链接:删除之后对原文件不造成影响,只是原文件链接数值减1

ll ccc

echo "ccchard">ccchard

rm -f ccchard

ll ccc*

#删除原文件,硬链接同样可以用, hardccc链接数值由2变1

时间: 2024-10-28 19:22:15

shell脚本(一)的相关文章

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell脚本交互:expect学习笔记及实例详解

最近项目需求,需要写一些shell脚本交互,管道不够用时,expect可以很好的实现脚本之间交互,搜索资料,发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. expect是spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile 1.3 expect: 只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,Li

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知

利用shell脚本批量修改表

最近公司里因为开发新功能,程序员需要快速在某一个库里的所有表添加字段,于是就用shell脚本简单快速实现批量修改表添加字段 #!/bin/bash export mysql_bin=/usr/local/mysql/bin export database=database export tables=`$mysql_bin/mysql -Bse "use ${database};show tables;"` for i in ${tables}         do          

Shell 脚本模拟 milter 实现黑白名单及关键词过滤

程序执行流程:1. 开始接受邮件.2. 检查发件人是否在黑名单内,如果是拒绝接受;否则继续3. 检查发件人是否在白名单内,如果是接收邮件;否则继续4. 对邮件进行关键字过滤,如果邮件中包含被过滤的关键词信息,则拒绝接收   该邮件;否则,接收该邮件. Usage: sh mailfilter.sh  [-r reject-addr] [-a add-addr][-k keywords]########################################################

Linux Shell脚本攻略(1.12)

1.12 函数和参数 和其他脚本语言一样,Bash同样支持函数,并且可以传递参数. 1.12.1 函数定义和传参 #!/bin/bash function fname() #也可以用fname()代替 { echo $1,$2; #访问参数1和参数2 echo "[email protected]"; #以列表的方式一次性打印所有参数 echo "$*"; #类似于[email protected],但是参数被作为单个实体 return 0; #返回值 } fnam

shell脚本编程学习笔记(1)

在linux上编程,离不开shell,计划好好看看shell编程,并在这里做些笔记以供有相同兴趣的人分享,主要参考<shell脚本学习指南>. 学习shell脚本编程之前,需要了解脚本编程语言和编译型语言的概念. 一般很多中型.大型的程序是用编译型语言写成的,比如C.C++.Java等.这类程序从源代码编译成目标代码,直接通过计算机执行.编译型语言执行效率比较高,大多运作于底层,处理的是字节.整数.浮点数等机器层级的对象,因此实现一个具体的功能,比如"将一个目录里的所有文件复制到另外

用shell脚本实现通用二进制格式mysql 5.5.28 x86_64的安装

用shell脚本实现通用二进制格式mysql 5.5.28 x86_64的安装 首先在网上用gfsoso.com来搜索下载mysql软件包mysql-5.5.28-linux2.6-x86_64.tar.gz,再用 winSCP把mysql上传到服务器上,上传位置可根据个人喜好,我个人一般放在服务器的/usr/local/src目录下. 此处我们是先命令行下实现一次,而后所有操作全部用shell脚本自动实现. 个人环境 centos 6.5 X86-64  所用空闲空间都做成了LVM. 准备工作