Linux命令及shell编程浅谈
-
Linux文件系统结构
-
通配符
- 匹配任何字符或任何数目*的字符
- ?匹配任何单字符
- [...] 匹配任何包含在括号里的单字符
- 目录表示:. 指示当前目录,.. 表示当前目录的父目录
-
启动退出命令
- logout 注销
- exit 退出
- reboot 重启系统(需要管理员权限)
- shutdown 关机 (需要管理员权限 )
-
目录操作命令
- pwd 显示出用户当前工作目录的全部路径(print working directory)
- mkdir directory_name 创建新目录(make directory)
- cd directory_name 改变当前工作目录
- rmdir directory_name 删除目录,但要求目录中不存在文件或子目录
-
常用命令
- ls [-a/-R/-l/-lc/-lu] [dir_name] 显示目录命令
-
cat filename 显示出文件内容
- view filename 只能读出文件内容
-
head [-i] filename 显示文件的开始i行
- tail [-i] filename 显示文件的末i行
-
pr filename 显示格式化的文本内容(print)
- cp source_file target_file 复制文件(新的文件可以同名)
-
rm -i/r/f file_or_dir 删除文件 (i互动删除,删除前再确认一次,r递归删除,强制删除)
- chmod pattern filename 修改文件权限
-
find pathname [option] expression 寻找文件名
- diff filename1 filename2 比较来两个文件的不同
-
touch filename 改变文件日期,不对文件内容改动,若文件不存在则创建新文件
- date 显示或设置日期(只有root用户才有权设置日期)
-
cal [month] year 显示某年指定的日历
- time [command] 计算程序或命令在其执行所消耗的时间
-
history 帮助用户回忆执行过的命令
- man [command_name] 显示参考手册,提供联机帮助信息
echo [-n] [arguments] 将参数即字符串至标准输出即显示器
-
简单实例一
设定变量file的值为/etc/passwd
使用循环变量读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容
-
把这些行保存至/tmp/mypasswd文件中
#!/bin/bash file="/etc/passwd" # 务必使用“” for i in 2 4 6 10 13 15 do head -$i $file # 务必使用 $ head -$i $file>"/tmp/mypasswd" done
-
简单实例二
-
传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商。
#!bin/bash a=$1 # 执行脚本是应为 sh filename argument1 argument2 b=$2 var1=`expr $a + $b` # 务必注意运算符与参数之间的空格 var2=`expr $a - $b` var3=`expr $a \* $b` # 注意 \* var4=`expr $a / $b` echo "a+b=$var1" echo "a-b=$var2" echo "a*b=$var3" echo "a/b=$var4"
-
-
简单实例三
显示系统日期和时间,而后创建目录/tmp/lstest
切换工作目录至/tmp/lstest
创建目录a1d,b56e,6test
创建空文件xy,x2y,732
列出当前目录下以a,x或者6开头的文件或目录
-
列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录
#!/bin/bash date mkdir /tmp/lstest cd /tmp/lstest mkdir a1d b56e 6test # 注意空格 touch xy x2y 732 # 注意空格 ls [ax6]* # 注意正则表达式的运用 ls [[:alpha:]][[:digit:]]* # 注意[]
-
简单实例四
编写一个名为myfirstshell.sh的脚本
包含一段注释,列出您的姓名、脚本的名称和编写这个脚本的目的
问候用户
显示日期和时间
显示这个月的日历
显示您的机器名
显示当前这个操作系统的名称和版本
显示父目录中的所有文件的列表
显示root正在运行的所有进程
显示变量TERM、PATH和HOME的值
显示磁盘使用情况
用id命令打印出您的组ID
跟用户说“Good bye”
```shell #!/bin/bash # author:@Ezralin # name:myfirstshell # pourpose: to improve myself user=`whoami` case $user in root) echo "hello root";; Ezralin) echo "hello Bin";; *) echo "hello $user,welcome" esac echo "日期和时间:`date`" echo "本月的日历:`cal`" echo "本机的机器猫:`uname -n`" echo "当前这个操作系统的名称和版本:`uname -s;uname -r`" echo "父目录中的所有文件的列表:`ls ../`" echo "root正在运行的所有程序:`ps -u root`" echo "变量TERM的值:$TERM" echo "变量PATH的值:$PATH" echo "变量HOME的值:$HOME" echo "磁盘的使用情况:`df`" echo "用id命令打印出你的组ID:`id -g`" echo "Good bye!" ```