linux dmesg命令详解(精选10篇)
1.linux dmesg命令详解 篇一
语法
bcp {[[database_name.][owner].]{table_name | view_name} | ”query“}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h ”hint [,...n]“]
参数
database_name
指定的表或视图所在数据库的名称,
[精品]bcp 命令详解
。如果未指定,则为用户默认数据库。
owner
表或视图所有者的名称。如果执行大容量复制操作的用户拥有指定的表或视图,则owner是可选的。如果没有指定owner并且执行大容量复制操作的用户不拥有指定的表或视图,则Microsoft? SQL Server? 将返回错误信息并取消大容量复制操作。
table_name
是将数据复制到SQL Server时(in)的目的表名,以及从SQL Server复制数据时(out)的源表名。
view_name
是将数据复制到SQL Server时(in)的目的视图名,以及从SQL Server复制数据时(out)的源视图名。只有其中所有列都引用同一个表的视图才能用作目的视图。有关将数据复制到视图的限制的更多信息,请参见INSERT。
Query
是返回一个结果集的Transact-SQL查询。如果查询返回多个结果集,例如指定COMPUTE子句的SELECT语句,只有第一个结果集将复制到数据文件,随后的结果集被忽略。使用双引号引起查询语句,使用单引号引起查询语句中嵌入的任何内容。在从查询中大容量复制数据时,还必须指定queryout。
in | out | queryout | format
指定大容量复制的方向。in是从文件复制到数据库表或视图,out是指从数据库表或视图复制到文件。只有从查询中大容量复制数据时,才必须指定queryout。根据指定的选项(-n、-c、-w、-6或-N)以及表或视图分隔符,format将创建一个格式文件。如果使用format,则还必须指定-f选项。
说明Microsoft SQL Server 6.5中的bcp实用工具不支持大容量复制到包含sql_variant或bigint数据类型的表。
data_file
大容量复制表或视图到磁盘(或者从磁盘复制)时所用数据文件的完整路径。当将数据大容量复制到SQL Server时,此数据文件包含将复制到指定表或视图的数据。当从SQL Server大容量复制数据时,该数据文件包含从表或视图复制的数据。路径可以有1到255个字符。
-m max_errors
指定在大容量复制操作取消之前可能产生的错误的最大数目。bcp无法复制的每一行都将被忽略并计为一个错误。如果没有包括该选项,则默认为10。
-f format_file
指定格式文件的完整路径,该格式文件包含以前在同一个表或视图上使用bcp时的存储响应,当使用由format选项所创建的格式文件大容量复制入或复制出数据时,使用此选项。格式文件的创建是可选的。在提示几个格式问题之后,bcp将提示是否在格式文件中保存回答。默认文件名为Bcp.fmt。大容量复制数据时,bcp可引用一个格式文件,因此不必重新交互输入以前的回答。如果未使用此选项,也没有指定Cn、-c、-w、-6或-N,则bcp将提示输入格式信息。
-e err_file
指定错误文件的完整路径,此错误文件用于存储bcp无法从文件传输到数据库的所有行。来自bcp的错误信息将发送到用户工作站。如果未使用此选项,则不创建错误文件。
-F first_row
指定要大容量复制的第一行的序数。默认值是1,表示在指定数据文件的第一行。
-L last_row
指定要大容量复制的最后一行的序数。默认值是0,表示指定数据文件中的最后一行。
-b batch_size
指定所复制的每批数据中的行数。每个批处理作为一个事务复制至服务器。SQL Server提交或回滚(在失败时)每个批处理的事务。默认情况下,指定的数据文件中的所有数据都作为一批复制。请不要与-h ”ROWS_PER_BATCH = bb“选项一起使用。
-n
使用数据的本机(数据库)数据类型执行大容量复制操作。此选项不提示输入每一字段,它将使用本机值。
-c
使用字符数据类型执行大容量复制操作。此选项不提示输入每一字段;它使用char作为存储类型,不带前缀, (制表符)作为字段分隔符, (换行符)作为行终止符。
-w
使用Unicode字符执行大容量复制操作。此选项不提示输入每一字段;它使用nchar作为存储类型,不带前缀, (制表符)作为字段分隔符, (换行符)作为行终止符。不能在SQL Server 6.5版或更早版本中使用。
-N
对非字符数据使用数据的本机(数据库)数据类型和对字符数据使用Unicode字符类型执行大容量复制操作。这是可替代-w选项的性能更高的选项,其目的是使用数据文件将数据从一个SQL Server传输到另一个SQL Server中。它不提示输入每一字段。在需要传输包含ANSI扩展字符的数据以及想利用本机模式的性能时,可以使用这一选项。不能在SQL Server 6.5版或更早版本中使用-N选项。
-V (60 | 65 | 70)
使用SQL Server早期版本中的数据类型执行大容量复制操作。此选项与字符(-c)或本机(-n)格式一起使用。此选项并不提示输入每一字段,它使用默认值。例如,若要将SQL Server 6.5中的bcp实用工具所支持(但ODBC不再支持)的日期格式大容量复制到SQL Server 2000,可使用-V 65参数。
重要将数据从SQL Server大容量复制到数据文件时,即使指定了CV,bcp实用工具也不会为任何datetime或smalldatetime数据生成SQL Server 6.0或SQL Server 6.5的日期格式。日期将始终以ODBC格式写入。另外,由于SQL Server 6.5版或更早版本不支持可为空的bit数据,因此bit列中的空值写为值0。
-6
使用SQL Server 6.0或SQL Server 6.5数据类型执行大容量复制操作。仅为保持向后兼容性。改为使用CV选项。
-q
在bcp实用工具和SQL Server实例的连接中执行SET QUOTED_IDENTIFIERS ON语句。使用该选项指定包含空格或引号的数据库、所有者、表或视图的名称。将由三部分组成的整个表名或视图名引在双引号(” “)中。
-C code_page
仅为保持向后兼容性。作为代替,请在格式文件或交互式bcp中为每一列指定一个排序规则名。
指定数据文件中的数据代码页。只有当数据中包含字符值大于127或小于32的char、varchar或text列时,code_page才有用。
代码页值描述
ACP ANSI/Microsoft Windows? (IS
2.Make命令教程详解 篇二
概述
Makefile文件由一系列规则(rules)构成。每条规则的形式如下。
<“ codegtlt=”code><“ commandsgtlt=”commands><“ pre=”pre“ prerequisitesgtlt=”prerequisites><“ targetgtlt=”target><“> 搜索文件 格式 find pathoption [-print] [-exec -ok command] {} 默认搜索路径为当前路径 默认为-print,输出至标准输出 对于查找到的文件执行command命令 option为搜索条件 主要参数 -name filename 限制文件名 -user username 按文件属主来搜索 -group groupname 按组来查找 -mtime -n +n 按文件更改时间来查找,-n指n天以内,+n指n天以前 -atime -n +n 按文件访问时间来查 -ctime -n +n 按文件创建时间来查找 -nogroup -nouser -type 按文件类型搜索 -size n -depth 查找子目录前先搜索完本目录 -follow 如果遇到符号链接文件,就跟踪链接所指文件 -prune 忽略某个文件 -o 逻辑或 -a 逻辑与 ! 逻辑否 ( ) 转义,可括住搜索条件 示例 查找当前目录下的所有普通文件 find .-type f -exec ls -l {} ; 在home目录下查找更改时间在5日以前的文件并删除它们 find /home-mtime +5 -exec -ok rm {} ; 查询今天修改过的文件 find /-mtime -1 -exec ls -l {} ; 查询今天修改过的文件并提示是否显示 find /-mtime -1 -ok ls -l {} ; 查找小于100k的文件并显示 find /home-size -100k -exec ls -l {} ; 查找后缀为.txt的所有文件 显示消息,或者启用或关闭命令回显。ECHO [ON | OFF]、ECHO [message] 若要显示当前回显设置,请键入不带参数的 ECHO。 1.2 echo举例 ①echo 显示当前回显设置,结果有ECHO 处于打开状态、ECHO 处于关闭状态 ②echo on 打开回显设置,即ECHO 处于打开状态 ③echo off 关闭回显设置,即ECHO 处于关闭状态 ④echo 我是中国人 显示输出的内容信息,窗口输出“我的中国人”,不需要加单双引号 ⑤echo.换行 命令:pause 2.1 pause含义 暂停批处理程序,并显示以下消息:请按任意键继续...2.2 pause举例 ①pause 显示“请按任意键继续...”信息 命令:@ 3.1 @含义 用于禁止当前执行的命令回显在屏幕上 3.2 @举例 @echo off 该命令行不会回显在屏幕上 4 命令:goto 4.1 goto含义 将 cmd.exe 定向到批处理程序中带标签的行。 GOTO label label 指定批处理程序中用作标签的文字字符串。标签必须单独一行,并且以冒号打头。如果命令扩展被启用,GOTO 会如下改变: GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的办法。有关能使该功能有用的 CALL 命令的扩展描述,请键入CALL /?。 4.2 goto举例 ①命令行如下 执行结果如下 命令:call 5.1 call含义 从批处理程序调用另一个批处理程序。 CALL [drive:][path]filename [batch-parameters] batch-parameters 指定批处理程序所需的命令行信息。如果命令扩展被启用,CALL 会如下改变: CALL 命令现在将卷标当作 CALL 的目标接受。语法是:CALL:label arguments 一个新的批文件上下文由指定的参数所创建,控制在卷标被指定后传递到语句。你必须通过达到批脚本文件末两次来 “exit” 两次。第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次会退出批脚本。5.2 call举例 ①call 文件名 调用外部的批处理文件,并执行内容 执行结果如下: 命令:if 6.1 if含义 执行批处理程序中的条件处理。 IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command NOT 指定只有条件为 false 的情况下,Windows 才应该执行该命令。 ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出代码,指 定条件为 true。 string1==string2 如果指定的文字字符串匹配,指定条件为 true。 EXIST filename 如果指定的文件名存在,指定条件为 true。 command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟 ELSE 命令,该命令将 在 ELSE 关键字之后执行该命令。ELSE 子句必须出现在同一行上的 IF 之后。例如: IF EXIST filename.(del filename.)ELSE(echo filename.missing.)6.2 if举例 ①字符串匹配判断和文件是否存在判断(既可以为相对路径,也可以为绝对路径)比较运算符 比较运算符有以下几种: EQU不等于 LSS小于或等于 GTR大于或等于 命令:for 8.1 for含义 对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN(set)DO command [command-parameters] %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.如果启用命令扩展,则会支持下列 FOR 命令的其他格式: FOR /D %variable IN(set)DO command [command-parameters] 如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。FOR /R [[drive:]path] %variable IN(set)DO command [command-parameters] 检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。 如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。 FOR /L %variable IN(start,step,end)DO command [command-parameters] 该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列 8.2 for举例 ①循环输出数字和循环输出3.txt中的文本内容 命令:rem 9.1 rem含义 在批处理文件或 CONFIG.SYS 里加上注解或说明。REM [comment] 9.2 rem举例 ①rem 这是一条注释,不会执行 10 命令:start 10.1 start含义 重新打开一个窗口或执行程序,并根据参数执行相应命令 10.2 start举例 ①start notepad++ 打开notepad++程序 ②start “这是新的cmd窗口” echo 在第二个窗口执行程序 命令:set 11.1 set含义 显示、设置或删除 cmd.exe 环境变量。SET [variable=[string]] variable 指定环境变量名。 string 指定要指派给变量的一系列字符串。要显示当前环境变量,键入不带参数的 SET。 11.2 set举例 ①set 显示所有的环境变量,环境变量不区分大小写 ②set java_home 显示以“java_home”开头的环境变量 ③set JAVA_HOME=D:myworkjdkinstall 设置JAVA_HOME的值 ④set /p var=请输入您的姓名: 提示用户输入参数,%var%调用该参数 ⑤set /a var=2*2 设置运算表达式 命令:choice 12.1 choice含义 CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text] 描述:该工具允许用户从选择列表选择一个项目并返回所选项目的索引。参数列表: /C choices 指定要创建的选项列表。默认列表是 “YN”。 /N 在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。 /CS 允许选择分大小写的选项。在默认情况下,这个工具 是不分大小写的。 /T timeout 做出默认选择之前,暂停的秒数。可接受的值是从 0 到 9999。如果指定了 0,就不会有暂停,默认选项 会得到选择。 /D choice 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选 项指定的一组选择中;同时,必须用 /T 指定 nnnn。 /M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。 12.2 choice举例 CHOICE /C YNC /M “确认请按 Y,否请按 N,或者取消请按 C。” CHOICE /T 10 /C ync /CS /D y CHOICE /C ab /M “选项 1 请选择 a,选项 2 请选择 b。” CHOICE /C ab /N /M “选项 1 请选择 a,选项 2 请选择 b。” 13 命令:copy 13.1 copy含义 将一份或多份文件复制到另一个位置。 COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B ] source [/A | /B] [+ source [/A | /B] [+...]] [destination [/A | /B]] source 指定要复制的文件。 /A 表示一个 ASCII 文本文件。 /B 表示一个二进位文件。 /D 允许解密要创建的目标文件 destination 为新文件指定目录和/或文件名。 /V 验证新文件写入是否正确。 /N 复制带有非 8dot3 名称的文件时,尽可能使用短文件名。 /Y 不使用确认是否要覆盖现有目标文件的提示。 /-Y 使用确认是否要覆盖现有目标文件的提示。 /Z 用可重新启动模式复制已联网的文件。 /L 如果源是符号链接,请将链接复制到目标而不是源链接指向的实际文件。 13.2 copy举例 ①copy a.txt bak.txt 复制a.txt文件,命名为bak.txt,不能复制目录下的文件并重命名 ②copy /b f:1.txt+2.txt f:3.txt 合并文件到一个新的文件 命令:move 14.1 move含义 移动文件并重命名文件和目录。要移动至少一个文件: MOVE [/Y | /-Y] [drive:][path]filename1[,...] destination 要重命名一个目录: MOVE [/Y | /-Y] [drive:][path]dirname1 dirname2 [drive:][path]filename1 指定你想移动的文件位置和名称。 destination 指定文件的新位置。目标可包含一个驱动器号 和冒号、一个目录名或组合。如果只移动一个文件 并在移动时将其重命名,你还可以包括文件名。 [drive:][path]dirname1 指定要重命名的目录。 dirname2 指定目录的新名称。 /Y 取消确认覆盖一个现有目标文件的提示。 /-Y 对确认覆盖一个现有目标文件发出提示。 14.2 move举例 ①move 3.txt D:a.txt 文件移动并重命名 命令:del 15.1 del含义 删除一个或数个文件。 DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names names 指定一个或多个文件或者目录列表。通配符可用来删除多个文件。 如果指定了一个目录,该目录中的所有文件都会被删除。 /P 删除每一个文件之前提示确认。 /F 强制删除只读文件。 /S 删除所有子目录中的指定的文件。 /Q 安静模式。删除全局通配符时,不要求确认 /A 根据属性选择要删除的文件 属性 R 只读文件 S 系统文件 H 隐藏文件 A 存档文件 I 无内容索引文件 L 重分析点 表示“否”的前缀 /B 使用空格式(没有标题信息或摘要)。 /C 在文件大小中显示千位数分隔符。这是默认值。用 /-C 来 禁用分隔符显示。 /D 跟宽式相同,但文件是按栏分类列出的。 /L 用小写。 /N 新的长列表格式,其中文件名在最右边。 /O 用分类顺序列出文件。 排列顺序 N 按名称(字母顺序) S 按大小(从小到大) E 按扩展名(字母顺序) D 按日期/时间(从先到后) G 组目录优先 -反转顺序的前缀 /P 在每个信息屏幕后暂停。 /Q 显示文件所有者。 /R 显示文件的备用数据流。 /S 显示指定目录和所有子目录中的文件。 /T 控制显示或用来分类的时间字符域。 17.2 dir举例 ①dir /o F: 分类显示F盘下的文件和文件夹 命令:find 18.1 find含义 在文件中搜索字符串。 FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] “string” [[drive:][path]filename[...]] /V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 /N 显示行号。 /I 搜索字符串时忽略大小写。 /OFF[LINE] 不要跳过具有脱机属性集的文件。 “string” 指定要搜索的文本字符串。 [drive:][path]filename 指定要搜索的文件。 18.2 find举例 ①find /c /n “视” oa视图对比.txt 从文件中查找“视”,并显示行号 命令:type 19.1 type含义 显示文本文件的内容,或者创建文件 TYPE [drive:][path]filename 19.2 type举例 ①type nul>a.txt 创建文件a.txt ②type a.txt 查看文件内容 命令:md/mkdir 20.1 md含义 创建目录。 MKDIR [drive:]path MD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MKDIR 会在路径中创建中级目录。例如: 假设 a 不 存在,那么: mkdir abcd 与:mkdir a chdir a mkdir b chdir b mkdir c chdir c mkdir d 相同。如果扩展被停用,则需要键入 mkdir abcd。 20.2 md举例 功能说明:删除用户帐号, 语 法:userdel [-r][用户帐号] 补充说明:userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。 参 数: -f 删除用户登入目录以及目录中所有文件。 userdel很简单,只有一个参数可选 -r ;如果加参数-r ,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一同删除;比如我们现在有个用户jb51,其家目录位于/var目录中,现在我们来删除这个用户; userdel jb51 注:删除用户jb51,但不删除其家目录及文件; userdel -r jb51 注:删除用户jb51,其家目录及文件一并删除; 警告: 请不要轻易用-r参数;他会删除用户的同时删除用户所有的文件和目录,切记;如果用户目录下有重要的文件,在删除前请备份; 其实也有最简单的办法,但这种办法有点不安全,也就是直接在/etc/passwd中删除您想要删除用户的记录;但最好不要这样做,/etc/passwd 是极为重要的文件,可能您一不小心会操作失误; 其相似命令groupdel 是用来删除用户组的; 语法格式:groupdel 用户组 groupdel admin 假如删除的时候忘记带r参数 以后想删除这个用户的文件 可以用下面这条命令 find / --nouser -exec rm - rf {} 命令:chsh 用法:shell>>chsh 说明:更改使用者 shell 设定 范例: shell>>chsh Changing fihanging shell for user1 Password: [del] New shell [/bin/tcsh]: ### [是目前使用的 shell] [del] shell>>chsh -l ### 展示 /etc/shells 档案内容 /bin/bash /bin/sh /bin/ash /bin/bsh /bin/tcsh /bin/csh 推荐阅读:用chsh命令选择shell 1 我想知道我机器安装了哪些shell? 两种方法可以查看: 第一种: [rocrocket@jb51.net ~]$ chsh -l /bin/sh /bin/bash /sbin/nologin /bin/zsh 第二种: [rocrocket@jb51.net ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/zsh 其实chsh -l也是来查看这个文件, 2 我想知道我当前正在使用的shell是哪个阿? [rocrocket@jb51.net ~]$ echo $SHELL /bin/bash 注意SHELL一定要是大写, 可以看到,我目前使用的shell是/bin/bash 3 执行了zsh之后,我查看当前shell类型仍然是/bin/bash呢? 请注意,我们虽然执行了zsh,但是所谓“当前的shell”是一个大环境的概念,是针对一个已登录的用户而言的。而我们执行zsh只是启动了一个zsh的解释器程序而已,并没有改变大环境。如果想改变“当前的shell”,那么还是要使用chsh才可以。 4 我想把我的shell改成zsh! [rocrocket@jb51.net ~]$ chsh -s /bin/zsh Changing shell for rocrocket. Password: Shell changed. [rocrocket@jb51.net ~]$ 使用chsh加选项-s就可以修改登录的shell了! 你会发现你现在执行echo $SHELL后仍然输出为/bin/bash,这是因为你需要重启你的shell才完全投入到zsh怀抱中去。 5 chsh -s到底是修改了哪里? 秘密告诉你吧。chsh -s其实修改的就是/etc/passwd文件里和你的用户名相对应的那一行。现在我来查看下: [rocrocket@jb51.net ~]$ cat /etc/passwd|grep ^rocrocket rocrocket:x:500:500:rocrocket,China:/rocrocket/PSB/home:/bin/zsh 看!你可以发现输出内容的最后部分已经变成了/bin/zsh了!下次你重启的时候,linux就会读取这一命令来启动你的shell了! 好了,我要恢复正常工作,把shell修改会我熟悉的/bin/bash了! [rocrocket@jb51.net ~]$ chsh -s /bin/bash Changing shell for rocrocket. Password: 1. ls 命令 这个命令就相当于 dos 下的dir 命令一样,也是Linux 控制台命令中最为重要几个命令之一.ls 最常用的参数有三个:-a、 -l 、和–F。 ls -a Linux 系统上的文件以.开头的文件被系统视为隐藏文件,仅用ls 命令是看不到他们的。而用ls –a ,除了显示一般文件名外,连隐藏文件也会显示出来。 ls –l (这个参数是字母 L 的小写不是数字1) 这个命令可以使用长格式显示文件内容。 如果需要察看更详细的文件资料就要用到ls -l 这个指令。 ls –F 在列出的文件 (目录)名称后加一符号,例如可执行文件加”*”, 目录则加 “/”。 2. cd 命令 cd 这个命令是用来进出目录的,它的使用方法和在dos 下没什么两样,但和dos 不同的是Linux 的目录对大小写是敏感的,如果大小写拼写有误,你的cd操作是成功不了的。另外,cd 如果直接输入,cd 后面不加任何东西会回到使用者自己的Home 目录。假设如果是root 那就是回到/root, 这个功能同cd~是一样的。 3. mkdir rmdir mkdir 命令用来建立新的目录,如输入如下命令: mkdir work 将在当前目录下新建一个 work 目录。 rmdir 用来删除已建立的目录,如输入如下命令: rmdir work 将删除已存在的空目录work 4. cp cp 这个命令相当于dos 下面的copy 命令。具体用法是: cp -r 源文件(source) 目的文件(target) 参数 r 是指连同源文件中的子目录一同拷贝, 5. rm rm 这个命令是用来删除文件的,rm命令常用的参数有三个-i,-r,-f。 比如我现在要删除一个名字为 text 的一个文件,输入如下命令: rm –i test 系统会询问我们是否要删除test 文件,敲了“y/n” 确认是否要删除test 文件: rm –r 目录名:这个操作可以连同这个目录下面的子目录都删除,功能比上面讲到的rmdir 更强大,不仅可能删除指定的目录,而且可以删除该目录下所有文件和子目录。 rm –f 文件名这个操作可以不经确认强制删除文件。 6. mv mv 这个命令的功能是移动目录或文件,引申的功能是给目录或文件重命名, 比如: mv /tmp/xxx.tar /root 该命令将/tmp 目录下的xxx.tar 文件移动到/root 目录下。 而: mv aaa.tar bbb.tar 则是将当前目录下的文件 aaa.tar 更名为bbb.tar。 7. cat cat 这个命令是linux 中非常重要的一个命令,它的功能是显示或连结一般的ascii 文本文件、它的用法如下: cat text 该命令显示text 这个文件的内容。 cat file1 file2 该命令依顺序显示file1,file2 的内容。 cat file1 file2>file3 该命令把file1,file2 的内容结合起来再重定向>到file3 文件中。 8. more more 是显示一般文本文件的指令。如果一个文本文件太长了超过一个屏幕的画面,用cat 来看实在是不理想,就可以试试more ,用法如下: more file1 9. pwd WINDOWS提供WEB服务的IIS有时候会出现访问过大导致网站打不开,这时重启IIS是最好的选择。 1、界面操作 打开“控制面板”->“管理工具”->“服务”。找到“IIS Admin Service” 右键点击“重新启动” 弹出 “停止其它服务” 窗口,点击“是”。 2、Net 命令操作 点击 “开始”->“运行”,输入cmd 打开命令窗口; 输入 net stop iisadmin /y回车停止IIS; 再输入 net start iisadmin回车启动IIS; 再输入 net start w3svc 回车WEB服务, 3、IISReset 命令操作 点击 “开始”->“运行”,输入iisreset 回车。 4、通过“IIS管理器”重启 在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”。 5、重启IIS服务器,开始->运行->cmd (以下列出相关操作命令): iisreset /RESTART 停止后启动 iisreset /START 启动IIS (如果停止) iisreset /STOP 停止IIS (如果启动) iisreset /REBOOT 重启电脑 iisreset /REBOOTonERROR 如果停止IIS失败重启电脑 iisreset /NOFORCE 不用强迫IIS停止 iisreset /TIMEOUT:X 在X秒后,IIS被强制停止,除非 /NOFORCE 参数给出. 内容来自 1.命令 格式: mv [选项] 源文件或目录 目标文件或目录 2.命令功能: 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命 令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命 令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给 的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称 时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目 录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件 的链接也将丢失。 3.命令参数: -b :若需覆盖文件,则覆盖前 先行备份。 -f :force 强制的意思,如果目标文件已经存在,不会询问 而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问 是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会更新 (update) 4.命令实例: 实例一:文件改名 命令: mv test.log test1.txt 输出: [root@localhost test]# ll 总计 20drwxr-xr-x 6 root root 4096 10-27 01:58 scf drwxrwxrwx 2 root root 4096 10-25 17:46 test3 drwxr- xr-x 2 root root 4096 10-25 17:56 test4 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 -rw-r--r-- 1 root root 16 10-28 06:04 test.log [root@localhost test]# mv test.log test1.txt [root@localhost test]# ll 总计 20drwxr-xr-x 6 root root 4096 10-27 01:58 scf -rw-r--r-- 1 root root 16 10-28 06:04 test1.txt drwxrwxrwx 2 root root 4096 10-25 17:46 test3 drwxr-xr-x 2 root root 4096 10-25 17:56 test4 drwxr -xr-x 3 root root 4096 10-25 17:56 test5 说明: 将文件 test.log重命名为test1.txt 实例二:移动文件 命令: mv test1.txt test3 输出: [root@localhost test]# ll 总 计 20drwxr-xr-x 6 root root 4096 10-27 01:58 scf -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxrwxrwx 2 root root 4096 10-25 17:46 test3 drwxr-xr-x 2 root root 4096 10-25 17:56 test4 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# mv test1.txt test3 [root@localhost test]# ll 总计 16drwxr-xr-x 6 root root 4096 10-27 01:58 scf drwxrwxrwx 2 root root 4096 10-28 06:09 test3 drwxr- xr-x 2 root root 4096 10-25 17:56 test4 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# cd test3 [root@localhost test3]# ll 总计 4 -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt [root@localhost test3]# 说明: 将test1.txt文件移到目录test3中 实例三:将文件 log1.txt,log2.txt,log3.txt移动到目录test3中。 命令: mv log1.txt log2.txt log3.txt test3 mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt 输出: [root@localhost test]# ll 总计 28 -rw-r--r-- 1 root root 8 10-28 06:15 log1.txt -rw-r--r-- 1 root root 12 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt drwxrwxrwx 2 root root 4096 10-28 06:09 test3 [root@localhost test]# mv log1.txt log2.txt log3.txt test3 [root@localhost test]# ll 总计 16drwxrwxrwx 2 root root 4096 10 -28 06:18 test3 [root@localhost test]# cd test3/ [root@localhost test3]# ll 总计 16 -rw-r--r-- 1 root root 8 10-28 06:15 log1.txt -rw-r--r-- 1 root root 12 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt [root@localhost test3]# [root@localhost test3]# ll 总计 20 -rw-r--r-- 1 root root 8 10-28 06:15 log1.txt -rw-r--r-- 1 root root 12 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt drwxr-xr-x 2 root root 4096 10-28 06:21 logs -rw -r--r-- 1 root root 29 10-28 06:05 test1.txt [root@localhost test3]# mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt [root@localhost test3]# cd .. [root@localhost test]# cd test4/ [root@localhost test4]# ll 总计 12 -rw-r--r-- 1 root root 8 10-28 06:15 log1.txt - rw-r--r-- 1 root root 12 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt [root@localhost test4]# 说明 : mv log1.txt log2.txt log3.txt test3 命令将log1.txt ,log2.txt , log3.txt 三个文件移到 test3目录中去,mv -t /opt/soft/test/test4/ log1.txt log2.txt log3.txt 命令又将三个文件移动到test4目录中去 实例四:将文件file1改名为file2,如果file2已经存在,则询问是否覆盖 命令: mv -i log1.txt log2.txt 输出: [root@localhost test4]# ll 总计 12 -rw-r--r-- 1 root root 8 10-28 06:15 log1.txt -rw-r--r-- 1 root root 12 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt [root@localhost test4]# cat log1.txt odfdfs [root@localhost test4]# cat log2.txt ererwerwer [root@localhost test4]# mv -i log1.txt log2.txt mv:是否覆盖“log2.txt”? y [root@localhost test4]# cat log2.txt odfdfs [root@localhost test4]# 实例五:将文件file1改名为file2,即使file2存在,也是直接覆盖掉。 命令: mv -f log3.txt log2.txt 输出: [root@localhost test4]# ll 总计 8 -rw-r--r-- 1 root root 8 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt [root@localhost test4]# cat log2.txt odfdfs [root@localhost test4]# cat log3 cat: log3: 没有那个文件或目录 [root@localhost test4]# ll 总计 8 -rw-r--r-- 1 root root 8 10-28 06:15 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log3.txt [root@localhost test4]# cat log2.txt odfdfs [root@localhost test4]# cat log3.txt dfosdfsdfdss [root@localhost test4]# mv -f log3.txt log2.txt [root@localhost test4]# cat log2.txt dfosdfsdfdss [root@localhost test4]# ll 总计 4 -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt [root@localhost test4]# 说明: log3.txt的内 容直接覆盖了log2.txt内容,-f 这是个危险的选项,使用的时候一定要保持头 脑清晰,一般情况下最好不用加上它, 实例六:目录的移动 命令 : mv dir1 dir2 输出: [root@localhost test4]# ll -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt [root@localhost test4]# ll -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt [root@localhost test4]# cd .. [root@localhost test]# ll drwxr-xr-x 6 root root 4096 10-27 01:58 scf drwxrwxrwx 3 root root 4096 10-28 06:24 test3 drwxr- xr-x 2 root root 4096 10-28 06:48 test4 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# cd test3 [root@localhost test3]# ll drwxr-xr-x 2 root root 4096 10-28 06:21 logs -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt [root@localhost test3]# cd .. [root@localhost test]# mv test4 test3 [root@localhost test]# ll drwxr-xr-x 6 root root 4096 10-27 01:58 scf drwxrwxrwx 4 root root 4096 10 -28 06:54 test3 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# cd test3/ [root@localhost test3]# ll drwxr-xr-x 2 root root 4096 10-28 06:21 logs - rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxr-xr-x 2 root root 4096 10-28 06:48 test4 [root@localhost test3] # 说明: 如果目录dir2不存在,将目录dir1改名为dir2;否则, 将dir1移动到dir2中。 实例7:移动当前文件夹下的所有文件到上一级目 录 命令: mv * ../ 输出: [root@localhost test4]# ll -rw-r--r-- 1 root root 25 10-28 07:02 log1.txt -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt [root@localhost test4]# mv * ../ [root@localhost test4]# ll [root@localhost test4]# cd .. [root@localhost test3]# ll -rw-r--r-- 1 root root 25 10-28 07:02 log1.txt -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt drwxr-xr-x 2 root root 4096 10-28 06:21 logs -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxr-xr-x 2 root root 4096 10-28 07:02 test4 实例八:把当前目录的一个子目录里的文件移动到另一个子目录里 命令: mv test3/*.txt test5 输出: [root@localhost test]# ll drwxr-xr-x 6 root root 4096 10-27 01:58 scf drwxrwxrwx 4 root root 4096 10-28 07:02 test3 drwxr-xr-x 3 root root 4096 10-25 17:56 test5 [root@localhost test]# cd test3 [root@localhost test3]# ll -rw-r--r-- 1 root root 25 10-28 07:02 log1.txt -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt drwxr-xr-x 2 root root 4096 10-28 06:21 logs -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxr-xr-x 2 root root 4096 10-28 07:02 test4 [root@localhost test3]# cd .. [root@localhost test]# mv test3/*.txt test5 [root@localhost test]# cd test5 [root@localhost test5]# ll -rw-r--r-- 1 root root 25 10- 28 07:02 log1.txt -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxr-xr-x 2 root root 4096 10-25 17:56 test5- 1 [root@localhost test5]# cd .. [root@localhost test]# cd test3/ [root@localhost test3]# ll drwxr-xr-x 2 root root 4096 10-28 06:21 logs drwxr-xr-x 2 root root 4096 10-28 07:02 test4 [root@localhost test3]# 实例九:文件被覆盖前做简单备 份,前面加参数-b 命令: mv log1.txt -b log2.txt 输出 : [root@localhost test5]# ll -rw-r--r-- 1 root root 25 10-28 07:02 log1.txt -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxr-xr-x 2 root root 4096 10-25 17:56 test5- 1 [root@localhost test5]# mv log1.txt -b log2.txt mv:是否 覆盖“log2.txt”? y [root@localhost test5]# ll -rw-r--r-- 1 root root 25 10-28 07:02 log2.txt -rw-r--r-- 1 root root 13 10-28 06:16 log2.txt~ -rw-r--r-- 1 root root 29 10-28 06:05 test1.txt drwxr-xr-x 2 root root 4096 10- 25 17:56 test5-1 [root@localhost test5]# 说明: -b 不接受参数,mv会去读取环境变量VERSION_CONTROL来作为备份策略。 - -backup该选项指定如果目标文件存在时的动作,共有四种备份策略: 1.CONTROL=none或off : 不备份。 2.CONTROL=numbered或t:数 字编号的备份 3.CONTROL=existing或nil:如果存在以数字编号的备份, 则继续编号备份m+1...n: 执行mv操作前已存在以数字编号的文件 log2.txt.~1~,那么再次执行将产生log2.txt~2~,以次类推。如果之前没有以 数字编号的文件,则使用下面讲到的简单备份。 Ghost-clone,mode={copy│load│dump},src={drive│file│drive:partition},dst={dri-ve│file│drive:partition}/fro/fx/rb/f32/Z(n)/sure{其他参数} 其主要参数的意思及用法如下: -clone:clone在英文中是“克隆”的意思,在此处是一个固定的格式,意为强制按参数方式执行Ghost.exe, mode=:此项参数用于设定Ghost.exe的使用模式,有六种模式可供选择:copy、pcopy、load、pload、dump、pdump。其中,copy、load、dump是指硬盘到硬盘的操作,加p以后(pcopy、pload、pdump)则以相同模式针对硬盘的分区进行操作。如“mode=copy”意思是将一个硬盘的数据克隆到另一个相同容量或更大容量的硬盘上,加P(mode=pcopy)以后的意思是将一个分区的数据克隆到另一个分区。“mode=load”的意思是提取镜像文件恢复至硬盘(或分区),“mode=dump”的意思是将硬盘(或分区)做成镜像文件。 src=:此项参数用于设定数据来源位置,用1、2、3……代表不同的来源,如“src=1:1”表示数据来源于主盘第一分区,“src=2:2”表示数据来源于从盘第二分区,“src=d:\ghost\sysbak.gh1”表示要提取的数据来源于主盘第二分区Ghost目录中的sysgbak.gho文件。 dst=:此项参数设定数据的目标位置,用法和src一样。如“dst=1:1”表示将提取数据还原到主盘第一分区,“dst=2:2”表示还原到从盘第二分区,“dst=d:\ghost\sysbak.gh1”则表示将备份的数据保存为主盘第二分区ghost目录中的sysgbak.gho文件。 /fro:该参数意为在克隆过程中跳过一切错误,建议大家避免使用。 /fx:程序执行完毕后自动退出,回到操作系统。这条参数在制作镜像文件和恢复非系统分区时可以使用,但用在恢复系统分区时使用可能会引起死机(恢复系统分区时请参考/rb)。 /rb:程序执行完毕后强制重新启动系统。 /f32:将FAT16格式转换为FAT32格式。 /Z(n):设定镜像文件的压缩率,只在制作镜像文件时使用。其中,n=1(/z1)表示在制作镜像文件时不压缩,n=2(/z2)为快速压缩,n=3~9时采用高比例压缩。在实际使用中,笔者推荐使用/z2(快速压缩),它的速度和/z1(不压缩)基本没有差别,镜像文件却小了许多。但如果你的硬盘容量不十分大,建议使用/z9。 /sure:对所有提示问题均自动回答“是”。在Ghost.exe图形界面操作中,程序会弹出一些对话框询问是否肯定执行该操作,通常有“Yes”和“Cancel”两个选项,/sure意为自动选择“Yes”,以确保克隆过程中不需手工干涉。 针对我的情况,我在D盘建立一个名为Ghost的目录,备份C区的镜像文件取名为sysbak.gho。两个批处理文件内容如下: sysback.bat(备份): Ghost-clone,mode=pdump,src=1:1,dst=d:\ghost\sysbak.gh1/fx/z9/sure revert.bat(恢复): Ghost-clone,mode=pload,src=d:\ghost\sysbak.gh1,dst=1:1/sure/rb #8226;GHOST参数详细示例(上面的你可以不看但这里的一定要看,更要好好记录下来) ghost.exe-clone,mode=copy,src=1,dst=2-sure 硬盘对拷 ghost.exe-clone,mode=pcopy,src=1:2,dst=2:1-sure 将一号硬盘的第二个分区复制到二号硬盘的第一个分区 ghost.exe-clone,mode=pdump,src=1:2,dst=g:\bac.gho 将一号硬盘的第二个分区做成映像文件放到g分区中 ghost.exe-clone,mode=pload,src=g:\bac.gh2,dst=1:2 从内部存有两个分区的映像文件中,把第二个分区还原到硬盘的第二个分区 ghost.exe-clone,mode=pload,src=g:\bac.gho,dst=1:1-fx-sure-rb 用g盘的bac.gho文件还原c盘。完成后不显示任何信息,直接启动。 ghost.exe-clone,mode=load,src=g:\bac.gho,dst=2,SZE1=60P,SZE2=40P 将映像文件还原到第二个硬盘,并将分区大小比例修改成60:40 还原磁盘 首先做一个启动盘,包含Config.sys,Autoexec.bat,Command.com,Io.sys,Ghost.exe文件(可以用windows做启动盘的程序完成), Autoexec.bat可以包含以下命令: Ghost.exe-clone,mode=pload,src=d:\bac.gho,dst=1:1-fx-sure-rb 利用在d盘的文件自动还原,结束以后自动跳出ghost并且重新启动。 开机自动做C区的备份,在D区生成备份文件bac.gho。 ghost.exe-clone,mode=pdump,src=1:1,dst=d:\bac.gho-fx-sure-rb 还原光盘 包含文件:Config.sys,Autoexec.bat,Mscdex.exe(CDROM执行程序),Oakcdrom.sys(ATAPICDROM兼容驱动程序),Ghost.exe Config.sys内容为: DEVICE=OAKCDROM.SYS/D:IDECD001 Autoexec.bat内容为: MSCDEX.EXE/D:IDECE001/L:Z Ghost-clone,mode=load,src=z:\bac.gho,dst=1:1-sure-rb 可以根据下面的具体说明修改实例 -clone在使用时必须加入参数,它同时也是所有的switch{batchswitch}里最实用的一种,下面是clone所定义的参数 -clone, mode={copy│load│dump│pcopy│pload│pdump}, src={drive│file│drive:partition}, dst={drive│file│drive:partition} mode指定要使用哪种clone所提供的命令 copy硬盘到硬盘的复制(disktodiskcopy) load文件还原到硬盘(filetodiskload) dump将硬盘做成映像文件(disktofiledump) pcopy分区到分区的复制(partitiontopartitioncopy) pload文件还原到分区(filetopartitionload) pdump分区备份成映像文件(partitiontofiledump) src指定了ghost运行时使用的源分区的位置模式及其意义 ode命令对应mode命令src所使用参数例子 COPY/DUMP 源硬盘号。 以1代表第一号硬盘 LOAD映像文件名 g:\back98\setup98.gho或装置名称(drive) PCOPY/PDUMP 源分区号。 1:2代表的是硬盘1的第二个分区 PLOAD分区映像文件名加上分区号或是驱动器名加上分区号。 g:\back98\setup98.gh2,代表映像文件里的第二个分区 dst运行Ghost时使用的目标位置模式及其意义: mode命令对应mode命令dst所使用参数例子 COPY/DUMP目的硬盘号。 2代表第二号硬盘 LOAD硬盘映像文件名。 例g:\back98\setup98.gho PCOPY/PLOAD目的分区号。 2:2代表的是,硬盘2的第二个分区 PDUMP分区映像文件名加分区号。 g:\back98\setup98.gh2 SZEn指定所使用目的分区的大小 n=xxxxM指定第n目的分区的大小为xxxxMBSZE2=800M表示分区2的大小为800MB n=mmP指定地n的目的分区的大小为整个硬盘的mm个百分比。 其他参数 -fxo当源物件出现坏块时,强迫复制继续进行 -fx当ghost完成新系统的工作后不显示pressctrl-alt-deltoreboot直接回到DOS下 -ia完全执行扇区到扇区的复制。当由一个映像文件或由另一个硬盘为来源,复制一个分区时,Ghost将首先检查来源分区,再决定是要复制文件和目录结构还是要做映像复制(扇区到扇区)。预设是这种形式。但是有的时候,硬盘里特定的位置可能会放一些隐藏的与系统安全有关的文件。只有用扇区到扇区复制的方法才能正确复制 -pwdand-pwd=x给映像文件加密 -rb在还原或复制完成以后,让系统重新启动 -sure可以和clone合用。Ghost不会显示proceedwithdiskclone-destinationdrivewillbeoverwritten?提示信息 充分的了解了以上的参数从今天起我们就不用在和GHOST的界面打交道了。 ★ 介词with的用法详解 ★ linux下ping命令使用详解 ★ UNIX系统开发gcc参数详解Unix系统 ★ buy的用法详解辨析相关短语 ★ PS高光、暗调、计算等命令详解 ★ c语言命令 ★ dos常用网络命令 ★ 部队提干命令范文 ★ 公文写作命令 【linux dmesg命令详解】推荐阅读: 政府命令范文09-12 文件处理命令11-08 功能命令01-03 01入门操作命令01-14 内网渗透常用命令08-03 行政公文命令写作要求08-04 精选公文命令怎么写12-22 mysql实用命令总结02-17 dos中常用命令总结09-14 党政机关公文命令范文10-10上面第一行冒号前面的部分,叫做”目标”(target),冒号后面的部分叫做前置条件(prerequisites);第二行必须由一个tab键起首,后面跟着命令(commands)。
“目标”是必需的,不可省略;”前置条件”和”命令”都是可选的,但是两者之中必须至少存在一个。
每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。下面就详细讲解,每条规则的这三个组成部分。
目标(target)
一个目标(target)就构成一条规则。目标通常是文件名,指明Make命令所要构建的对象,比如上文的 a.txt 。目标可以是一个文件名,也可以是多个文件名,之间用空格分隔。
除了文件名,目标还可以是某个操作的名字,这称为”伪目标”(phony target)。
clean: rm *.o
上面代码的目标是clean,它不是文件名,而是一个操作的名字,属于”伪目标 “,作用是删除对象文件。
$ make clean
但是,如果当前目录中,正好有一个文件叫做clean,那么这个命令不会执行。因为Make发现clean文件已经存在,就认为没有必要重新构建了,就不会执行指定的rm命令。
为了避免这种情况,可以明确声明clean是”伪目标”,写法如下。
.PHONY: cleanclean: rm *.o temp
声明clean是”伪目标”之后,make就不会去检查是否存在一个叫做clean的文件,而是每次运行都执行对应的命令。像.PHONY这样的内置目标名还有不少,可以查看手册。
如果Make命令运行时没有指定目标,默认会执行Makefile文件的第一个目标。
$ make
上面代码执行Makefile文件的第一个目标。
前置条件(prerequisites)
前置条件通常是一组文件名,之间用空格分隔。它指定了”目标”是否重新构建的判断标准:只要有一个前置文件不存在,或者有过更新(前置文件的last-modification时间戳比目标的时间戳新),”目标”就需要重新构建。
result.txt: source.txt cp source.txt result.txt
上面代码中,构建 result.txt 的前置条件是 source.txt 。如果当前目录中,source.txt 已经存在,那么make result.txt可以正常运行,否则必须再写一条规则,来生成 source.txt 。
source.txt: echo ”this is the source“ > source.txt
上面代码中,source.txt后面没有前置条件,就意味着它跟其他文件都无关,只要这个文件还不存在,每次调用make source.txt,它都会生成。
$ make result.txt$ make result.txt
上面命令连续执行两次make result.txt。第一次执行会先新建 source.txt,然后再新建 result.txt。第二次执行,Make发现 source.txt 没有变动(时间戳晚于 result.txt),就不会执行任何操作,result.txt 也不会重新生成。
如果需要生成多个文件,往往采用下面的写法。
source: file1 file2 file3
上面代码中,source 是一个伪目标,只有三个前置文件,没有任何对应的命令。
$ make source
执行make source命令后,就会一次性生成 file1,file2,file3 三个文件。这比下面的写法要方便很多。
$ make file1$ make file2$ make file3
命令(commands)
命令(commands)表示如何更新目标文件,由一行或多行的Shell命令组成。它是构建”目标”的具体指令,它的运行结果通常就是生成目标文件。
每行命令之前必须有一个tab键。如果想用其他键,可以用内置变量.RECIPEPREFIX声明。
.RECIPEPREFIX = > all: > echo Hello, world
上面代码用.RECIPEPREFIX指定,大于号(>)替代tab键。所以,每一行命令的起首变成了大于号,而不是tab键。
需要注意的是,每行命令在一个单独的shell中执行。这些Shell之间没有继承关系。
var-lost: export foo=bar echo ”foo=[$$foo]“
上面代码执行后(make var-lost),取不到foo的值。因为两行命令在两个不同的进程执行。一个解决办法是将两行命令写在一行,中间用分号分隔。
var-kept: export foo=bar; echo ”foo=[$$foo]“
另一个解决办法是在换行符前加反斜杠转义。
var-kept: export foo=bar; echo ”foo=[$$foo]“
最后一个方法是加上.ONESHELL:命令。
3.Linux命令详解之find 篇三
4.linux dmesg命令详解 篇四
5.linux dmesg命令详解 篇五
6.linux dmesg命令详解 篇六
7.linux dmesg命令详解 篇七
8.linux dmesg命令详解 篇八
9.linux基础命令 mv命令 篇九
10.Ghost批处理命令用法详解 篇十