Linux常用命令大全(四)

shell的特点

☆组合新命令 ☆提供了文件名扩展字符

☆直接使用shell的内置命令 ☆灵活地使用数据流

☆结构化的程序模块 ☆在后台执行命令

☆可配置的环境 ☆高级的命令语言

shell的种类

• (1)Bourne shell(简称sh)

• (2)C shell(简称csh)

• (3)Korn shell(简称ksh)

• (4)Bourne Again shell(即bash)

执行shell脚本的方式

执行shell脚本的方式基本上有三种:

(1)输入定向到shell脚本
 $ bash < 脚本名
(2)以脚本名作为参数
其一般形式是:  $ bash  脚本名  [参数]

如果以目前shell(以•表示)执行一个shell脚本,则可以使用如下简便形式:

$ • 脚本名 [参数]

(3)将shell脚本的权限设置为可执行,然后在提示符下直接执行它。
 $ chmod  a+x  ex2
$ PATH=$PATH:.
$ ex2
注意,此时该脚本所在的目录应被包含在命令搜索路径(PATH)中
格 式 意 义

!! 重复上一条命令,也就是“!-1”

!n 重新执行第n条历史命令

!-n 重新执行倒数第n条历史命令。!-1就等于! !

!string 重新执行以字符串string开头的最近的历史命令行。

!?string? 重新执行最近的、包含字符串string的那条历史命令

!# 到现在为止所输入的整个命令行

名称补全

• 可以输入目录名或文件名的开头部分,然后按Tab键,Linux根据输入的字母查找以这些字母开头的目录或文件,并自动补全剩余的部分。

字母+两次Tab键:显示以该字母开头的所有命令

定义别名:

一般语法格式为: alias [name[=value]]…

• 如果没有指定参数,将在标准输出(屏幕)上显示别名清单

• name别名名称,value别名所代表的内容

• 定义别名时,往往用单引号将它代表的内容括起来,从而防止shell对其中的内容产生歧义,如对空格和特殊字符另作解释

取消别名;

• 如果想取消先前定义的别名,可使用如下命令:

unalias name…

• 可以一次将所有的别名都从别名表中删除,使用如下命令:

unalias -a

通配符
1.一般通配符

• *(星号),它匹配任意字符的0次或多次出现

• ?(问号),它匹配任意一个字符

• [ ](一对方括号),其中有一个字符组。其作用是匹配该字符组所限定的任何一个字符

