1.linux系统中配置文件执行顺序

  1)用户登录系统,首页调用/etc/profile文件初始化所有bash用户的默认特征

2)然后shell依次查找~/.bash_profile,~/.bash_login,~/.profile,并执行它找到的首个文件中的命令;这些配置可以覆盖掉

    上述中配置文件的内容

  3)  通常可以在上述配置文件中添加一些用户配置,比如环境变量,定义一些函数,以及为一些常用命令重命名,非常方便

2.在当前shell中使用运行初始化文件

  .号在bash下可以使配置文件快速生效。

    eg:. ~/.bash_profile

source 命令通用

    eg:source ~/.bash_profile,source /etc/profile

3.符号命令

  3.1. $()命令

命令替换,可以使用该命令将一个命令的执行结果赋给一个变量

    eg:

    #!/bin/bash

     #统计当前目录下有多少个文件

    count=$(ls | wc -l)

    echo "\$count $count"

  3.2.(())

算术命令,()中要求包含=号

    eg:

      #!/bin/bash

      n=2

      m=3

      ((l=$m+$n)) #结果是5

      p=$m+$n #结果是2+3

      p=(($m+$n))#报异常

  3.3.$(())

    类似(())命令,但是要求()中不包含=号

      #!/bin/bash

      n=2

      m=3

      l=$(($m+$n)) #结果是5

  3.4.[]

    与test功能一样

4.重定向标准输出

  4.1.文件描述符

    文件描述符是程序发送输出和接收输入的地方。当运行一个程序的时候,会打开3个文件描述符。分别是:0(标准输入),1(标准输出),2(标准错误输出)

    重定向输出符号>是1>的简写;类似的重定向输入符号<是0<的简写

  4.2.复制文件描述符

    &加上文件描述符

    locktty > out 2> &1  #标准输出和标准错误输出都重定向到out文件

5.命令分隔和分组

  5.1.使用;分隔命令

    $ x;y;z;

  5.2.使用\继续命令

    当输入一个比较长到的命令时,光标已经达到屏幕右端,可以输入一个\换行

$ grep aaaaa | cut -d : -f 3 | cut -d ; -f \

    $ | awk '{print $1}'

  5.3.|和&符号功能

    |管道符号,改变命令的输入和输出;

    $ grep error out.log | cut -d ; -f 3

    &使程序或者命令在后台执行,使用户可以继续进行当前的工作

    $ cal.sh &

6.作业控制

  6.1. jobs列出作业

  6.2. fg将作业移到前台执行

     $ fg n #n是作业编号

  6.3. bg将作业移到后台执行

     将某个作业移到后台执行,必须先按下CTRL+Z键将作业挂起。然后再使用bg命令将作业在后台执行

    

7.操作目录栈

  目录栈是用栈的形式来存放目录(FILO)

  7.1. dirs显示目录栈

  7.2. pushd命令使用

    将目录压栈,并且使当前目录切换到要入栈的目录

    $ pushd /home/my

    ~ /home/my

    $ pwd  #显示/home/my目录

       输入pushd命令,可使当前路径在栈顶的两个目录之间进行切换

    pushd +n #n是要切换到的目录相对于栈顶位置的偏移(栈顶位置是0)

    pushd +3 #切换到距离栈顶3个位置的目录

  7.3. popd命令使用

     使目录弹出栈,不在栈中保存。用法类似于pushd

8.参数和变量

  8.1.变量分类

    8.1.1 用户变量

        $ name=minmin

        $ echo $name #显示minmin

       使用unset删除用户变量

        $ unset name

    8.1.2 关键字变量即系统变量

       HOME:用户主目录

       ~:用户主目录

       PATH:shell查找程序执行的路径

       MAIL:保存邮件的地方

       IFS:分隔输入字段

          指定了在命令行中用来分隔参数的字符,其默认值为空格,制表符和换行符。但无论IFS的值是什么,用户总是可以使用空格符和制表符来分隔参数

          当为IFS指派字符值得时候,这些字符值也可以作为分隔字段,但是只有在进行展开的时候才可以这样

          eg:

       PS1:用户主提示符

          

         \u 当前用户名

               \h 主机名,不包括域名

          \H 主机名,包括域名

          \w 工作目录的路径名

          \W 工作目录的基名

            \!   当前事件编号

          \d  按照工作日/月/日期格式显示的日期

          \@  按照12小时制,AM/PM的格式显示当前时间

          \T   按照12小时制,HH:MM:SS的格式显示当前时间

          \A   按照24小时制,HH:MM的格式显示当前时间

          \t    按照24小时制,HH:MM:SS的格式显示当前时间

PS2:用户次提示符

          

        PS3:菜单提示符

          PS3保存了用于select控制结构的菜单提示符

        PS4:调试提示符

          bash -x 开启调试模式

PS4保存了程序调试时提示符

        

    8.1.3. 位置参数跟变量

       有一组参数的名字看起来不像变量,其中大多数参数的名字都是由一个字符组成,比如1,?,#,并且像其他变量一样,使用美元符号进行访问$1,$?,$#。

       详细内容在第三弹中展开

  8.2. 变量属性

    8.2.1. readonly使变量只读

       $ readonly name=minmin

       $ name=lily

       bash: name : readonly variable

            当不带任何参数使用readonly命令时,会显示所有只读变量列表

  8.3. declare和typeset:为变量赋予属性

    这两个命令是同一个命令的两个名字,可用设置shell变量的属性和值,属性列表如下

    -a   声明一个数组变量(array)

    -f   声明一个函数变量(function)

    -i   声明一个整形变量(integer)

    -r  声明一个只读变量(readonly)

    -x  声明一个全局变量(export)

