创建日期:2016/02/29 更新日期:2016/02/29 shell变量赋值时不能在等号两边留空白,否则shell会把变量名误认为是命令名 双引号括起来的变量可以进行替换(用*和?这样的文件名匹配元字符做扩展)和变量扩展,单引号则不会处理变量. 左引号’,它处理机制和双引号类似,即能够把字符串的内容按一条shell命令来执行,然后用输出来替换这个字符串. cut:把行分成域,默认限定符为tab,可以用-d选项来改变这个限定符,-f选项指定输出包含哪些域. bash +x:在执行某条命令之前…
1. 管道和重定向 (i) 要让第二条命令只有在第一条命令成功完成之后才执行,可以用一个 && 符号把两条命令隔开.例如: $ > /dev/null && cd /usr/local/dir-name 该命令表示先 ls /usr/local/ 目录下的 dir-name 文件夹,如果存在这个文件夹,就执行 cd /usr/local/dir-name 命令进入这个文件夹:如果不存在这个目录,则不执行 cd 命令. ' 2 > /dev/null ' 命令表示…
1. 一个简单的例子: $ vim readname.sh #file:readname.sh#!/bin/bash echo -n "Enter your name: " read user_name if [ -n "$user_name" ] ; then echo "Hello $user_name!" exit else echo "You did not tell me your name..." exit fi…
复杂的数据结构和计算不是 bash 的特长.但它的确至少提供了数组和算术运算. 1.算术运算 所有的 bash 变量的值都是字符串,所以 bash 在赋值的时候并不区分数字 1 和 字符串 "1" .不同之处在于如何使用变量.下面几行代码展示出了其中的差异: #!/bin/bash a= b=$(()) c=$a+$b d=$(($a+$b)) echo "$a + $b = $c \t(plus sign as string literal)" echo &quo…
 “为什么说Unix/Linux是自由的:         因为我们可以自己组装一个操作系统:Unix/Linux内核+其他实用工具+编程工具+GUI         因为我们可以自由地获取开源工作者们分享的各种自由软件         因为我们可以自由地修改.再发行自由软件,促进软件的完善         因为我们可以自由管理自己的电脑:通过群组与用户来管理电脑的使用者:通过文件系统.属性.权限来限制使用:通过查阅.编辑各种配置文件对电脑的各个部位了如指掌.指挥自如:通过shell scrip…
