首页 > 代码库 > 不就是抽个血吗,至于么-jQuery,Linux完结篇
不就是抽个血吗,至于么-jQuery,Linux完结篇
趁着周一去抽血化验,真开心。。。下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话。。。。。至于么。。
还有在教研室的30天就可以肥家了,凯森凯森。今天不想干活(哪天想干过我就问问),学学jquery吧。
1、jQuery
十、UI型插件
10.1 拖曳插件——draggable
拖曳插件draggable的功能是拖动被绑定的元素,当这个jQuery UI插件与元素绑定后,可以通过调用draggable()方法,实现各种拖曳元素的效果,调用格式如下:
$(selector). draggable({options})
options参数为方法调用时的配置对象,根据该对象可以设置各种拖曳效果,如“containment”属性指定拖曳区域,“axis”属性设置拖曳时的坐标方向。
<body>
<div id="divtest">
<div id="x" class="drag">沿x轴拖拽</div>
<div id="y" class="drag">沿y轴拖拽</div>
</div>
<script type="text/javascript">
$(function () {
$("#x").draggable({axis:"x"});
$("#y").draggable({axis:"y"});
});
</script>
</body>
10.2 放置插件——droppable
除使用draggable插件拖曳任意元素外,还可以调用droppable UI插件将拖曳后的任意元素放置在指定区域中,类似购物车效果,调用格式如下:
$(selector).droppable({options})
selector参数为接收拖曳元素,options为方法的配置对象,在对象中,drop函数表示当被接收的拖曳元素完全进入接收元素的容器时,触发该函数的调用。
<body>
<div id="divtest">
<div class="box">
<div class="title">产品区</div>
<div class="drag"><div>苹果</div></div>
</div>
<div class="box">
<div class="title">回收站</div>
<div class="cart"><div id="tip">还没有产品</div></div>
</div>
</div>
<script type="text/javascript">
$(function () {
$(".drag").draggable();
$(".cart").droppable({
drop: function () {
sum--;
$(".cart").removeClass("focus");
$("#tip").html("还没有产品");
$(".title span").html(sum);
}
})
});
</script>
</body>
10.3 拖曳排序插件——sortable
拖曳排序插件的功能是将序列元素(例如<option>、<li>)按任意位置进行拖曳从而形成一个新的元素序列,实现拖曳排序的功能,它的调用格式为:
$(selector).sortable({options});
selector参数为进行拖曳排序的元素,options为调用方法时的配置对象
<body>
<div id="divtest">
<div class="title">
<span class="fl">我最喜欢的运动</span>
</div>
<div class="content">
<ul>
<li>1)足球</li>
<li>2)散步</li>
<li>3)篮球</li>
<li>4)乒乓球</li>
<li>5)骑自行车</li>
</ul>
</div>
</div>
<script type="text/javascript">
$(function () {
$("ul").sortable({
delay:2,
opacity:0.4
})
});
</script>
</body>
10.4 面板折叠插件——accordion
面板折叠插件可以实现页面中指定区域类似“手风琴”的折叠效果,即点击标题时展开内容,再点另一标题时,关闭已展开的内容,调用格式如下:
$(selector).accordion({options});
其中,参数selector为整个面板元素,options参数为方法对应的配置对象。
<body>
<div id="divtest">
<div id="accordion">
<h3>
<a href="http://www.mamicode.com/#">白富美</a></h3>
<p>咱们结婚吧!</p>
<h3>
<a href="http://www.mamicode.com/#">土豪族</a></h3>
<p>咱们交个朋友吧!</p>
</div>
</div>
<script type="text/javascript">
$(function () {
$("#accordion").accordion();
});
</script>
</body>
10.5 选项卡插件——tabs
使用选项卡插件可以将<ul>中的<li>选项定义为选项标题,在标题中,再使用<a>元素的“href”属性设置选项标题对应的内容,它的调用格式如下:
$(selector).tabs({options});
selector参数为选项卡整体外围元素,该元素包含选项卡标题与内容,options参数为tabs()方法的配置对象,通过该对象还能以ajax方式加载选项卡的内容。
<body>
<div id="divtest">
<div id="tabs">
<ul>
<li><a href="http://www.mamicode.com/#tabs-1">最爱吃的水果</a></li>
<li><a href="http://www.mamicode.com/#tabs-2">最喜欢的运动</a></li>
</ul>
<div id="tabs-1">
<p>橘子</p>
<p>香蕉</p>
<p>葡萄</p>
<p>苹果</p>
<p>西瓜</p>
</div>
<div id="tabs-2">
<p>足球</p>
<p>散步</p>
<p>篮球</p>
<p>乒乓球</p>
<p>骑自行车</p>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$("#tabs").tabs ({
//设置各选项卡在切换时的动画效果
fx: { opacity: "toggle", height: "toggle" },
event: "mousemove" //http://www.qixoo.qixoo.com/通过移动鼠标事件切换选项卡
})
});
</script>
</body>
10.6 对话框插件——dialog
对话框插件可以用动画的效果弹出多种类型的对话框,实现JavaScript代码中alert()和confirm()函数的功能,它的调用格式为:
$(selector).dialog({options});
selector参数为显示弹出对话框的元素,通常为<div>,options参数为方法的配置对象,在对象中可以设置对话框类型、“确定”、“取消”按钮执行的代码等。
<body>
<div id="divtest">
<div class="content">
<span id="spnName" class="fl">张三</span>
<input id="btnDelete" type="button" value="http://www.mamicode.com/删除" class="fr"/>
</div>
<div id=‘dialog-modal‘></div>
</div>
<script type="text/javascript">
$(function () {
$("#btnDelete").bind("click", function () { //询问按钮事件
if ($("#spnName").html() != null) { //如果对象不为空
sys_Confirm("您真的要删除该条记录吗?");
return false;
}
});
});
function sys_Confirm(content) { //弹出询问信息窗口
$("#btnDelete").dialog({
height: 140,
modal: true,
title: ‘系统提示‘,
hide: ‘slide‘,
buttons: {
‘确定‘: function () {
$("#spnName").remove();
$(this).dialog("close");
},
‘取消‘: function () {
$(this).dialog("close");
}
},
open: function (event, ui) {
$(this).html("");
$(this).append("<p>" + content + "</p>");
}
});
}
</script>
</body>
10.7 菜单工具插件——menu
菜单工具插件可以通过<ul>创建多级内联或弹出式菜单,支持通过键盘方向键控制菜单滑动,允许为菜单的各个选项添加图标,调用格式如下:
$(selector).menu({options});
selector参数为菜单列表中最外层<ul>元素,options为menu()方法的配置对象。
<body>
<ul id="menu">
<li><a href="http://www.mamicode.com/#">小明一中</a>
<ul>
<li><a href="http://www.mamicode.com/#">高中部</a>
<ul>
<li><a href="http://www.mamicode.com/#">高一(1)班</a></li>
<li><a href="http://www.mamicode.com/#">高一(2)班</a></li>
<li><a href="http://www.mamicode.com/#">高一(3)班</a>
<ul>
<li><a href="http://www.mamicode.com/#">小胡</a></li>
<li><a href="http://www.mamicode.com/#">小李</a></li>
<li><a href="http://www.mamicode.com/#">小陈</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="http://www.mamicode.com/#">初中部</a>
<ul>
<li><a href="http://www.mamicode.com/#">初一(1)班</a></li>
<li><a href="http://www.mamicode.com/#">初一(2)班</a></li>
<li><a href="http://www.mamicode.com/#">初一(3)班</a></li>
</ul>
</li>
<li><a href="http://www.mamicode.com/#">教研部</a></li>
</ul>
</li>
<li class="ui-state-disabled"><a href="http://www.mamicode.com/#">大明二中</a></li>
</ul>
<script type="text/javascript">
$(function () {
$("#menu").menu();
});
</script>
</body>
10.8 微调按钮插件——spinner
微调按钮插件不仅能在文本框中直接输入数值,还可以通过点击输入框右侧的上下按钮修改输入框的值,还支持键盘的上下方向键改变输入值,调用格式如下:
$(selector).spinner({options});
selector参数为文本输入框元素,可选项options参数为spinner()方法的配置对象,在该对象中,可以设置输入的最大、最小值,获取改变值和设置对应事件。
<body>
<div id="divtest">
<div class="title">
选择颜色值</div>
<div class="content">
<span id="spnColor" class="input fl">
<input />
</span>
<span id="spnPrev" class="prev fr"></span>
</div>
</div>
<script type="text/javascript">
$(function () {
//定义变量
var intR = 0, intG = 0, intB = 0, strColor;
$("input").spinner({
//初始化插件
max: 10,
min: 0,
//http://qkxue.net设置微调按钮递增/递减事件
spin: function (event, ui) {
if (ui.value =http://www.mamicode.com/= 8)
spnPrev.style.backgroundColor = "red";
else
spnPrev.style.backgroundColor = "green";
},
//设置微调按钮值改变事件
change: function (event, ui) {
var intTmp = $(this).spinner("value");
if (intTmp < 0) $(this).spinner("value", 0);
if (intTmp > 10) $(this).spinner("value", 10);
if (intTmp == 8)
spnPrev.style.backgroundColor = "red";
else
spnPrev.style.backgroundColor = "green";
}
});
});
</script>
</body>
10.9 工具提示插件——tooltip
工具提示插件可以定制元素的提示外观,提示内容支持变量、Ajax远程获取,还可以自定义提示内容显示的位置,它的调用格式如下:
$(selector).tooltip({options});
其中selector为需要显示提示信息的元素,可选项参数options为tooltip()方法的配置对象,在该对象中,可以设置提示信息的弹出、隐藏时的效果和所在位置。
<body>
<div id="divtest">
<div class="title">
工具提示插件</div>
<div class="content">
<div>
<label for="name">
姓名</label>
<input id="name" name="name" title="我是土豪,欢迎与我做朋友" />
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$("#name").tooltip({
show: {
effect: "slideDown",
delay: 350
},
hide: {
effect: "explode",
delay: 350
},
position: {
my: "left top",
at: "left bottom"
}
});
});
</script>
</body>
十一、工具类函数
11.1 获取浏览器的名称与版本信息
在jQuery中,通过$.browser对象可以获取浏览器的名称和版本信息,如$.browser.chrome为true,表示当前为Chrome浏览器,$.browser.mozilla为true,表示当前为火狐浏览器,还可以通过$.browser.version方式获取浏览器版本信息。
<body>
<div id="divtest">
<div class="title">
<span class="fl">获取浏览器名称和版本号</span>
</div>
<div class="content"></div>
</div>
<script type="text/javascript">
$(function () {
var strTmp = "您的浏览器名称是:";
if ($.browser.chrome) { //谷歌浏览器
strTmp += "Chrome";
}
if ($.browser.mozilla) { //火狐相关浏览器
strTmp += "Mozilla FireFox";
}
strTmp += "<br /><br /> 版本号是:" //获取版本号
+$.browser.version;
$(".content").html(strTmp);
});
</script>
</body>
很简单的一点,但是,要注意,jQuery的方法,一般是$(),函数常常是$.(?)
11.2 检测浏览器是否属于W3C盒子模型
浏览器的盒子模型分为两类,一类为标准的w3c盒子模型,另一类为IE盒子模型,两者区别为在Width和Height这两个属性值中是否包含padding和border的值,w3c盒子模型不包含,IE盒子模型则包含,而在jQuery 中,可以通过$.support.boxModel对象返回的值,检测浏览器是否属于标准的w3c盒子模型。
<body>
<div id="divtest">
<div class="title">
<span class="fl">检测是否是盒子模型</span>
</div>
<div class="content"></div>
</div>
<script type="text/javascript">
$(function () {
var strTmp = "您打开的页面是:";
if ($.support.boxModel) { //是W3C盒子模型
strTmp += "W3C盒子模型";
}
else { //是IE盒子模型
strTmp += "IE盒子模型";
}
$(".content").html(strTmp);
});
</script>
</body>
11.3 检测对象是否为空
在jQuery中,可以调用名为$.isEmptyObject的工具函数,检测一个对象的内容是否为空,如果为空,则该函数返回true,否则,返回false值,调用格式如下:
$.isEmptyObject(obj);
其中,参数obj表示需要检测的对象名称。
<body>
<div id="divtest">
<div class="title">
<span class="fl">检测对象是否为空</span>
</div>
<div class="content"></div>
</div>
<script type="text/javascript">
$(function () {
var obj = { "姓名": "土豪一族" };
var strTmp = "您定义了一个:";
if ($.isEmptyObject(obj)) { //检测是否为空
strTmp += "空对象";
}
else {
strTmp += "非空对象";
}
$(".content").html(strTmp);
});
</script>
</body>
11.4 检测对象是否为原始对象
调用名为$.isPlainObject的工具函数,能检测对象是否为通过{}或new Object()关键字创建的原始对象,如果是,返回true,否则,返回false值,调用格式为:
$.isPlainObject (obj);
其中,参数obj表示需要检测的对象名称。
<body>
<div id="divtest">
<div class="title">
<span class="fl">检测对象是否为原始对象</span>
</div>
<div class="content"></div>
</div>
<script type="text/javascript">
$(function () {
var obj = "null";
var strTmp = "您定义了一个:";
if ($.isPlainObject(obj)) { //检测是否为原始对象
strTmp += "原始对象";
}
else {
strTmp += "非原始对象";
}
$(".content").html(strTmp);
});
</script>
</body>
11.5 检测两个节点的包含关系
调用名为$.contains的工具函数,能检测在一个DOM节点中是否包含另外一个DOM节点,如果包含,返回true,否则,返回false值,调用格式为:
$.contains (container, contained);
参数container表示一个DOM对象节点元素,用于包含其他节点的容器,contained是另一个DOM对象节点元素,用于被其他容器所包含。
<body>
<div id="divtest">
<div class="title">
<span class="fl">检测两个节点的包含关系</span>
</div>
<div class="content"></div>
</div>
<script type="text/javascript">
$(function () {
var node_a = document.body.firstChild;
var node_b = document.body;
var strTmp = "对象node_a";
if ($.contains(node_a,node_b)) { //检测是否包含节点
strTmp += " 包含 ";
}
else {
strTmp += " 不包含 ";
}
strTmp += "对象node_b";
$(".content").html(strTmp);
});
</script>
</body>
11.6 字符串操作函数
调用名为$.trim的工具函数,能删除字符串中左右两边的空格符,但该函数不能删除字符串中间的空格,调用格式为:
$.trim (str);
参数str表示需要删除左右两边空格符的字符串。
<body>
<div id="divtest">
<div class="title">
<span class="fl">字符串操作函数</span>
<span class="fr">
<input id="btnShow" name="btnShow" type="button" value="http://www.mamicode.com/计算" />
</span>
</div>
<div class="content">
<input id="txtName" name="txtName" type="text" />
<div class="tip"></div>
</div>
</div>
<script type="text/javascript">
$(function () {
$("#btnShow").bind("click", function () {
$(".tip").html("");
var strTmp = "内容:";
var strOld = $("#txtName").val();
var strNew =$.trim(strOld);
strTmp += strOld;
strTmp += "<br/><br>除掉空格符前的长度:"
strTmp += strOld.length;
strTmp += "<br/><br>除掉空格符后的长度:"
strTmp += strNew.length;
$(".tip").show().append(strTmp);
});
});
</script>
</body>
11.7 URL操作函数
调用名为$. param的工具函数,能使对象或数组按照key/value格式进行序列化编码,该编码后的值常用于向服务端发送URL请求,调用格式为:
$. param (obj);
参数obj表示需要进行序列化的对象,该对象也可以是一个数组,整个函数返回一个经过序列化编码后的字符串。
<body>
<div id="divtest">
<div class="title">
<span class="fl">URL操作函数</span>
</div>
<div class="content">
<div class="tip"></div>
</div>
</div>
<script type="text/javascript">
$(function () {
//基本信息对象
var objInfo = new Object();
objInfo.name = "白富美";
objInfo.sex = 1;
//序列化对象
var objNewInfo =$.param(objInfo.name);
//显示序列化后的对象
var strTmp = "<b>对象 白富美 序列化后</b>:<br/><br/>";
strTmp += objNewInfo;
//显示在页面中
$(".tip").show().append(strTmp);
});
</script>
</body>
11.8 使用$.extend()扩展工具函数
调用名为$. extend的工具函数,可以对原有的工具函数进行扩展,自定义类级别的jQuery插件,调用格式为:
$. extend ({options});
参数options表示自定义插件的函数内容。
<body>
<div id="divtest">
<div class="title">
<span class="fl">自定义工具函数求两值中最小值</span>
<span class="fr">
<input id="btnShow" name="btnShow" type="button" value="http://www.mamicode.com/计算" />
</span>
</div>
<div class="content">
<div class="tip"></div>
</div>
</div>
<script type="text/javascript">
/*------------------------------------------------------------/
功能:返回两个数中最小值
参数:数字p1,p2
返回:最小值的一个数
示例:$.MinNum(1,2);
/------------------------------------------------------------*/
(function ($) {
$.extend({
"MinNum": function (p1, p2) {
return (p1 > p2) ? p2 : p1;
}
});
})(jQuery);
$(function () {
$("#btnShow").bind("click", function () {
$(".tip").html("");
var strTmp = "17与18中最小的数是:";
strTmp +=$.MinNum(17, 18);
//显示在页面中
$(".tip").show().append(strTmp);
});
});
</script>
</body>
11.9 使用$.extend()扩展Object对象
除使用$.extend扩展工具函数外,还可以扩展原有的Object对象,在扩展对象时,两个对象将进行合并,当存在相同属性名时,后者将覆盖前者,调用格式为:
$. extend (obj1,obj2,…objN);
参数obj1至objN表示需要合并的各个原有对象。
<body>
<div id="divtest">
<div class="title">
<span class="fl">合并原有对象</span>
</div>
<div class="content">
<div class="tip"></div>
</div>
</div>
<script type="text/javascript">
$(function () {
var objInfo = { name: "" };
var objMess = { name: "白富美,", title: "欢迎与我联系!" };
var objNewInfo =$.extend(objInfo,objMess);
var strTmp = "<b>对象 白富美 合并后</b>:<br/><br/>";
strTmp += objNewInfo.name + objInfo.title;
//显示在页面中
$(".tip").show().append(strTmp);
});
</script>
</body>
十二、在线聊天室实践
12.1 基本功能介绍
登陆后才能进入(基本信息的显示);
动态显示交流后的内容;
文字和表情的沟通实现(表情也是字符代号编码)
技术重点:ajax的无刷新技术展示数据
12.2 实现效果
利用jq中的ajax函数实现登陆,登陆时,显示登陆中,正确或失败,有相应的动作;
聊天室就是聊天内容区域,输入区域,人员显示区域
---------------------------------------------------
2、Linux完结篇
九、shell基础
9.1shell概述
--含义
就是其英文单词的意思——壳
是一个命令行解释器!——翻译依赖的是ASCII码,依赖它把命令翻译为二进制的,让内核能够解析命令。
也就是:用户写命令《--》shell解释翻译《--》内核
换言之,就是我们操作的界面。
但是,在linux特殊的在于,shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强。
是解释执行的脚本语言,在shell中可以直接调用linux命令。
--分类
当前一般两类:Bourne shell(linux用的就是其下的Bash)和C shell(Unix中的,与c语言相似)
绝大多数的命令是通用的(包括linux和unix),根本原因在于都用shell,版本有差别而已。
[ ~]# echo $SHELL
/bin/bash
这个命令可以看到当前的shell
--linux支持的
vi /etc/shells
打开一个文件
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
这些都支持
9.2 脚本执行方式
--echo命令
就是打印嘛。
但和php中不太一样的是,要输出换行的\n时候需要这样
[ ~]# echo -e "aldkjf\nadsf"
aldkjf
adsf
需要加选项-e。
linux本机中是无法支持中文字符,远程工具是可以的
[ ~]# echo -e "\e[1;31m嫁人就要嫁凤姐\e[0m"
嫁人就要嫁凤姐
上个例子:\e[1;31m是开启颜色显示,\e[0m结束
31是红色,一直到40好像是,自己试试吧
--脚本
vi hello.sh
#!/bin/bash
#The first program
echo -e "\e[1;34m 天下掉下个林妹妹 \e[0m"
要先写入bash的那句话,尽量避免报错。
然后#后面的一般都是注释
shell的好处就是可以直接输出
但,暂时还不能运行——
--执行
赋予权限,直接运行——chmod 755 hello.sh, ./hello.sh
或者,bash命令,bash hello.sh
应该说,最好还是用赋予权限然后(绝对路径)运行
9.3bash的基本功能
9.3.1 命令别名与快捷键
--
命令别名==人的小名/外号
[ ~]# alias
alias cp=‘cp -i‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
alias命令,可以查看别名。所以,我们设定别名也是上面的格式:alias cp=‘cp -i‘
alias 别名=‘原命令’
重启的话会失效,要想一直有效,要写入对应的环境变量配置文件
vi ~/.bashrc
[ ~]# vi /root/.bashrc
# .bashrc
# User specific aliases and functions
alias rm=‘rm -i‘
alias cp=‘cp -i‘
alias mv=‘mv -i‘
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
~
写入alias vi=‘vim‘即可
unalias 别名,就是删除别名。同样,命令行的是临时删除
另外,命令的执行顺序,别名是优先级别第二高的
路径+命令》别名》bash命令》目录中查到的第一条命令
即,别名比原名级别高,或者,避免重叠/重复,除非你的目的就是这个
--快捷键
ctrl+c 强制终止
+l 清屏
+a 移到命令行首(home)
+u 删除命令到行首
+e 跳到行尾(end)
+z 把命令放入后台(没有终止命令,少用)
+r 在历史命令中搜索
9.3.2 历史命令
上下箭头调用就好。
[ ~]# history
该命令会显示所有你/当前用户输入过的所有历史命令。所有的历史命令是保存在.bash_history文件中的
history -c 清空历史命令。一般来说,最好不要清空历史命令——查错,以及防贼
history !n 重复执行第n条命令
history !! 重复执行上一条命令
history !字符串 调用最后一个以该字符串开头的命令(常用)
9.3.3 输出重定向
--标准输入输出
键盘——/dev/stdin 文件描述符为0
显示器——/dev/sdtout 文件描述符为1
显示器——/dev/sdterr 文件描述符为2,类型是标准错误输出
背就背文件描述符就好了
--输出重定向
就是把原本应该标准输出的方向重新定向到文件(拐个弯)。
用处就是自动的记录等,有实际的用处,也常用。
比如
[ ~]# ifconfig > test.log
[ ~]# cat test.log
eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11069 errors:0 dropped:0 overruns:0 frame:0
TX packets:3521 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:798686 (779.9 KiB) TX bytes:447837 (437.3 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)
命令的执行,可能会是定时用户来做的。
[ ~]# ls > test.log
[ ~]# cat test.log
anaconda-ks.cfg
cangls
hello.sh
install.log
install.log.syslog
japan
test.log
单个>,会覆盖结果;双>>是追加
[ ~]# ifconfig >> test.log
[ ~]# cat test.log
anaconda-ks.cfg
cangls
hello.sh
install.log
install.log.syslog
japan
test.log
eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11238 errors:0 dropped:0 overruns:0 frame:0
TX packets:3586 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:811445 (792.4 KiB) TX bytes:455539 (444.8 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)
如果希望同时保存报错信息(犯2信息)
dateads 2>>test.log
另外注意,追加是有空格,错误输出是没有空格的2>>test.log
但是,最有用的是正确和错误都要
命令 >> 文件 2>&1
命令 &>> 文件 ——写到同一个文件
[ ~]#
[ ~]# ifconfig >> test2.log 2>&1
[ ~]# cat test2.log
eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11444 errors:0 dropped:0 overruns:0 frame:0
TX packets:3638 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:825629 (806.2 KiB) TX bytes:461351 (450.5 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)
[ ~]# ifconfig2 >> test2.log 2>&1
[ ~]# cat test2.log
eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11444 errors:0 dropped:0 overruns:0 frame:0
TX packets:3638 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:825629 (806.2 KiB) TX bytes:461351 (450.5 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)
-bash: ifconfig2: command not found
命令>>文件1 2>>文件2 ——分开保存
这三个操作是这一块需要记下来的!
--输入重定向
wc命令
[ ~]# wc
sadklfjkla
asdlkfjl
asdf^[[3~asdlfj
asdf
4 4 40
统计了你输入的字符长度。
很少用,大概了解下
命令<文件
命令<<文件
9.3.4 管道符
--多命令顺序执行
; 命令1;命令2 多个命令无逻辑关系按顺序执行
&& 逻辑与,其他一样——1成功,2才执行
|| 或——1或2只执行一个
[ ~]# ls ; ifconfig
anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12241 errors:0 dropped:0 overruns:0 frame:0
TX packets:3901 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:884175 (863.4 KiB) TX bytes:489889 (478.4 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)
[ ~]# ls && ifconfig
anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
eth0 Link encap:Ethernet HWaddr 00:0C:29:61:EB:6B
inet addr:192.168.23.50 Bcast:192.168.23.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe61:eb6b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12289 errors:0 dropped:0 overruns:0 frame:0
TX packets:3926 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:887929 (867.1 KiB) TX bytes:493627 (482.0 KiB)
Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:20 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1532 (1.4 KiB) TX bytes:1532 (1.4 KiB)
[ ~]# ls || config
anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
当然,;可以顺序执行很多命令
[ ~]# ls ; ifconfig ; cd ;history
再看第二个
[ ~]# ls && echo "yes"
anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
yes
适用于具有(简单)逻辑关系的情况,比如LAMP安装
简单的实现判断命令是否正确
[ ~]# ls && echo yes || echo no
anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
yes
--管道符
|
也是多命令顺序执行。区别在于,命令一的正确输出作为命令2的操作对象
[ ~]# ls -l /etc | more
所以,相应来说,管道符的命令要更加严格一点
[ ~]# netstat -an | grep ESTABLISHED | wc -l
1
这个是以后常用的服务器的命令
9.3.5 通配符
--
可以匹配其他字符的符号
? * [] [a-z] [^0-9]
真的就类似正则表达式中的东西。
用法
[ ~]# ls ja*
anaconda-ks.cfg cangls juls
[ ~]# ls japan
anaconda-ks.cfg cangls juls
主要用来匹配文件名或者目录的东西;要匹配文件中的内容,就真的用正则表达式了
--特殊
$变量,取变量的值
‘’ 单引号中所有的特殊符号($`反引号)都没有意义;“”,特殊字符中的\ ` $有含义
$(),用来引用系统命令,和反引号一样,但推荐使用这个
[ ~]# aa=$(ls)
[ ~]# $aa
-bash: anaconda-ks.cfg: command not found
[ ~]# echo $aa
anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
[ ~]# echo ‘$aa‘
$aa
[ ~]# echo "$aa"
anaconda-ks.cfg
cangls
hello.sh
install.log
install.log.syslog
japan
test2.log
test3.log
test.log
不就是抽个血吗,至于么-jQuery,Linux完结篇