cshell主要命令

合集下载

cshell语法

cshell语法

cshell语法C Shell (Cshell) 是一种功能强大的Unix shell,它是一种命令行解释器,用于管理和控制Unix操作系统。

C Shell 具有与C 语言类似的语法和语义,使得它易于学习和使用。

下面是C Shell语法的相关参考内容:1. 命令格式:- 命令通常由命令名称和选项组成,比如:`command -option1 -option2 argument1 argument2`- 命令选项通常以"-"开头,用于控制命令的行为- 参数是命令的输入,可以是文件名、目录名或其他命令需要的数据2. 变量:- 变量用于存储和操作数据- 变量的命名规则与C语言类似,由字母、数字和下划线组成,区分大小写- 设置变量的语法是:`set variable_name = value`- 获取变量的值使用美元符号:`$variable_name`3. 控制结构:- if-then-else 语句用于根据条件执行不同的操作:```if (condition) thencommand1elsecommand2endif```- for 循环语句用于重复执行一组命令:```for variable_name in (list)commandend```- while 循环语句用于在给定条件为真时重复执行一组命令: ```while (condition)commandend```4. 输入/输出重定向:- 输入重定向用于从文件中读取数据,使用 `<` 符号:`command < input_file`- 输出重定向用于将命令的输出写入文件,使用 `>` 符号:`command > output_file`- 追加重定向用于将命令的输出添加到文件末尾,使用 `>>` 符号:`command >> output_file`5. 常用的内置命令:- `echo` 用于打印变量的值或文本消息到屏幕上- `setenv` 用于设置环境变量- `cd` 用于改变当前工作目录- `rm` 用于删除文件或目录- `ls` 用于列出目录中的文件和子目录- `cat` 用于连接文件并打印到屏幕上以上是C Shell语法的相关参考内容。

第十三课 C shell

第十三课 C shell

如: { grep ‘^d’ /usr/kk }

可用命令表达式为变量赋值(1或0),也可做为二进制数值参与运算 教材p232例
二、控制语句

分支控制语句: if 语句、switch语句
循环控制语句:while
语句、foreach语句 判定表达式结果是否为真(非0)
1、if 语句

简单格式: if (表达式) 命令 一般格式: if (表达式1) then listA else if (表达式2) then listB else listC endif
相应替换。

命令别名可以放在.login文件中,以后登录仍可使用。 显示别名: 修改别名: % alias 重新定义即可 % alias 命令
1、定义、显示和修改别名



定义别名: % alias 别名 命令(可带模式)
2、取消别名
• •
使用unalias命令可取消命令别名 形式: % unalias 如 % unalias 别名(可带模式匹配) * 则取消所有别名
三、C shell的命令历史

同POSIX和Bourne shell一样,C shell也具备命令历史机制。通常是保留一个历史文
件(历史命令表)来存储用户输入的命令。这个历史文件由shell在登录时建立,退 出登录时删除。

用户先前键入的命令与当前命令都是历史命令,依键入次序编号,存放在历史命
令表中。这些命令编号即为事件号。history

TCSH shell是C shell的增强版。 csh的命令提示符为%,通常路径/usr/bin/csh。


csh对应的环境设置文件为/etc/csh.login、用户主目录下的.login和.cshrc。

C shell 命令描述

C shell 命令描述

