locate filename 搜索文件

将当前用户目录下的文件清单输出到文件list1.txt(当前用户目录下)中、
ls -l > list1.txt

利用管道命令将根(/)下所有修改日期在4月24日的文件清单输出到list2.txt(当前用户目录下)。
ls / -l
ls / -l | grep '4月 24' > list2.txt

将文件list1.txt与文件list2.txt合并,输出到list.txt。
cat list1.txt list2.txt > list.txt

利用nano编写Linux脚本程序sum.sh,其功能如下:
请求用户输入正整型数n
判断n的值,若n小于或等于0,则输出错误信息
<当前时间> Input Error! n = <输入的n的值>
追加到error.log,并以5号错误代码退出脚本。
若输入有效,则计算从1到n的所有整数的和,输出到sum.r。

执行方式
(1) bash script-name或者sh script-name
(2) path/script-name或者./script-name

注意:
(1)在Shell中如果一行的第一个字母是#,则是注释,但是上面两个是写在第一行,所以不是脚本注释行,如果写在某个命令之后,则变成注释行。
(2)sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。

#!/bin/bash 注释
read -p "input" n 输入
echo "n is $n" >> ./out.txt 输出到文件
echo "n is $n" 输出到控制台

------------------------------------------------------------------------------
两条命令一起运行,输在同一行,用;隔开。最大不超过255字符
date显示时间
who显示当前登录到该系统的用户

脚本第一行#!/bin/bash/
除第一行第一个字符外,可以用#表示注释

运行
./test1
没有权限
创建文件时,umask值为默认权限设置 022,系统以只读和只写权限创建该文件
用chmod u+x test1修改权限
chmod 777 a
./a
此法 shell储存文件a没有后缀名

显示消息
echo ok 在字符串不含引号时可不用引号
echo 'ok'
echo "ok" 可用双引号、单引号
用上面的会自动换行,若不换行,加参数-n
echo -n "ok"
需要用引号包围字符串,同时确保该字符串末尾有个空格(好像不用?)

使用变量

环境变量
$USER
$UID
$HOME
只能大写

用户变量
不超过20字符,区分大小写
变量、等号、变量值之间不允许有空格
通过$引用
被赋值不用$,赋值需要
a=$b

反引号
允许将整个命令的输出赋值给变量
testing=`date`
用反引号捕获当前日期,并用它在脚本中创建唯一的文件名
#!/bin/bash
today=`data +%y%m%d` #加号左边必须有空格,右边没有。用反引号
ls /bin -al > log.%today

输出重定向
date > test.txt 若文件存在,覆盖
date >> test.txt 附加

输入重定向
command < inputfile
wc命令
wc < test6
默认生成3个值
文本行数
文本单词数
’文本字节数

sort命令

数学计算
aa=4
bb=`expr $aa + $aa0` #反引号
echo "$bb"

使用括号
var1=$[1 + 5]

bash shell只支持整数算法
关于浮点小数 P142、143

退出脚本
退出状态0~~255,成功0
退出状态表P145
默认以shell脚本最后一条命令的退出状态退出
可以改为自己的退出状态代码
exit 5
exit $var3

if - then 语句
if 语句命令返回的退出状态为0,就会执行then后面的语句;非0,跳过。

if command
then
commends
fi

if date
then
echo "it worked"
fi

if command; then #在command末尾加分号
commands
fi

if-then-else语句
if command
then
commands
else
commands
fi

elif
if command
then
commands
elif command
then
commands
fi

test命令
if test condition
then
commands
fi

if [ condition ]
then
conditions
fi
方括号前后要加空格

数值比较
n1 -eq n1 ==
-ge >=
-gt >
-le <=
-lt <
-ne !=
要注意的是 [ ] 中引用变量需要 $

字符串比较
str1 = str2
str1 != str2
str1 < str2
str1 > str2
-n str1 检查str1的长度是否大于0
-z str1 检查str1的长度是否为0

if [ $USER = $testuser ]
if [ $val1 > $val2 ]
if [ $val1 \> $val2 ]
if [ -n $val ]
if [ -z $val ]

文件比较 P155
-d -e -f ................

复合条件检查
[ condition_1 ] && [ condition_2 ]
[ condition_1 ] || [ condition_2 ]

if then高级特征
双圆括号 P162
(( expression ))
(( val2=$val1 ** 2 )) #取幂

双方括号 P162
[[ expression ]] 提供模式匹配
正则表达式......

case p163

1. 利用nano编写Linux脚本程序sum.sh,其功能如下:
请求用户输入正整型数n
判断n的值,若n小于或等于0,则输出错误信息
<当前时间> Input Error! n = <输入的n的值>
追加到error.log,并以5号错误代码退出脚本。
若输入有效,则计算从1到n的所有整数的和,输出到sum.r。

