cp sample/* asmpl1
cp -i mm.c mm1.c /*如果mm1.c已经存在,则会给出提示*/
2、mv的作用:
(1)给文件重新命名:mv mm.c mm1.c /*将mm.c文件重新命名*/ (2)将文件移到其他目录下
3、cd ~ /*切换到登陆目录*/
4、less rr.c /*分屏显示rr.c的命令,按空格键,显示下一屏;按PgOn和PgUp分别回
到上一屏和下一屏;按下/可以查找所需内容,再按n可以到查找到的下一个内容*/
5、grep
-i 不区分大小写
-v 把没有的行显示出来
-c 统计满足条件的行并显示出来
grep -ivc max rr.c 统计出不带有不区分大小写max的行
6、wc(word count)
7、cat >rr.c 创建一个新文件rr.c,若文件存在则覆盖原来文件的内容 cat >> rr.c 若文件rr.c已经存在,则在文件rr.c末尾中添加新内容;如果rr.c文件不存在,则创建新文件
cat rr1.c rr2.c > rr.c 将rr1.c和rr.c文件的内容合并到rr.c中 8、sort 对即将输入的内容进行排序
sort rr.c 对rr.c的文件进行排序并输出
sort < rr.c> list 将文件rr.c进行排序,将排序的内容输出到list文件中 9、who | wc -l 统计登陆的用户数量 10、帮助命令
(1)man wc 显示wc的完整信息
(2)whatis wc 显示wc的一行功能描述
11、apropos copy 查找与copy(拷贝)有关的所有命令,这中间我们可以找到相关的命令,例如cp命令 12、“&” : 命令行尾输入,表示将命令的执行过程放到后台处理 例如:cc rr.c &
13、nohup:在退出系统后保持后台作业活动
一般的,如果退出系统,正在运行的后台作业就会终端,但是使用nohup命令就可以在退出系统后让作业继续运行,如:
$nohup find . –name “*.old” –print>old_file 2>find.err&
二、shell
1、shell变量
在shell程序中,或者是shell命令中,使用操作符$来对shell变量进行访问。例如,要显示某个变量时,可以输入:
$ echo $LOGNAME (系统将会显示当前用户名) 在某些场合下,为了明确表示对shell变量的引用,可以用花括弧{}或者双引号将变量括起来,例如:
$ echo ${LOGNAME}
$ echo ${LOGNAME}Aaaaaa
$ echo “$ LOGNAME” is very good
2、shell中引号的说明
单引号‘’、 双引号“”、 反引号`
(a)单引号’ :使用单引号时,shell将一对单引号之间的内容看成是纯粹的字符串信息,一对单引号之间可以包含更多的单引号。 you=”kkk”
echo ‘this is just a ‘test’, can $you tell me the time ?’ 将会显示this is just a ‘test’, can $you tell me the time ?, 它不会将$you替换成“kkk“, 同时‘test’也是作为字符串内容来处理的。
(b)双引号“ : 它将双引号之间的特殊字符作为shell中的含义来解释。 $ file=unixshell
$ echo “the content of `date` is in $file”
这个例子将会显示 the content of wed Aug 16 16:20:12 is in unixshell,这个例子中,’date’被解释成了当前时间的返回值,$file被解释成了unixshell字符串
(c)反引号` 用它来赋值时,表示变量中保存的是执行对应命令的结果。 name=`whoami` echo $name
这个时候显示的不是字符串whoami,而是执行字符串whoami的返回结果,当然,要先保证字符串是一个合法的命令。
3、变量的定义域
同其他的编程语言如C,pascal一样,shell的变量也有局部变量和全局变量的区别。通常在一个shell程序中,通过形如var1=abc方式定义的都是局部变量,只能在该shell程序的进程中起作用,要定义全局变量,需要在局部变量定义之后使用export 命令来将这个变量声明为全局的: export $var1
以下面的例子var.sh,我们来说明全局变量和局部变量的区别和使用
$ var1=csu
$ echo $var1 $ sh $ echo $var1 $ exit $ echo $var1 $ export $var1 $ sh
$ echo $var1
4、Shell预定义变量和环境变量
UNIX系统中,在shell中除了用户可以定义变量外,还存在一些系统变量,称为预定义变量和环境变量。在B-shell中,用set对这些变量进行赋值,而在csh中,用setenv这个命令 5、Shell
中命令的位置变量
CShell变量 变量的作用 $#argv $status $$ 位置参数的个数 表示参数列表 前一个命令返回的状态值 最近访问的后台进程pid值 当前shell进程的pid值 Bshell变量 $# $* $? $! $$ 6、shell中的变量替换
在shell编程中,有时候会遇到这种情况,一个变量在尚未赋值的时候,就被程序进行了输出处理,这样输出的变量将会得到一个空字符串的结果。为了避免这种情况的发生,shell中引入了变量替换的概念,在变量没有赋值的时候可以用一个预先定义的字符串来替换。 替换的形式有三种,列举如下:
$ {var:-word}
表示如果var已经被赋值,则取它的值;否则取word的值,但下面程序中var不改变。
$ {var:=word}
表示如果var已经被赋值,则取它的值,否则取word的值;同时将word赋给 var,下面程序中就用这个值。
$ {var:+word}
表示如果var已经被赋值,则取它的值,否则var变量置为空。
7、test命令的使用 8、shell程序的调试
shell程序可以使用 -v -x 选项对shell程序进行跟踪
(1)-v
当读入shell输入行时把它们显示出来,完成详细跟踪。Shell程序在完成这段程序执行时首先逐行读入执行的命令,并在标准输出上显示该命令要执行的实际内容,然后执行该命令。如果没有语法错误,执行将一直进行下去直到完成shell的执行。
假设有这么一个简单的shell,叫test1.sh date
echo $PATH
我们用-v参数来调试, 执行sh -v test1.sh那么输出就应该是: date
Mon Sep 8 9:55:01 Linux9 2003 echo $PATH
/usr/bin:/usr/ucb/bin:/home/user1
shell在执行date前先显示该命令然后显示date的执行结果,接着显示echo $PATH以及它的执行结果。
(2)-x
执行命令前先把命令和它们的参数显示出来 如果用-x参数来执行这个shell,执行 sh -x test1.sh则系统的输出将是: +date
Mon Sep 8 9:55:01 Linux9 2003
+echo /usr/bin:/usr/ucb/bin:/home/user1 /usr/bin:/usr/ucb/bin:/home/user1 date这一行没有参数,所以只显示命令
echo这一行有参数$path,被直接替换成了参数的值。
(3)长程序段的调试
在调试一个比较大的shell时,没有必要对整个shell程序都进行跟踪,
可以只对其中较为负责的部分进行跟踪,这时可以通过
set –v „„„ set +v或者set –x „„„„set +x来把需要跟踪的部分包含进来。 you=\"mi youyu\"
echo ${you:+mmu} echo $you
set -x data set +x
执行结果: mmu
mi youyu + data
./mm.sh: line 8: data: command not found
9、read
当Bsh遇到一个read语句时,在标准输入文件中读取数据直到一个换行符。此时Shell在解释输入行时,不进行文件名或变量的替换,只是简单地删除多余的空格。然后Shell将输入行的第一个字的内容给变量1,第二个给变量2,直到所有变量都赋上值或是输入行为空。若输入行中字的个数超过变量个数,Shell将把输入行中剩余的所有字的内容都赋给最后一个变量。当变量个数多于输入行字的个数时候,多于的变量将赋一个空值。输入行的每一个字是由空格分隔的一个字母和数字组成的字符串。可以通过重定向的方式从文件中读字符串。
10、tty
用于显示正在使用的终端名称
11、script
用于记录一个交互式会话
12、uname
uname –n :显示机器名称 uname –s:显示操作系统 uname –r:显示软件版本 uname –n:显示全部信息
13、bc
计算命令:要启动计算器,只需简单键入bc命令,要结束时键入文件结束
指令ctr+D
(1)简单计算: $bc 4+5 9
(2)浮点运算: $bc
19/3 /*运算结果默认为整数*/ 6
scale=3 /*设置运算结果保留3位小数*/ 19/3 6.33
scale=6 /*设置运算结果保留6位小数*/ 19/3 6.333333
scale=0 /*设置运算结果为整数*/ 19/3 6
(3)算数数制运算
14、cal
显示日历;如果没有参数,显示的是当前月份的日历,而不是当前年份的日
历;如果只提供一个参数,则该参数被当做年份;cal 9 1999;显示1999年9月的月历
15、groups
确定用户的用户组。如果键入不带用户id(登陆用户名)的groups命
令,则系统以您的用户组作响应;如果输入带用户id的groups命令,则返回该用户的用户组。
$groups staff
$groups elink1 elink1:staff
16、chmod:修改权限
(1)符号代码方式:存在三组权限,用户权限、用户组权限和其他用户权限。每一组使用第一个字符作为助记标识符,u代表用户,g代表用户组,o代表其他用户。若想同时设置三组权限,则使用一组表示全部的a
chmod u=rwx,g+x,o-x filename
备注:chmod命令中的符号代码的采用支持用户设置、添加或删除单个权限 (2)八进制代码方式:所有权限被完全重置 chmod 767 filename
(3)chmod命令包含一个递归选项-R,从当前目录开始,它修改位于该目录的全部文件和目录的权限。然后它进入子目录并递归的改变他们的全部的权限。
17、默认权限的设置
掩码最初是由系统管理员创建用户时设定的,在该用户创建一个目录或文件时,将从默认权限中去掉此设置
当一个新文件或目录被创建时,掩码中的数字被用于设置默认权限。目
录的默认权限是777,文件的默认权限是666 使用不带参数的umask命令,显示当前的用户掩码设置;使用带新掩码设置的umask命令,可以设置新的掩码,当在一个会话中设置用户掩码,只会在该会话期间暂时有效,退出系统,则设置返回默认值,要想让他永久化,则必须将它加入登陆文件
守护进程模式和系统的守护进程有区别吗?
登陆文件
因篇幅问题不能全部显示,请点此查看更多更全内容