shell总结
时间:2006-05-06 来源:weijiliang
shell脚本编程(参考linux基础教程实践,linux技术大全)
这里的shell是通常的bash shell,用户登陆或运行终端时就用到了shell,通俗来说,shell就是一个命令行解释器,即是一种命令语言,又是一种程序设计语言. 一:了解你用的shell类型是shell脚本编程的基础
#echo $SHELL //用此命令可以查看你自己的shell类型
#Shell-name //用此命令可以来转换到你需要的shell类型,如ash等(当前shell的子shell)
#exit //退出子shell
二:shell作命令解释器
命令行格式:#命令 选项 参数 (中间有一空格) 也常写着#command -options parameter
eg: #ls -l filesname 下面介绍一些常用的命令:
mkdir 创建一个新目录
eg:#mkdir /root/weijiliang 在root目录下常见了weijiliang这个文件夹
eg:#mkdir -p /wei/weijiliang 连续创建了wei,并在wei下创建了weijiliang rmdir 删除空目录目录
eg:#rmdir -p weijiliang 删除weijiliang这个目录,如果wei也是空目录的话,一块被删除
nano,gedit,vi等是编辑器,用他们可以创建文件
eg:#nano /root/weijiliang/test 在/root/weijiliang目录下常见了test这个文件 clear 用于清屏
eg:#clear rm 删除文件
eg:#rm -i filename 删除filename前询问用户确定操作
eg:#rm -v filename 删除filename是出现进度报告 cp 复制文件
eg:#cp -R 文件名称 目的地 复制文件和其下的子目录到目的地
eg:#cp -p 文件名称 目的地 复制文件时不改变文件的权限
eg;#cp -i 文件名称 目的地 复制文件到目的地时有相同的文件询问用户是否覆盖 eg;#cp -v 文件名称 目的地 复制文件到目的地时显示进度
eg;#cp -l 文件名称 目的地 建立文件连接(快捷方式) ;#cp -l /root/weijiliang /usr/ 打开usr时有一个weijiliang的快捷方式
mv 移动文件
eg:mv -i 文件名称 目的地 移动文件到目的地时有相同的文件询问用户是否覆盖 eg;#mv -v 文件名称 目的地 移动文件到目的地时显示进度 cd 打开目录或切换目录 eg:#cd /root/weijiliang 打开weijiliang这个目录
eg:#cd .. 退回到上一级目录
eg:#cd 退回到根目录
cat 连接文件和将文件内容显示
eg:#cat filename 显示filename文件的内容 eg:#cat test1 test2 >test3 把test1 test2 的内容连接放到test3 eg::#cat test1 test2 >test3 #cat test4 test5 >>test3 test3的内容是 :test1 ,test2, test4,test5连接的内容和 eg:#cat>test 从键盘输入的东西防到test文件里(ctrl +D 保存文件),如果原来没有test文件,则更你自动创建,原来有的话就被新的test覆盖掉了
ls 列示文件 eg:#ls -l 列出当前目录下每个文件的全部详细资料
eg:#ls -a 列出当前目录下每个文件的全部详细资料,连隐藏的都列出来
eg:#ls -d s* 列出当前目录下每个以s开头的文件(#ls s* 是列出当前目录下所有的以s开头的文件,连子目录的都列了出来) eg:ls --color 列出当前目录下每个文件:目录(用蓝色) 可执行文件(绿色) 一般文件(白色) 连接文件(前蓝色)
一般不用的作输出到文件或程序,因为颜色控制码ANSI输出到普通文件就会现行了,文件会莫名奇妙的多了好多没有的字符.#ls --color >test 这是不可以的 eg:#ls -F 功能和--color差不多.不过他不是以颜色来区分文件的类型,而是:目录(目录名/) 连接文件(连接文件名@) 可执行文件(可执行文件名*)
date 显示或设置日期时间 eg:#date 就能显示今天的日期和时间
eg:#date "+Date:%Y.%m.%d Time:%H.%M.%S" 显示格式:Date:2006.05.5 Time:05.40.44 eg:#date "+Date:%Y.%m.%d" 显示格式:Date:2006.05.5 shell 符号集 通用的shell符号
ENTER 执行一个命令 ;(分号) 将同一个命令行的命令分开
[] 匹配文件名中若干可能的字符,选其中之一
\ 转义符号 | 管道
& 在后台执行一个任务
! 执行一个历史命令 (#history 命令列出历史命令序号,#!序号)
通配符
* 匹配若干个字符 ? 匹配某个字符 重定向符号
> 将标准输出到一个文件或设备(耕具原文件的存在与否创建或新建)
< 从一个文件或设备获取输入到程序
>> 将标准输出到一个文件或设备,附加到文件的结尾
标准错误重定向符号
2> 将标准错误冲定向到一个文件或设备 2>> 将标准错误冲定向附加到一个文件或设备
2>&1 将标准错误冲定向到标准输出 >& |& 将标准错误管道到输送到另一个命令作为输入 在程序运行过程中可以用ctrl+c中断一个命令的执行 shell变量 shell 变量要先定义后使用 eg:#var=weijiliang 定义了一个var的变量,值为weijiliang
eg:#var1=/root/weijiliang
eg:#echo $var 就会显示weijiliang
$放在变量前来取变量的值的 用set命令来看所有以定义的变量表:#set
var weijiliang
用#unset 变量名 来删除定义的变量
写shell程序和运行
首先,#nano /root/weijiliang/test
然后,输入以下的: #!/bin/sh
var="Wellcome linux Weijiliang "
echo $var 保存,#chmod +755 test
然后#./test
就会显示 Wellcome linux Weijiliang
shell编程的流程控制语句 if语句
if [条件命令];(分号)
then
条件为真时的命令串
elif [条件命令];
then
...
else
条件为假时的命令串 fi for语句
for 变量名 [in 数值列表]
do
若干个命令行
done
while 语句
while 若干个命令行1
do
若干个命令行2
done until 语句 until 若干个命令行1
do
若干个命令行2
done case语句
case string in
exp-1)
若干个命令行1;;(分号) exp-2)
若干个命令行2;;(分号) .
.
.
*)
其他命令行
esac
shell 函数
functionname
{
body
}
调用functionname param1 param2...
shell脚本使用的编译器
一般用gcc和g++ 例如要创建一个hell word!输出,我们可以用c++程序来写
#nano test.c
#include<iostream.h>
void main(void)
{
count<<"hello word!";
}
#g++ -o test.c test
#chmod 755 test
#./test
输出: hello word! 当用c写时就用gcc
这里的shell是通常的bash shell,用户登陆或运行终端时就用到了shell,通俗来说,shell就是一个命令行解释器,即是一种命令语言,又是一种程序设计语言. 一:了解你用的shell类型是shell脚本编程的基础
#echo $SHELL //用此命令可以查看你自己的shell类型
#Shell-name //用此命令可以来转换到你需要的shell类型,如ash等(当前shell的子shell)
#exit //退出子shell
二:shell作命令解释器
命令行格式:#命令 选项 参数 (中间有一空格) 也常写着#command -options parameter
eg: #ls -l filesname 下面介绍一些常用的命令:
mkdir 创建一个新目录
eg:#mkdir /root/weijiliang 在root目录下常见了weijiliang这个文件夹
eg:#mkdir -p /wei/weijiliang 连续创建了wei,并在wei下创建了weijiliang rmdir 删除空目录目录
eg:#rmdir -p weijiliang 删除weijiliang这个目录,如果wei也是空目录的话,一块被删除
nano,gedit,vi等是编辑器,用他们可以创建文件
eg:#nano /root/weijiliang/test 在/root/weijiliang目录下常见了test这个文件 clear 用于清屏
eg:#clear rm 删除文件
eg:#rm -i filename 删除filename前询问用户确定操作
eg:#rm -v filename 删除filename是出现进度报告 cp 复制文件
eg:#cp -R 文件名称 目的地 复制文件和其下的子目录到目的地
eg:#cp -p 文件名称 目的地 复制文件时不改变文件的权限
eg;#cp -i 文件名称 目的地 复制文件到目的地时有相同的文件询问用户是否覆盖 eg;#cp -v 文件名称 目的地 复制文件到目的地时显示进度
eg;#cp -l 文件名称 目的地 建立文件连接(快捷方式) ;#cp -l /root/weijiliang /usr/ 打开usr时有一个weijiliang的快捷方式
mv 移动文件
eg:mv -i 文件名称 目的地 移动文件到目的地时有相同的文件询问用户是否覆盖 eg;#mv -v 文件名称 目的地 移动文件到目的地时显示进度 cd 打开目录或切换目录 eg:#cd /root/weijiliang 打开weijiliang这个目录
eg:#cd .. 退回到上一级目录
eg:#cd 退回到根目录
cat 连接文件和将文件内容显示
eg:#cat filename 显示filename文件的内容 eg:#cat test1 test2 >test3 把test1 test2 的内容连接放到test3 eg::#cat test1 test2 >test3 #cat test4 test5 >>test3 test3的内容是 :test1 ,test2, test4,test5连接的内容和 eg:#cat>test 从键盘输入的东西防到test文件里(ctrl +D 保存文件),如果原来没有test文件,则更你自动创建,原来有的话就被新的test覆盖掉了
ls 列示文件 eg:#ls -l 列出当前目录下每个文件的全部详细资料
eg:#ls -a 列出当前目录下每个文件的全部详细资料,连隐藏的都列出来
eg:#ls -d s* 列出当前目录下每个以s开头的文件(#ls s* 是列出当前目录下所有的以s开头的文件,连子目录的都列了出来) eg:ls --color 列出当前目录下每个文件:目录(用蓝色) 可执行文件(绿色) 一般文件(白色) 连接文件(前蓝色)
一般不用的作输出到文件或程序,因为颜色控制码ANSI输出到普通文件就会现行了,文件会莫名奇妙的多了好多没有的字符.#ls --color >test 这是不可以的 eg:#ls -F 功能和--color差不多.不过他不是以颜色来区分文件的类型,而是:目录(目录名/) 连接文件(连接文件名@) 可执行文件(可执行文件名*)
date 显示或设置日期时间 eg:#date 就能显示今天的日期和时间
eg:#date "+Date:%Y.%m.%d Time:%H.%M.%S" 显示格式:Date:2006.05.5 Time:05.40.44 eg:#date "+Date:%Y.%m.%d" 显示格式:Date:2006.05.5 shell 符号集 通用的shell符号
ENTER 执行一个命令 ;(分号) 将同一个命令行的命令分开
[] 匹配文件名中若干可能的字符,选其中之一
\ 转义符号 | 管道
& 在后台执行一个任务
! 执行一个历史命令 (#history 命令列出历史命令序号,#!序号)
通配符
* 匹配若干个字符 ? 匹配某个字符 重定向符号
> 将标准输出到一个文件或设备(耕具原文件的存在与否创建或新建)
< 从一个文件或设备获取输入到程序
>> 将标准输出到一个文件或设备,附加到文件的结尾
标准错误重定向符号
2> 将标准错误冲定向到一个文件或设备 2>> 将标准错误冲定向附加到一个文件或设备
2>&1 将标准错误冲定向到标准输出 >& |& 将标准错误管道到输送到另一个命令作为输入 在程序运行过程中可以用ctrl+c中断一个命令的执行 shell变量 shell 变量要先定义后使用 eg:#var=weijiliang 定义了一个var的变量,值为weijiliang
eg:#var1=/root/weijiliang
eg:#echo $var 就会显示weijiliang
$放在变量前来取变量的值的 用set命令来看所有以定义的变量表:#set
var weijiliang
用#unset 变量名 来删除定义的变量
写shell程序和运行
首先,#nano /root/weijiliang/test
然后,输入以下的: #!/bin/sh
var="Wellcome linux Weijiliang "
echo $var 保存,#chmod +755 test
然后#./test
就会显示 Wellcome linux Weijiliang
shell编程的流程控制语句 if语句
if [条件命令];(分号)
then
条件为真时的命令串
elif [条件命令];
then
...
else
条件为假时的命令串 fi for语句
for 变量名 [in 数值列表]
do
若干个命令行
done
while 语句
while 若干个命令行1
do
若干个命令行2
done until 语句 until 若干个命令行1
do
若干个命令行2
done case语句
case string in
exp-1)
若干个命令行1;;(分号) exp-2)
若干个命令行2;;(分号) .
.
.
*)
其他命令行
esac
shell 函数
functionname
{
body
}
调用functionname param1 param2...
shell脚本使用的编译器
一般用gcc和g++ 例如要创建一个hell word!输出,我们可以用c++程序来写
#nano test.c
#include<iostream.h>
void main(void)
{
count<<"hello word!";
}
#g++ -o test.c test
#chmod 755 test
#./test
输出: hello word! 当用c写时就用gcc
相关阅读 更多 +