shell与php相互调用

现在所在的这家公司,都是在服务器上编程,少不了要和shell打交道,三个多月过去了,linux上常用命令已经记得有二十几个了,当然了,这些事算少的了,但是应付平日的编程足够了。文章的最下面是云笔记里的常用命令,当然了,这些对我是很有用的,而且是时长更新的,如,某天我遇到了问题用某个命令解决了,就会加进去,不过相信一些和我同一级别的菜鸟也还是比较实用的


好了,还是回归正题,在php中调用shell脚本一般用的是sudo,具体为 

  1. $max_current_call_license = `<span style="background-color: rgb(255, 0, 0);">sudo</span> <span style="background-color: rgb(255, 0, 0);">/usr/local/asg/www/scripts/www-license</span> <span style="background-color: rgb(255, 0, 0);">getMaxCallCnt</span>`;//后面的getMaxCallCnt是shell脚本的方法  

简单说完了php调用shell,在说下如何在命令行上如何调用php脚本,下面是个简单的php脚本
  1. echo "number:".$argc."\n";  //$argc为在命令行上输入参数的个数,也相当于数组的长度  
  2. echo $argv[1]."\n";                 
  3. echo $argv[2]."\n";   
  4. print_r($argv);                       //$argv就是一个数组,其值就是命令上的参数  

下面是在命令上调用
  1. [root@localhost html]# /usr/local/httpd/bin/php test.php abc 123 456  
  2. number:4  
  3. abc  
  4. 123  
  5. Array  
  6. (  
  7.     [0] => test.php  
  8.     [1] => abc  
  9.     [2] => 123  
  10.     [3] => 456  
  11. )  

看到这里是不是明白了,对,和shell调用一个原理,只是php调用时前面写的是php环境的的路径,那么现在用在shell里调用php不就举一反三就可以了
  1. #!/bin/sh  
  2. variable=`/usr/local/httpd/bin/php test.php abc 123 456`//就是把命令上调用的写法原封不动写进shell脚本里,就ok了。  