1:全局变量与局部变量 全局:可以从父进程传递给子进程的变量,如:环境变量. 局部:只能在特定的子Shell中使用的变量. 局部变量变全局:使用 “export 局部” 指令将创建的局部变量导出到环境,成为全局变量. 2:查看环境变量 env printenv 3:查看所有变量及其值 set 4:打印某个变量 echo $变量 5:删除变量 unset 变量名 6:shell选项的开启与关闭 set -o 选项 :开启选项 set +o 选项 :关闭选项 7:转义 \元字符 :将元字符作为一个普…
6.1/etc/passwd文件 用户登录时Linux识别用户的文件/etc/passwd /etc/passwd包括7个字段: 登录名(不超过32位,使用NIS系统后不超过8位) 经过加密的口令或口令占位符(大多数实际放在/etc/shadow文件中,默认采用MD5加密(加密后34位),SUSE中采用Blowfish,通过passwd命令设置) UID(用户ID)号(32位无符号数,建议限制为32767内,root的UID为0,让多个账号UID为0会产生潜在安全漏洞,LDAP是一种流行的UID…
1:Unix文件类型——3种 普通文件(常规文件):文本文件(纯文本.脚本.源程序.配置文件.html等).二进制文件(多媒体文件.数据库等) 目录:用于组织文件 伪文件:不存储数据,目的是提供一种服务.分三种: 特殊文件:设备驱动.物理设备的文件表示(键盘.显示器之类)等 命名管道:将一个程序的输出 定向到 另一个程序的输入 proc文件:用于访问内核信息 2:特殊文件 特殊文件是用于表示物理设备的伪文件,位于 /dev 目录下. 这些特殊文件主要分三组:硬件.终端.伪设备. 3:特殊文件 硬…
1:指令的本质——调用可执行程序 在Shell输入命令时,其实就是根据名称运行相应的程序. 2:在系统中查找程序 which 指令名 type 指令名 3:时间与日历 date [-选项] 参数 cal [-选项] 参数 4:查看系统信息 uptime :查看系统已运行多久 hostname:主机名 uname:操作系统名 5:查看自己的信息 whoami 6:查看其他用户信息 users:显示当前所有登录用户的标识 who:显示当前登录的终端名称.用户标识.登录时间.远程主机名 w :显示 谁…
1:进程:一个内存中的程序+程序所需数据+管理程序的各种状态信息. 2:进程由内核进行管理,内核使用调度器,给予进程一个时间片来运行,然后切换到下一个进程. 3:进程分叉 fork :创建一个子进程 wait :强制进程暂停,等等另一个进程执行完毕 exec :改变当前进程执行的程序(在当前进程启动一个程序) exit :终止当前进程 kill :杀死一个进程 4:区分父进程or子进程 父进程调用fork返回子进程的进程ID: 子进程调用fork返回0. 5:系统进程的源头——init进程 在系…
1:标准IO Unix中的标准IO主要包括:标准输入.标准输出(正常输出).标准错误(异常信息) 2:重定向输出 内容 > 文件名 :将内容输出到文件,并且覆盖文件原来内容:文件不存在则新建 内容 >> 文件名:将内容追加到文件末尾 3:重定向输入 指令 < 文件名 :从文件中读取数据给指令处理 4:管道线 一个程序的标准输出能自动作为下一个程序的标准输入. 指令1 | 指令2 :指令1的输出作为指令2的输入 5:组合输出 tee 文件名:从标准输入读取数据,并向标准输出和文件发送…
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例: $ man ls 查看ls命令的帮助信息 $ man services 查看配置文件services的帮助信息 man 1 默认命令 5配置文件 二: 指令名称:info 指令英文原义:information 指令所在路径:/usr/bin/info 执行权限:All User 语法:i…
注:转自 Hbase技术详细学习笔记 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的理解,对相关知识点做了笔记,并在组内进行了Hbase相关技术的分享,由于Hbase涵盖的内容比较多,因此计划分享2期,下面就是针对第一期Hbase技术分享整体而成,第一期的主要内容如下: 一.Hbase介绍 二.Hbase的Region介绍 三.Hbase的写逻辑介绍 四.Hbase的故障恢复 五.Hbase的拆分和合并 如下ppt所示:…
Table of Contents 1 概论 1.1 procfs (/proc 文件系统) 1.1.1 编程接口 1.2 sysctl (/proc/sys目录) 1.2.1 编程接口 1.3 sysfs (/sys 文件系统) 1.4 ioctl 系统调用 1.5 netlink 套接字 概论 procfs (/proc 文件系统) 允许内核以文件的形式向用户空间输出内部信息. 可以通过cat, more和> shell重定向进行查看与写入. 编程接口 内核proc文件系统与seq接口(1)…
本文基于unix环境高级编程的学习的笔记,写的比较简如有不对,欢迎指点. 简单的描述下面函数的功能改变ctr+c信号原本的作用终止程序,在按下中断键的时候输出一句话. while循环主要读取用户的输入,根据用户的输入解析输入的命令之后调用exec函数执行命令 #include "apue.h" #include <sys/wait.h> void sig_int(int signo) { printf("interrup\r\n"); } int mai…
1.socket套接字: socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作.Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭).     说白了Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族…
2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟机和linux系统安装好之后,我们需要安装,配置,启动FTP,SSH,NFS服务,具体操作如下: 第一次使用apt-get来安装程序之前,先要完成两件事:1.修改/etc/apt/sources.list,将其中注释掉的网址打开(需要root权限才能操作)2.更新可用的程序列表 : sudo apt…
一.Linux的登陆流程 login: 用户名:每个用户名都有一个用户ID(用户标识符),计算机处理的就是用户ID(数字)而不是用户名(字符),. 认证机制:Authentication,比如密码或者其他生物识别技术 授权:Authorization,资源访问的权限授权.但是授权不代表权限可以滥用,因此需要审计. 审计:Audition(通过日志). 登陆成功后,进入prompt,命令提示符界面,因此需要输入命令来执行程序.这些命令既可以是二进制程序也可以是脚本文件.对于内核而言,严格区分两者不…
一.shell概述 shell根据ascII表,将命令翻译为0101...传给内核执行. 内核->shell翻译为命令->用户(操作的界面就是shell,shell=翻译官) linux标准shell是bash unix(C族)用的更多的是csh echo $SHELL //$调用变量名 #/bin/bash vi /etc/shells $sh //从bash->进入->sh #exit退出 csh //进入csh 一个shell可以调用其他shell(如bash->调用s…
一.shell概念 shell是一个命令行解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至编写一些程序. shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.shell是解释执行的脚本语言,在shell中可以直接调用系统命令. 二.shell的分类 shell的两种主要语法类型有Bourne 和 C,这两种语言不兼容 1.Bourne家族包括:sh.ksh.Bash.psh 2.C家族主要包括:chs.t…
Shell 运算符分类 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 算数运算符 首先,使用 shell 算数运算符是,需要将其转化成表达式:例如 #!/bin/bash val=` + ` echo "两数之和为 : $val" 注意使用的是反引号 ` (ESC下面那个按键) 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样. 下表列出了常用的算术运…
1.正则表达式 1)^开始 *前一个字符重复0次以上 + 1次以上 ? 0次或者1次 . 一个任意字符(.*连用) {m,n} m到n次 [0-9][a-z] 任意数字或字母 $结束字符 2)sed和awk命令 sed '匹配条件/执行的动作' /etc/passwd sed 's/old/new/g' awk -F: '{print $1}' /etc/passwd 1表示第一列,2表示第二列 -F:表示分隔符为: 2.变量 1)环境变量 系统环境变量(/etc/profile) 用户环境变量…
基本语法 funname () { action; return -)):如果不加,将以最后一条命令运行结果,作为返回值. } 示例1:定义并调用无返回值的函数 #!/bin/bash a= b= c=`expr $a + $b` demofunc(){ echo "a+b=${c}" } demofunc --- output: a+b= 示例2: 定义并调用有返回值的函数 #!/bin/bash a= b= demofunc(){ c=`expr $a + $b` return $…
if 语句 语法: #!/bin/bash a= b= if [ $a -eq $b ] then echo "a 等于 b" elif [ $a -gt $b ] then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "没有符合的条件" fi output: a 小于 b 举例: if [condition] then ... else if […
1. echo 命令 echo 是基本的shell输出命令,她的语法是: echo string 我们也可以使用她来定制一些输出的格式,具体如下: 输出普通字符串 echo "it is a echo string here!" PS: 引号可以省略. 显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 #!/bin/sh read name echo "$name It is a test" 以上代码保存为 test.s…
定义 在Shell的世界里,我们只能定义一维数组. 定义数组的时候不需要指定长度,数组的下标从0开始; Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: shell_array=(value1 ... valuen) 举个栗子: #!/bin/bash # 第一种定义方式 my_array=("a" b "c" d) echo "${my_array[0]}" echo "${my_array[…
定义变量 语法: 变量名=值 myVal= 需要注意一下变量明德规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 使用变量 使用一个定义过的变量,只要在变量名前面加"$"符号,如: your_name="Bob" echo $your_name echo ${your_name} 定义只读变量 使用 readonly 命令可以将变量定义为只读变量…
虚拟存储器 虚拟存储器是硬件异常.硬件地址翻译.主存.磁盘文件和内核软件的完美交互. 虚拟存储器的特点: 中心的 强大的 危险的 物理和虚拟寻址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数据 每个字节都有一个唯一的物理地址 第一个字节的地址为0,接下来的抵制依次+1 这种方式称为物理寻址 虚拟寻址时,CPU通过生成一个虚拟地址来访问主存,该地址被送到存储器之前先转换成适当的物理地址.该任务叫做地址翻译. 地址需要CPU硬件和操作系统之间紧密合作 存储器管理单元(在CPU上)利…
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周学习的内容主要是讨论可执行文件,最开始讲解了可执行文件是怎么得来的,也就是上个学期娄老师教我们的四步,预处理,编译成汇编指令,变成二进制代码,最后执行可执行文件.然后讲解了可执行文件的演变,从最开始的a.out文件,演变成ELF文件,然后讲解了如何装载可执行文件.也就是这周的实验内容,先用test_execv.c覆盖tect.…