zoukankan      html  css  js  c++  java
  • 不就是抽个血吗,至于么-jQuery,Linux完结篇

      hi

    趁着周一去抽血化验,真开心。。。下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话。。。。。至于么。。

     还有在教研室的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="#">白富美</a></h3>
    <p>咱们结婚吧!</p>
    <h3>
    <a href="#">土豪族</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="#tabs-1">最爱吃的水果</a></li>
    <li><a href="#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" //通过移动鼠标事件切换选项卡
    })
    });
    </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="删除" 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="#">小明一中</a>
    <ul>
    <li><a href="#">高中部</a>
    <ul>
    <li><a href="#">高一(1)班</a></li>
    <li><a href="#">高一(2)班</a></li>
    <li><a href="#">高一(3)班</a>
    <ul>
    <li><a href="#">小胡</a></li>
    <li><a href="#">小李</a></li>
    <li><a href="#">小陈</a></li>
    </ul>
    </li>
    </ul>
    </li>
    <li><a href="#">初中部</a>
    <ul>
    <li><a href="#">初一(1)班</a></li>
    <li><a href="#">初一(2)班</a></li>
    <li><a href="#">初一(3)班</a></li>
    </ul>
    </li>
    <li><a href="#">教研部</a></li>
    </ul>
    </li>
    <li class="ui-state-disabled"><a href="#">大明二中</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,
    //设置微调按钮递增/递减事件
    spin: function (event, ui) {
    if (ui.value == 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="计算" />
    </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="计算" />
    </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,版本有差别而已。

    [root@andy ~]# 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中不太一样的是,要输出换行的 时候需要这样

    [root@andy ~]# echo -e "aldkjf adsf"
    aldkjf
    adsf

    需要加选项-e。

    linux本机中是无法支持中文字符,远程工具是可以的

    [root@andy ~]# 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 命令别名与快捷键

    --

    命令别名==人的小名/外号

    [root@andy ~]# 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

    [root@andy ~]# 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 历史命令

    上下箭头调用就好。

    [root@andy ~]# history

    该命令会显示所有你/当前用户输入过的所有历史命令。所有的历史命令是保存在.bash_history文件中的

    history -c 清空历史命令。一般来说,最好不要清空历史命令——查错,以及防贼

    history !n 重复执行第n条命令

    history !! 重复执行上一条命令

    history !字符串 调用最后一个以该字符串开头的命令(常用)

    9.3.3 输出重定向

    --标准输入输出

    键盘——/dev/stdin 文件描述符为0

    显示器——/dev/sdtout 文件描述符为1

    显示器——/dev/sdterr 文件描述符为2,类型是标准错误输出

    背就背文件描述符就好了

    --输出重定向

    就是把原本应该标准输出的方向重新定向到文件(拐个弯)。

    用处就是自动的记录等,有实际的用处,也常用。

    比如

    [root@andy ~]# ifconfig > test.log
    [root@andy ~]# 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)

    命令的执行,可能会是定时用户来做的。

    [root@andy ~]# ls > test.log
    [root@andy ~]# cat test.log
    anaconda-ks.cfg
    cangls
    hello.sh
    install.log
    install.log.syslog
    japan
    test.log

    单个>,会覆盖结果;双>>是追加

    [root@andy ~]# ifconfig >> test.log
    [root@andy ~]# 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  

    命令 &>> 文件  ——写到同一个文件

    [root@andy ~]#
    [root@andy ~]# ifconfig >> test2.log 2>&1
    [root@andy ~]# 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)

    [root@andy ~]# ifconfig2 >> test2.log 2>&1
    [root@andy ~]# 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命令

    [root@andy ~]# wc
    sadklfjkla
    asdlkfjl
    asdf^[[3~asdlfj
    asdf
    4 4 40

    统计了你输入的字符长度。

     很少用,大概了解下

    命令<文件

    命令<<文件

    9.3.4 管道符

     --多命令顺序执行

    ; 命令1;命令2 多个命令无逻辑关系按顺序执行

    && 逻辑与,其他一样——1成功,2才执行

    ||   或——1或2只执行一个

    [root@andy ~]# 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)

    [root@andy ~]# 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)

    [root@andy ~]# ls || config
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log

    当然,;可以顺序执行很多命令

    [root@andy ~]# ls ; ifconfig ; cd ;history

    再看第二个

    [root@andy ~]# ls && echo "yes"
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    yes

    适用于具有(简单)逻辑关系的情况,比如LAMP安装

    简单的实现判断命令是否正确

    [root@andy ~]# 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的操作对象

    [root@andy ~]# ls -l /etc | more

    所以,相应来说,管道符的命令要更加严格一点

    [root@andy ~]# netstat -an | grep ESTABLISHED | wc -l
    1

    这个是以后常用的服务器的命令

    9.3.5 通配符

    --

    可以匹配其他字符的符号

    ? * [] [a-z] [^0-9]

    真的就类似正则表达式中的东西。

    用法

    [root@andy ~]# ls ja*
    anaconda-ks.cfg cangls juls
    [root@andy ~]# ls japan
    anaconda-ks.cfg cangls juls

    主要用来匹配文件名或者目录的东西;要匹配文件中的内容,就真的用正则表达式了

    --特殊

    $变量,取变量的值

    ‘’ 单引号中所有的特殊符号($`反引号)都没有意义;“”,特殊字符中的 ` $有含义

    $(),用来引用系统命令,和反引号一样,但推荐使用这个

    [root@andy ~]# aa=$(ls)
    [root@andy ~]# $aa
    -bash: anaconda-ks.cfg: command not found
    [root@andy ~]# echo $aa
    anaconda-ks.cfg cangls hello.sh install.log install.log.syslog japan test2.log test3.log test.log
    [root@andy ~]# echo '$aa'
    $aa
    [root@andy ~]# echo "$aa"
    anaconda-ks.cfg
    cangls
    hello.sh
    install.log
    install.log.syslog
    japan
    test2.log
    test3.log
    test.log

  • 相关阅读:
    vue中的 computed 和 watch 的区别
    mysql8.0 初始化数据库及表名大小写问题
    sql server alwayson 调整数据文件路径
    zabbix 自定义监控 SQL Server
    mysql 创建用户及授权
    mysql 设置从库只读模式
    mysql8.0 主从复制安装及配置
    centos8.0安装mysql8.0
    centos8替换阿里数据源
    npm publish 报错 【you or one of your dependencies are requesting a package version that is forbidden by your security policy】
  • 原文地址:https://www.cnblogs.com/andy1202go/p/5006484.html
Copyright © 2011-2022 走看看