Command 总是在子 shell 中运行,则应用针对简单 if 语句中命令
的限制。
nohup [Command]
如果未指定 Command,则导致对脚本的剩余部分忽略 hangups。如
果指定了 Command,则使指定的 Command 运行时忽略 hangups。要
运行流水线或命令的列表,请将流水线或列表放在一个 shell 脚本
CPU 时间的 Max-Use 参数以 hh:mm:ss 格式指定。其它资源的 Max-Use 参数指定为浮点数或整数,可选地后跟比例系数。比例系 数是:k 或千字节(1024 字节),m 或兆字节,或者 b 或块(ulimit
子例程所使用的单位,如 AIX 5L Version 5.2 Technical Reference: Base Operating System and Extensions Volume 2 中 解释)。如果未指定比例系数,则为所有资源假定使用 k。对于资 源名和比例系数,满足名称的明确前缀。
exec Command exit [(Expression) fg [%Job ...] foreach Name (List) Command. . . glob List goto Word
hashstat history [-r | -h] [n]
if (Expression) Command
[Name = (List)]
为其值的变量显示为一个带圆括号的字列表。如果仅指定了 Name,
中,给脚本执行许可权,并将 shell 脚本作为 Command 变量的值
使用。有效保护所有用 & 在后台运行的进程被以在注销时不发送
hangup 信号。然而,这些进程仍有可能显式地发送 hangups,除非

cshell语法

cshell语法

cshell语法Cshell是一种Unix Shell程序,主要用于在命令行界面下与操作系统进行交互。

Cshell语法是Cshell编程中必须掌握的一部分,它允许用户编写脚本来自动化一系列操作。

Cshell语法的基本结构与C语言类似,包含命令、参数和控制结构等。

以下是一些常用的Cshell语法:1. 命令和参数:Cshell中,命令和参数是以空格分隔的。

命令用来执行特定的任务,而参数用来给命令传递额外的信息。

例如,在Cshell中执行"ls -l"命令可以列出当前目录下的文件和文件夹,并显示详细信息。

2. 注释:在Cshell中,使用"#"符号来注释一行代码。

注释通常用来解释脚本的功能或提醒自己后续需要添加的代码。

例如,可以在脚本中添加注释,说明某一行代码的作用。

3. 变量:可以在Cshell中使用变量来存储值和临时数据。

变量名不需要预先声明,直接使用即可。

变量赋值使用"="符号,例如"var=100"。

使用变量时需要使用"$"前缀,例如"echo $var"将会输出"100"。

4. 控制结构:Cshell中提供了多种控制结构,用于根据条件执行不同的代码块。

常见的控制结构包括if语句、for循环和while循环。

if语句用于条件判断,for循环用于重复执行一段代码块,while循环用于在满足条件时执行一段代码块。

5. 输入和输出重定向:Cshell提供了输入和输出重定向的功能,允许用户将命令的输入和输出重定向到文件或其他设备。

输出重定向使用">"符号,例如"ls > output.txt"将目录列表输出到名为output.txt的文件中。

输入重定向使用"<"符号,例如"wc -l < input.txt"将会统计input.txt文件中的行数。

shell c语言

shell c语言

shell c语言
Shell和C语言是两种不同的编程语言,它们各自有着不同的特点和用途。

Shell是一种命令行解释器,它可以解释用户输入的命令并执行相应的操作。

Shell语言主要用于系统管理、自动化脚本编写、数据处理等方面。

Shell语言的优点是简单易学,可以快速实现一些简单的任务,而且在Linux和Unix系统中得到广泛应用。

C语言是一种高级编程语言,它可以用于开发各种类型的应用程序,
包括操作系统、嵌入式系统、游戏等。

C语言的优点是高效、可移植、灵活,可以实现复杂的算法和数据结构,而且在计算机科学领域中得
到广泛应用。

虽然Shell和C语言是两种不同的编程语言,但它们之间存在一些联系。

首先,Shell脚本可以调用C语言编写的程序,从而实现更加复杂的功能。

其次,C语言可以通过调用Shell命令来实现一些系统级的操作,比如文件操作、进程管理等。

在实际编程中,选择使用哪种编程语言取决于具体的需求和应用场景。

如果需要快速实现一些简单的任务,比如文件复制、文本处理等,可
以选择使用Shell语言。

如果需要实现复杂的算法和数据结构,或者开发高性能的应用程序,可以选择使用C语言。

总之,Shell和C语言是两种不同的编程语言,它们各自有着不同的特点和用途。

在实际编程中,应根据具体的需求和应用场景选择合适的编程语言,从而实现更加高效、可靠的程序。

学习笔记_cshell

学习笔记_cshell

1.基本命令2.表达式表达式可由常量、变量和以下运算符组成,其中部分是涉及文件而不是数值表达式遵守以下规则:1)shell将丢失参数或零参数看作是0;2)所有的结果都是十进制数;3)除了!=和==外,运算符的参数都是数字;4)用户必须将表达式的每个元素与比邻的元素用空格分开,除非相邻元素是&、/、<、>等。

