Linux系统shell编制程序之for循环语句,linuxshell

Linux系统shell编程之for循环语句。

1.for循环语句和while循环类似,可是for循环首假如用来施行次数有限的循环,并不是医生和医护人员进度及Infiniti循环,那么for循环的语法如下:

for 变量名 in 变量取值列表
do
 指令
done

在这种for循环语法中,在for关键字背后会有三个变量名,变量名会依次的收获in后边的变量取值列表的从头到尾的经过,每取贰个然后循环do
和done之间的有的 也便是命令。 之后再次循环下三个变量取值列表 然后试行do
done之间的局地,直到变量取值列表的最终三个值并跻身循环体后才甘休。

 

2.次之种语法正是C语言型的for循环语句如下:

for ((exp1;exp2;exp3))
do
 指令
done

例如1:

for ((a=1;a<=10;a++))
do
 echo $a
done

输出结果如下:

[[email protected] shell]# sh for_check.sh 
1
2
3
4
5
6
7
8
9
10
[[email protected] shell]# 

剖析:

for ((a=1;a<=10;a++)) #a=1 那么a就是1 a<=10 那么1<10 但是不等于10 所以后面a++增加1
do
 echo $a  #第一次输入$a是1 那么第二次 a++ 等于a+1 也就是1+1 第二次输出2 直到a=10
done   #结束

如上的for循环类似于while语句 如下:

a=1
while ((a<=10))
do
 echo $a
 ((a++))
done

出口结果如下:

[[email protected] shell]# sh while.sh 
1
2
3
4
5
6
7
8
9
10
[[email protected] shell]#

假诺指望程序能够持续运营,那么while循环是最棒的抉择。

借使是限次循环的话,则多用for循环!!!

 

3、for循环的根基实施

例1:使用for循环打字与印刷 1 2 3 4 5 数字如下:

#!/bin/bash
for zhangsan in 1 2 3 4 5
do
        echo $zhangsan
done

浅析如下:图片 1

图片 2

在for关键字背后会有多个变量名,变量名会依次的收获in前边的变量取值列表的从头到尾的经过,每取三个然后循环do
和done之间的一对 也便是命令。 之后重新循环下三个变量取值列表 然后实行do
done之间的部分,直到变量取值列表的末尾三个值并跻身循环体后才截至。

末段输出内容:

[[email protected] shell]# sh for_check.sh 
1
2
3
4
5
[[email protected] shell]# 

 

例如2:使用{}来打印1 2 3 4 5

在前几篇小说中有提过{}的用途,举个例子打印1-15 可能 a-z

[[email protected] shell]# echo {1..15} 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[[email protected] shell]# echo {a..z} 
a b c d e f g h i j k l m n o p q r s t u v w x y z
[[email protected] shell]# 

应用for循环结合{}循环

[[email protected] shell]# cat for_check.sh 
#!/bin/bash
for zhangsan in {1..5}   #或者 {a..z}
do
        echo $zhangsan
done
[[email protected] shell]# sh for_check.sh  
1
2
3
4
5
[[email protected] shell]#

输出a-z

[[email protected] shell]# sh for_check.sh 
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
[[email protected] shell]# 

 

实例3:批量修改文件后缀

图片 3

咱俩看看
在这几个目录下有这么多文件,可是她们的后缀名分歧,不过供给正是自家想把以txt格式的文本,都改为.sh的
第一种格局,一条条的手动改,第几种方式如下:

1.第一大家要改后缀名,我们先定义二个变量测验

[[email protected] data]# aaa=csdn.txt
[[email protected] data]# echo $aaa
csdn.txt
[[email protected] data]# echo $aaa | cut -d . -f1 
csdn
[[email protected] data]# echo "`echo $aaa | cut -d . -f1`".sh
csdn.sh
[[email protected] data]#

深入分析如下:

[[email protected] data]# aaa=csdn.txt  #定义一个变量 aaa=csdn.txt 那么aaa就是csdn.txt
[[email protected] data]# echo $aaa?????#echo $aaa 就是 csdn.txt
csdn.txt        #输出的结果
[[email protected] data]# echo $aaa | cut -d . -f1 #在这里我们使用cut命令通过.为分隔符截取第一段  
csdn????????#截出来的csdn 那么我们想,这时候在csdn后面加上一个.sh 是不是就好了 如下:
[[email protected] data]# echo "`echo $aaa | cut -d . -f1`".sh????#在以上的命令后面加上.sh 就实现了这个效果
csdn.sh
[[email protected] data]#

 

上述是二个变量的主意,那么接下去编写for循环修改的秘籍

2.我们是要求把txt后缀改为sh结尾,那么我们必然是要寻觅在那边目录下具备以txt文件结尾的文本如下:

