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. Two Cakes

    It's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has boug ...

  2. 为什么很多公司招聘前端开发要求有 Linux / Unix 下的开发经验?

    知乎: http://www.zhihu.com/question/19666395

  3. HDU1423:Greatest Common Increasing Subsequence

    浅谈\(DP\):https://www.cnblogs.com/AKMer/p/10437525.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php?p ...

  4. liferay-ui:search-container reset cur page 当点列排序时,把当前页号重置为1.

    问题描述: liferay里面要用liferay-ui:search-container 来展示结果集.并要求点列时,可以排序.然后,如果当前页数不为1时,点列排序,自动设置为1. 解决: // 列排 ...

  5. bmp图片格式及读取

    C++读取bmp图片的例子 #include <windows.h> #include <stdio.h> #include <stdlib.h> #include ...

  6. Day2-VIM(二):插入

    基础 字符位置插入 i 在光标之前插入 a 在光标之后追加 你看,其实刚开始用这两个就足够了,这就是最基础的 为什么这么说呢?因为你可以依靠上一节中的移动命令来达到任意位置,然后再大力插入 不要忘了, ...

  7. maven配置的问题,maven的环境变量配置

    不要在用户变量处配置用户变量,直接将maven的bin文件夹路径配置到path环境变量

  8. 环形缓冲区的应用ringbuffer

    在嵌入式开发中离不开设备通信,而在通信中稳定性最高的莫过于环形缓冲区算法, 当读取速度大于写入速度时,在环形缓冲区的支持下不会丢掉任何一个字节(硬件问题除外). 在通信程序中,经常使用环形缓冲区作为数 ...

  9. c#学习之路---壁咚漏洞搜索

    每次出漏洞都会用JAVA去写,不过JAVA你懂得,写GUI每次画图很吃力. 于是左右学习了下c#,期间也得到表哥storm7kb的帮助,要不然这个表格与数据绑定不知道c#怎么弄. 上一下图吧: --- ...

  10. jackson 进行json与java对象转换 之四

    jackson简单使用,对象转json,json转对象,json转list   POJO序列化为json字符串: 准备一个POJO: @JsonIgnoreProperties(ignoreUnkno ...