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. BeetleX高性能通讯开源组件

    net core高性能通讯开源组件BeetleX https://www.cnblogs.com/smark/p/9617682.html BeetleX beetleX是基于dotnet core实 ...

  2. Codeforces 808D. Array Division

    题目大意 给定你一个长为\(n\)的序列,问能否在最多一次取出某一元素然后插入到某一点后可以将整个序列分成两段使得其两段的元素之和相同. \(n \leq 10^5\) 题解 发现插入操作实际上是让某 ...

  3. linkedLoop

    public class linkQueue <E>{ private class Node<E>{ E e; Node<E> next; public Node( ...

  4. position:sticky属性测试

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. C#关闭一个窗口的同时打开另一个窗口

    在.net的WinForm程序中,如果是直接起动的Form作为主窗口,那么这个主窗口是不能关闭的,因为它维护了一个Windows消息循环,它一旦关闭了就等于声明整个应用程序结束,所以新打开的窗口也就被 ...

  6. 解决ListView 缓存机制带来的显示不正常问题

    ListView加载数据原理:系统绘制ListView时,首先会用getCount()函数得到要绘制的这个列表的长度,然后开始逐行绘制.然后调用getView()函数,在这个函数里面首先获得一个Vie ...

  7. JDK7和JDK8新特性

    参考:http://www.cnblogs.com/langtianya/p/3757993.html JDK 1.7 新特性 1,switch中可以使用字串了 String s = "te ...

  8. Day2-Python基础2---浅copy、深copy的差别

    浅copy 首先我们来看下面一段代码: 1 >>> names = ["maqing"," peilin"," xiaoming&q ...

  9. Python unittest excel数据驱动 写入

    之前写过一篇关于获取excel数据进行迭代的方法,今天补充上写入的方法.由于我用的是Python3,不兼容xlutils,所以无法使用copy excel的方式来写入.这里使用xlwt3创建excel ...

  10. When install ”matplotlib” with ”pip”, if you get the following error, it means the “freetype” and “png” libraries needed by matplotlib are not installed:

    ============================================================================ * The following require ...