[[email protected] data]# ls | grep txt$
a.txt
b.txt
c.txt
d.txt
uuub.txt
[[email protected] data]#

到那边小编想应该很清楚了,接下去修改的主意和地点变量的主意同样 如下:

#!/bin/bash
cd /root/data || {
        echo "进入目录失败!!!"
        exit 1
}

for zhangsan in `ls | grep txt$`
do
        mv $zhangsan `echo $zhangsan | cut -d . -f1`.sh
done

3.剖析:

#!/bin/bash
cd /root/data || {   #进入文件目录
        echo "进入目录失败!!!"  #判断是否进入成功!!!
        exit 1
}

for zhangsan in `ls | grep txt$`  #张三是一个变量 那么后面跟着那条命令 也就是所有以txt结尾的文件,开始循环
do
        mv $zhangsan `echo $zhangsan | cut -d . -f1`.sh  #这个就是上面的那个变量的命令。
done

修改如下:

图片 4

 

实例4:批量解压文件,如下:

图片 5

在那么些目录下大家来看有相当多的包,不过有.tar.gz 的 有rar的
有zip的包,然而呢,小编就想解压.tar.gz的包,第一种方法,手动多少个个解压,那么第二种办法如下:

1.查看以.tar.gz的包有多少个

图片 6

2.编制脚本如下:

#!/bin/bash
cd /root/data || {
        echo "进入目录失败!!!"
        exit 1
}

for zhangsan in `ls | grep .tar.gz$`
do
        tar zxf $zhangsan -C /root/log
done

if [ "$?" -eq 0 ];then
   echo ".tar.gz 成功!!!"
 else
   echo "失败!!!"
fi

 

运作结果如下:

图片 7

 

实例5:开拓批量创立客户脚本

第一堆量创造顾客依旧很好完结的,如下:

#!/bin/bash

NAME=yankai
for zhangsan in `seq -w 1 5`
do
        useradd $NAME$zhangsan
done
if [ "$?" -eq 0 ];then
   echo "创建用户成功!!!"
 else
   echo "创建用户失败!!!"
   exit 1
fi

运营如下:

图片 8

然而难点来了,怎么去给顾客加密码,顾客是必定须求密码的,普通大家给二个顾客安装密码如下:

[[email protected] ~]# echo 123456 | passwd --stdin zhangsan
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[[email protected] ~]#

我们随意相配密码能够透过$RANDOM|md5sum进行加密的方法来截取前8位
如下:

图片 9

那么接下去大家就有一定的思路去写脚本了之类:

#!/bin/bash
. /etc/init.d/functions
NAME=yankai
ZF=`seq 1 10`

for user in $ZF
do
 useradd $NAME$user
 PASS="`echo $RANDOM|md5sum | cut -c 1-8`"

 echo "$PASS" | passwd --stdin $NAME$user &>/dev/null
 echo "$NAME$user的密码为:$PASS"
if [ "$?" -eq 0 ]
   then
  action "$NAME$user is ok!" /bin/true
   else
  action "$NAME$user not ok!" /bin/false
  exit 1
fi
done

施行如下:

图片 10

剖析如下:

#!/bin/bash
. /etc/init.d/functions   #加载函数库
NAME=yankai  #定义名字为yankai
ZF=`seq 1 10` #这个取1-10的数字

for user in $ZF  #for循环 user是变量 $ZF取数值
do
 useradd $NAME$user   #创建yankai账户并+1
 PASS="`echo $RANDOM|md5sum | cut -c 1-8`" #定义随机密码 取前8位

 echo "$PASS" | passwd --stdin $NAME$user &>/dev/null #设置用户密码
 echo "$NAME$user的密码为:$PASS"    #输出用户密码
if [ "$?" -eq 0 ]  #进行判断
   then
  action "$NAME$user is ok!" /bin/true
   else
  action "$NAME$user not ok!" /bin/false
  exit 1
fi
done        #以上内容一直循环 直到seq 1-10 已经达到了10 那么退出循环!!

 

案例6:开荒检查实验U奥德赛L脚本

内容如下:

#!/bin/bash
. /etc/init.d/functions

function URL_Check(){
        wget --spider http://$1 &>/dev/null
                if [ "$?" -eq 0 ];
                   then
                     action "$1 检测成功!" /bin/true
                   else
                     action "$1 检测失败!" /bin/false
                fi
}

web="
www.baidu.com
www.jd.com
www.taobao.com
www.4399.com
www.baidu123.com
www.ywydhajkw.com
www.hahahhaha.conm
www.dhadwkldm.com
"           


for url in $web 
do         
        URL_Check $url
done

运行结果如下:

图片 11

如上仅供参谋,若写的倒霉,请见谅,非职业图片 12

深入分析如下:

图片 13