3.shel变量格式序列结果%U 命令运行用户代码所消耗的时间,单位是C P U秒(用户模式)%S 命令运行系统代码所消耗的时间,单位是C P U秒(核心模式)%E 命令所消耗的Wa l l时钟时间(整个时间)%P 任务周期内C P U所耗费的时间百分比,按照( % U + % S ) / % E计算%W 命令进程交换到磁盘的次数%X 命令使用的平均共享代码内存量,单位是千字节%D 命令使用的数据代码内存量,单位是千字节%K 命令使用整个内存内存量,就是% X + % D,单位是千字节%M 命令使用的最大内存量,单位是千字节%F 主页错误数(不得不脱离磁盘读取的内存页)%I 输入操作数%O 输出操作数作为开头的shell变量4.控制结构if(expression) simple-command只对简单命令起作用,对管道或命令列表无效。

可以用if….then控制结构来执行更复杂的命令除逻辑表达式外,用户可以用表达式来返回基于文件状态的值如下:如果指定的文件不存在或不可访问,csh将表达式的值算作0。

否则如果测试结果是true,则表达式的值为1;如果为false,则表达式的值为0。

goto labelgoto命令将控制传送给开始于label的表达式。

onintr label中断处理当用户在脚本执行过程中按下中断键,shell将把控制传递给以label:开始的语句。

该语句可以让用户在其被中断时正常终止脚本。

if…then…else形式1if(expression) thencommandsendif形式2if(expression) thencommandselsecommandsendif形式3if(expresstion) thencommandselse if(expresstion) thencommands...elsecommandsendifforeachforeach loop-index(argument-list)commandsendwhilewhile(expresstion)commandsendbreak/continue可以用break中断foreach或while,这些语句在传递控制前执行命令行中剩下的命令。

shell的分类

shell的分类

shell的分类Shell是一种解释性的编程语言,它是一个命令行解释器,用于与操作系统交互。

Shell是一种非常强大的工具,可以用来完成各种任务,如文件操作、系统管理、网络管理等。

Shell有很多种,每种都有其特定的用途和功能。

在本文中,我们将讨论一些最常用的Shell类型。

1. Bourne ShellBourne Shell是最早的Shell之一,由Stephen Bourne在1977年开发。

它是Unix系统的默认Shell。

Bourne Shell的文件扩展名为.sh。

Bourne Shell是一种命令行解释器,可以用于执行各种命令和脚本。

它支持变量、条件语句、循环语句等。

Bourne Shell的主要变种是Bash和Korn Shell。

Bash是Bourne Shell的增强版,它支持命令历史记录、命令自动补全等功能。

Korn Shell是Bourne Shell的另一个变种,它增加了一些更高级的特性,如函数、数组等。

2. C ShellC Shell是一种基于C语言语法的Shell,由Bill Joy在1978年开发。

C Shell的文件扩展名为.csh。

C Shell具有交互式命令行解释器和脚本解释器的功能。

它支持命令历史记录、命令自动补全等功能。

C Shell还支持一些高级特性,如别名、作业控制等。

3. Z ShellZ Shell是一种功能强大的Shell,由Paul Falstad在1990年开发。

Z Shell的文件扩展名为.zsh。

Z Shell是Bourne Shell和C Shell的综合体,它融合了两种Shell的特性,并增加了一些新的功能。

Z Shell支持命令历史记录、命令自动补全、别名、作业控制、函数、数组等。

Z Shell还支持模块化插件,可以通过插件扩展其功能。

例如,zsh-autosuggestions插件可以根据命令历史记录自动提示命令,zsh-syntax-highlighting插件可以对命令进行语法高亮。

