C-Shell基础命令
- 格式:xls
- 大小:50.50 KB
- 文档页数:3
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语法的相关参考内容。
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文件中的行数。
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,这些语句在传递控制前执行命令行中剩下的命令。
CShell简介摘要:本⽂简单的总结了Cshell的基本操作和基础知识。
本⽂摘录于互联⽹,阅读本⽂需要有⼀定的Unix操作基础。
当你执⾏⼀个shell script时, 系统会检查script⽂件的第⼀⾏以确定如何执⾏其中的命令:○如果第⼀⾏以#!开始, 后⾯跟着⼀个程序名, 系统就会⽤那个程序来执⾏script中后⾯的命令.○如果第⼀⾏以#开始, 系统会⽤Cshell执⾏script.等同于#!/bin/csh○如果第⼀⾏不是以#开始, 系统就会⽤Bshell来执⾏script.等同于#!/bin/sh[建议您使⽤明确的写法,即⽤#!/bin/csh(sh)]如果你想快速执⾏Cshell, 即不想读⼊Cshell的启动程序(.cshrc等), 在script⽂件的第⼀⾏应该⽤类似下⾯的格式:#!/bin/csh -f scriptSCRIPT中的参数及变量如何将命令⾏的参数传给script呢? 可以这样: 键⼊script名, 后⾯跟任何你想要传递的参数. Cshell把script名后⾯的字符按照词(words)来划分后传递给⼀个叫做argv的变量数组, 叫做arguments list. 这样命令⾏的参数就作为words存储于argv中, 连同script名, 分别可以被引⽤为argv[0], argv[1], ... argv[n], 或者你也可以⽤等效的⽅法即$0,$1,...,$n来引⽤它们,其中n是参数的个数.除了argv, $0, $1, ... $n, 等以外, 你还可以在script中使⽤其他变量.有许多符号可以对变量进⾏操作: 读取, 赋值, 判断属性等等. 分述如下:o$?name判断变量是否存在, 若存在(被set过)则等于 1 . 否则等于 0 .例如:% set var='abc'% echo $?var #结果为 1% unset var% echo $?var #结果为 0o$#name计算变量name中的词(words)数.例如:% set var=(a b c) # $#var == 3% set var='abc' # $#var == 1% unset var # var: Undefined variable.o$$$$是Cshell的特殊变量, ⽤于表⽰执⾏此script时的进程号. 因为进程号是唯⼀的, 你可以⽤$$来⽣成⼀个唯⼀的临时⽂件,⽐如tmp.$$. 它可以避免任何⽂件名的冲突. 当然你也可以开发你⾃⼰对$$的独特应⽤.o$<重定向符号. 即从终端读⼊(⼀⾏). ⽐如:echo -n "yes or no?"set a=($<)即变量a从终端输⼊. (如果你输⼊了⼀个空⾏或^D, $#a将等于 0 )(此外,还可以通过``来获取⼀些命令⾏程序的输出,如set ab=`pwd`)$n和$argv[n]实际上有个微⼩的差别: 当n⼤于参数个数($#argv)时, $argv[n]要报错,⽽$n永远也不会有这种"下标溢出"的错.对其他变量, 也不会发⽣"下标溢出"的错误, 例如:当(n > $#var) 时, $var[n-]不给任何结果和错误信息.⽽$var[m-n]给出$var[m]到$var[$#var]的words.如果(m > $#var) 则没有任何结果.⽂件操作格式:-操作符 filename-e ⽂件存在返回1(.true.), 否则返回0(.false.).-r ⽂件可读返回1,否则返回0.-w ....可写................-x ....可执⾏...............-o ⽂件属于⽤户本⼈返回1, 否则返回0.-z ⽂件长度为0返回1, 否则返回0.-f ⽂件为普通(plain)⽂件返回1, 否则返回0.-d ⽂件为⽬录⽂件时返回1, 否则返回0.路径名操作:你可以对路径名进⾏操作, 以便于去掉你不需要的部分.:t (tail)只保留路径名最右边的部分, ⽽将前⾯的全部去掉. (相当于basename):r (root)去掉从"."(dot)开始的后缀部分.:e (end)去掉从左边开始⼀直的"."的前缀部分.:h (head)去掉最后的⼀部分, 只保留⽂件所在的⽬录名.⽐如, 你有⼀个叫做 /usr/people/user1/file1.txt的⽂件,在script中将它赋值给变量var_file, 则:$var_file:t == file1.txt$var_file:r == /usr/people/user1/file1$var_file:e == txt$var_file:h == /usr/people/user1返回代码:严谨的程序应该测试返回代码以判断该程序是正常结束还是别的情况.尤其在你写前后相关的script的时候, 后⾯的命令要⽤到前⾯命令的执⾏结果的时候.⼀个命令执⾏后的返回代码存放在叫做status的变量中, 当命令执⾏成功正常退出时status为0, 否则为1.⽐如你想检查前⾯⼀个命令是否正常地被执⾏了, 从⽽判断下⼀个命令是否应该执⾏,就可以:command1set checkpoint=$status[commands...]if(! $checkpoint) thencommand2elsecommand3endif控制结构:Cshell中基本的控制结构包括 foreach, if结构, 另外还有switch及while,当然还有那个从程序设计概念提出来开始就⼀直存在的幽灵: goto.1. 控制循环的foreach语法为:foreach variable (variable_value lists){commands}end变量variable依次取lists中的值, 执⾏command(s)命令. lists中给出多少个值, 就进⾏多少次操作. 结束循环后变量variable的取值为lists中的最后⼀项.○ foreach-end中间可以⽤ break 以及 continue 控制循环的中断及继续: break终⽌循环, continue 终⽌⼀轮循环操作并开始下⼀轮循环.○ noglob变量的设置可以防⽌lists中的值作⽂件名扩展. 在script的前⾯set即可.set noglob⽐如你的lists是 (a b c*), set noglob的结果是直接解释成a, b, c*; ⽽没有设置noglob时则解释成a, b, 以c开始的⽂件名. 如果你的⽬录下没有这样的⽂件时, 就会报错(No match). 当然你应该在script的结束时unset noglob, 以不影响后⾯的操作.2. 条件控制 if○语法为:if ( expression ) then[commands]else[commands]endif○另外还可以⽤else if:if ( expression ) then[commands]else if ( expression ) then[commands]else[commands]endif○还可以⽤简化格式:if ( expression ) commandif ( expression ) \command# "\"(backslash)后⾯只能接newline(回车即可), 不能有任何其他字符; # 单个命令command不能包括"|", "&" 以及";". 也不能使⽤其它控制语句.○不能使⽤下⾯的格式:if ( expression )then或者if ( expression ) then command endif3. 循环控制 while语法为:while ( expression )[commands]end# while中也可以使⽤break以终⽌循环.例程(本例执⾏10次循环):#!/bin/cshset ai=1while ( $ai <= 10 )echo the ${ai}th time running.@ ai++end4. 开关控制 switch语法为:switch ( $word )case str_1:[commands]breaksw...case str_n:[commands]breakswdefault:[commands]breaksw# word为控制变量, breaksw 跳出 switch 操作.5. goto语法为:goto label例如(此例为⽆限循环!):loop:[commands]goto loop其它:1. 中断处理如果你的script还没有运⾏结束, ⼜不想继续运⾏, 你可能要按下^C以终⽌执⾏它,⼜或者你的script设计成那种⽆限循环式的, 即允许使⽤者重复执⾏直到按下^C(⽐如查询程序). 按下^C后, 系统会终⽌整个script, 但是如果你不想这样做(⽐如你还想删除中间的某些临时⽂件), 就可以在script中设定中断处理:onintr labellabel是标识⾏, 其结果是你按了^C后, goto到label⾏继续执⾏.2. exit前⾯讲过命令有返回代码, 同样script也可以有返回代码. ⽤exit可以终⽌script的执⾏并返回⼀个值:exit ( status )status 即是你要返回的值.3. expression(表达式)if和while都要⽤到expression, expression可以是变量值以及他们的操作结果, 或者是任何返回数值的操作. ⽐如 ( $var ), ( -e filename )等等.C 中的所有代数及逻辑运算符都可以⽤于Cshell的expression中. ⽐如 == 和 !=⽐较两个字符是否相同, && 和 || 表⽰逻辑 "与" 和 "或", "!" 表⽰"⾮".代数运算使⽤expr, 如 expr $a + $b。
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三角函数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`命令用于输出文本或变量的值。
以下是`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`命令的一些常见用法。
你可以根据需要使用不同的选项和参数来控制输出的格式和内容。
Unix Command
PC機臺:開始-->運行-->csh-->C:\bin\csh.exe
1)pwd,顯示目前所在目錄的路徑
pwd
C:/a
2)cd,更改當前目錄路徑
pwd
C:/a
cd /b
pwd
C:/b
注:C:/b首先應該存在,更換路徑不用加盤符.
3)cat,顯示檔案內容
在檔案123.txt中寫有數字88.
cat 123.txt
88
另:more,顯示檔案內容(整頁模式).
4)ls,列出檔案名稱
ls /id/b
另:ls -l,列出詳細檔案訊息
ls -a,列出隱藏檔案名稱
5)chmod,變更文件的使用權限
讀r=4,寫w=2,執行x=1
三類基本權限:擁有者/群組/其它
ls -l 23.txt
chmod 777 23.txt
ls -l 23.txt
6)chown,變更擁有者/群組
ls -l 23.txt
chown image 23.txt
chown image:users 23.txt
7)cp,復制檔案
cp 23.txt /id/a
ls /id/a
cat /id/a/23.txt
另:cp -r,復制目錄及里面的檔案
cp -r /id/b /id/a
8)date,顯示日期/時間
9)du,顯示各子目錄大小
du /id/work
另:du -s,顯示當前目錄總大小
10)grep,截取某行輸出
cat /id/b/23.txt | grep "2356"
cat /id/b/23.txt | grep -v "2356"
echo 1234 > 23.txt (替換)
echo 5678 >> 23.txt (追加)
cat 23.txt
1234
5678
cat 23.txt | grep "5678"
5678
注:-v,減去這些字符,輸出含這些字符的行.
11)kill,中斷執行中程式
kill -9 4008 (kill 編號)
12)man,指令詳細說明
man cat
man chmod
13)mkdir,建立新目錄(空文件夾)
mkdir /id/file
ls /id
14)mv,移動目錄或檔案
mv /id/file /id/a
mv /id/a/23.txt /id/b
15)rm,刪除目錄或檔案
rm /id/a/100.txt,刪除檔案100.txt
rm -r /id/a/200,刪除目錄200
16)tar,(解)壓縮,針對目錄(即文件夾)
cd /id/b
tar cvf /id/a/200.tar 200,將當前目錄下的資料夾壓縮到指定路徑cd /id/a
tar xvf /id/a/200.txt,將指定路徑壓縮檔案解壓到當前目錄下
17)gzip,(解)壓縮,針對文件
cd /id/b
gzip /id/b/300.txt,將指定文件壓縮并替換成所在目錄下的.gz格式的壓縮檔案
gzip -d /id/b/300.txt.gz,將指定.gz格式的壓縮檔案解壓并替換成所在目錄下的文件
18)compress,(解)壓縮,針對文件(與gzip類似)
compress /id/work/file,壓縮并替換成.Z格式的壓縮檔案
uncompress /id/work/file.Z,解壓并替換成文件(所在目錄下)
19)touch,新建空檔案
touch /id/work/36.txt,在指定路徑新建空檔案
20)find,尋找目錄或檔案
find /id/a -name 23.txt 或 find /id -name 23.txt
結果:/id/a/23.txt
先指定大概位置,再按名稱搜索,不然要找好久.
21)gedit,打開并編輯文件
gedit /id/work/20.txt(退出前保存才有效)。