Linux系统shell编制程序之for循环语句。
1.for循环语句和while循环类似,可是for循环重借使用来试行次数有…

Linux 的 基础 与shell脚本的功底,linuxshell

1、安装vmware和成立虚构机
2、加载centos6.5的镜像
3、linux的介绍
linux是一个操作系统(免费开源),来源unix

linux是多少个卓越的树形文件系统,一切都以基于文件。”/”称之linux的根目录即一流目录
linux的每二个软件都有劣点的用途,最小化安装
linux中只有三个特级客商root

linux的特点:

linux的版本:
red hat(奥迪Q7HEL) 收取费用但有无需付费试用版本
centos
debian
ubuntu

linux的目录结构:
/bin
/sbin
/etc
/var
/usr
/opt
/home
/root
/dev
/sys

linux中的基础命名:
command [option] [file/path]
man command

uname 显示
date 时间
hostname 主机名
ps -ef | grep pid 列出等于pid的进度
| 管道
grep 过滤
top 实时展示系统中相继进度的财富占用现象
free
展现Linux系统中空闲的、已用的情理内部存储器及swap内部存款和储蓄器,及被基本使用的buffer。
jps 展现运营的java进程
kill -9 强行杀死进度
cat inittab 进入早先化分界面

df 查看磁盘
fdisk / 对本来的分区实行扩大体量只怕对全体服务器扩大体量
du 突显各种文件和目录的磁盘使用空间。
fsck 文件系统一检查查修复
mount 挂载
mkfs.ext4 格式化分区

useradd 增多客户
groupadd 添加组
gpasswd -a:增多顾客到组;gpasswd -a peter users
-d:从组删除客商;
-A:钦点管理员;gpasswd -A peter users
-M:钦点组成员和-A的用处大致;
-r:删除密码;
-奥迪Q5:限制客商登录组,只有组中的成员工夫够用newgrp到场该组。
**********************************************************************
usermode-c<备注>:修改客商帐号的备考文字;
-d<登录目录>:修改顾客登陆时的目录;
-e<保质期限>:修改帐号的保藏期限;
-f<缓冲天数>:修改在密码过期后有个别天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改客户所属的叠合群组;
-l<帐号名称>:修改顾客帐号名称;
-L:锁定客商密码,使密码无效;
-s<shell>:修改客户登陆后所选择的shell;
-u<uid>:修改顾客ID;
-U:解除密码锁定。
userdel 删除顾客
groupdel 删除组
**********************************************************************
修改文件权限read write executable
a 一流顾客、属主、别的客户
chmod ugo+-rwx /file.txt
chmod 765 /file.txt

进去目录
cd
cd – ~ $JAVA_HOME
pwd 查看当前所在目录
对峙目录和相对目录:

开创目录:
mkdir
mkdir -p ./123/1/2/3
mkdir ./123/t1 ./123/t2

创设文件
touch ./123/666 ./123/667
echo “hello world” >> ./123/668
vi ./123/669
vim ./123/669
nano ./670

列出:
ls
ll = ls -l

复制目录文件
cp ./123/666 ./123/668 ./
cp -r ./123/1 ./ 复制目录应当要 -r (更换文件属性所用的递归为奥迪Q7)

挪动剪切重命名目录文件
mv ./123/666 ./123/668 ./123/t1/
mv ./123/1/ ./123/t1/
mv ./123/t1/668 ./123/668.doc
mv ./123/t1/1/ /home/test/123/12
mv ./123/12/ ./123/1

