1.cp命令拷贝整个目录下的文件
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&&
二、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中命令的位置变量
Bshell变量 | CShell变量 | 变量的作用 |
$# | $#argv | 位置参数的个数 |
$* | 表示参数列表 | |
$? | $status | 前一个命令返回的状态值 |
$! | 最近访问的后台进程pid值 | |
$$ | $$ | 当前shell进程的pid值 |
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
linux循环执行命令脚本./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:显示全部信息
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论