如何在C语言中调用shell命令

如何在C语言中调用shell命令

1、system(执行shell 命令)相关函数 fork,execve,waitpid,popen表头文件 #include<stdlib.h>定义函数 int system(const char * string);函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。

在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。

返回值如果system()在调用/bin/sh时失败则返回127,其他失败原因返回- 1。

若参数string为空指针(NULL),则返回非零值。

如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。

附加说明在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。

范例:#include<stdlib.h>main(){system(“ls -al /etc/passwd /etc/shadow”);}2、popen(建立管道I/O)相关函数 pipe,mkfifo,pclose,fork,system,fopen表头文件 #include<stdio.h>定义函数 FILE * popen( const char * command,const char * type);函数说明 popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c 来执行参数command的指令。

参数type可使用“r”代表读取,“w”代表写入。

依照此type值,popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。

cshell三角函数

cshell三角函数

cshell三角函数C-Shell是一种基于C语言的Unix Shell,它提供了类似于Bourne Shell的功能和语法,但是在很多方面都进行了改进和扩展。

C-Shell也提供了对三角函数的支持,这为需要在C-Shell脚本中进行数学计算的用户提供了很大的方便。

在C-Shell中,可以使用内置的三角函数库来使用和计算三角函数。

这个库包含了一些常见的三角函数,如sin、cos、tan等。

下面是一些常用的三角函数在C-Shell中的使用方法:1. sin函数:sin(x)函数返回角度x的正弦值。

例如,要计算45度的正弦值,可以使用以下命令:```shell```这里使用bc命令来进行浮点数计算,并将角度转换为弧度。

返回的结果将被存储在变量$result中。

2. cos函数:cos(x)函数返回角度x的余弦值。

使用方法与sin函数类似。

例如,要计算60度的余弦值,可以使用以下命令:```shell```3. tan函数:tan(x)函数返回角度x的正切值。

使用方法与sin和cos函数类似。

例如,要计算30度的正切值,可以使用以下命令:```shell```4. asin函数:asin(x)函数返回x的反正弦值。

可以使用以下命令计算反正弦值:```shell```这里使用的是bc命令来进行反三角函数的计算,并将弧度转换为角度。

5. acos函数:acos(x)函数返回x的反余弦值。

使用方法与asin函数类似。

6. atan函数:atan(x)函数返回x的反正切值。

使用方法与asin函数类似。

这些函数都可以用来进行三角函数的计算,可以在C-Shell脚本中直接调用和使用。

需要注意的是,C-Shell中的三角函数使用的是弧度制,因此在计算之前需要将角度转换为弧度。

而大部分计算都是以角度制进行的,因此在实际使用时需要进行相应的转换。

总结起来,C-Shell提供了对三角函数的支持,用户可以使用内置的三角函数库来进行数学计算。

c shell echo命令的用法

c shell echo命令的用法

c shell echo命令的用法在C shell中,`echo`命令用于输出文本或变量的值。

以下是`echo`命令的一些常见用法:1. 输出文本:直接在命令行中输入要输出的文本,例如:```cecho "Hello, world!"```这将在终端上输出"Hello, world!"。

2. 输出变量的值:使用`echo`命令可以输出变量的值。

例如,假设有一个变量`name`,你可以这样输出它的值:```cset name = "John"echo $name```这将在终端上输出"John"。

3. 使用选项:`echo`命令还有其他选项,用于控制输出的格式。

例如,`-n`选项用于取消自动换行,`-e`选项用于解释转义字符。

例如:```cecho -n "Hello, world!" 不换行输出echo " " 输出一个空格echo -e "Hello, \t world!" 输出Hello和一个制表符,然后是world!```输出将是:```mathematicaHello, world! Hello world!```注意,使用`-e`选项时,需要将转义字符放在引号中,否则shell可能会将其解释为其他含义。

4. 输出多个变量的值:你可以使用多个变量并在它们之间添加文本。