等等,看看到这里,是不是可以联想起什么,对的,如果c调用php脚本,那么我们就可以用shell这座桥来间接调用了。写这段是因为这周我要写个webservice接口,用c调用的,正好可以用这个方法实现。




  1. chmod [who] operator [permission] filename  
  2.     who: u g o a(所有用户:文件属主、同组用户及其他用户)  
  3.     operator +(增加权限) -(取消权限) =(设定权限)  
  4.     permission r w x s(文件属主和组set-ID) t(粘性位*) l(给文件加锁,使其他用户无法访问)  
  5.     符号模式 chmod a+x,go+w file.conf chmod go-wx file.conf   
  6.     绝对模式 chmod 644 file.conf chmod 700 file.conf chmod -R 777 ./ (改变当前目录及子目录里面包含文件所有的权限)  
  7.   
  8.   
  9.   
  10. suid/guid  
  11. 执行该脚本的其他用户具有属主的相应权限  
  12. 在/bin /sbin 中使用 ls -l | grep '^...s'(suid)   ls -l | grep '^...s..s'(guid)  
  13. chmod  4777 newfile.conf ----->-rwsrwxrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->suid  
  14. chmod  2777 newfile.conf ----->-rwxrwsrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->guid  
  15. chmod  6777 newfile.conf ----->-rwsrwsrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->suid + guid  
  16. 如果检查某个文件的权限为 -rwxrwSrwx 那个S,表示相应的执行权限并未被设置,可以忽略  
  17. id   
  18. 显示用户的ID,以及所属群组的ID---->uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)常用来找出当前用户所属的组  
  19.   
  20. umask   
  21. 设置文件及目录创建时的缺省值  
  22. 直接在命令行上打印umask,会显示系统设置的缺省值,022  
  23. umask中目录的各个数字最大值为7,文件最大值为6(系统不允许创建的文件具有可执行权限)  
  24. 022---->目录为755,文件为644  
  25. 该缺省值一般在/etc/profile文件中设置,每个用户在登陆时都会引用这个文件  
  26. 若想永久设置umask的值,可把它放在/home目录下.profile或.bash_profile文件中  
  27.   
  28. ln   
  29.   
  30. 为某一个文件在另外一个位置简历一个同步的链接,分为软链接和硬链接  
  31. ln -s 源文件 目标文件 ------>软链接, 它只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间  
  32. ln 源文件 目标文件     ------>硬链接,它会在选定的位置上生成一个和源文件大小相同的文件  
  33.   
  34. ls   
  35.   
  36. list 列出目录内容  
  37. -1 每列仅显示一个文件或目录名称  
  38. -t 用文件和目录的更改时间排序  
  39. -r 或--reverse 反向排序  
  40. -l 使用详细格式列表  
  41. -h或--human-readable 用"K","M","G"来显示文件和目录的大小  
  42. -s或--size   显示文件和目录的大小,以区块为单位。  
  43. -S   用文件和目录的大小排序。  
  44.   
  45. ssh   
  46. 远程登录(Securt SHELL) ssh root@192.168.100.55  
  47. 登陆到远程的linux服务器后,可以用exit退出,又回到当前的状态  
  48. scp   
  49. secure copy的缩写,是linux系统基于ssh登陆进行安全的远程文件拷贝明,可以再linux服务器之间复制文件和目录  
  50. scp root@192.168.100.55:/etc/samba/smb.conf . (从远程把文件复制到本机)  
  51.   
  52. df   
  53. 查看磁盘的使用量  
  54. df -lh 以这种形式Filesystem            Size  Used Avail Use% Mounted on 查看磁盘的详细情况  
  55.   
  56. du  
  57.   
  58. -a或-all 显示目录中个别文件的大小  
  59. -k或--kilobytes 以1024 bytes为单位  
  60. -m或--megabytes 以1MB为单位  
  61. -s或--summarize 仅显示总计。  
  62.   
  63.   
  64. find    
  65.   
  66. 按name(名称)选项来查找,格式 find ~ -name filename -print  
  67. ~ 为在$home(根目录)目录下查找文件  
  68. .   为在当前目录及其子目录下查找文件  
  69. /etc 在该目录及子目录查找文件  
  70. / 为系统根目录下查找  
  71. find . -name '[a-z][0-9]*.txt' -print  在当前目录及子目录下查找以字母开头及第二位数是数字的txt文件  
  72.   
  73. 按perm(权限)选项来查找,格式 find . -perm 755 filename -print  
  74. find . -perm -005 filename -print 则是指具体的o中5这个权限  
  75.   
  76. 按prune(忽略目录)选项来查找,格式 find ./ -path './temp' -prune -o -name filename -print  
  77.   
  78. 按user/nouser group/nogroup (属主、用户组)选项来查找,格式  
  79. find . user root -print / find . nouser -print (可以查找属主在/etc/passwd文件中没有有效用户的文件)  
  80. find . group root -print / find . nogroup -print  
  81.   
  82.   
  83. 按mtime(时间)选项来查找,格式  
  84. -号,之内的 find /usr -mtime -3 -print  查找3天之内的更改的文件  
  85. +号,之前的  find /usr  -mtime +3 -print  查找3天之前的更改的文件  
  86.   
  87.   
  88. 按newer(某个新或旧文件)选项来查找,格式 find . newer a.txt ! newer b.txt -print 查找比a新比b旧的文件  
  89. 查找两个小时以前的文件,可以使用touch -d 10101200(2010 10 12:00)filename 命令来创建一个固定时间的文件,接着就可以查找了 find . -newer filename -print  
  90.   
  91. 按type(文件类型)选项来查找,格式  
  92. d目录,查找该目录下所有的目录  find ./ -type d -print  查找该目录以外所有的目录  find ./   !  -type d -print  
  93. l链接文件,查找该目录下所有的链接文件 find . -type l -print (用ls -l也可以查出,不过这时查找链接文件最上面的那个目录)  
  94.   
  95. 按size(文件大小)选项来查找,格式  
  96. c字节,find . -size +1000c -print (+大于 -小于)  
  97. n块(1块512字节) find . - size +100 -print  
  98.   
  99.   
  100. locate   
  101.   
  102. 快速查找文件 location filename  
  103. 使用方法:locate xx(要查找的文件名) -l num(要显示的行数)。当然这个文件名在系统中出现太多,就需要用到-l这个参数。不然等着刷屏吧。  
  104. 正则使用参数:-r, –regexp REGEXP  
  105.   
  106. cat   
  107.   
  108. 查看文件内总行数 cat filename | wc -l   
  109. 清空文件 cat /dev/null > /etc/test.txt   
  110. -n 由 1 开始对所有输出的行数编号 cat -n filename  
  111. -b,和-n类似,对空白行不输出编号  
  112. 将几个文件合并为一个文件。 cat   file1   file2  > file  
  113. 创建一个文件 cat filename  
  114. -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行  
  115.   
  116.      
  117. 关于shell中:>/dev/null 2>&1 详解  
  118. shell中可能经常能看到:>/dev/null 2>&1  
  119. 命令的结果可以通过%>的形式来定义输出  
  120. 分解这个组合:“>/dev/null 2>&1” 为五部分。  
  121. 1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt  
  122. 2:/dev/null 代表空设备文件  
  123. 3:2> 表示stderr标准错误  
  124. 4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1  
  125. 5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"  
  126. 因此,>/dev/null 2>&1也可以写成“1> /dev/null 2> &1”  
  127. 那么本文标题的语句执行过程为:  
  128. 1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。  
  129. 2>&1 :接着,标准错误输出重定向 到标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。     
  130.   
  131.   
  132. rpm   
  133.   
  134. RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”      
  135. rpm 执行安装包:二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。  
  136.   
  137. 常用命令组合:  
  138.   
  139.    
  140.   
  141. -ivh:安装显示安装进度--install--verbose--hash  
  142. -Uvh:升级软件包--Update;  
  143. -qpl:列出RPM软件包内的文件信息[Query Package list];  
  144. -qpi:列出RPM软件包的描述信息[Query Package install package(s)];  
  145. -qf:查找指定文件属于哪个RPM软件包[Query File];  
  146. -Va:校验所有的RPM软件包,查找丢失的文件[View Lost];  
  147.  -qa:查看系统中所有已经安装的包,要加 -a 参数   
  148. -e:删除包  
  149.   
  150. 另外一个安装软件的方法可谓是Linux的独到之处,同时也是RMP强大功能的一个表现:通过FTP站点直接在线安装软件。当找到含有你所需软件的站点并与此网站连接后,执行下面的命令即可实现在线安装,譬如在线安装Linux-1.4-6.i368.rpm,可以用命令:  
  151.   
  152. rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm  
  153.   
  154. http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html  
  155.    
  156.   
  157.   
  158. cut   
  159.   
  160. 用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型   
  161. cut -d : -f 1,5 /etc/passwd #-d后面的冒号表示字段之间的分隔符,-f表示取分割后的哪些字段     #这里取出的是第一个和第五个字段。  
  162. cut -d: -f 3- /etc/passwd #从第三个字段开始显示,直到最后一个字段。  
  163. 使用cut命令还可以剪切以字符数量为标量的部分字符,该功能通过-c选项实现,其不能与-d选项共存。  
  164. cut -c 1-4 /etc/passwd #取每行的前1-4个字符。  
  165. cut -c-4 /etc/passwd #取每行的前4个字符。  
  166. cut -c4- /etc/passwd #取每行的第4个到最后字符。  
  167. cut -c1,4 /etc/passwd #取每行的第一个和第四个字符。  
  168. cut -c1-4,5 /etc/passwd #取每行的1-4和第5个字符。  
  169.   
  170. tac&&rev  
  171.   
  172. tac其实是cat的反写,cat正常输出,那tac就倒着输出,不过从行的最后一行输出,那rev呢?rev是每行的最后一个字母到第一个字母倒序输出。  
  173.   
  174. sed   
  175.   
  176. sed(stream editor流编辑器)是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法  
  177. sed命令行格式为:sed [-nefri] ‘command’ filename          
  178.   
  179. 常用选项:  
  180. -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。  
  181. -e∶直接在指令列模式上进行 sed 的动作编辑;  
  182. -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;  
  183. -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)  
  184. -i∶直接修改读取的档案内容,而不是由屏幕输出。         
  185.   
  186. 常用命令:  
  187. a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~  
  188. c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!  
  189. d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;  
  190. i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);  
  191. p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~  
  192. s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!  
  193.   
  194. tar   
  195.   
  196.   
  197. 解压缩命令  
  198. tar [-cxtzjvfpPN] 文件与目录 ....   
  199. 参数:   
  200. -c :建立一个压缩文件的参数指令(create 的意思);   
  201. -x :解开一个压缩文件的参数指令!   
  202. -t :查看 tarfile 里面的文件!   
  203. 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!   
  204. 因为不可能同时压缩与解压缩。   
  205. -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?   
  206. -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?   
  207. -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!   
  208. -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!   
  209. 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成   
  210. 『 tar -zcvPf tfile sfile』才对喔!   
  211. -p :使用原文件的原来属性(属性不会依据使用者而变)   
  212. -P :可以使用绝对路径来压缩!   
  213. -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!   
  214. --exclude FILE:在压缩的过程中,不要将 FILE 打包!   
  215. 范例:   
  216. 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar   
  217. [root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!   
  218. [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩   
  219. [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩   
  220. # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。   
  221. # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~   
  222. # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~   
  223. # 上述指令在执行的时候,会显示一个警告讯息:   
  224. # 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。  
  225.   
  226. 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?   
  227. [root@linux ~]# tar -ztvf /tmp/etc.tar.gz   
  228. # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,   
  229. # 就得要加上 z 这个参数了!这很重要的!  
  230.   
  231. 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下   
  232. [root@linux ~]# cd /usr/local/src   
  233. [root@linux src]# tar -zxvf /tmp/etc.tar.gz   
  234. # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,   
  235. # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,   
  236. # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc   
  237. # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!  
  238.   
  239. 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已   
  240. [root@linux ~]# cd /tmp   
  241. [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd   
  242. # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,   
  243. # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!  
  244.   
  245. 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!   
  246. [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc   
  247. # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!  
  248.   
  249. 范例六:在 /home 当中,比 2005/06/01 新的文件才备份   
  250. [root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home  
  251.   
  252. 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai   
  253. [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc  
  254.   
  255. 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!   
  256. [root@linux ~]# cd /tmp   
  257. [root@linux tmp]# tar -cvf - /etc | tar -xvf -   
  258. # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!   
  259. # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~   
  260. # 这分别代表 standard output, standard input 与管线命令啦!   
  261.   
  262.   
  263. date   
  264.   
  265. 可以用来显示或设定系统的日期与时间  
  266. date +%x 11/02/2012  
  267. date -R 查看系统时区 Fri, 16 Nov 2012 09:27:31 +0800 东八区  
  268. tzselect 修改时区   
  269. date -s 06/22/96  设置日期  
  270. date -s 13:52:00  设置时间  
  271. date +%s 可以得到UNIX的时间戳  
  272.      
  273. 修改时区  
  274. set_timezone()  
  275. {  
  276.   
  277.     TIME_ZONE_CONF="/etc/sysconfig/clock"  
  278.   
  279.     region=`echo $1 | cut -d: -f1`  
  280.     city=`echo $1 | cut -d: -f2`  
  281.   
  282.     TIME_ZONE_LINK="/etc/localtime"  
  283.     TIME_ZONE_FILE="/usr/share/zoneinfo/$region/$city"  
  284.   
  285.     if [ -f $TIME_ZONE_FILE ]  
  286.     then  
  287.   
  288.         # change localtime  
  289.         rm -f $TIME_ZONE_LINK  
  290.         ln -sf $TIME_ZONE_FILE $TIME_ZONE_LINK  
  291.   
  292.         # change system time config  
  293.         sed -i "s/^ZONE=.*/ZONE=\"$region\/$city\"/" /etc/sysconfig/clock  
  294.         sed -i "s/^UTC=.*/UTC=true/" /etc/sysconfig/clock  
  295.     fi  
  296.   
  297. }  
  298.   
  299. [root@localhost Asia]# cat /etc/sysconfig/clock  
  300. ZONE="Asia/Chongqing"  
  301. UTC=true  
  302. ARC=false  
  303.   
  304.      
  305.   
  306.   
  307.   
  308.   
  309. crontab   
  310.   
  311. crontab命令的功能是在一定的时间间隔调度一些命令的执行。  
  312.   
  313. /etc/crontab 文件  
  314.        在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。  
  315.         
  316. 如:  
  317. [root@dave ~]# cat /etc/crontab  
  318. SHELL=/bin/bash  
  319.      PATH=/sbin:/bin:/usr/sbin:/usr/bin  
  320. MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号  
  321. HOME=/ //使用者运行的路径,这里是根目录  
  322. # run-parts  
  323. 01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本  
  324. 02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本  
  325. 22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本  
  326. 42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本  
  327.          大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。  
  328.   
  329. cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:  
  330. /sbin/service crond start //启动服务  
  331. /sbin/service crond stop //关闭服务  
  332. /sbin/service crond restart //重启服务  
  333. /sbin/service crond reload //重新载入配置  
  334. 你也可以将这个服务在系统启动的时候自动启动:  
  335. 在/etc/rc.d/rc.local这个脚本的末尾加上:  
  336. /sbin/service crond start     
  337.   
  338.   
  339.          * * * * * command  
  340.         除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。  
  341.   
  342.   
  343. 直接用crontab命令编辑  
  344. cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:  
  345. crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数  
  346. crontab -l //列出某个用户cron服务的详细内容  
  347. crontab -r //删除某个用户的cron服务  
  348. crontab -e //编辑某个用户的cron服务  
  349. 比如说root查看自己的cron设置:crontab -u root -l  
  350. 再例如,root想删除fred的cron设置:crontab -u fred -r  
  351. 在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e  
  352. 进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt  
  353.   
  354.   
  355.   
  356. wc   
  357.   
  358. 为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出,格式 wc 【选项】 文件  
  359. -c 统计字节数  
  360. -m 统计字符数  
  361. -l 统计行数  
  362. -w 统计单词数  
  363. 上述命令可以组合使用,但出现的顺都是 行数 单词数 字节数 文件名 wc -lwc filename 和 wc filename的结果是一样的  
  364.   
  365.      
  366. 1个字节等于8个bit位,每个bit位又0/1两种状态也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节书不太一样。   
  367.       
  368.   
  369. chkconfig  
  370.   
  371. 更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。  
  372. 使用格式:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]  
  373. 使用要点:要启动的服务的脚本,必须放在/etc/init.d目录下  
  374. 示例:让samba服务器随系统自动开机启动---> chkconfig --add smb chkconfig --level 35 smb on  
  375. level参数详解  
  376.       等级0表示:表示关机  
  377.       等级1表示:单用户模式  
  378.       等级2表示:无网络连接的多用户命令行模式  
  379.       等级3表示:有网络连接的多用户命令行模式  
  380.       等级4表示:不可用  
  381.       等级5表示:带图形界面的多用户模式  
  382.       等级6表示:重新启动  
  383.   
  384. grep  
  385.   
  386.     Global Regular Expression Print 的缩写  
  387. 对于标准输入的每一行,grep执行以下的操作:  
  388.   
  389. (1) 把下一输入行复制到模式空间中. 模式空间是只可保存一个文本行的缓冲区.  
  390.   
  391. (2) 对模式空间应用正则表达式.  
  392.   
  393. (3) 如果有匹配存在,该行从模式空间中被复制到标准输出.  
  394.   
  395. grep实用程序对输入的每行重复这三个操作步骤.  
  396.     -v    反检索,只显示不匹配的行。  
  397.     -q    取消显示,只返回退出状态。0则表示找到了匹配的行。  
  398. if [ -e filename ] ------>注意要有空格  
  399. then   
  400.     echo ''zz  
  401. else   
  402.     echo ''  
  403. fi  
  404.   
  405. -b    当file存在并且是块文件时返回真  
  406. -c    当file存在并且是字符文件时返回真  
  407. -d    当pathname存在并且是一个目录时返回真  
  408. -e    当pathname指定的文件或目录存在时返回真  
  409. -f     当file存在并且是正规文件时返回真  
  410. -g     当由pathname指定的文件或目录存在并且设置了SGID位时返回为真  
  411. -h     当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效  
  412. -k     当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真  
  413. -p     当file存在并且是命令管道时返回为真  
  414. -r     当由pathname指定的文件或目录存在并且可读时返回为真  
  415. -s     当file存在文件大小大于0时返回真  
  416. -u     当由pathname指定的文件或目录存在并且设置了SUID位时返回真  
  417. -w    当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。  
  418. -o     当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。  
  419.   
  420. 比较字符写法:  
  421. -eq    等于  
  422. -ne    不等于  
  423. -gt     大于  
  424. -lt      小于  
  425. -le     小于等于  
  426. -ge    大于等于  
  427. -z      空串  
  428. * =    两个字符相等  
  429. * !=   两个字符不等  
  430. * -n   非空串  
  431.   
  432.   
  433. 计算文件有多少行   
  434.   
  435. grep -c '' www-sys-info  
  436. wc -l filename  
  437. cat filename | wc -l  
  438. 计算目录内有多少文件  
  439.   
  440. ls -1 | wc -l [ls以长格式(每文件一行)显示当前目录中的文件信息;以它的输出作为wc命令的输入,这样就可以统计出当前目录中文件的个数~~~]  
  441.   
  442. 查看文件大小   
  443.   
  444. ls filename -l[h] 加了h参数后,文件的大小会显示成多少k  
  445. stat filename 更详细  
  446.   
  447. 查看CPU的详细使用信息   
  448.   
  449. cat /proc/cpuinfo  
  450.   
  451.   
  452. 在目录下递归查找某个字符  
  453.   
  454. grep 'zed' ./ -R  
  455.   
  456. if [ $? -ne 0]  
  457. then  
  458.     echo  '$?表示上一条命令的返回值,返回1执行失败'  
  459. else  
  460.     echo '$?表示上一条命令的返回值,返回0执行成功'  
  461. fi  
  462.   
  463.   
  464.  ${ } 的一些特异功能:  
  465. 假设定义了一个变量为:  
  466. file=/dir1/dir2/dir3/my.file.txt  
  467. 我们可以用 ${ } 分别替换获得不同的值:  
  468. ${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt  
  469. ${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt  
  470. ${file#*.}:拿掉第一个 .  及其左边的字符串:file.txt  
  471. ${file##*.}:拿掉最后一个 .  及其左边的字符串:txt  
  472. ${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3  
  473. ${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)  
  474. ${file%.*}:拿掉最后一个 .  及其右边的字符串:/dir1/dir2/dir3/my.file  
  475. ${file%%.*}:拿掉第一个 .  及其右边的字符串:/dir1/dir2/dir3/my  
  476. 记忆的方法为:  
  477.   
  478. # 是去掉左边(在鉴盘上 # 在 $ 之左边)  
  479. % 是去掉右边(在鉴盘上 % 在 $ 之右边)  
  480. 单一符号是最小匹配﹔两个符号是最大匹配。  
  481.   
  482.   
  483.     ubuntu如何切换到root  
  484.   
  485. 调出终端(ctrl+alt+t或是单击左上角的dash home-->在右侧弹出的窗口中单击下面左侧第二个按钮---->在单击install查找terminal)  
  486. 在命令行上输入sudo -s,之后变输入安装ubuntu时的密码,之后便进入root  
  487. 退出在键盘上输入exit  
  488. 乌班图下php.ini的位置 /etc/php5/apache2/php.ini  
  489. 在乌班图下重启apache服务,出现httpd: Could not reliably determine the server's fully qualified domain name,解决办法只需在/etc/apache2中编辑httpd.conf文件,在里面加入ServerName 127.0.0.1,后面的ip地址是上面警告的ip  

最下面的为云笔记的分享链接,有兴趣的可以看看
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值