Linux Shell 编程从入门到精通-- 笔记2

1. Shell脚本的参数

函数参数传递

> testfunc()
{
echo "$# parameters"   # $# 参数个数
echo "$@"              # $@参数内容
}
> testfunc a b c
3 parameters
a b c

shell脚本参数传递

> cat testfunc.sh
#! /bin/bash
echo "$# paramters"
echo "$@"
> ./testfunc.sh a "b c"
2 paramters
a b c

I/O重定向

echo的行为:读取echo参数中的变量,将所有的变量替换成值,变成字符串输出;在输出的末尾追加换行符,退出程序。

 管道使程序不需要知道它的输入和输出背后是什么在支持着,是磁盘文件、是设备、终端、另一个程序。

  • >改变标准输出    
> echo "redirect to file" > /tmp/a.txt
> cat /tmp/a.txt
redirect to file
  • <改变标准输入
> cat < /tmp/a.txt > /tmp/b.txt
  • >>追加文件
for line in /etc/passwd         #遍历/etc/passwd中的每一行
do 
   echo $line >> /tmp/b.txt
done
  • 以|建立管道
head -n10 /etc/passwd | grep "prince"    #将读取到的内容从输出端(管道)输出到grep命令的输入端,gerp读取内容后再其中检索包含文本"prince"的行

2. 文件描述符

内核利用文件描述符来访问文件。打开现存文件或新建文件时,内核会返回一个文件描述符(非负整数)。

3. Linux系统的设计与shell编程

Linux中一个文件是否能被执行和后缀没有太大的关系,主要和文件的属性有关。在Linux中带有扩展名的文件只能代表程序的关联,不能说明文件是可以执行的。

4. Linux文件类型

  • 普通文件
> ls -lh install.log
-rw-r--r-- 1 root root 53K 03-16 08:54 install.log #第一个符号是-,表示此文件是Linux中的普通文件, rw-、r--、r--分别表示文件所有者的权限,同组用户的权限,7其他用户的权限

  • 目录
> ls -lh
drwxr-xr-x 2 1000 users 4.0K 04-04 23:30 mydir #第一个符号d表示为目录文件
  • 字符设备或块设备
> ls -la /dev/tty
crw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/tty    #第一个字符c表示这是个符号设备
brw-rw-rw- 1 root tty 5, 0 04-19 08:29 /dev/hdal    #第一个字符b表示这是个块设备
第一个字符是s表示此文件为套接口文件,为l时表示此文件为符号链接文件

你可能感兴趣的:(linux)