例如:```cset name1 = "John"set name2 = "Jane"echo "Name1: $name1, Name2: $name2"```这将在终端上输出:```mathematicaName1: John, Name2: Jane```这些是C shell中`echo`命令的一些常见用法。

你可以根据需要使用不同的选项和参数来控制输出的格式和内容。

Bshell与Cshell详解

Bshell与Cshell详解

Linux主要shell命令详解shell是用户和Linux操作系统之间的接口。

Linux中有多种shell,其中缺省使用的是Bash。

本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性。

什么是shellLinux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。

它是命令语言、命令解释程序及程序设计语言的统称。

shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。

当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。

shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。

用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

有一些命令,比如改变工作目录命令cd,是包含在shell内部的。

还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。

对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。

shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。

然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。

如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。

如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。

shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。

shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。

cshell中awk的用法

cshell中awk的用法

cshell中awk的用法在C Shell(csh)中,可以使用awk命令进行文本处理和数据分析。

awk是一种文本处理工具,用于从文件或标准输入流中提取数据并进行操作。

以下是awk命令的一般用法:1. 基本语法:```awk 'pattern { action }' filename```其中,pattern是用于匹配要处理的数据的模式,action是在匹配时要执行的操作。

filename是要处理的文件名。

2. 默认情况下,awk会在每一行上执行操作。

例如,以下命令将打印文件中的每一行:```awk '{ print }' filename```3. 使用字段和分隔符:- 默认情况下,awk将每行数据视为由空格或制表符分隔的字段。

可以使用$符号后接数字来访问字段。

例如,$1代表第一个字段,$2代表第二个字段,以此类推。

- 可以使用-F选项来指定分隔符。

例如,-F':'将文件的字段分隔符设置为冒号。

- 例如,以下命令将打印文件的第二个字段:```awk '{ print $2 }' filename```4. 使用内置函数:awk提供了一些内置函数,用于处理数据。

一些常用的函数包括:- length():返回字符串的长度。

- substr():提取字符串的子串。

- tolower()和toupper():将字符串转换为小写和大写字母。

5. 使用条件语句:可以在awk中使用if语句来执行特定的操作。

例如,以下命令将打印大于10的数字:```awk '{ if ($1 > 10) print }' filename```这只是awk命令的一些基本用法。

使用awk可以进行更复杂的文本处理和数据分析操作,具体用法可以参考awk的官方文档和教程。

csh tch sh bash的用法

csh tch sh bash的用法

csh tch sh bash的用法csh, tch, sh 和bash 都是不同的Unix shell。

下面是它们的用法和一些特点:1. csh (C Shell):- 用法:在终端中输入csh 或者在脚本的第一行写上"#!/bin/csh" 来使用csh。

- 特点:csh 主要是用于交互式操作,其语法类似于C 语言,支持以下特性:别名,命令补全,作业控制等。

它还支持一些独特的功能如历史替换和内置变量。

2. tch (TENEX C Shell):- 用法:在终端中输入tcsh 或者在脚本的第一行写上"#!/bin/tcsh" 来使用tcsh。

- 特点:tcsh 是csh 的改进版,增加了一些实用的功能。

除了继承了csh 的特性外,它还支持命令行编辑,历史命令展示,变量扩展等特点。

3. sh (Bourne Shell):- 用法:在终端中输入sh 或者在脚本的第一行写上"#!/bin/sh" 来使用sh。

- 特点:sh 是Unix 系统原始的shell,语法相对简洁,功能相对较少。

它是其他shell 的基础,大多数Unix 系统都会支持sh。

4. bash (Bourne Again Shell):- 用法:在终端中输入bash 或者在脚本的第一行写上"#!/bin/bash" 来使用bash。

- 特点:bash 是sh 的改进版,兼容sh 的语法,并且引入了很多新特性。

它是大多数Linux 系统的默认shell,也是目前使用最广泛的shell。

bash 支持命令行编辑,通配符扩展,命令历史记录等功能。

总结:csh 和tcsh 的语法类似于C 语言,适用于交互式操作;sh 是比较简洁的原始shell,bash 是对sh 进行了扩展和改进的shell,功能更强大。