批量重命名目录文件
for i in `seq 2 20`; do touch /home/test/123/${i}.doc ;done
rename .doc .txt *.doc
rename .txt .doc ./123/*.txt

修改文件内容
vi ./123/666.doc
vim ./123/666.doc
nano ./123/666.doc
echo “6666” >> ./123/666.doc (追加)
echo “7777” > ./123/666.doc (覆盖)

查看文件内容
cat -n ./123/666.doc
head ./123/666.doc
head -30 /var/log/boot.log
tail /var/log/boot.log
tail -30 /var/log/boot.log
tail -f /var/log/boot.log
more /var/log/boot.log
less /var/log/boot.log

vi ./123/666.doc
vim ./123/666.doc
nano ./123/666.doc

删除目录文件
rm -rf ./666.doc
rm -rf ./1

转移文件属性
a
u g o
rwxrw-r-x

  • rw- r– r– 2 root root 4096 Jan 1 21:00 123
    d rw- — — 2 biman1 biman1 4096 Jan 1 21:00 biman1
    d rwx r-x r-x 2 root root 4096 Jan 1 21:00 test
    d rw- — — 2 tom tom 4096 Jan 1 21:00 tom

r 4
w 2
x 1

chomd 765 ./123

chmod -LX570(递归) o+w ../test/ (复制目录所用递归为r)

r 读:查看文件内容、查看目录列表、文件列表
w 写:修改文件内容、创造文件、删除
x 实践: 实行脚本文件

chown tom ./hw.sh 改换属主
chown tom:tom ./hw.sh 改变属主:组

chown -LAND tom:tom ./hw.sh 递归改造属主和组
chown :root ./hw.sh 改变组
chgrp tom ./hw.sh 改变组

 

编辑器:
vi ./hw.sh
i
o

esc
shift + :
w
q
wq
q!

tar:
tar -zcvf ./123.tar ./123/ 打包到123下
tar -zxvf ./123.tar 解压到当前文件夹
tar -zxvf ./123.tar -C /home/ 打包到home下

/usr/bin/zip zip打包命令
/usr/bin/unzip unzip解压命令

/bin/gzip
/bin/gunzip
gzip -cr(递归) 123 > ./123.gz

> :追加
>> :重定向

linux中的查找:
which 可实践的吩咐
whereis 安装包所在的目录和文件
updatedb 更新数据库
locate hw.sh 查找数据库(必得是数据库跟新后)中的关健字
遵照供给搜索
find / -name ‘hw.sh’
find / -size
find / -atime
find / -ctime

别名:
alias
alias cle=’clear’
unalias cle
分有的时候和长久:

cd –
cd ~
cd ./
cd ../../../

网络:
netstat -tlp 展现互连网状态
(lots of)lsof -i:22 彰显好些个音讯(-i是展现网络消息)

vi /etc/hosts
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/udev/rules.d/70-persistent-net.rules

service network restart/status/start/stop
service iptables restart/status/start/stop
service mysql restart/status/start/stop
service nginx restart/status/start/stop

chkconfig iptables –list
chkconfig iptables off/on

linux中国应用程式与技能服务总集团件设置:
一、二进制造进度序安装(**.rpm)
(利用命令使用rpm包举办安装,类似于exe安装)
优点:简单轻易
破绽:对平台有限定
rpm的安装
可取:轻松轻巧
症结:安装包存在依据
包的整合:
差不离由五有个别组成
man rpm

查询:
rpm -q
rpm -qa | grep mysql
rpm -ql
安装:
rpm -ivh /包的相对路线
更新:
rpm -Uvh /包的绝对路线
卸载:
rpm -e –nodeps
验证:
rpm -V
二、yum的设置(联网进展安装)
查询:
yum list
yum grouplist
yum info
yum search

安装:
yum install gcc
yum -y install gcc
yum groupinstall 组包

更新:
yum -y upgrade gcc
yum -y update gcc
yum -y groupupdate 组包

卸载:
yum -y remove nc
yum -y groupremove 组包

制造缓存:
yum clean gcc
yum clean all
yum makecache

三、源码安装(**.gz)
1、下载源码并解压
2、实行源码目录下的configure文件,前边能够加参数。(读取readme文件或许下载的官方网站)
3、实践编译安装 make && make install

===========================shell===========================
shell:脚本语言。脚本富含一多种的可举行的linux的授命的联谊

shell 解释器系列:
/bin/bash 默认
/bin/sh
/bin/tcsh
ksh 要求本身设置

试行格局:
1、 sh ./first.sh 能够绝不授予施行权限
2、 授予./first.sh施行权限

 

shell中的变量:
变量名=值

注意:
变量名不能够是非同一般字
变量名和等号 值和等号之间无法有空格
变量首字母无法是数字和特殊符号 ???

赋值:

取值:

“” :识别转移符和取值的标识
” :不识别转移符和取值的标识,原样输出
“ :linux中的命令

设置只读变量:
readonly 变量名

去除变量:
unset 变量名

字符串的拼凑:

字符的截取:
${name:1:3} 1:开首地方 3:长度

shell中注释:
单行注释
多行注释

shell中的运算:
数学生运动算: 借助`expr ` *内需转义
关系运算:-eq -ne -lt -le -gt -ge
逻辑运算:-a:and -o:or
字符串运算:= != -z:为0重回true -n:为0再次回到false str:不为空再次来到true
文本运算:-e:存在 -r:可读 -w(写) -x(可施行) -d(目录) -f(文件)
-s(size):大小不为0再次来到true
布尔运算: !

shell中的数组:
主题数据类型简单,都以字符串,可是多少个都是字符串的数字即可加入运算
数组定义:
arr1=(1 2 3 4 5 6 7 8)

arr2=(
1232
30
30
23
43
23
)

arr3[0]=123
arr3[3]=999
arr3[6]=[666]

赋值:
arr2[1]=9999

取值:角标从0最早,不过越界不报非常
echo ${arr1[1]}
echo ${arr1[2]}

取数CEO度:
${#arr1[*]}

shell中的调整标准:
if [] ; then 控制体 ; fi
定义格式:
if []
then
控制体
fi

if []
then
控制体
else
控制体
fi

if []
then
控制体
elif []
then
控制体
else
控制体
fi

if [ $1 -eq 1 ]
then
echo “男”
fi

if [ $1 -eq 1 ]
then
echo “男”
elif [ $1 -eq 2 ]
then
echo “女”
else
echo “泰国”
fi

有if的地点,前面就有then
没有elseif 只有elif
每一个调全部都必需写
if 和 中括号之间的空格必需严酷服从

shell中的循环:
定义:
for i in 循环条件
do
循环体
done

while 循环条件
do
循环体
done

until [控制体] 满意条件跳出循环
do
循环体
done

循环
(1)for循环
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
(2)while循环
i=1
while(i < 11)
do
echo $i
let i++
done
(3)until循环
startDate=
endDate=
until [ $# -eq 0 ]
do
if [ $1’x’ = ‘-sdx’ ]
then
shift
startDate=$1
elif [ $1’x’ = ‘-edx’ ]
then
shift
endDate=$1
fi
shift
done

continue:调出当次循环
break:调出循环

case 值 in(类似于switch)
(匹配值)
语句
;;
(匹配值)
语句
;;
esac
循环 switch break continue
while :
do
echo “输入1-5”
read num 键盘输入
case $num in
1|2|3|4|5)
echo “在1-5之间”
break
;;
*)
echo “在6-10之间”
continue
;;
esac
done

情势无参无重返值
#!/bin/bash

function fuck(){
echo “第1个参数”$1
echo “第2个参数”$2
echo “第3个参数”$3
echo “第4个参数”$4
echo “第10个参数”${10} #参数个数超过9个之后参数取值要加{}
echo “第全数参数”$*
echo “参数个数 “$#
}
fuck 1 2 3 4 5 6 7 11 22 33 44

主意无参有再次回到值
#!/bin/bash

function fuck(){
echo “第二个参数:”
read anum
echo “第2个参数:”
read bnum
return $(($anum+$bnum))
}
fuck
echo $? #再次来到值无法超越255

$1去参数 $#取个数 $*
[email protected]
取全体个数 $?取再次来到值

shell中的文件引进
#!/bin/bash
#source /home/shell/1.sh #第一种
. /home/shell/1.sh #第二种
echo ${name}
echo “aaaaaaa”
func

shell的简便调节和测量检验
语法检查测量检验:约等于java的编写翻译
1、shell语法检验:
sh -n ./test.sh (sh是/bin/sh 是系统提供的可实行脚本)
2、shell的无独有偶调节和测量检验:
sh -x ./test.sh
3、在调解进度中得以按Ctrl +
Z中断调节和测量试验,观望结果,然后再按fg键继续调节和测量试验就能够。(先按f在按g键)

shell中的时间
years weeks days hours minutes seconds
echo `date -d “x days ago” “+%Y-%m-%d %H:%M:%S”`
x大于0 为 之前 x小于0 为之后

crontab -e(定期列表编辑)
* * * * * 可推行的授命与剧本
分时天月周
00 2-4 * * * 中午两点到四点(2,4)两点和四点
00 */4 * * * 每三个小时跑三次
*/1 * * * * 每一分钟跑贰遍 echo “hello” >>
./home/cronttab.log