#!/bin/bash

touch error.log
touch sum.r

read -p "请输入正整数:" n
if [ "$n" -le 0 ]
then
echo "$(date) Input Error! n=$n" >> error.log
exit 5
else
sum=0
while [ "$n" -gt 0 ]
do
sum=$[ $sum + $n ]
n=$[ $n - 1 ]
done
echo "从1到n的和为:$sum" >> sum.r
fi

用 bash sum.sh运行
用 echo $?可以获得exit返回的值

操作系统 Linux ex2 note的更多相关文章

  1. 操作系统 Linux ex1 note

    ctrl + alt + T 命令行 ctrl + alt + F7 ctrl + alt + F1-6 ls 列出所有文件 / 根目录 ~ /home/username cd 切换路径 . 当前目录 ...

  2. 一篇文章带你了解服务器操作系统——Linux简单入门

    一篇文章带你了解服务器操作系统--Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等 ...

  3. 内核操作系统Linux内核变迁杂谈——感知市场的力量

    本篇文章个人在青岛游玩的时候突然想到的...今天就有想写几篇关于内核操作系统的博客,所以回家到以后就奋笔疾书的写出来发表了 Jack:什么是操作系统? 我:你买了一台笔记本,然后把整块硬盘彻底格式化, ...

  4. Centos 02 操作系统 & Linux安装

    操作系统的概念 操作系统是沟通使用者和硬件之间传递信息的工具或程序,是电子计算机系统负责支撑应用程序运行环境以及用户操作环境的基础系统软件 硬件 ==> 系统核心 ==> 命令解释器she ...

  5. 『Linux基础 - 2 』操作系统,Linux背景知识和Ubuntu操作系统安装

    这篇笔记记录了以下几个知识点: 1.目前常见的操作系统及分类,虚拟机 2.Linux操作系统背景知识,Windows和Linux两个操作系统的对比 3.在虚拟机中安装Ubuntu系统的详细步骤 OS( ...

  6. 操作系统 - Linux操作系统 - Centos - Centos7 - 安装|命令|使用汇总

    镜像: http://mirrors.aliyun.com/centos/7/isos/x86_64/http://archive.kernel.org 网络配置 - DHCP  # /etc/res ...

  7. [操作系统]LINUX进程状态说明

    R(task_running) : 可执行状态 只有在该状态的进程才可能在CPU上运行.而同一时刻可能有多个进程 处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的 ...

  8. linux namespace note

    --------------------------------- from http://oldwiki.linux-vserver.org/Namespaces //开源不只是代码,还有思想 Na ...

  9. Kali linux learning note

    from:http://blog.sina.com.cn/s/blog_40983e5e0101dhz0.html     因为kali linux基于debian 7,当然要把这台Acer 4736 ...

随机推荐

  1. ES6-浏览器运行环境配置方法

    现在ES6用的越来越多,想要学习使用ES6,只需简单搭建引入几个js即可运行ES6代码 但是需要基本的服务器环境下运行(如http://10.12.8.161:8047/js-test/export/ ...

  2. Buffer 和Cache 的区别

    Buffer 和Cache 的区别buffer 与cache 操作的对象就不一样.buffer

  3. SSL/TLS捕包分析

    一.基本概念 SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层.SSL通过互相认证.使用数字签名确保完整性.使用加密确保私密 ...

  4. [独孤九剑]Oracle知识点梳理(一)表空间、用户

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  5. C# partial 说明(转)

    http://www.cnblogs.com/Echo_saq/archive/2012/11/19/2777058.html 1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许 ...

  6. centos下wget: command not found的解决方法

    今天给服务器安装新LNMP环境时,wget 时提示 -bash:wget command not found,很明显没有安装wget软件包.一般linux最小化安装时,wget不会默认被安装,这里是C ...

  7. Oracle记录(一)Oracle简介与安装

    Oracle笔记(一) Oracle简介及安装 一.轨迹 二.Oracle简介 Oracle是现在全世界最大的数据库提供商,编程语言提供商,应用软件提供商,它的地位等价于微软的地位. Oracle在古 ...

  8. Azure上通过haproxy实现APP Gateway或WAF的http跳转https

    Azure上的APP Gateway是七层负载均衡服务,WAF是APP Gateway服务的扩展.在实现七层负载均衡的同时,增加了WAF的功能,可以对后台的HTTP服务进行保护. Azure WAF采 ...

  9. 配置Nginx实现负载均衡

    在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中w ...

  10. 命令"service 服务名 restart" 与 "service 服务名 reload"的区别

    由于今天用到了service nginx reload 和 service nginx restart,说说他俩的区别吧: reload:不间断服务重启,就像一张网页上面的刷新按钮一样. restar ...