在实际应用中,bash 是使用最广泛的shell。

第八章 Cshell简介

第八章 Cshell简介

第八章Cshell简介第一节简介在前面的章节中已经向大家介绍过B-shell及其编程方面的一些知识,本章将向大家简单介绍一下C-shell的一些概念与操作。

(依据作者本人的经验很少有人愿意将C-shell作为自己的工作shell,因此这里只做简单介绍。

这里还要声明一下,在以下的内容中,C-shell 一律简称为csh。

)1.csh的启动与退出csh的启动与其他几种shell的启动是一致的,只需要在自己所处的shell平台中输入csh 就可以了。

当csh命令完成后,用户就可以进入csh的shell平台了,退出一般也只需要用exit命令就可以了。

2.csh的一般操作csh的操作与B –shell有许多相似之处,读者可以使用man命令,也可以使用ls的-l选项,但相似不代表一样,C-shell在交互功能及shell脚本编程方面却有着自己的独到之处,在下面我们将一一介绍。

第二节csh的历史机制“历史”一个很简单的概念,这里不用作者多说,而“机制”却很值得一讲。

所谓机制,是指一种机械化的制度,即一种不会改变的方式。

csh的历史机制是指csh可以将以前的方式或命令重复并反应。

例如用户输入一个history命令,csh将列出历史表的内容,包括以前全部的命令及使用顺序。

csh不仅能列出以前使用的命令,还可以让使用着引用以往的命令,下面列出csh历史机制的一些引用方法。

!!引用上一命令!x 引用一个以x开头的命令,x可以置换如:il 引用ls命令!36 引历史表里的第36号命令!36:s/字符串1/字符串2/ 将36号命令中的字符串1替换为字符串2^字符串1^字符串2 把历史表最后一个命令中字符串1置换为字符串2!46:9 引用46号命令第9个单词!55:2-9 引用55号命令的2-9个单词第三节别名机制csh交互性除了可以让用户引用历史命令,还可以以别名方式来简化用户操作,用户可以定义一个简短的字符来置换已有的csh中的繁长而复杂的命令。

cshell变量定义

cshell变量定义

cshell变量定义
在C shell(csh)中,可以使用set命令来定义变量。

变量名和变量值之间使用等号进行赋值。

例如,要定义一个名为var的变量并将其设置为10,可以使用以下命令:
set var=10。

在C shell中,变量名不需要使用美元符号来引用,因此在使用变量时,不需要像在其他shell中那样使用$var。

要访问变量的值,只需使用变量名即可。

此外,C shell还支持对变量进行重新定义和取消定义。

要重新定义一个已经存在的变量,只需再次使用set命令即可。

例如:
set var=20。

要取消定义一个变量,可以使用unset命令。

例如,要取消定义名为var的变量,可以使用以下命令:
unset var.
在C shell中,还可以使用环境变量。

环境变量是一种特殊类型的变量,可以在子进程中访问。

要将变量设置为环境变量,可以使用setenv命令。

例如:
setenv VARNAME value.
这样就可以将名为VARNAME的变量设置为value,并将其导出为环境变量,使其在子进程中可用。

总之,在C shell中,可以使用set命令来定义变量,使用unset命令来取消定义变量,还可以使用setenv命令来定义环境变量。

这些命令可以帮助我们在C shell中有效地管理变量。

LinuxCC++调用shell命令后获取shell返回值

LinuxCC++调用shell命令后获取shell返回值

LinuxCC++调⽤shell命令后获取shell返回值Linux C/C++调⽤shell命令后获取shell返回值项⽬中C/C++调⽤shell命令后,某系处理返回值的过程是以“临时⽂件”的⽅式进⾏;即shell命令执⾏后将返回值存放在临时⽂件(如temp.txt),C/C++程序再访问⽂件,获取shell的返回值。

最经典的就是调⽤WiFi(iwlist wlan0 scan )扫描指令查询WiFi节点,然后解析获取WiFi数量、名称、信号强度、加密⽅式等信息。