sudo 让普通客户获得root权限
前提是先修改sudo的文件 /etc/sudoers 增多普通客户
root顾客不可能修改sudo文件,要求修改文件权限后编辑 chmod a+w
sudo rm -rf 1.sh (此时内需输入密码)
不输入密码重新修改sudo文件 nopass

 

 

//修改后缀名待修改
#!/bin/bash
#read dir
#function ff(){
dir=/home/abc
cd $dir
for file in ‘ls $dir’
do
name=$(ls $file | cut -d . -f1)
mv $file ${name}
done
#}
#ff

=====================================
#!/bin/bash

basedir=/home/shell
rename .sh .txt *.sh
=============有两个.sh=============
#!/bin/bash

basedir=/home/shell
rename .sh .txt $basedir/*.sh
==============按时去除15日前的日记================
oneweekago=date -d “1 weeks ago” “+%Y-%m-%d”
pwatimestamp=echo `date -d “1 weeks ago” “+%s”`#时间戳
#代码
#!/bin/bash
logdir=’/home/logs’
pwatimestamp=echo `date -d “1 weeks ago” “+%s”`#时间戳
for i in `ls $logdir`
do
logdate=`basename $i .log`
ldtimestamp=`date -d “$logdate” “+%s”`
if [ $ldtimestamp -le $pwatimestamp ]
then
rm -rf ${logdir}$i
fi
done

 

的 基础 与shell脚本的根底,linuxshell
1、安装vmware和创建虚构机 2、加载centos6.5的镜像 3、linux的介绍
linux是贰个操作系统(无偿开源),来…

1、安装vmware和创办设想机
2、加载centos6.5的镜像
3、linux的介绍
linux是三个操作系统(无需付费开源),来源unix

linux是多个杰出的树形文件系统,一切都以基于文件。”/”称之linux的根目录即超级目录
linux的每三个软件都有短处的用途,最小化安装
linux中只有一个至上客户root

linux的特点:

linux的版本:
red hat(GL450HEL) 收取薪金但有免费试用版本
centos
debian
ubuntu

linux的目录结构:
/bin
/sbin
/etc
/var
/usr
/opt
/home
/root
/dev
/sys

linux中的基础命名:
command [option] [file/path]
man command

uname 显示
date 时间
hostname 主机名
ps -ef | grep pid 列出等于pid的进度
| 管道
grep 过滤
top 实时体现系统中逐个进程的财富占用现象
free
展现Linux系统中空闲的、已用的情理内部存款和储蓄器及swap内存,及被基本使用的buffer。
jps 显示运维的java进度
kill -9 强行杀死进度
cat inittab 步向开首化界面

df 查看磁盘
fdisk / 对本来的分区举行扩容或然对全数服务器扩大容积
du 展现各个文件和目录的磁盘使用空间。
fsck 文件系统检查修复
mount 挂载
mkfs.ext4 格式化分区

useradd 添加顾客
groupadd 添加组
gpasswd -a:增多客商到组;gpasswd -a peter users
-d:从组删除客商;
-A:内定管理员;gpasswd -A peter users
-M:钦定组成员和-A的用处大致;
-r:删除密码;
-LAND:限制顾客登陆组,独有组中的积极分子才方可用newgrp参加该组。
**********************************************************************
usermode-c<备注>:修改顾客帐号的备注文字;
-d<登陆目录>:修改顾客登录时的目录;
-e<保藏期限>:修改帐号的保质期限;
-f<缓冲天数>:修改在密码过期后有个别天即关闭该帐号;
-g<群组>:修改客商所属的群组;
-G<群组>;修改顾客所属的增大群组;
-l<帐号名称>:修改客商帐号名称;
-L:锁定顾客密码,使密码无效;
-s<shell>:修改客商登陆后所运用的shell;
-u<uid>:修改客商ID;
-U:解除密码锁定。
userdel 删除客户
groupdel 删除组
**********************************************************************
修改文件权限read write executable
a 顶尖客商、属主、其他客商
chmod ugo+-rwx /file.txt
chmod 765 /file.txt

跻身目录
cd
cd – ~ $JAVA_HOME
pwd 查看当前所在目录
绝对目录和相对目录:

创建目录:
mkdir
mkdir -p ./123/1/2/3
mkdir ./123/t1 ./123/t2

创造文件
touch ./123/666 ./123/667
echo “hello world” >> ./123/668
vi ./123/669
vim ./123/669
nano ./670

列出:
ls
ll = ls -l

复制目录文件
cp ./123/666 ./123/668 ./
cp -r ./123/1 ./ 复制目录必得求 -r (改变文件属性所用的递归为Wrangler)

运动剪切重命名目录文件
mv ./123/666 ./123/668 ./123/t1/
mv ./123/1/ ./123/t1/
mv ./123/t1/668 ./123/668.doc
mv ./123/t1/1/ /home/test/123/12
mv ./123/12/ ./123/1

批量重命名目录文件
for i in `seq 2 20`; do touch /home/test/123/${i}.doc ;done
rename .doc .txt *.doc
rename .txt .doc ./123/*.txt

修改文件内容
vi ./123/666.doc
vim ./123/666.doc
nano ./123/666.doc
echo “6666” >> ./123/666.doc (追加)
echo “7777” > ./123/666.doc (覆盖)

查阅文件内容
cat -n ./123/666.doc
head ./123/666.doc
head -30 /var/log/boot.log
tail /var/log/boot.log
tail -30 /var/log/boot.log
tail -f /var/log/boot.log
more /var/log/boot.log
less /var/log/boot.log

vi ./123/666.doc
vim ./123/666.doc
nano ./123/666.doc

删去目录文件
rm -rf ./666.doc
rm -rf ./1

变动文件属性
a
u g o
rwxrw-r-x

  • rw- r– r– 2 root root 4096 Jan 1 21:00 123
    d rw- — — 2 biman1 biman1 4096 Jan 1 21:00 biman1
    d rwx r-x r-x 2 root root 4096 Jan 1 21:00 test
    d rw- — — 2 tom tom 4096 Jan 1 21:00 tom

r 4
w 2
x 1

chomd 765 ./123

chmod -大切诺基(递归) o+w ../test/ (复制目录所用递归为r)

r 读:查看文件内容、查看目录列表、文件列表
w 写:修改文件内容、创制文件、删除
x 实施: 试行脚本文件

chown tom ./hw.sh 改动属主
chown tom:tom ./hw.sh 退换属主:组

chown -PAJERO tom:tom ./hw.sh 递归退换属主和组
chown :root ./hw.sh 改变组
chgrp tom ./hw.sh 改变组

 

编辑器:
vi ./hw.sh
i
o

esc
shift + :
w
q
wq
q!

tar:
tar -zcvf ./123.tar ./123/ 打包到123下
tar -zxvf ./123.tar 解压到近期文件夹
tar -zxvf ./123.tar -C /home/ 打包到home下

/usr/bin/zip zip打包命令
/usr/bin/unzip unzip解压命令

/bin/gzip
/bin/gunzip
gzip -cr(递归) 123 > ./123.gz

> :追加
>> :重定向

linux中的查找:
which 可进行的吩咐
whereis 安装包所在的目录和文件
updatedb 更新数据库
locate hw.sh 查找数据库(必得是数据库跟新后)中的关健字
遵照供给寻觅
find / -name ‘hw.sh’
find / -size
find / -atime
find / -ctime

别名:
alias
alias cle=’clear’
unalias cle
分一时和千古:

cd –
cd ~
cd ./
cd ../../../

网络:
netstat -tlp 突显互联网状态
(lots of)lsof -i:22 突显多数音信(-i是展示网络消息)

vi /etc/hosts
vi /etc/sysconfig/network
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/udev/rules.d/70-persistent-net.rules

service network restart/status/start/stop
service iptables restart/status/start/stop
service mysql restart/status/start/stop
service nginx restart/status/start/stop

chkconfig iptables –list
chkconfig iptables off/on

linux中国APP与本领服务总集团件设置:
一、二进制造进程序安装(**.rpm)
(利用命令使用rpm包进行安装,类似于exe安装)
可取:轻巧轻巧
破绽:对平台有限定
rpm的安装
亮点:轻便轻便
症结:安装包存在依据
包的整合:
大概由五片段构成
man rpm

查询:
rpm -q
rpm -qa | grep mysql
rpm -ql
安装:
rpm -ivh /包的绝对路线
更新:
rpm -Uvh /包的相对路线
卸载:
rpm -e –nodeps
验证:
rpm -V
二、yum的设置(联网进展设置)
查询:
yum list
yum grouplist
yum info
yum search

安装:
yum install gcc
yum -y install gcc
yum groupinstall 组包

更新:
yum -y upgrade gcc
yum -y update gcc
yum -y groupupdate 组包

卸载:
yum -y remove nc
yum -y groupremove 组包

创设缓存:
yum clean gcc
yum clean all
yum makecache

三、源码安装(**.gz)
1、下载源码并解压
2、实践源码目录下的configure文件,后边能够加参数。(读取readme文件或然下载的官方网址)
3、奉行编译安装 make && make install

===========================shell===========================
shell:脚本语言。脚本包含一雨后苦笋的可举行的linux的指令的集聚

shell 解释器连串:
/bin/bash 默认
/bin/sh
/bin/tcsh
ksh 供给本身安装

执行格局:
1、 sh ./first.sh 能够毫无授予实施权限
2、 授予./first.sh实施权限

 

shell中的变量:
变量名=值

注意:
变量名不可能是根本字
变量名和等号 值和等号之间无法有空格
变量首字母不可能是数字和特殊符号 ???

赋值:

取值:

“” :识别转移符和取值的号子
” :不识别转移符和取值的符号,原样输出
“ :linux中的命令

设置只读变量:
readonly 变量名

剔除变量:
unset 变量名

字符串的拼凑:

字符的截取:
${name:1:3} 1:开头位置 3:长度

shell中注释:
单行注释
多行注释

shell中的运算:
数学生运动算: 借助`expr ` *急需转义
论及运算:-eq -ne -lt -le -gt -ge
逻辑运算:-a:and -o:or
字符串运算:= != -z:为0重返true -n:为0重回false str:不为空返回true
文件运算:-e:存在 -r:可读 -w(写) -x(可实行) -d(目录) -f(文件)
-s(size):大小不为0重回true
布尔运算: !

shell中的数组:
基本数据类型轻松,都以字符串,可是多个都以字符串的数字就能够加入运算
数组定义:
arr1=(1 2 3 4 5 6 7 8)

arr2=(
1232
30
30
23
43
23
)

arr3[0]=123
arr3[3]=999
arr3[6]=[666]

赋值:
arr2[1]=9999

取值:角标从0开头,然而越界不报相当
echo ${arr1[1]}
echo ${arr1[2]}

取数老总度:
${#arr1[*]}

shell中的调整规范:
if [] ; then 控制体 ; fi
定义格式:
if []
then
控制体
fi

if []
then
控制体
else
控制体
fi

if []
then
控制体
elif []
then
控制体
else
控制体
fi

if [ $1 -eq 1 ]
then
echo “男”
fi

if [ $1 -eq 1 ]
then
echo “男”
elif [ $1 -eq 2 ]
then
echo “女”
else
echo “泰国”
fi

有if的地点,前面就有then
没有elseif 只有elif
每二个调全体都无法不写
if 和 中括号之间的空格必需严酷根据

shell中的循环:
定义:
for i in 循环条件
do
循环体
done

while 循环条件
do
循环体
done

until [控制体] 满意条件跳出循环
do
循环体
done

循环
(1)for循环
for i in 1 2 3 4 5 6 7 8 9 10
do
echo $i
done
(2)while循环
i=1
while(i < 11)
do
echo $i
let i++
done
(3)until循环
startDate=
endDate=
until [ $# -eq 0 ]
do
if [ $1’x’ = ‘-sdx’ ]
then
shift
startDate=$1
elif [ $1’x’ = ‘-edx’ ]
then
shift
endDate=$1
fi
shift
done

continue:调出当次循环
break:调出循环

case 值 in(类似于switch)
(匹配值)
语句
;;
(匹配值)
语句
;;
esac
循环 switch break continue
while :
do
echo “输入1-5”
read num 键盘输入
case $num in
1|2|3|4|5)
echo “在1-5之间”
break
;;
*)
echo “在6-10之间”
continue
;;
esac
done

艺术无参无重返值
#!/bin/bash

function fuck(){
echo “第1个参数”$1
echo “第2个参数”$2
echo “第3个参数”$3
echo “第4个参数”$4
echo “第10个参数”${10} #参数个数超越9个之后参数取值要加{}
echo “第全体参数”$*
echo “参数个数 “$#
}
fuck 1 2 3 4 5 6 7 11 22 33 44

办法无参有再次回到值
#!/bin/bash

function fuck(){
echo “第二个参数:”
read anum
echo “第2个参数:”
read bnum
return $(($anum+$bnum))
}
fuck
echo $? #重返值不可能超越255

$1去参数 $#取个数 $* $@ 取全体个数 $?取再次回到值

shell中的文件引进
#!/bin/bash
#source /home/shell/1.sh #第一种
. /home/shell/1.sh #第二种
echo ${name}
echo “aaaaaaa”
func

shell的简要调节和测验
语法检查评定:约等于java的编写翻译
1、shell语法检查测验:
sh -n ./test.sh (sh是/bin/sh 是系统提供的可进行脚本)
2、shell的平日调节和测量试验:
sh -x ./test.sh
3、在调整进度中能够按Ctrl +
Z中断调节和测量检验,观望结果,然后再按fg键继续调节和测量检验就可以。(先按f在按g键)

shell中的时间
years weeks days hours minutes seconds
echo `date -d “x days ago” “+%Y-%m-%d %H:%M:%S”`
x大于0 为 之前 x小于0 为之后

crontab -e(按时列表编辑)
* * * * * 可进行的授命与剧本
分时天月周
00 2-4 * * * 凌晨两点到四点(2,4)两点和四点
00 */4 * * * 每多少个时辰跑三回
*/1 * * * * 每一分钟跑二回 echo “hello” >>
./home/cronttab.log