9.命令历史机制,这里只介绍history命令,fc命令不在此介绍

9.1. 首先介绍三个系统变量

HISTSIZE 会话期间保存的历史命令的条数

       即在用户登录之后,保存用户最近执行命令条数。默认值为500

    HISTFILESIZE 会话之间保存的历史命令的条数

       即在用户注销会话之后,再次登录会话时,保存的上次登录时最近执行命令的条数。默认值为500

    HISTFILE 历史文件的位置

执行history命令时显示HISTSIZE条命令

9.2. 常用快捷键

      !!执行前一次的命令

      !#执行当前命令

      !n 执行历史编号为n的命令

      !-n往前第n条命令

      !string执行最近以string开头的命令

      !?string[?]包含string的最近命令行,最后的?是可选的

      !{event} event为一个事件标志符;花括号将event与左右的文本分隔开,比如!{-3}3表示后面紧跟着3的第三个最近执行的命令

10.命令执行顺序

    10.1 &&

      command1 && command2 只有当command1执行成功的时候(即命令结果返回1)才会执行command2

    10.2 ||

      command2 || command2 只有当command1执行失败的时候(即命令结果返回0)才会执行command2

    10.3 ()

      如果想执行多个命令,则需要使用命令分隔符对命令进行分割,然后用括号括起来

      (command1;command2;command3)

shell学习第二弹-进阶的更多相关文章

  1. 前端学习 第二弹: JavaScript中的一些函数与对象(1)

    前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...

  2. Python3 学习第二弹: 字符串String

    字符串表示问题 常见用法 '' 与 "" 就不提了 一些特殊用法 三引号:接收多行字符串的输入 >>>print('''Oh my God!''') Oh my ...

  3. Java高精度学习第二弹——求N!

    继续学习Java高精度,今天写的是求N!. 首先附上源代码: import java.util.Scanner; import java.math.BigInteger; public class M ...

  4. ActiveMQ 学习第二弹

    经历了昨天的初识 ActiveMQ,正好今天下班有点事耽搁了还没法回家,那就再学习会 ActiveMQ 吧!现在官网的文档没啥好看的了,毕竟是入门学习,太深奥的东西也理解不了.然后看官网上有推荐书籍& ...

  5. shell学习第一弹-初识

    1.shell简介: shell是系统的用户界面,提供了用户与内核进行交互的一种接口.可以看做是用户与内核之间的一扇窗户.它接收用户输入的命令并把它送入内核执行. 常见的有bash,tcsh,csh, ...

  6. Vue-Router学习第二弹动态路由\懒加载\嵌套路由

    在我们做项目时肯定会有出现动态路由: 举个栗子: 一个品种的商品页面会有同类不同样的商品就要在路由的后面加一个id: Vue的路由id是这样添加的: 两种动态路由 一种是params参数添加: 首先现 ...

  7. cookbook学习第二弹

    1.5怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素 带有双下划线的方法,会在需要被调用的位置自动被调用 带有单下划线的变量是私有变量 下面利用类heap ...

  8. css学习の第二弹—文字格式化排版

    1.css格式化排版 >>字体设计: etc:body{font-family:"Microsoft Yahei";} >>字号,颜色: etc:body{ ...

  9. html学习第二弹の表格的使用方法

    >创建表格的四个元素: table.tbody.tr.th.td 1.<table>-</table>:整个表格以<table>标记开始.</table ...

随机推荐

  1. jQuery默认select选择第一个元素

    $("#id option:first").prop("selected", 'selected');

  2. apply,call,bind区别

    js中有三个改变this指针的方法,分别是 apply,call,bind.很多人只知道能改变的this,但是具体的适用场景不是太清楚.我也是遇到坑后不断的实践发现了区别. call ,apply方法 ...

  3. CSS学习笔记之基本介绍

    1.简介 层叠样式表(Cascading Style Sheets,CSS)允许我们把样式设置存储在文件中,从而将内容与表现分离 当同一个 HTML 元素被不只一个样式定义时,最终的样式确定顺序如下( ...

  4. 【ACM】hdu_1106_排序_201308071928

    排序Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...

  5. oracle BBED 直接改动数据库block块

    1.BBED配置 1)将相应文件放到$ORACLE_HOME/rdbms/mesg和$ORACLE_HOME/rdbms/lib中:     --将lib中bbedus.msb和bbedus.msg ...

  6. POJ 1175

    //本来写了个和1021相同的HASH,但没过,于是,抱着侥幸的心理,把它变成距离的四次方, //我就呵呵了... //这个题,完全靠概率.当然了,如果是把图翻转来比较,也是可以的.但好像很麻烦.. ...

  7. Unity3D与JSP TomCatserver传递数据和文件( 二 ) Unity3D向java传输表单

    扫码关注微信公众号,获取最新资源 经历了一天的工作.我又来更新啦...白天手欠,把上一个给删了.明天重写吧.. 废话不多说.我们先去Unity里创建一个能够输入username和password的登录 ...

  8. ios设计一部WindowsPhone手机

    ios设计一部WindowsPhone手机 main.m #import <Foundation/Foundation.h> #import "WindowsPhone.h&qu ...

  9. C++关键知识

    <精通MFC>第一章节整理复习 //c++编程技术要点 /* //1.虚函数及多态的实现 //演示多态技术 #include <iostream> using namespac ...

  10. zoj3886--Nico Number(素数筛+线段树)

    Nico Number Time Limit: 2 Seconds      Memory Limit: 262144 KB Kousaka Honoka and Minami Kotori are ...