通过“临时⽂件”的⽅式交互数据,是⽐较简单、易⽤和易理解的⽅式,在多进程间、多线程间也可以使⽤,但⼀般不会使⽤。

共享“临时⽂件”有个弊端就是效率上不⽐较低,创建⽂件、删除⽂件然后是访问,都是访问存储器(磁盘、flash),加上⽂件系统的⼀层封装和存储介质映射,访问速度不如访问内存快。

“临时⽂件”的⽅式,个⼈觉得不是很好,通过该案例总结下C/C++调⽤shell命令知识。

1.C/C++调⽤shell命令⽅式Linux 系统中使⽤ C/C++ 调⽤ shell 命令常⽤⽅式:system()函数popen()函数exec函数簇system()函数最常⽤,简单⾼效; popen() 执⾏ shell 命令的开销⽐ system() ⼩;system()和popen()都封装了进程创建、释放,内部实质调⽤的是exec函数簇;exec需⼿动fork进程进,然后再调⽤exec函数簇个,过程⽐前两者稍微复杂。

1.1 system()C语⾔执⾏linux shell命令,对于没有返回结果的,可直接使⽤system()函数,对于有返回结果的,可以⽤popen命令,对其封装后,可以获取相应的返回信息。

函数原型:FILE * popen ( const char * command , const char * type );int pclose ( FILE * stream );command:要执⾏shell命令type:创建的管道的读写类型("r" 或者 "w")1.type为“r”时,管道连接到shell⼦进程的标准输出,2.type为“w”时,管道连接到shell⼦进程的标准输⼊“r”就能获取shell命令的执⾏输出结果了。

Shellprintf命令

Shellprintf命令

Shellprintf命令printf 命令模仿 C 程序库(library)⾥的 printf() 程序。

printf 由 POSIX 标准所定义,因此使⽤ printf 的脚本⽐使⽤ echo 移植性好。

printf 使⽤引⽤⽂本或空格分隔的参数,外⾯可以在 printf 中使⽤格式化字符串,还可以制定字符串的宽度、左右对齐⽅式等。

默认 printf 不会像 echo ⾃动添加换⾏符,我们可以⼿动添加 \n。

printf 命令的语法:printf format-string [arguments...]参数说明:format-string: 为格式控制字符串arguments: 为参数列表。

接下来,我来⽤⼀个脚本来体现printf的强⼤功能:#!/bin/bashprintf "%-10s %-8s %-4s\n" 姓名性别体重kgprintf "%-10s %-8s %-4.2f\n" 郭靖男 66.1234printf "%-10s %-8s %-4.2f\n" 杨过男 48.6543printf "%-10s %-8s %-4.2f\n" 郭芙⼥ 47.9876执⾏脚本,输出结果如下所⽰:姓名性别体重kg郭靖男 66.12杨过男 48.65郭芙⼥ 47.991. %s %c %d %f都是格式替代符2. %-10s 指⼀个宽度为10个字符(-表⽰左对齐,没有则表⽰右对齐),任何字符都会被显⽰在10个字符宽的字符内,如果不⾜则⾃动以空格填充,超过也会将内容全部显⽰出来。

3. %-4.2f 指格式化为⼩数,其中.2指保留2位⼩数。

