操作系统 Linux ex2 note
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的更多相关文章
- 操作系统 Linux ex1 note
ctrl + alt + T 命令行 ctrl + alt + F7 ctrl + alt + F1-6 ls 列出所有文件 / 根目录 ~ /home/username cd 切换路径 . 当前目录 ...
- 一篇文章带你了解服务器操作系统——Linux简单入门
一篇文章带你了解服务器操作系统--Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等 ...
- 内核操作系统Linux内核变迁杂谈——感知市场的力量
本篇文章个人在青岛游玩的时候突然想到的...今天就有想写几篇关于内核操作系统的博客,所以回家到以后就奋笔疾书的写出来发表了 Jack:什么是操作系统? 我:你买了一台笔记本,然后把整块硬盘彻底格式化, ...
- Centos 02 操作系统 & Linux安装
操作系统的概念 操作系统是沟通使用者和硬件之间传递信息的工具或程序,是电子计算机系统负责支撑应用程序运行环境以及用户操作环境的基础系统软件 硬件 ==> 系统核心 ==> 命令解释器she ...
- 『Linux基础 - 2 』操作系统,Linux背景知识和Ubuntu操作系统安装
这篇笔记记录了以下几个知识点: 1.目前常见的操作系统及分类,虚拟机 2.Linux操作系统背景知识,Windows和Linux两个操作系统的对比 3.在虚拟机中安装Ubuntu系统的详细步骤 OS( ...
- 操作系统 - Linux操作系统 - Centos - Centos7 - 安装|命令|使用汇总
镜像: http://mirrors.aliyun.com/centos/7/isos/x86_64/http://archive.kernel.org 网络配置 - DHCP # /etc/res ...
- [操作系统]LINUX进程状态说明
R(task_running) : 可执行状态 只有在该状态的进程才可能在CPU上运行.而同一时刻可能有多个进程 处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的 ...
- linux namespace note
--------------------------------- from http://oldwiki.linux-vserver.org/Namespaces //开源不只是代码,还有思想 Na ...
- Kali linux learning note
from:http://blog.sina.com.cn/s/blog_40983e5e0101dhz0.html 因为kali linux基于debian 7,当然要把这台Acer 4736 ...
随机推荐
- UVA - 242 Stamps and Envelope Size (完全背包+bitset)
题意:给你一些邮票面值的集合,让你选择其中一个集合,使得“能用不超过n枚集合中的邮票凑成的面值集合S中从1开始的最大连续面值”(即mex(S)-1)最大.如果有多解,输出集合大小最小的一个:如果仍有多 ...
- CodeForces - 1025F:Disjoint Triangles (几何)
A point belongs to a triangle if it lies inside the triangle or on one of its sides. Two triangles a ...
- Rebranding(字母代换)
个人心得:题目意思就是每次给出可以互换的字母,如果每次命令的时候就执行的话一定会超时. 所以我就是将输入的字母从a到z的数目和路径依次保存,再建立一个book数组表示字母现在所指的字母 ,一开始就直接 ...
- [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
- LeetCode Maximum Distance in Arrays
原题链接在这里:https://leetcode.com/problems/maximum-distance-in-arrays/description/ 题目: Given m arrays, an ...
- JavaWeb框架_Struts2_(三)---->Struts2的拦截器
2. Struts2的拦截器(使用拦截器实现权限控制) 2.1 拦截器的概述 拦截器是Struts2的核心组成部分,它可以动态的拦截Action调用的对象,类似与Servlet中的过滤器.Struts ...
- Windbg内核调试之一: Vista Boot Config设置
Windbg进行内核调试,需要一些基本的技巧和设置,在这个系列文章中,我将使用Windbg过程中所遇到的一些问题和经验记录下来,算是对Kernel调试的一个总结,同时也是学习Windows系统内核的另 ...
- DotNetBar笔记
1.TextBoxDropDown 这是一个绝对TMD坑爹的狗屁玩意儿.键盘的四个事件全部不好使.但是这个玩意儿有个好处就是他的DropDownControl属性可以用来制作ComboGrid. 然 ...
- WebDriver数据驱动模式
利用@dataprovider 在一个浏览器内多次登录不同的用户时,必须要每次完成一个登录后,都有一个退出登录的代码,以保持和初始登录页面一致,才不会报错并再次循环登录
- Excel开发学习笔记:发布VSTO下的Excel开发项目
遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VST ...