• !(惊叹号),如果它紧跟在一对方括号的左方括号([)之后,则表示不在一对方括号中所列出的字符

2.模式表达式 ——是那些包含一个或多个通配符的字

• *(模式表)——匹配给定模式表中“模式”的0次或多次出现,各模式之间以“|”分开(下同)

• +(模式表)——匹配给定模式表中“模式”的1次或多次出现

• ?(模式表)——匹配模式表中任何一种“模式”的0次或1次出现

• @(模式表)——仅匹配模式表中给定“模式”的一次出现

• !(模式表)——除给定模式表中的一个“模式”之外,可以匹配其他任何东西

引号;

1.双引号

• 由双引号括起来的字符(除$、倒引号(`)和反斜线(\)外)均作为普通字符对待。

2.单引号

• 由单引号括起来的字符都作为普通字符出现

3.倒引号

• 倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。

• 倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线(\)将其转义。

. 特殊字符串引用的例外

引用双引号、单引号和转意符都不能消除对echo命令有特殊功能的控制字串的特殊含义。这些控制字串是:

\b 退格

\c 显示后不换行

\f 在终端上屏幕的开始处显示

\n 换行

\r 回车

\t 制表符

\v 垂直制表符

\ 反斜杠

输入、输出重定向

• 自动打开三个标准文件,即标准输入文件(stdin),标准输出文件(stdout)和标准出错输出文件(stderr)。

1.输入重定向符

• 一般形式是:命令 < 文件名

如:$ score < file1

2.输出重定向符

• 一般形式是:命令 > 文件名

如:$ who > abc

3.输出附加定向符

• 一般形式是:命令>>文件名

如:$ ps -l >> psfile

• 输入和输出重新定向可以连在一起使用。例如:

$ wc -l < infile > outfile

4.即时文件定向符

• 即时文件的形式是:

命令 [参数]<< 标记符

输入行



标记符

注意:标记符要成对出现

• 例如:

mail $1 << !!

Best wishes to you on your birthday .

!!

5.与文件描述字有关的重定向

• 系统为每个进程自动打开三个标准文件(即标准输入、标准输出和错误输出),其文件描述字分别为0,1和2。

• 标准错误输出也可重定向到一个文件中,其一般形式是:

命令 2> 文件名

命令 2>> 文件名

• 标准输出和标准错误输出可以重定向到同一个文件,一般形式是:

command $>file

• 等价于下面形式的命令:

command > file 2>& 1

注释、管道线、后台命令
1.注释 #开头

!/bin/bash

If no arguments, then listing the current directory.

Otherwise, listing each subdirectory.

2.管道线 前一个命令的输出正是下一个命令的输入

ls -l $HOME | wc –l

ls | grep m?.c | wc –l

3.后台命令 在一条命令的最后输入&,在后台执行

$ gcc m1.c&

命令执行操作符
1.顺序执行
在执行时,以分号隔开的各条命令从左到右依次执行

• pwd ; who | wc -l ; cd /usr/bin

2.逻辑与

• 命令1 && 命令2

• 其功能是,先执行命令1,如果执行成功,才执行命令2;否则,若命令1执行不成功,则不执行命令2。

3.逻辑或

• 命令1 || 命令2

• 其功能是,先执行命令1,如果执行不成功,则执行命令2;否则,若命令1执行成功,则不执行命令2。

成组命令

1.{ }形式

• 以花括号括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。

$ { echo “User Report for date . ”; who ; } | pr

使用花括号时在格式上应注意:左括号 “{ ”后面应有一个空格;右括号“}”之前应有一个分号( ;)

2.( )形式

(echo "Current directory is pwd . "

cd /home/mengqc ; ls -l ;

cp m1 em1 && rm m1

cat em1) | pr

二者存在重要区别:用花括号括起来的成组命令只是在本shell内执行命令表,不产生新的进程;而用圆括号括起来的成组命令是在新的子shell内执行,要建立新的子进程。

用户定义的变量

1.变量名是以字母或下线符打头的字母、数字和下线符序列,并且大小写字母意义不同。

2. 定义变量并赋值的一般形式是:

变量名=字符串

3.引用变量值 在变量名前面加上一个符号“$”

• 如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。

$ names="Zhangsan Lisi Wangwu"

$ echo $names

命令替换

• 有两种形式的命令替换:一种是使用倒引号引用命令,其一般形式是:

命令表

• 另一种形式是:

$(命令表)

如:$ dir=$(pwd)

$ echo $(pwd ; cd /home/mengqc ; ls -d)

输入、输出命令

1.read命令

• 可以利用read命令从键盘上读取数据,然后赋给指定的变量。read命令的一般格式是:

• read 变量1 [ 变量2 …]

– 变量个数与给定数据个数相同,则依次对应赋值

– 变量个数少于数据个数,则从左至右对应赋值,但最后一个变量被赋予剩余的所有数据。

– 变量个数多于给定数据个数,则依次对应赋值,而没有数据与之对应的变量取空串

2. echo命令显示其后的变量值或者直接显示它后面的字符串

如果echo命令带有选项“-e”,那么在其后的参数中可以有以下转义字符:

\a \b \c \e \f \n \r \t \v \ \m \xm

移动位置参数

• 每执行一次shift命令,就把命令行上的实参向左移一位,即相当于位置参数向右移动一个位置。

• shift命令不能将$0移走,所以经shift右移位置参数后, $0的值不会发生变化。

• shift命令可以带有一个整数作为参数

预先定义的特殊变量

$# 命令行上参数的个数,但不包含shell脚本名本身。因 此,$#可以给出实际参数的个数。

$? 上一条命令执行后的返回值(也称作 “返回码”、 “退出状态”、“退出码”等)。它是一个十进制数。

$$ 当前进程的进程号。

$! 上一个后台命令对应的进程号,这是一个由1~5位数字构成的数字串。

$- 由当前shell设置的执行标志名组成的字符串。

$* 表示在命令行中实际给出的所有实参字符串,它并不仅限于9个实参。

$ @ 它与$基本功能相同,即表示在命令行中给出的所有实参。但“$@”与“$”不同。

Linux常用命令大全(四)的更多相关文章

  1. Linux常用命令大全(全面)

    笔者在这篇文章中跟大家分享一下接近 100 个 Linux 常用命令大全,希望可以帮助到大家. 1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 1 2 3 4 5 6 7 8 9 1 ...

  2. Linux常用命令大全(三)

    Linux常用命令大全(三) 文件类型 普通文件(文本文件.数据文件.可执行的二进制文件) 目录文件 同上 差别:由成对的"I节点号.文件名"构成的列表 设备文件 (字符设备.块设 ...

  3. 来不及解释!Linux常用命令大全,先收藏再说

    摘要:Linux常用命令,很适合你的. 一提到操作系统,我们首先想到的就是windows和Linux.Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件.相比较Windo ...

  4. linux 常用命令大全

    linux 常用命令大全 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统 ...

  5. 100个命令Linux常用命令大全

    Linux常用命令大全100条: 1,echo "aa" > test.txt 和 echo "bb" >> test.txt//>将原 ...

  6. Linux常用命令大全(非常全!!!)

    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...

  7. Linux常用命令大全(转)

    (转)Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因, ...

  8. 18-10-09 Linux常用命令大全(非常全!!!)

     Linux常用命令大全(非常全!!!)   Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制, ...

  9. [转] Linux常用命令大全(非常全!!!)

    出处:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得 ...

随机推荐

  1. Hive高阶聚合函数 GROUPING SETS、Cube、Rollup

    -- GROUPING SETS作为GROUP BY的子句,允许开发人员在GROUP BY语句后面指定多个统计选项,可以简单理解为多条group by语句通过union all把查询结果聚合起来结合起 ...

  2. C#中的?操作符

    一.1个?的用法 1. 表示可空数据类型,如 int? bool? 2. 跟在对象后,如该对象为null,则不会触发空值异常,且整个表达式返回null,如: string kk = "123 ...

  3. linux 一些简单操作

    vim   ----三种模式 1.命令模式           2.输出模式       3.底线命令模式 w(e) 移动光标到下一个单词 b 移动到光标上一个单词 数字0 移动到本行开头 $ 移动光 ...

  4. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  5. 洛谷P5664 Emiya 家今天的饭 问题分析

    首先来看一道我编的题: 安娜写宋词 题目背景 洛谷P5664 Emiya 家今天的饭[民间数据] 的简化版本. 题目描述 安娜准备去参加宋词大赛,她一共掌握 \(n\) 个 词牌名 ,并且她的宋词总共 ...

  6. hdu 4430 Yukari's Birthday (简单数学 + 二分)

    Problem - 4430 题意是,给出蜡烛的数量,要求求出r和k,r是蜡烛的层数,k是每一层蜡烛数目的底数. 开始的时候,没有看清题目,其实中间的那根蜡烛是可放可不放的.假设放置中间的那根蜡烛,就 ...

  7. supersockets多个 listener

    你可以增加一个子节点 "listeners" 用于添加多对监听 ip/port: <superSocket> <servers> <server na ...

  8. H3C 帧中继显示与调试

  9. 怎么让FOXMAIL关了以后在右下角自动收取邮件

    1.缩小到任务栏:打开foxmail,在工具-系统设置-常规,选项中有一项最小化时在任务栏显示,勾选上即可.2.要自动收取邮件,选中邮件账户,右键打开菜单,属性-接收邮件,右边勾选上“每隔*分钟自动收 ...

  10. CSS3 box-sizing 盒子布局

    在CSS中盒模型被分为两种,第一种是W3C的标准模型,第二种是IE怪异盒模型.不同之处在于后者的宽高定义的是可见元素框的尺寸,而不是元素框的内容区尺寸.目前对于浏览器大多数元素都是基于W3C标准的盒模 ...