更多实例:#!/bin/bash# format-string为双引号printf "%d %s\n" 1 "abc"# 单引号与双引号效果⼀样printf '%d %s\n' 1 "abc"# 没有引号也可以输出printf %s abcdef# 格式只指定了⼀个参数,但多出的参数仍然会按照该格式输出,format-string 被重⽤printf %s abc defprintf "%s\n" abc defprintf "%s %s %s\n" a b c d e f g h i j# 如果没有 arguments,那么 %s ⽤NULL代替,%d ⽤ 0 代替printf "%s and %d \n"执⾏脚本,输出结果如下所⽰:1 abc1 abcabcdefabcdefabcdefa b cd e fg h ijand 0序列说明\a警告字符,通常为ASCII的BEL字符\b后退\c抑制(不显⽰)输出结果中任何结尾的换⾏字符;⽽且,任何留在参数⾥的字符,任何接下来的参数以及任何留在格式字符串中的字符,都被忽略\f换页\f换页\n换⾏\r回车\t⽔平制表符\v垂直制表符\\⼀个字⾯上的反斜杠字符\ddd表⽰1到3位数⼋进制的字符.尽在格式字符串中有效\0ddd表⽰1到3位的⼋进制字符转义序列只在格式字符串中会被特别对待,也就是说,出现在参数字符串⾥的转义序列不会被解释:使⽤命令:printf "%s\n" "abc\ndef"输出结果:abc\ndef%c ASCII字符.显⽰相对应参数的第⼀个字符%d,%i⼗进制整数%e浮点格式([-d].precisione [+-dd])%E浮点格式([-d].precisionE [+-dd])%g%e或%f转换,看哪⼀个较短,则删除结尾的零%G%E或%f转换,看哪⼀个较短,则删除结尾的零%s字符串%u不带正负号的⼗进制值%x不带正负号的⼗六进制.使⽤a⾄f表⽰10⾄15%%字⾯意义的%%X不带正负号的⼗六进制.使⽤A⾄F表⽰10⾄15转换精度含义%d,%i,%o,%u,%x,%X要打印的最⼩位数.当值的位数少于此数字时,会在前⾯补零.默认精度为1%e,%E要打印的最⼩位数.当值的位数少于此数字时,会在⼩数点后⾯补零,默认为精度为6.精度为0则表⽰不显⽰⼩数点⼩数点右边的位数%f⼩数点右边的位数%g,%G有效位数的最⼤数⽬%s要打印字符的最⼤数⽬案例⼀:使⽤命令:printf "%.5d\n" 15输出:00015案例⼆:使⽤命令:printf "%.10s\n" "a very long string"输出:a very lon案例三:使⽤命令:printf "%.2f\n" 123.4567输出:123.46字符意义-将字段⾥已格式化的值向左对齐在正值前置⼀个空格,在负值前置⼀个负号空格(space)+总是在数值之前放置⼀个正号或负号,即便是正值也是#下列形式选择其⼀:%o有⼀个前置的o;%x与%X分别前置的0x与0X.%e,%E与%f总是在结果中有⼀个⼩数点;%g与%G为没有结尾的零.0以零填补输出,⽽⾮空⽩.这仅发⽣在字段宽度⼤于转换后的情况.在C语⾔⾥,该标志应⽤到所有输出格式,及时是⾮数字的值也是⼀样.对于printf命令⽽⾔,它仅应⽤到数值格式案例⼀:使⽤命令:printf "%-20s%-15s%10.2f\n" "Shan" "zhang" 35输出:Shan zhang 35.00分析:1. %-20s表⽰⼀个左对齐、宽度为20个字符字符串格式,不⾜20个字符,右侧补充相应数量的空格符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ls 列目录
ls –l 列目录,列出主要信息,主要用于了解文件所有者,创建信息及大小
cd filename 进入当前目录的下级目录
cd 绝对路径进入绝对路径的目录
cd .. 进入当前目录的上级目录
cd ../.. 进入上两级目录
cd 没有参数,返回用户目录
cat > filename 创建文件
mkdir filename 创建文件夹
cp –r filename1 filename2 cope file2 from file1,
rm filename delete file
\rm –r file delete file document with the files in it
mv file1 file2 移动文件1 到文件2,可以加入路径来移动不同路径的文件mv 也是用来实现重命名文件的命令
gvim常用命令
h左移j下移k上移l右移
gvim file 打开文件,也可打开文件夹
gvim . 打开当前目录的文件夹
ctrl 6 可返回上级目录文件夹(gvim 打开文件夹的前提下)
shift g 移动到文件最后一行
数字shift g 移动到指定行
q 放弃
wq 保存后关闭
q!不做任何操作关闭。

相关文档
最新文档