28 if false;then
echo 111
30 elif true;then
31 echo 222
32 else
33 echo 333
34 fi
35
36 #for
37 for var in 2 3 4 6;do
38 echo for_output${var}
39 done
40
41 #while condition
42 #do
43 # command
44 #done
45
46 #until condition
47 #do
48 # command
49 #done
50
51 #case????????????????????????????????????
52
53 cd ~/Documents/qinqinhyq_learn
54 #if [ -d "/shell_tut" ];then
55 # echo "The folder shell_tut was exists ,delete it(Y/N)?"
rm -r ./shell_tut
57 #fi
58 mkdir ./shell_tut
59 cd ./shell_tut
60 for((i=0;i<10;i++));do
61 touch test_$i.txt
62 done
63
64 #EX1:
65 #!/bin/sh
66 SYSTEM=`uname -s` #获取操作系统类型,我本地是linux
67 if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串
68 echo "Linux"
69 elif [ $SYSTEM = "FreeBSD" ] ; then
70 echo "FreeBSD"
71 elif [ $SYSTEM = "Solaris" ] ; then
72 echo "Solaris"
73 else
74 echo "What?"
75 fi #ifend
76 aaa=`date "+%y%m%d %H:%M:%S"`
77 echo `date "+%y%m%d %H:%M:%S"`
78 echo `date -d "-1 year" "+%y%m%d"`
79 echo `date -d "+1 year" "+%y%m%d"`
80 echo "今天星期" `date +%w`
81 #基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。
82 #1 字符串判断
83 #str1 = str2 当两个串有相同内容、长度时为真
84 #str1 != str2 当串str1和str2不等时为真
85 #-n str1 当串的长度大于0时为真(串非空)
86 #-z str1 当串的长度为0时为真(空串)
87 #str1 当串str1为非空时为真
88 #2 数字的判断
89 #int1 -eq int2 两数相等为真
90 #int1 -ne int2 两数不等为真
91 #int1 -gt int2 int1大于int2为真
92 #int1 -ge int2 int1大于等于int2为真
93 #int1 -lt int2 int1小于int2为真
94 #int1 -le int2 int1小于等于int2为真
95 #3 文件的判断
96 #-r file 用户可读为真
97 #-w file 用户可写为真
98 #-x file 用户可执行为真
99 #-f file 文件为正规文件为真
100 #-d file 文件为目录为真
101 #-c file 文件为字符特殊文件为真
102 #-b file 文件为块特殊文件为真
103 #-s file 文件大小非0时为真
104 #-t file 当文件描述符(默认为1)指定的设备为终端时为真
105 #3 复杂逻辑判断
106 #-a 与
107 #-o 或
108 #! 非
109
#看当前系统中有没有其他用户在线,可以用who命令
111 #要看网络的联机状态用netstat -a这个命令
112 #要看背景执行程序可以用ps -aux这个命令
113
114 #mkdir -p fordername -p值递归创建目录
115 #rmdir -p d1/d2/d3 -p参数相当与删除了d1,d1/d2,d1/d2/d3,这三个路径下都没有其他的东西了。
116 #rm -i/-f/-r 删除目录时要加r参数否则会报错
117 #which ls which命令用来查找一个命令的绝对路径,
118 #alias用来设置指令的别名,如alias rm='rm -i'
119 #ls -d 只列目录
120 #cp -d sourcefile targetfile 将源文件拷贝成软连接(快捷方式)
121 #cp -r fordername1 fordername2 拷贝目录
122 #cp -i....如果存在该文件问是否覆盖
123 #cp -u ...源文件比目标文件新时才拷贝,否则不做操作。
124 #cat -n filename 将行号也显示在屏幕上
125 #>和>>都为重定向,>会清空原有的内容,>>为追加
126 #cat -A... 显示所有内容包括特殊字符
127 #tac ... 反向打印文件内容到屏幕,就是最后一行打印到第一行的意思
128 #more(或空格)下一页,less上一页,j向下移动一行,k向上移动一行。/向下搜索字符,?向上搜索支付,按n显示下一个
129 #head -n 5 filename 显示文件头5行内容
130 #tail -n 5 filename 显示文件最后5行内容
131 #tail -f filename 动态显示文件最后10行内容
132 #groupadd groupname 增加一个组
133 #chgrp groupname filename 更改所属组
134 #useradd username 增加账户
135 #chown [-R] 账户名 文件名 ( 修改文件属主)
136 #chown [-R] 属主名:属组名 文件名 (修改文件属主及属组)
########################
138 #chmod u=rwx,og=rx filename
139 #chmod u +(加入) r
140 # g -(除去) w 档案或目录
141 # o =(设定) x
142 # a
143 ########################
144
145
146
147
148
149
150 #http://wiki.jikexueyuan.com/project/linux/shell-script-two.html
#umask 为文件默认权限666和目录默认权限777需要减掉的权限。可以在/etc/bashrc里面更改。
145 #chattr 增加特殊属性
146 #chattr 修改文件的特殊属性
147 #语法: chattr [+-=][ASaci [文件或者目录名]
148 #+-= :分别为增加、减少、设定
149 #A:增加该属性后,文件或目录的atime将不可被修改;
150 #S:增加该属性后,会将数据同步写入磁盘中;
151 #a:增加该属性后,只能追加不能删除,非root用户不能设定该属性;
152 #c:自动压缩该文件,读取时会自动解压;
153 #i:增加后,使文件不能被删除、重命名、设定连接、写入、新增数据;
154 #lsttr 列出文件的特殊属性
155 #which搜索可执行文件的绝对路径
156 #whereis -b/m/s/u filename 在当前目录及子目录下查找对应文件
157 #locate filename 在当前目录及子目录下查找对应文件名,需安装软件包mlocat4e
158 #find [路径][参数] filename
159 #-atime +n :访问或执行时间大于n天的文件
160 #-ctime +n :写入、更改inode属性(例如更改所有者、权限或者连接)时间大于n天的文件
161 #-mtime +n :写入时间大于n天的文件
162 #先给你介绍一下这三个time属性。
163 #文件的 Access time,atime 是在读取文件或者执行文件时更改的。文件的 Modified time,mtime 是在写入文件时随文件内容的> 更改而更改的。文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。 因此
,更改文件的内容即会更改 mtime 和 ctime,但是文件的 ctime 可能会在 mtime 未发生任何变化时更改,例如,更改了文件的权> 限,但是文件内容没有变化。 如何获得一个文件的atime mtime 以及ctime ?
164 #ls -l 命令可用来列出文件的 atime、ctime 和 mtime。
165 #ls -lc filename 列出文件的 ctime
166 #ls -lu filename 列出文件的 atime
167 #ls -l filename 列出文件的 mtime
168 #atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atim e的信息。而这是加了 noatime 取消了, 不代表真实情況。反正, 這三個 time stamp 都放在 inode 中。若 mtime, atime 修改ino de 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了。
169 #find /root -name test* 在root这个目录下查找包含test*文件名的文件
170 #find /root -type f 在root这个目录下查找所有文件
171
#软连接和硬链接??????????????????????区别???????????
172 #ln [-s] [源文件] [目标文件] -s加上就是软连接 不加就是硬链接
173 #查看当前目录所占空间 du -sk
174 #关键文件:/etc/passwd,/etc/shadow
175 #groupadd [-g GID] groupname 新增一个组
176 #groupdel groupname 删除组
177 #useradd [-u UID] [-g GID] [-d HOME] [-M 不建立家目录] [-s 自定义shell] username 新建用户
178 #userdel[-r delHOME] username 删除用户
179 #passwd [username] 后面不跟用户名表示修改当前用户的密码
180 #su - 登陆root时后面可以跟-或者什么都不跟,加用户名就切换到该用户账号,如果用户名前面加-则会联通用户的环境变量一起切
换过来
181 #echo $LOGNAME 查看当前登陆用户名
182 #sudo 可以设置普通用户使用root权限,不泄露root密码
183 #df [-i 使用inodes的情况显示结果]
184 # [-h 智能使用合适的单位显示]/[-k 使用K为单位显示]/[-m 使用M为单位显示]
185 #du [-abckmsh] [文件或者目录名]
186 #-a,全部文件与目录大小都列出来,如果不加任何选项和参数则只列出目录(包含子目录)大小
187 #-b,以bytes为单位输出
188 #-c,最后加总
189 #-k,以kb为单位输出
190 #-m,以mb为单位输出
191 #-s,只列出总和
192 #-h,单位智能输出
193
194 #http://wiki.jikexueyuan.com/project/linux/shell-script-two.html
~