现在所在的这家公司,都是在服务器上编程,少不了要和shell打交道,三个多月过去了,linux上常用命令已经记得有二十几个了,当然了,这些事算少的了,但是应付平日的编程足够了。文章的最下面是云笔记里的常用命令,当然了,这些对我是很有用的,而且是时长更新的,如,某天我遇到了问题用某个命令解决了,就会加进去,不过相信一些和我同一级别的菜鸟也还是比较实用的
简单说完了php调用shell,在说下如何在命令行上如何调用php脚本,下面是个简单的php脚本
下面是在命令上调用
看到这里是不是明白了,对,和shell调用一个原理,只是php调用时前面写的是php环境的的路径,那么现在用在shell里调用php不就举一反三就可以了
等等,看看到这里,是不是可以联想起什么,对的,如果c调用php脚本,那么我们就可以用shell这座桥来间接调用了。写这段是因为这周我要写个webservice接口,用c调用的,正好可以用这个方法实现。
最下面的为云笔记的分享链接,有兴趣的可以看看
好了,还是回归正题,在php中调用shell脚本一般用的是sudo,具体为
- $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脚本
- echo "number:".$argc."\n"; //$argc为在命令行上输入参数的个数,也相当于数组的长度
- echo $argv[1]."\n";
- echo $argv[2]."\n";
- print_r($argv); //$argv就是一个数组,其值就是命令上的参数
下面是在命令上调用
- [root@localhost html]# /usr/local/httpd/bin/php test.php abc 123 456
- number:4
- abc
- 123
- Array
- (
- [0] => test.php
- [1] => abc
- [2] => 123
- [3] => 456
- )
看到这里是不是明白了,对,和shell调用一个原理,只是php调用时前面写的是php环境的的路径,那么现在用在shell里调用php不就举一反三就可以了
- #!/bin/sh
- variable=`/usr/local/httpd/bin/php test.php abc 123 456`//就是把命令上调用的写法原封不动写进shell脚本里,就ok了。
等等,看看到这里,是不是可以联想起什么,对的,如果c调用php脚本,那么我们就可以用shell这座桥来间接调用了。写这段是因为这周我要写个webservice接口,用c调用的,正好可以用这个方法实现。
- chmod [who] operator [permission] filename
- who: u g o a(所有用户:文件属主、同组用户及其他用户)
- operator +(增加权限) -(取消权限) =(设定权限)
- permission r w x s(文件属主和组set-ID) t(粘性位*) l(给文件加锁,使其他用户无法访问)
- 符号模式 chmod a+x,go+w file.conf chmod go-wx file.conf
- 绝对模式 chmod 644 file.conf chmod 700 file.conf chmod -R 777 ./ (改变当前目录及子目录里面包含文件所有的权限)
- suid/guid
- 执行该脚本的其他用户具有属主的相应权限
- 在/bin /sbin 中使用 ls -l | grep '^...s'(suid) ls -l | grep '^...s..s'(guid)
- chmod 4777 newfile.conf ----->-rwsrwxrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->suid
- chmod 2777 newfile.conf ----->-rwxrwsrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->guid
- chmod 6777 newfile.conf ----->-rwsrwsrwx 1 root root 2 Sep 20 15:02 newfile.conf ----->suid + guid
- 如果检查某个文件的权限为 -rwxrwSrwx 那个S,表示相应的执行权限并未被设置,可以忽略
- id
- 显示用户的ID,以及所属群组的ID---->uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)常用来找出当前用户所属的组
- umask
- 设置文件及目录创建时的缺省值
- 直接在命令行上打印umask,会显示系统设置的缺省值,022
- umask中目录的各个数字最大值为7,文件最大值为6(系统不允许创建的文件具有可执行权限)
- 022---->目录为755,文件为644
- 该缺省值一般在/etc/profile文件中设置,每个用户在登陆时都会引用这个文件
- 若想永久设置umask的值,可把它放在/home目录下.profile或.bash_profile文件中
- ln
- 为某一个文件在另外一个位置简历一个同步的链接,分为软链接和硬链接
- ln -s 源文件 目标文件 ------>软链接, 它只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间
- ln 源文件 目标文件 ------>硬链接,它会在选定的位置上生成一个和源文件大小相同的文件
- ls
- list 列出目录内容
- -1 每列仅显示一个文件或目录名称
- -t 用文件和目录的更改时间排序
- -r 或--reverse 反向排序
- -l 使用详细格式列表
- -h或--human-readable 用"K","M","G"来显示文件和目录的大小
- -s或--size 显示文件和目录的大小,以区块为单位。
- -S 用文件和目录的大小排序。
- ssh
- 远程登录(Securt SHELL) ssh root@192.168.100.55
- 登陆到远程的linux服务器后,可以用exit退出,又回到当前的状态
- scp
- secure copy的缩写,是linux系统基于ssh登陆进行安全的远程文件拷贝明,可以再linux服务器之间复制文件和目录
- scp root@192.168.100.55:/etc/samba/smb.conf . (从远程把文件复制到本机)
- df
- 查看磁盘的使用量
- df -lh 以这种形式Filesystem Size Used Avail Use% Mounted on 查看磁盘的详细情况
- du
- -a或-all 显示目录中个别文件的大小
- -k或--kilobytes 以1024 bytes为单位
- -m或--megabytes 以1MB为单位
- -s或--summarize 仅显示总计。
- find
- 按name(名称)选项来查找,格式 find ~ -name filename -print
- ~ 为在$home(根目录)目录下查找文件
- . 为在当前目录及其子目录下查找文件
- /etc 在该目录及子目录查找文件
- / 为系统根目录下查找
- find . -name '[a-z][0-9]*.txt' -print 在当前目录及子目录下查找以字母开头及第二位数是数字的txt文件
- 按perm(权限)选项来查找,格式 find . -perm 755 filename -print
- find . -perm -005 filename -print 则是指具体的o中5这个权限
- 按prune(忽略目录)选项来查找,格式 find ./ -path './temp' -prune -o -name filename -print
- 按user/nouser group/nogroup (属主、用户组)选项来查找,格式
- find . user root -print / find . nouser -print (可以查找属主在/etc/passwd文件中没有有效用户的文件)
- find . group root -print / find . nogroup -print
- 按mtime(时间)选项来查找,格式
- -号,之内的 find /usr -mtime -3 -print 查找3天之内的更改的文件
- +号,之前的 find /usr -mtime +3 -print 查找3天之前的更改的文件
- 按newer(某个新或旧文件)选项来查找,格式 find . newer a.txt ! newer b.txt -print 查找比a新比b旧的文件
- 查找两个小时以前的文件,可以使用touch -d 10101200(2010 10 12:00)filename 命令来创建一个固定时间的文件,接着就可以查找了 find . -newer filename -print
- 按type(文件类型)选项来查找,格式
- d目录,查找该目录下所有的目录 find ./ -type d -print 查找该目录以外所有的目录 find ./ ! -type d -print
- l链接文件,查找该目录下所有的链接文件 find . -type l -print (用ls -l也可以查出,不过这时查找链接文件最上面的那个目录)
- 按size(文件大小)选项来查找,格式
- c字节,find . -size +1000c -print (+大于 -小于)
- n块(1块512字节) find . - size +100 -print
- locate
- 快速查找文件 location filename
- 使用方法:locate xx(要查找的文件名) -l num(要显示的行数)。当然这个文件名在系统中出现太多,就需要用到-l这个参数。不然等着刷屏吧。
- 正则使用参数:-r, –regexp REGEXP
- cat
- 查看文件内总行数 cat filename | wc -l
- 清空文件 cat /dev/null > /etc/test.txt
- -n 由 1 开始对所有输出的行数编号 cat -n filename
- -b,和-n类似,对空白行不输出编号
- 将几个文件合并为一个文件。 cat file1 file2 > file
- 创建一个文件 cat filename
- -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
- 关于shell中:>/dev/null 2>&1 详解
- shell中可能经常能看到:>/dev/null 2>&1
- 命令的结果可以通过%>的形式来定义输出
- 分解这个组合:“>/dev/null 2>&1” 为五部分。
- 1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
- 2:/dev/null 代表空设备文件
- 3:2> 表示stderr标准错误
- 4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
- 5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"
- 因此,>/dev/null 2>&1也可以写成“1> /dev/null 2> &1”
- 那么本文标题的语句执行过程为:
- 1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
- 2>&1 :接着,标准错误输出重定向 到标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
- rpm
- RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
- rpm 执行安装包:二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。
- 常用命令组合:
- -ivh:安装显示安装进度--install--verbose--hash
- -Uvh:升级软件包--Update;
- -qpl:列出RPM软件包内的文件信息[Query Package list];
- -qpi:列出RPM软件包的描述信息[Query Package install package(s)];
- -qf:查找指定文件属于哪个RPM软件包[Query File];
- -Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
- -qa:查看系统中所有已经安装的包,要加 -a 参数
- -e:删除包
- 另外一个安装软件的方法可谓是Linux的独到之处,同时也是RMP强大功能的一个表现:通过FTP站点直接在线安装软件。当找到含有你所需软件的站点并与此网站连接后,执行下面的命令即可实现在线安装,譬如在线安装Linux-1.4-6.i368.rpm,可以用命令:
- rpm -i ftp://ftp.pht.com/pub/linux/redhat/...-1.4-6.i368.rpm
- http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/08/2203153.html
- cut
- 用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型
- cut -d : -f 1,5 /etc/passwd #-d后面的冒号表示字段之间的分隔符,-f表示取分割后的哪些字段 #这里取出的是第一个和第五个字段。
- cut -d: -f 3- /etc/passwd #从第三个字段开始显示,直到最后一个字段。
- 使用cut命令还可以剪切以字符数量为标量的部分字符,该功能通过-c选项实现,其不能与-d选项共存。
- cut -c 1-4 /etc/passwd #取每行的前1-4个字符。
- cut -c-4 /etc/passwd #取每行的前4个字符。
- cut -c4- /etc/passwd #取每行的第4个到最后字符。
- cut -c1,4 /etc/passwd #取每行的第一个和第四个字符。
- cut -c1-4,5 /etc/passwd #取每行的1-4和第5个字符。
- tac&&rev
- tac其实是cat的反写,cat正常输出,那tac就倒着输出,不过从行的最后一行输出,那rev呢?rev是每行的最后一个字母到第一个字母倒序输出。
- sed
- sed(stream editor流编辑器)是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
- sed命令行格式为:sed [-nefri] ‘command’ filename
- 常用选项:
- -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
- -e∶直接在指令列模式上进行 sed 的动作编辑;
- -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
- -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
- -i∶直接修改读取的档案内容,而不是由屏幕输出。
- 常用命令:
- a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
- i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
- s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
- tar
- 解压缩命令
- tar [-cxtzjvfpPN] 文件与目录 ....
- 参数:
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfile 里面的文件!
- 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
- 因为不可能同时压缩与解压缩。
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
- 『 tar -zcvPf tfile sfile』才对喔!
- -p :使用原文件的原来属性(属性不会依据使用者而变)
- -P :可以使用绝对路径来压缩!
- -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
- --exclude FILE:在压缩的过程中,不要将 FILE 打包!
- 范例:
- 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
- [root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
- [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后,以 gzip 压缩
- [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后,以 bzip2 压缩
- # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
- # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~
- # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~
- # 上述指令在执行的时候,会显示一个警告讯息:
- # 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。
- 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
- [root@linux ~]# tar -ztvf /tmp/etc.tar.gz
- # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,
- # 就得要加上 z 这个参数了!这很重要的!
- 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
- [root@linux ~]# cd /usr/local/src
- [root@linux src]# tar -zxvf /tmp/etc.tar.gz
- # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,
- # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,
- # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc
- # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!
- 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
- [root@linux ~]# cd /tmp
- [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
- # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,
- # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!
- 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
- [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
- # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!
- 范例六:在 /home 当中,比 2005/06/01 新的文件才备份
- [root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
- 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
- [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
- 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
- [root@linux ~]# cd /tmp
- [root@linux tmp]# tar -cvf - /etc | tar -xvf -
- # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
- # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~
- # 这分别代表 standard output, standard input 与管线命令啦!
- date
- 可以用来显示或设定系统的日期与时间
- date +%x 11/02/2012
- date -R 查看系统时区 Fri, 16 Nov 2012 09:27:31 +0800 东八区
- tzselect 修改时区
- date -s 06/22/96 设置日期
- date -s 13:52:00 设置时间
- date +%s 可以得到UNIX的时间戳
- 修改时区
- set_timezone()
- {
- TIME_ZONE_CONF="/etc/sysconfig/clock"
- region=`echo $1 | cut -d: -f1`
- city=`echo $1 | cut -d: -f2`
- TIME_ZONE_LINK="/etc/localtime"
- TIME_ZONE_FILE="/usr/share/zoneinfo/$region/$city"
- if [ -f $TIME_ZONE_FILE ]
- then
- # change localtime
- rm -f $TIME_ZONE_LINK
- ln -sf $TIME_ZONE_FILE $TIME_ZONE_LINK
- # change system time config
- sed -i "s/^ZONE=.*/ZONE=\"$region\/$city\"/" /etc/sysconfig/clock
- sed -i "s/^UTC=.*/UTC=true/" /etc/sysconfig/clock
- fi
- }
- [root@localhost Asia]# cat /etc/sysconfig/clock
- ZONE="Asia/Chongqing"
- UTC=true
- ARC=false
- crontab
- crontab命令的功能是在一定的时间间隔调度一些命令的执行。
- /etc/crontab 文件
- 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。
- 如:
- [root@dave ~]# cat /etc/crontab
- SHELL=/bin/bash
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
- HOME=/ //使用者运行的路径,这里是根目录
- # run-parts
- 01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
- 02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
- 22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
- 42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本
- 大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
- cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
- /sbin/service crond start //启动服务
- /sbin/service crond stop //关闭服务
- /sbin/service crond restart //重启服务
- /sbin/service crond reload //重新载入配置
- 你也可以将这个服务在系统启动的时候自动启动:
- 在/etc/rc.d/rc.local这个脚本的末尾加上:
- /sbin/service crond start
- * * * * * command
- 除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
- 直接用crontab命令编辑
- cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
- crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
- crontab -l //列出某个用户cron服务的详细内容
- crontab -r //删除某个用户的cron服务
- crontab -e //编辑某个用户的cron服务
- 比如说root查看自己的cron设置:crontab -u root -l
- 再例如,root想删除fred的cron设置:crontab -u fred -r
- 在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
- 进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
- wc
- 为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出,格式 wc 【选项】 文件
- -c 统计字节数
- -m 统计字符数
- -l 统计行数
- -w 统计单词数
- 上述命令可以组合使用,但出现的顺都是 行数 单词数 字节数 文件名 wc -lwc filename 和 wc filename的结果是一样的
- 1个字节等于8个bit位,每个bit位又0/1两种状态也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。一般来说,英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节书不太一样。
- chkconfig
- 更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
- 使用格式:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]
- 使用要点:要启动的服务的脚本,必须放在/etc/init.d目录下
- 示例:让samba服务器随系统自动开机启动---> chkconfig --add smb chkconfig --level 35 smb on
- level参数详解
- 等级0表示:表示关机
- 等级1表示:单用户模式
- 等级2表示:无网络连接的多用户命令行模式
- 等级3表示:有网络连接的多用户命令行模式
- 等级4表示:不可用
- 等级5表示:带图形界面的多用户模式
- 等级6表示:重新启动
- grep
- Global Regular Expression Print 的缩写
- 对于标准输入的每一行,grep执行以下的操作:
- (1) 把下一输入行复制到模式空间中. 模式空间是只可保存一个文本行的缓冲区.
- (2) 对模式空间应用正则表达式.
- (3) 如果有匹配存在,该行从模式空间中被复制到标准输出.
- grep实用程序对输入的每行重复这三个操作步骤.
- -v 反检索,只显示不匹配的行。
- -q 取消显示,只返回退出状态。0则表示找到了匹配的行。
- if [ -e filename ] ------>注意要有空格
- then
- echo ''zz
- else
- echo ''
- fi
- -b 当file存在并且是块文件时返回真
- -c 当file存在并且是字符文件时返回真
- -d 当pathname存在并且是一个目录时返回真
- -e 当pathname指定的文件或目录存在时返回真
- -f 当file存在并且是正规文件时返回真
- -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
- -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
- -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
- -p 当file存在并且是命令管道时返回为真
- -r 当由pathname指定的文件或目录存在并且可读时返回为真
- -s 当file存在文件大小大于0时返回真
- -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
- -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
- -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
- 比较字符写法:
- -eq 等于
- -ne 不等于
- -gt 大于
- -lt 小于
- -le 小于等于
- -ge 大于等于
- -z 空串
- * = 两个字符相等
- * != 两个字符不等
- * -n 非空串
- 计算文件有多少行
- grep -c '' www-sys-info
- wc -l filename
- cat filename | wc -l
- 计算目录内有多少文件
- ls -1 | wc -l [ls以长格式(每文件一行)显示当前目录中的文件信息;以它的输出作为wc命令的输入,这样就可以统计出当前目录中文件的个数~~~]
- 查看文件大小
- ls filename -l[h] 加了h参数后,文件的大小会显示成多少k
- stat filename 更详细
- 查看CPU的详细使用信息
- cat /proc/cpuinfo
- 在目录下递归查找某个字符
- grep 'zed' ./ -R
- if [ $? -ne 0]
- then
- echo '$?表示上一条命令的返回值,返回1执行失败'
- else
- echo '$?表示上一条命令的返回值,返回0执行成功'
- fi
- ${ } 的一些特异功能:
- 假设定义了一个变量为:
- file=/dir1/dir2/dir3/my.file.txt
- 我们可以用 ${ } 分别替换获得不同的值:
- ${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
- ${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
- ${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
- ${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
- ${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
- ${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
- ${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
- ${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
- 记忆的方法为:
- # 是去掉左边(在鉴盘上 # 在 $ 之左边)
- % 是去掉右边(在鉴盘上 % 在 $ 之右边)
- 单一符号是最小匹配﹔两个符号是最大匹配。
- ubuntu如何切换到root
- 调出终端(ctrl+alt+t或是单击左上角的dash home-->在右侧弹出的窗口中单击下面左侧第二个按钮---->在单击install查找terminal)
- 在命令行上输入sudo -s,之后变输入安装ubuntu时的密码,之后便进入root
- 退出在键盘上输入exit
- 乌班图下php.ini的位置 /etc/php5/apache2/php.ini
- 在乌班图下重启apache服务,出现httpd: Could not reliably determine the server's fully qualified domain name,解决办法只需在/etc/apache2中编辑httpd.conf文件,在里面加入ServerName 127.0.0.1,后面的ip地址是上面警告的ip
最下面的为云笔记的分享链接,有兴趣的可以看看