sudo 让普通顾客得到root权限
前提是先修改sudo的文本 /etc/sudoers 增添普通客商
root客户无法修改sudo文件,须求修改文件权限后编辑 chmod a+w
sudo rm -rf 1.sh (此时内需输入密码)
不输入密码重新修改sudo文件 nopass

 

 

//修改后缀名待修改
#!/bin/bash
#read dir
#function ff(){
dir=/home/abc
cd $dir
for file in ‘ls $dir’
do
name=$(ls $file | cut -d . -f1)
mv $file ${name}
done
#}
#ff

=====================================
#!/bin/bash

basedir=/home/shell
rename .sh .txt *.sh
=============有两个.sh=============
#!/bin/bash

basedir=/home/shell
rename .sh .txt $basedir/*.sh
==============按期去除一周前的日志================
oneweekago=date -d “1 weeks ago” “+%Y-%m-%d”
pwatimestamp=echo `date -d “1 weeks ago” “+%s”`#时间戳
#代码
#!/bin/bash
logdir=’/home/logs’
pwatimestamp=echo `date -d “1 weeks ago” “+%s”`#时间戳
for i in `ls $logdir`
do
logdate=`basename $i .log`
ldtimestamp=`date -d “$logdate” “+%s”`
if [ $ldtimestamp -le $pwatimestamp ]
then
rm -rf ${logdir}$i
fi
done

 

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注