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、变量的定义域
同其他的编程语言如Cpascal一样,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中除了用户可以定义变量外,还存在一些系统变量,称为预定义变量和环境变量。在Bshell中,用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小时内删除。