linux命令主要有哪几种?Linux运维人员必会的120个命令
来自《跟老男孩学Linux运维:核心系统命令实战》一书
前言
第1章 Linux命令行简介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令帮助 / 4
1.3Linux shutdown reboot halt / 9
关机:
shutdown -h now
halt
init 0
第2章 文件和目录操作命令 / 13
2.1pwd:显示当前所在的位置 / 13
2.2cd:切换目录 / 16
2.3tree:以树形结构显示目录下的内容 / 18
2.4mkdir:创建目录 / 22
2.5touch:创建空文件或改变文件的时间戳属性 / 27
2.6ls:显示目录下的内容及相关属性信息 / 30
2.7cp:复制文件或目录 / 39
2.8mv:移动或重命名文件 / 42
2.9rm:删除文件或目录 / 45
2.10rmdir:删除空目录 / 48
2.11ln:硬链接与软链接 / 49
2.12readlink:查看符号链接文件的内容 / 54
2.13find:查找目录下的文件 / 55
2.14xargs:将标准输入转换成命令行参数 / 68
2.15rename:重命名文件 / 71
2.16basename:显示文件名或目录名 / 72
2.17dirname:显示文件或目录路径 / 72
2.18chattr:改变文件的扩展属性 / 73
2.19lsattr:查看文件扩展属性 / 75
2.20file:显示文件的类型 / 76
2.21md5sum:计算和校验文件的MD5值 / 77
2.22chown:改变文件或目录的用户和用户组 / 80
2.23chmod:改变文件或目录权限 / 81
2.24chgrp:更改文件用户组 / 85
2.25umask:显示或设置权限掩码 / 86
2.26老男孩从新手成为技术大牛的心法 / 90
第3章 文件过滤及内容编辑处理命令 / 91
3.1cat:合并文件或查看文件内容 / 91
3.2tac:反向显示文件内容 / 103
3.3more:分页显示文件内容 / 104
3.4less:分页显示文件内容 / 107
3.5head:显示文件内容头部 / 109
3.6tail:显示文件内容尾部 / 111
3.7tailf:跟踪日志文件 / 114
3.8cut:从文本中提取一段文字并输出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按两个文件的相同字段合并 / 127
3.13uniq:去除重复行 / 129
3.14wc:统计文件的行数、单词数或字节数 / 131
3.15iconv:转换文件的编码格式 / 133
3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134
3.17diff:比较两个文件的不同 / 135
3.18vimdiff:可视化比较工具 / 138
3.19rev:反向输出文件内容 / 139
3.20tr:替换或删除字符 / 140
3.21od:按不同进制显示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:纯文本编辑器 / 147
3.24老男孩逆袭思想:做Linux运维的多个好处 / 152
第4章 文本处理三剑客 / 153
4.1grep:文本过滤工具 / 153
4.2sed:字符流编辑器 / 159
4.3awk基础入门 / 165
第5章 Linux信息显示与搜索文件命令 / 176
5.1uname:显示系统信息 / 176
5.2hostname:显示或设置系统的主机名 / 178
5.3dmesg:系统启动异常诊断 / 179
5.4stat:显示文件或文件系统状态 / 181
5.5du:统计磁盘空间使用情况 / 183
5.6date:显示与设置系统时间 / 186
5.7echo:显示一行文本 / 190
5.8watch:监视命令执行情况 / 193
5.9which:显示命令的全路径 / 195
5.10whereis:显示命令及其相关文件全路径 / 196
5.11locate:快速定位文件路径 / 197
5.12updatedb:更新mlocate数据库 / 199
5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200
第6章 文件备份与压缩命令 / 201
6.1tar:打包备份 / 201
6.2gzip:压缩或解压文件 / 208
6.3zip:打包和压缩文件 / 211
6.4unzip:解压zip文件 / 212
6.5scp:远程文件复制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆袭思想:新手如何高效地提问 / 220
第7章 Linux用户管理及用户信息查询命令 / 222
7.1 useradd:创建用户 / 222
7.2usermod:修改用户信息 / 227
7.3userdel:删除用户 / 229
7.4groupadd:创建新的用户组 / 230
7.5groupdel:删除用户组 / 231
7.6passwd:修改用户密码 / 232
7.7chage:修改用户密码有效期 / 237
7.8chpasswd:批量更新用户密码 / 238
7.9su:切换用户 / 240
7.10visudo:编辑sudoers文件 / 242
7.11sudo:以另一个用户身份执行命令 / 244
7.12id:显示用户与用户组的信息 / 248
7.13w:显示已登录用户信息 / 249
7.14who:显示已登录用户信息 / 250
7.15users:显示已登录用户 / 252
7.16whoami:显示当前登录的用户名 / 253
7.17last:显示用户登录列表 / 253
7.18lastb:显示用户登录失败的记录 / 254
7.19lastlog:显示所有用户的最近登录记录 / 255
第8章 Linux磁盘与文件系统管理命令 / 257
8.1fdisk:磁盘分区工具 / 257
8.2partprobe:更新内核的硬盘分区表信息 / 265
8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266
8.4parted:磁盘分区工具 / 268
8.5mkfs:创建Linux文件系统 / 272
8.6dumpe2fs:导出ext2/ext3/ext4文件系统信息 / 274
8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275
8.8fsck:检查并修复Linux文件系统 / 278
8.9dd:转换或复制文件 / 281
8.10mount:挂载文件系统 / 284
8.11umount:卸载文件系统 / 288
8.12df:报告文件系统磁盘空间的使用情况 / 289
8.13mkswap:创建交换分区 / 293
8.14swapon:激活交换分区 / 294
8.15swapoff:关闭交换分区 / 295
8.16sync:刷新文件系统缓冲区 / 296
第9章 Linux进程管理命令 / 298
9.1ps:查看进程 / 298
9.2pstree:显示进程状态树 / 305
9.3pgrep:查找匹配条件的进程 / 306
9.4kill:终止进程 / 307
9.5killall:通过进程名终止进程 / 310
9.6pkill:通过进程名终止进程 / 311
9.7top:实时显示系统中各个进程的资源占用状况 / 313
9.8nice:调整程序运行时的优先级 / 320
9.9renice:调整运行中的进程的优先级 / 323
9.10nohup:用户退出系统进程继续工作 / 324
9.11strace:跟踪进程的系统调用 / 325
9.12ltrace:跟踪进程调用库函数 / 332
9.13runlevel:输出当前运行级别 / 334
9.14init:初始化Linux进程 / 335
9.15service:管理系统服务 / 335
第10章 Linux网络管理命令 / 338
10.1ifconfig:配置或显示网络接口信息 / 338
10.2ifup:激活网络接口 / 343
ifup eth0
10.3ifdown:禁用网络接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡 。
10.4route:显示或管理路由表 / 344
10.5arp:管理系统的arp缓存 / 350
10.6ip:网络配置工具 / 351
10.7netstat:查看网络状态 / 358
10.8ss:查看网络状态 / 362
10.9ping:测试主机之间网络的连通性 / 363
10.10traceroute:追踪数据传输路由状况 / 366
10.11arping:发送arp请求 / 367
10.12telnet:远程登录主机 / 369
10.13nc:多功能网络工具 / 370
10.14ssh:安全地远程登录主机 / 373
10.15wget:命令行下载工具 / 376
10.16mailq:显示邮件传输队列 / 379
10.17mail:发送和接收邮件 / 381
10.18nslookup:域名查询工具 / 386
10.19dig:域名查询工具 / 389
10.20host:域名查询工具 / 393
10.21nmap:网络探测工具和安全/端口扫描器 / 394
10.22tcpdump:监听网络流量 / 398
第11章 Linux系统管理命令 / 407
11.1lsof:查看进程打开的文件 / 407
11.2uptime:显示系统的运行时间及负载 / 411
11.3free:查看系统内存信息 / 411
11.4iftop:动态显示网络接口流量信息 / 413
11.5vmstat:虚拟内存统计 / 415
11.6mpstat:CPU信息统计 / 419
11.7iostat:I/O信息统计 / 420
11.8iotop:动态显示磁盘I/O统计信息 / 423
11.9sar:收集系统信息 / 425
11.10chkconfig:管理开机服务 / 430
11.11ntsysv:管理开机服务 / 433
11.12 setup:系统管理工具 / 434
11.13ethtool:查询网卡参数 / 436
11.14mii-tool:管理网络接口的状态 / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自动化RPM包管理工具 / 446
top命令
第12章 Linux系统常用内置命令 / 450
12.1Linux内置命令概述 / 450
12.2Linux内置命令简介 / 450
12.3Linux常用内置命令实例 / 452
linux里面的sed命令怎么用,做什么的?请详细说明sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一
Linux 操作系统最大的一个好处是它带有各种各样的实用工具 。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具 。可以简化关键情况下操作的一个实用 工具是 sed 。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值 。
sed 实用工具是一个“编辑器” , 但它与其它大多数编辑器不同 。除了不面向屏幕之外 , 它还是非交互式的 。这意味着您必须将要对数据执行的命令插入到命令行或要处 理的脚本中 。当显示它时,请忘记您在使用 Microsoft Word 或其它大多数编辑器时拥有的交互式编辑文件功能 。sed 在一个文件(或文件集)中非交互式、并且不加询问地接收一系列的命令并执行它们 。因而,它流经文本就如同水流经溪流一样,因而 sed 恰当地代表了流编辑器 。它可以用来将所有出现的 "Mr. Smyth" 修改为 "Mr. Smith" , 或将 "tiger cub" 修改为 "wolf cub" 。流编辑器非常适合于执行重复的编辑 , 这种重复编辑如果由人工完成将花费大量的时间 。其参数可能和一次性使用一个简单的操作所需的参数一样有限,或者和一个具有成千上万行要进行编辑修改的脚本文件一样复杂 。sed 是 Linux 和 UNIX 工具箱中最有用的工具之一,且使用的参数非常少 。
sed 的工作方式
sed 实用工具按顺序逐行将文件读入到内存中 。然后,它执行为该行指定的所有操作 , 并在完成请求的修改之后将该行放回到内存中,以将其转储至终端 。完成了这一行 上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件 。如同前面所提到的 , 默认输出是将每一行的内容输出到屏幕上 。在这里,开始涉及到 两个重要的因素—首先 , 输出可以被重定向到另一文件中,以保存变化;第二,源文件(默认地)保持不被修改 。sed 默认读取整个文件并对其中的每一行进行修改 。不过,可以按需要将操作限制在指定的行上 。
该实用工具的语法为:
sed [options] '{command}' [filename]
在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用 。
替换命令
sed 实用工具以及其它任何类似的编辑器的最常用的命令之一是用一个值替换另一个值 。用来实现这一目的的操作的命令部分语法是:
's/{old value}/{new value}/'
因而,下面演示了如何非常简单地将 "tiger" 修改为 "wolf":
$ echo The tiger cubs will meet on Tuesday after school | sed
's/tiger/wolf/'
The wolf cubs will meet on Tuesday after school
$
注意如果输入是源自之前的命令输出 , 则不需要指定文件名—同样的原则也适用于 awk、sort 和其它大多数 LinuxUNIX 命令行实用工具程序 。
多次修改
如果需要对同一文件或行作多次修改 , 可以有三种方法来实现它 。第一种是使用 "-e" 选项,它通知程序使用了多条编辑命令 。例如:
$ echo The tiger cubs will meet on Tuesday after school | sed -e '
s/tiger/wolf/' -e 's/after/before/'
The wolf cubs will meet on Tuesday before school
$
这是实现它的非常复杂的方法,因此 "-e" 选项不常被大范围使用 。更好的方法是用分号来分隔命令:
$ echo The tiger cubs will meet on Tuesday after school | sed '
s/tiger/wolf/; s/after/before/'
The wolf cubs will meet on Tuesday before school
$
注 意分号必须是紧跟斜线之后的下一个字符 。如果两者之间有一个空格,操作将不能成功完成 , 并返回一条错误消息 。这两种方法都很好,但许多管理员更喜欢另一种 方法 。要注意的一个关键问题是 , 两个撇号 (' ') 之间的全部内容都被解释为 sed 命令 。直到您输入了第二个撇号,读入这些命令的 shell 程序才会认为您完成了输入 。这意味着可以在多行上输入命令—同时 Linux 将提示符从 PS1 变为一个延续提示符(通常为 "")—直到输入了第二个撇号 。一旦输入了第二个撇号,并且按下了 Enter 键,则处理就进行并产生相同的结果,如下所示:
$ echo The tiger cubs will meet on Tuesday after school | sed '
s/tiger/wolf/
s/after/before/'
The wolf cubs will meet on Tuesday before school
$
全局修改
让我们开始一次看似简单的编辑 。假定在要修改的消息中出现了多次要修改的项目 。默认方式下,结果可能和预期的有所不同,如下所示:
$ echo The tiger cubs will meet this Tuesday at the same time
as the meeting last Tuesday | sed 's/Tuesday/Thursday/'
The tiger cubs will meet this Thursday at the same time
as the meeting last Tuesday
$
与 将出现的每个 "Tuesday" 修改为 "Thursday" 相反,sed 编辑器在找到一个要修改的项目并作了修改之后继续处理下一行,而不读整行 。sed 命令功能大体上类似于替换命令,这意味着它们都处理每一行中出现的第一个选定序列 。为了替换出现的每一个项目,在同一行中出现多个要替换的项目的情况下, 您必须指定在全局进行该操作:
$ echo The tiger cubs will meet this Tuesday at the same time
as the meeting last Tuesday | sed 's/Tuesday/Thursday/g'
The tiger cubs will meet this Thursday at the same time
as the meeting last Thursday
$
请记住不管您要查找的序列是否仅包含一个字符或词组,这种对全局化的要求都是必需的 。
sed 还可以用来修改记录字段分隔符 。例如,以下命令将把所有的 tab 修改为空格:
sed 's// /g'
其 中,第一组斜线之间的项目是一个 tab,而第二组斜线之间的项目是一个空格 。作为一条通用的规则,sed 可以用来将任意的可打印字符修改为任意其它的可打印字符 。如果您想将不可打印字符修改为可打印字符—例如 , 铃铛修改为单词 "bell"—sed 不是适于完成这项工作的工具(但 tr 是) 。
有时 , 您不想修改在一个文件中出现的所有指定项目 。有时 , 您只想在满足某些条件时才作修改—例如,在与其它一些数据匹配之后才作修改 。为了说明这一点,请考虑以下文本文件:
$ cat sample_one
one 1
two 1
three 1
one 1
two 1
two 1
three 1
$
假定希望用 "2" 来替换 "1",但仅在单词 "two" 之后才作替换,而不是每一行的所有位置 。通过指定在给出替换命令之前必须存在一次匹配,可以实现这一点:
$ sed '/two/ s/1/2/' sample_one
one 1
two 2
three 1
one 1
two 2
two 2
three 1
$
现在 , 使其更加准确:
$ sed '
/two/ s/1/2/
/three/ s/1/3/' sample_one
one 1
two 2
three 3
one 1
【linux打标签命令 linux快速打出文件名】two 2
two 2
three 3
$
请 再次记住唯一改变了的是显示 。如果您查看源文件,您将发现它始终保持不变 。您必须将输出保存至另一个文件 , 以实现永久保存 。值得重复的是,不对源文件作修 改实际是祸中有福—它让您能够对文件进行试验而不会造成任何实际的损害,直到让正确命令以您预期和希望的方式进行工作 。
以下命令将修改后的输出保存至一个新的文件:
$ sed '
/two/ s/1/2/
/three/ s/1/3/' sample_onesample_two
该输出文件将所有修改合并在其中,并且这些修改通常将在屏幕上显示 。现在可以用 head、cat 或任意其它类似的实用工具来进行查看 。
脚本文件
sed 工具允许您创建一个脚本文件,其中包含从该文件而不是在命令行进行处理的命令 , 并且 sed 工具通过 "-f" 选项来引用 。通过创建一个脚本文件,您能够一次又一次地重复运行相同的操作,并指定比每次希望从命令行进行处理的操作详细得多的操作 。
考虑以下脚本文件:
$ cat sedlist
/two/ s/1/2/
/three/ s/1/3/
$
现在可以在数据文件上使用脚本文件,获得和我们之前看到的相同的结果:
$ sed -f sedlist sample_one
one 1
two 2
three 3
one 1
two 2
two 2
three 3
$
注意当调用 "-f" 选项时,在源文件内或命令行中不使用撇号 。脚本文件 , 也称为源文件,对于想重复多次的操作和从命令行运行可能出错的复杂命令很有价值 。编辑源文件并修改一个字符比在命令行中重新输入一条多行的项目要容易得多 。
限制行
编辑器默认查看输入到流编辑器中的每一行,且默认在输入到流编辑器中的每一行上进行编辑 。这可以通过在发出命令之前指定约束条件来进行修改 。例如,只在此示例文件的输出的第 5 和第 6 行中用 "2" 来替换 "1" , 命令将为:
$ sed '5,6 s/1/2/' sample_one
one 1
two 1
three 1
one 1
two 2
two 2
three 1
$
在这种情况下,因为要修改的行是专门指定的 , 所以不需要替换命令 。因此,您可以灵活地根据匹配准则(可以是行号或一种匹配模式)来选择要修改哪些行(从根本上限制修改) 。
禁止显示
sed 默认将来自源文件的每一行显示到屏幕上(或重定向到一个文件中) , 而无论该行是否受到编辑操作的影响,"-n" 参数覆盖了这一操作 。"-n" 覆盖了所有的显示,并且不显示任何一行 , 而无论它们是否被编辑操作修改 。例如:
$ sed -n -f sedlist sample_one
$
$ sed -n -f sedlist sample_onesample_two
$ cat sample_two
$
在 第一个示例中,屏幕上不显示任何东西 。在第二个示例中 , 不修改任何东西,因此不将任何东西写到新的文件中—它最后是空的 。这不是否定了编辑的全部目的吗? 为什么这是有用的?它是有用的仅因为 "-n" 选项能够被一条显示命令 (-p) 覆盖 。为了说明这一点,假定现在像下面这样对脚本文件进行了修改:
$ cat sedlist
/two/ s/1/2/p
/three/ s/1/3/p
$
然后下面是运行它的结果:
$ sed -n -f sedlist sample_one
two 2
three 3
two 2
two 2
three 3
$
保持不变的行全部不被显示 。只有受到编辑操作影响的行被显示了 。在这种方式下,可以仅取出这些行,进行修改,然后把它们放到一个单独的文件中:
$ sed -n -f sedlist sample_onesample_two
$
$ cat sample_two
two 2
three 3
two 2
two 2
three 3
$
利用它的另一种方法是只显示一定数量的行 。例如,只显示 2-6 行,同时不做其它的编辑修改:
$ sed -n '2,6p' sample_one
two 1
three 1
one 1
two 1
two 1
$
其它所有的行被忽略,只有 2-6 行作为输出显示 。这是一项出色的功能,其它任何工具都不能容易地实现 。Head 将显示一个文件的顶部 , 而 tail 将显示一个文件的底部,但 sed 允许从任意位置取出想要的任意内容 。
删除行
用一个值替换另一个值远非流编辑器可以执行的唯一功能 。它还具有许多的潜在功能 , 在我看来第二种最常用的功能是删除 。删除与替换的工作方式相同,只是它删除指定的行(如果您想要删除一个单词而不是一行,不要考虑删除,而应考虑用空的内容来替换它—s/cat//) 。
该命令的语法是:
'{what to find} d'
从 sample_one 文件中删除包含 "two" 的所有行:
$ sed '/two/ d' sample_one
one 1
three 1
one 1
three 1
$
从显示屏中删除前三行 , 而不管它们的内容是什么:
$ sed '1,3 d' sample_one
one 1
two 1
two 1
three 1
$
只显示剩下的行,前三行不在显示屏中出现 。对于流编辑器,一般当它们涉及到全局表达式时,特别是应用于删除操作时,有几点要记?。?
上三角号 (^) 表示一行的开始 , 因此,如果 "two" 是该行的头三个字符,则
sed '/^two/ d' sample_one
将只删除该行 。
美元符号 ($) 代表文件的结尾 , 或一行的结尾,因此,如果 "two" 是该行的最后三个字符 , 则
sed '/two$/ d' sample_one
将只删除该行 。
将这两者结合在一起的结果:
sed '/^$/ d' {filename}
删除文件中的所有空白行 。例如,以下命令将 "1" 替换为 "2" , 以及将 "1" 替换为 "3",并删除文件中所有尾随的空行:
$ sed '/two/ s/1/2/; /three/ s/1/3/; /^$/ d' sample_one
one 1
two 1
three 1
one 1
two 2
two 2
three 1
$
其通常的用途是删除一个标题 。以下命令将删除文件中所有的行 , 从第一行直到第一个空行:
sed '1,/^$/ d' {filename}
添加和插入文本
可以结合使用 sed 和 "a" 选项将文本添加到一个文件的末尾 。实现方法如下:
$ sed '$a
This is where we stop
the test' sample_one
one 1
two 1
three 1
one 1
two 1
two 1
three 1
This is where we stop
the test
$
在该命令中 , 美元符号 ($) 表示文本将被添加到文件的末尾 。反斜线 () 是必需的 , 它表示将插入一个回车符 。如果它们被遗漏了,则将导致一个错误,显示该命令是错乱的;在任何要输入回车的地方您必须使用反斜线 。
要将这些行添加到第 4 和第 5 个位置而不是末尾,则命令变为:
$ sed '3a
This is where we stop
the test' sample_one
one 1
two 1
three 1
This is where we stop
the test
one 1
two 1
two 1
three 1
$
这将文本添加到第 3 行之后 。和几乎所有的编辑器一样,您可以选择插入而不是添加(如果您希望这样的话) 。这两者的区别是添加跟在指定的行之后,而插入从指定的行开始 。当用插入来代替添加时,只需用 "i" 来代替 "a",如下所示:
$ sed '3i
This is where we stop
the test' sample_one
one 1
two 1
This is where we stop
the test
three 1
one 1
two 1
two 1
three 1
$
新的文本出现在输出的中间位置,而处理通常在指定的操作执行以后继续进行 。
读写文件
重定向输出的功能已经演示过了,但需要指出的是 , 在编辑命令运行期间可以同步地读入和写出文件 。例如,执行替换,并将 1-3 行写到名称为 sample_three 的文件中:
$ sed '
/two/ s/1/2/
/three/ s/1/3/
1,3 w sample_three' sample_one
one 1
two 2
three 3
one 1
two 2
two 2
three 3
$
$ cat sample_three
one 1
two 2
three 3
$
由于为 w (write) 命令指定了 "1,3",所以只有指定的行被写到了新文件中 。无论被写的是哪些行,所有的行都在默认输出中显示 。
修改命令
除了替换项目之外 , 还可以将行从一个值修改为另一个值 。要记住的是 , 替换是对字符逐个进行,而修改功能与删除类似,它影响整行:
$ sed '/two/ c
We are no longer using two' sample_one
one 1
We are no longer using two
three 1
one 1
We are no longer using two
We are no longer using two
three 1
$
修 改命令与替换的工作方式很相似,但在范围上要更大些—将一个项目完全替换为另一个项目,而无论字符内容或上下文 。夸张一点讲 , 当使用替换时 , 只有字符 "1" 被字符 "2" 替换,而当使用修改时,原来的整行将被修改 。在两种情况下,要寻找的匹配条件都仅为 "two" 。
修改全部但……
对于大多数 sed 命令,详细说明各种功能要进行何种修改 。利用感叹号,可以在除指定位置之外的任何地方执行修改—与默认的操作完全相反 。
例如,要删除包含单词 "two" 的所有行,操作为:
$ sed '/two/ d' sample_one
one 1
three 1
one 1
three 1
$
而要删除除包含单词 "two" 的行之外的所有行,则语法变为:
$ sed '/two/ !d' sample_one
two 1
two 1
two 1
$
如果您有一个文件包含一系列项目 , 并且想对文件中的每个项目执行一个操作,那么首先对那些项目进行一次智能扫描并考虑将要做什么是很重要的 。为了使事情变得更简单,您可以将 sed 与任意迭代例程(for、while、until)结合来实现这一目的 。
比如说,假定您有一个名为 "animals" 的文件,其中包含以下项目:
pig
horse
elephant
cow
dog
cat
您希望运行以下例程:
#mcd.ksh
for I in $*
do
echo Old McDonald had a $I
echo E-I, E-I-O
done
结 果将为,每一行都显示在 "Old McDonald has a" 的末尾 。虽然对于这些项目的大部分这是正确的,但对于 "elephant" 项目,它有语法错误,因为结果应当为 "an elephant" 而不是 "a elephant" 。利用 sed,您可以在来自 shell 文件的输出中检查这种语法错误 , 并通过首先创建一个命令文件来即时地更正它们:
#sublist
/ a a/ s/ a / an /
/ a e/ s/ a / an /
/a i/ s / a / an /
/a o/ s/ a / an /
/a u/ s/ a / an /
然后执行以下过程:
$ sh mcd.ksh 'cat animals' | sed -f sublist
现 在 , 在运行了 mcd 脚本之后,sed 将在输出中搜索单个字母 a (空格,"a" , 空格)之后紧跟了一个元音的任意位置 。如果这种位置存在,它将把该序列修改为空格,"an",空格 。这样就使问题更正后才显示在屏幕上, 并确保各处的编辑人员在晚上可以更容易地入睡 。结果是:
Old McDonald had a pig
E-I, E-I-O
Old McDonald had a horse
E-I, E-I-O
Old McDonald had an elephant
E-I, E-I-O
Old McDonald had a cow
E-I, E-I-O
Old McDonald had a dog
E-I, E-I-O
Old McDonald had a cat
E-I, E-I-O
提前退出
sed 默认读取整个文件,并只在到达末尾时才停止 。不过 , 您可以使用退出命令提前停止处理 。只能指定一条退出命令,而处理将一直持续直到满足调用退出命令的条件 。
例如,仅在文件的前五行上执行替换,然后退出:
$ sed '
/two/ s/1/2/
/three/ s/1/3/
5q' sample_one
one 1
two 2
three 3
one 1
two 2
$
在退出命令之前的项目可以是一个行号(如上所示),或者一条查找/匹配命令:
$ sed '
/two/ s/1/2/
/three/ s/1/3/
/three/q' sample_one
one 1
two 2
three 3
$
您 还可以使用退出命令来查看超过一定标准数目的行,并增加比 head 中的功能更强的功能 。例如,head 命令允许您指定您想要查看一个文件的前多少行—默认数为 10,但可以使用从 1 到 99 的任意一个数字 。如果您想查看一个文件的前 110 行 , 您用 head 不能实现这一目的,但用 sed 可以:
sed 110q filename
处理问题
当使用 sed 时 , 要记住的重要事项是它的工作方式 。它的工作方式是:读入一行,在该行上执行它已知要执行的所有任务,然后继续处理下一行 。每一行都受给定的每一个编辑命令的影响 。
如果您的操作顺序没有十分彻底地考虑清楚,那么这可能会很麻烦 。例如,假定您需要将所有的 "two" 项目修改为 "three" , 然后将所有的 "three" 修改为 "four":
$ sed '
/two/ s/two/three/
/three/ s/three/four/' sample_one
one 1
four 1
four 1
one 1
four 1
four 1
four 1
$
最初读取的 "two" 被修改为 "three" 。然后它满足为下一次编辑建立的准则,从而变为 "four" 。最终的结果不是想要的结果—现在除了 "four" 没有别的项目了,而本来应该有 "three" 和 "four" 。
当执行这种操作时,您必须非常用心地注意指定操作的方式,并按某种顺序来安排它们,使得操作之间不会互相影响 。例如:
$ sed '
/three/ s/three/four/
/two/ s/two/three/' sample_one
one 1
three 1
four 1
one 1
three 1
three 1
four 1
$
这非常有效,因为 "three" 值在 "two" 变成 "three" 之前得到修改 。
标签和注释
可以在 sed 脚本文件中放置标签,这样一旦文件变得庞大,可以更容易地说明正在发生的事情 。存在各种各样与这些标签相关的命令,它们包括:
接下来的步骤
访问并收藏 Linux 技术中心
阅读 Dale Dougherty 和 Arnold Robbins 的著作 sedawk, 2nd Edition (O'ReillyAssociates 出版社) 。
: 冒号表示一个标签名称 。例如:
:HERE
以冒号开始的标签可以由 "b" 和 "t" 命令处理 。
b {label} 充当 "goto" 语句的作用 , 将处理发送至前面有一个冒号的标签 。例如 ,
b HERE
将处理发送给行
:HERE
如果紧跟 b 之后没有指定任何标签,则处理转至脚本文件的末尾 。
t {label} 只要自上次输入行或执行一次 "t" 命令以来进行了替换操作,就转至该标签 。和 "b" 一样,如果没有给定标签名,则处理转至脚本文件的末尾 。
# 符号作为一行的第一个字符将使整行被当作注释处理 。注释行与标签不同,不能使用 b 或 t 命令来转到注释行上 。
Linux 常用命令(要求全而精)1、linux分区
--在linux里面所有的设备、任何东西linux打标签命令,在linux看来都是文件 。
--文件在它看来 , 有两种形式:
第一种是字符型(键盘输入、打印机);
第二种是二进制型(硬盘、光驱、U盘)
--linux中所有硬件
--手动分区
--A、至少有两个分区
/根分区
SWAP 交换分区(物理内存大小的两倍)
--B、个人桌面分区
/
/boot 128MB is enough
/usr
SWAP
/tmp(用于光盘刻录)
2、linux目录说明
--/dev/xxyN
--xx (分区所在设备类型:hd--IDE硬盘sd--SCSI硬盘)
--y(标明分区所在设备
例如:/dev/hda 第一个IDE硬盘 或 /dev/hdb 第二个IDE硬盘 或 /dev/sdb 第二个SCSI硬盘)
--N(数字代表分区:1-4--主分区或扩展分区;逻辑分区从5开始linux打标签命令!
例如:/dev/hda3 第一个IDE硬盘上的第三个主分区或扩展分区
/dev/sdb6 第二个SCSI硬盘上的第二个逻辑分区)
3、linux目录结构
/根目录,最高级别
/bin系统基本命令存放目录(/usr/bin)
/boot linux的内核及引导系统程序文件存放目录(如:vmlinuz、initrd.img)
一般情况下,GRUB或LILO系统引导管理也位于这个目录
/dev设备文件存储目录,如声卡、光驱...
/ect存放系统设置文件(如用户账号密码、服务器配置文件等)
/home 普通用户家目录 , 默认存放目录
/lib库文件存放目录
/lost found在ext2或ext3文件系统中,当系统以外崩溃或机器意外关机 , 而产生一些文件碎片放在这里 。
当系统启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统 。
有事喜用发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或者移文件到原来的位置上 。
/media 即插即用型存储设备的挂载点自动在这个目录下创建 。
如USB盘系统自动挂在后,会在这个目录下产生一个目录;
类似cdrom的目录
/mnt存放挂载存储设备的挂载目录 , 如cdrom等目录
/opt表示可选的意思,有些软件包也会被安装在此,也就是自定义软件包 ,
比如OpenOffice,或者一些我们自己编译的软件包,也可安装此处 。
/proc操作系统运行时 , 进程(正在运行的程序)信息及内核信息(比如CPU、硬盘分区、内存信息等)存放在此 。
/proc目录是伪装的文件系统proc的挂载目录 , proc并不是真正的文件系统
/rootlinux超级权限用户root的家目录
/sbin大多是涉及系统管理的命令的存放,只有超级权限用户root才可执行命令存放,普通用户无权限执行此目录下的命令
与 /usr/sbin; /usr/X11R6/sbin; usr/local/sbin 目录相似
(sbin,只有root权限才能执行)
/tmp临时文件目录,有时用户运行程序的时候 , 会产生临时文件 。
/var/tmp目录和此目录相似
/usr系统存放程序的目录,如命令、帮助文件等 。这个目录下有很多的文件和目录 。
大部分Linux发行版提供的软件包都安装在此,涉及服务器的配置文件就安装在/ect中 。
/usr/share/fonts 字体目录
/usr/share/man 或 /usr/share/doc 帮助目录
/usr/bin 或 /usr/local/bin 或 /usr/X11R6/bin普通用户可执行文件目录
/usr/sbin 或 /usr/local/sbin 或 /usr/X11R6/sbin 超级权限用户root可执行命令存放目录
/usr/include 程序头文件存放目录
/var(vary)此目录经常变动
/var/log 用来存放系统日志
/var/www 用来定义Apache服务器站点存放
/var/lib 用来存放一些库文件,如MySQL的,以及MySQL数据库的存放地 。
4、基本命令
--查看帮助*** --help*** --?
--查看详细帮助man ***
--登录 login
--退出窗口 exit
--关机 shutdown
--重启 reboot
--初始化 init (run level -/etc/inittab),0-6看第六部分的g
--进入根目录 cd /
--回上层目录 cd ..
--相对路径 cd dev
--绝对路径 cd /dev
--查用户名 whoami
--查当前目录 pwd
--列出当前目录内容 ls
-l(树详细显示目录内容)
-m(横列显示目录内容,是屏幕长度显示)
-a(列出全部文件,包括隐藏文件)
-S(以文档大小排序)
--创建目录 mkdir dname
--删除目录 rmdir dname
rm -r *** -(递归删除该目录下所有内容,询问每个准备删除的文件)
rm -rf ***-(强制删除该目录下所有内容,不询问)
--创建空白文件 touch ***
(ps:从技术的角度来讲 , linux的文件后缀名没有任何意义)
--复制 cp
cp -r **1 **2 (复制1到2中)
--移动 mv
mv -t **1 **2 (把2移动到1中)
--编辑文本 vi [文件名]
--查看文本 cat由第一行开始显示文本内容
tac从最后一行显示,可以看出 tac 是 cat 的倒着写
more 一页一页的显示文档内容
less 与 more 类似,可以往前翻页
head 只看头几行
-N(数字,可根据行数显示)
tail 只看后几行
-N(数字,可根据行数显示)
nl显示的时候,顺序输出行号
od以二进制位的方式读取档案内容
--查找文本 find [路径][查找类型][搜索文件名]
如查找rc.localfind /etc -name *.local
--查找命令信息及其位置whereis 命令
如 whereis ls
--查看环境变量 echo $SHELL
如 echo $PATH (分大小写:分隔符是:,windows是echo %path%;)
--链接 ln
如 ln joe.txt a (硬链接,如同复制一个新文件,joe.txt删除后,a还存在)
a是链接的名称,a和joe.txt同步,然后a的内容和joe.txt一样
joe.txt改变,a也跟着变
如 ln -s joe.txt b (软链接 , 如同创建一个快捷方式,joe.txt删除后,b不存在)
--wc 统计指定文本文件的行数、字数、字符数
--grep(很常用) 在指定的文本文件中查找指定的字符串
grep 字符串 文件名
--col 见管道..
--------------------
----信息显示命令----
--------------------
--date显示和设置日期
--stat显示指定文件的相关信息
--who、w显示在线登录用户
--whoami显示用户自己的身份
--id显示当前用户的id信息
--hostname 显示主机名称
--uname显示操作系统信息
--dmesg显示系统启动信息
--du显示指定的文件(目录)已使用的磁盘空间
--df显示文件系统磁盘空间的使用情况
--free显示当前内存和交换空间的使用情况
--fdisk -l 显示磁盘信息
--locale显示当前语言环境
5、挂载点(mount 设备目录 挂载目录)
--访问设备 (那设备当成一个文件,和另外一个文件夹进行绑定)
--例如挂载光驱:步骤 [cd /mnt]---[mkdir cdr]---[mount /dev/cdrom /mnt/cdr]---[cd cdr]--OK!直接访问光驱内容
--卸载挂载设备(umount /dev/cdrom)--注意必须先退出挂载目录,否则出现"device is busy"错误.
6、startup-shutdown(linux启动流程)
--A、boot sequence(important) linux启动过程
a. load bios(hardware information)
b. read MBR's config to find out the OS
(MBR--Master Boot Record,硬盘第一个物理扇区,柱面0、磁头0、扇区1,包含主引导程序和硬盘分区表)
c. load the kernel of the OS
(加载为kernel核心的OS)
d. init process starts...
(启动linux第一个进程init)
e. execute /etc/rc.d/sysinit
(执行系统最重要的配置文件 , 后台启用进程)
(rc.d--run command)
f. start other modules(stc/modules.conf)
(开启各种模块,如内存管理模块、硬盘管理模块)
g. execute the run level scripts
(系统启动是分层次的,根据情况执行,每个层次之间没关系)
0 - 系统停机状态
1 - 单用户工作状态 root
2 - 多用户状态(没有NFS)
3 - 多用户状态(有NFS)
NFS - Network File System 网络文件系统,联网系统
4 - 系统未使用,留给用户
5 - 图形界面
6 - 系统正常关闭并重新启动
如:cd /etc -- 有rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d等多个文件夹 , 保存着各个层次执行的进程文件
h. execute /etc/rc.d/rc.local (重要)
(保存其它进程脚本,如tomcat自动启动 , 要修改此配置文件)
i. execute /bin/login
(登录界面)
j. shell started...
7、vi 文本编辑器
--两种模式:命令模式编辑模式
--vi [文件名]
(切换到编辑模式)
aappend-光标后添加
iinsert-光标前插入
oopen-另起一行编辑
esc (切换回命令模式)
:w存盘
:wq 存盘退出
:q退出
:q! 不存盘退出
dd删除其中一行
dw删除一个单词
(sudo gedit 文本常用linux下的文本编辑器,比vi好用)
8、用户设置
--切换用户(switch user) su username
小技巧:直接exit切换
--添加用户 useradd username [-g] [组名](分配到某个用户组)
(创建后会自动在/home目录下创建该新用户的文件夹,如/home/username)
--设置密码 passwd username
--cd /etc
--查看用户信息 more password
如新增的用户信息:username:x:500:500::/home/username:/bin/bash
第一个数字,代表用户组 , 当添加用户没有指定用户组时,系统会创建一个和用户ID一样的组ID;
第二个数字:用户ID号;
用户的目录是/home/username;
用户的SHELL是/bin/bash
(命令---SHELL[解释命令]---kenrel内核)
SHELL有多种类型,如csh、bash(常用)、bsh、ksh、sh(最原始)
--添加用户组 groupadd groupname
--查看用户组信息 more group
--删除用户组 groupdel groupname
--修改用户 usermod [-g] [组名] [用户名]
--删除用户 userdel username
然后把/home的文件夹删除了 rm -rf 文件夹
9、权限file privilege
--linux把文件的权限分成四种:r:readw:writex:execute-:none
如:-rw-r--r--
lrwxrwxrwx
drwxr-xr-x
drwxr-xr-x
第一个数字'-'代表文件,其余是文件夹,后9位分为3组,每组有四种权限设置rwx-
第一位表示文件所有者
第二位表示和所有者在同一用户组的用户
第三位表示不在同一用户组的用户权限
--设置权限 (随意应用,灵活组合!)
1、普通用法
--添加权限[chmodx 文件]
如:-rw-r--r-- --- -rwxr-xr-x
--删除权限[chmod -x 文件]
如:-rwxr-xr-x --- -rw-r--r--
--给自己添加权限[chmod ? x 文件]
如此类推 , 组--g,其他人--o
如:chmod u x-rw-r--r-- --- -rwxr--r--
chmod g x-rw-r--r-- --- -rw-r-xr--
chmod o x-rw-r--r-- --- -rw-r--r-x
2、专业用法chmod 755/777
--原理,八进制转二进制
如755,111 101 101,rwx r-x r-x
777 , 111 111 111,rwx rwx rwx
--修改所有者权限 chown (change owner)
如:chown 原来文件 file1 的所有者是 root,改成joe的
chown joe file1
10、管道(把上一个命令执行的结果交给下一个命令)
--使用方法:
命令1|命令2|命令3......|命令n
--使用举例
--$ls -Rl /etc | more
(如 ls -Rl /etc (在控制台模式下,无法返回前面过去的信息),因此需要管道执行该查询,实现分页的工作 , ls -Rl /etc | more)
--$cat /etc/passwd | wc
(显示文件结果,再数数有多少行)
--$cat /etc/passwd | greplrj
(显示文件结果,再查找包含lrj的行)
--#dmesg | grep eth0
(显示系统启动的信息,再查找包含eth0的行--真正含义,检查网卡执行信息是否正常)
--$man bash | col -bbash.txt
语法:col [-bfx][-l缓冲区列数]
补充说明:在许多UNIX说明文件里,都有RLF控制字符 。当我们运用shell特殊字符""和"",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符 。
参数:
-b过滤掉所有的控制字符,包括RLF和HRLF 。
-f滤除RLF字符 , 但允许将HRLF字符呈现出来 。
-x以多个空格字符来表示跳格字符 。
-l缓冲区列数预设的内存缓冲区有128列,您可以自行指定缓冲区的大小 。
--$ls -l | grep "^d"
(用正则表达式筛选出目录列表中 头字母为'd' 的内容--目录)(^是正则表达式开头部分)
--$ls -l * | grep "^-" | wc -l
(列出目录列表中 头字符为'-'的内容--文件 , 并统计显示的行数wc -l)
11、其他命令
--wall(warning all) 通知所有人
a.命令替换
如 wall `date`、 cd 'pwd'、mkbootdisk $(uname -r)
b.重定向
重定向输出:
如 lscmd.txt,把文件写到cmd.txt,不输出在控制台
lscmd.txt , 把文件追加写到cmd.txt
重定向输入:
如 wallcmd.txt,把文本内容发给所有人
12、修改系统的默认系统级别
常用3和5
3 - 多用户状态(有NFS)
NFS - Network File System 网络文件系统,联网系统
5 - 图形界面
PS.设置用户权限: sudo chmod 777 目录
4表示读,2表示写,1表示执行.
第一位表示文件所有者,第二位表示和所有者在同一用户组的用户,第三位表示不在同一用户组的用户权限.
755表示文件所有者可读写,执行.
第二位5表示与所有者在同一用户组的可读,可执行,不可写.
第三位5表示其它组可读,可执行,不可写.转载于Joewalker在本人空间也有详细说明
Linux文件系统操作命令 Linux文件系统操作命令大全
Linux命令有很多,那么Linux文件系统操作命令又有哪些呢?下面我为你介绍!
文件系统操作命令:
1. cat:可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件 。
2. chgrp:用来改变文件或目录所属的用户组 , 命令的参数以空格分开的要改变属组的文件列表,文件名支持通配符,如果用户不是该文件的所有者 , 则不能改变该文件的所属组 。
3. chmod:用于改变文件或目录的访问权限,该命令有两种用法:一种是使用图形化的方法,另一种是数字设置法 。
4. chown:用来将指定用户或组为特定的所有者 。用户可以设置为用户名或用户ID,组可以是组名或组ID 。特定的文件是以空格分开的可以改变权限的文件列表,文件名支持通配符 。
5. clear:用来清除终端屏幕 。
6. cmp:用来比较两个文件的大小 。
7. cp:(copy)可以将文件或目录复制到其他目录中 , 就如同Dos下的copy命令一样 , 功能非常强大 。在使用cp命令时,只需要指定源文件名或目标目录即可 。
8. cut:用来移除文件的部分内容 。
9. diff:用来找出两个文件的不同之处 。
10. du: 用来显示磁盘的剩余空间的大小 。
11. file:用来显示文件的类型 。
12. find:用来在目录中搜索文件,并执行指定的操作 。
13. head:只查看文件的头几行内容,而不必浏览整个文件 。
14. ln:可以在文件之间创建链接,实际上是给某个文件指定一个访问它的别名 。
15. less:用法与more类似,可以查看超过一屏的文件内容,不同的是less除了可以按空格键向下显示文件外,还可以利用方向键来滚动显示文件,要结束浏览,只要在less的提示符“:”后按Q即可 。
16. locate:可用于查找文件 , 且比find命令的搜索速度快 。
17. ls(list):用来显示当前目录中的文件和子目录列表 。
18. mkdir(make directory):建立子目录 。
19. more:用于显示内容超过一屏的文件,为了避免文件内容显示瞬间就消失,可以使用more命令让文件显示满一屏时暂停,在按下任意键的时候继续显示下一屏的内容 。
20. rmkdir(remove directory):用来删除“空”的子目录或无用的目录文件 。
21. mv(move):可以将文件以及目录移到其他位置 , 或更改文件以及目录的名称 。
22. pico:可指定文本的编辑方式 。
23. pwd(print working directory):可显示用户当前所在的目录 。
24. rm:用来删除系统中过时或无用的文件,可以删除目录中的文件或目录本身,对于链接文件,原有文件保持不变 。
25. sort:将文本文件自动分类 。
26. stat:用于显示文件或文件系统的状态 。
27. Strings:显示文件中要打印的字符串 。
28. tail:输出文件的结尾 。
29. touch:改变文件的时间戳 。
30. umask:用于启动bash shell 。
31. uniq:移除已分类文件中的重复文本行 。
32. vi:启动vi文本编辑器 。
33. wc:显示文件中字节、词组合文本行的数目 。
34. whereis:查找特定目录下的原始程序,二进制程序或用户手册等文件的位置 。
35. man:如果用户对某个命令想了解更详细的话,可使用此命令 。
36. dd:复制一个文件 。
37. df:查看一个文件系统的磁盘空间使用情况 。
38. edquoat:设置用户与用户组的磁盘空间限制,即Windows系统中的配额 。
39. fdformat:格式化软盘 。
40. fdisk:执行Linux下的`磁盘分区 。
41. mkfs:建立一个Linux文件系统 。
42. mkswap:创建一个Linux交换分区 。
43. mount:挂载一个文件系统 。
44. quota:限制和显示用户可用的磁盘空间 。
45. swapon,swapoff:启用或取消设备和文件的交换页 。
46. quotaon , quotaoff:启用或取消quota限制 。
47. umount:取消文件系统的装备 。
系统管理命令
1. finger:查询用户信息,也能查看默认的用户环境 。
2. ftp:标准的文件传输协议的用户接口,是在网络上传输文件最简单有效的方法 。
3. host:用于DNS查询 。
4. hostname:用于显示或设置系统的主机名 。
5. ifconfig:用于配置网卡接口 。(可以使用down或up参数来禁用或启用某个网卡接口)
6. mail:发送和接收邮件 。
7. netstat:显示网络连接、路由表和网络接口信息,用户可以知道目前那些网络连接正在运行 。
8. ping:此命令用于测试本计算机和网络上其它的计算机是否相连 。
9. rlogin:远程登陆命令,该命令与telnet命令很相似,允许用户启动远程系统的交互会话 。
10. rcp:rcp(remote file copy)命令是远程文件复制命令,该命令用于在计算机之间复制文件,有两中格式,一种格式用于文件动文件的复制 , 另一种用于把文件或目录复制到其他文件目录中 。
11. route:此命令用于显示或设置IP路由表 。
12. tcpdump:此命令用于测试网络的通信量 。
13. talk:此命令可用于事项网络用户的适时交谈,但是必须将双方系统的信息加入各自的/etc/hosts文件中,以相互识别 。
14. telnet:此命令用于通过网络登陆远程计算机,如同操作本地计算机一样 。
15. wall:wall(write all)命令可以用于发送消息给登陆本机的用户 。在发送消息时,可直接输入要发送的消息 , 也可以把文件当成消息发送 。
16. wget:此命令用于Linux环境下从Internet上下载文件,支持http和ftp协议,支持代理服务器和断点连续传功能,能够递归远程主机上的目录,查找合乎要求的的文件并下载到本地硬盘上 。Wget命令可以在后台运行,截获并忽略hantfup信号 , 因此用户退出登陆后,仍可继续运行 。
17.,bg: , bg命令是后台执行命令,有时候用户执行的程序可能要话很多时间 , 如果放在前台执行,可能无法继续其他操作,最好将他放在后台执行 。
18. fg:fg命令是前台执行命令,如果用户有程序在后台运行,可以通过fg命令将程序从后台移到前台执行 。
19. jobs:此命令用于显示正在后台执行的任务清单 。Bg,fg,jobs命令都属于bash命令,
20. kill:此命令用于终止一个程序,例如:#[root@rathat9 root]kill 3793
21. ps:此命令用于显示程序的状态 。
22. top:此命令用于显示当前CPU进程 。
23. at batch atp atrm:这些命令用于排序,检查或删除后台运行的任务 。
Linux与用户有关的命令:
1. passwd命令:更改用户口令 。
格式:passwd [用户名]
2. su命令:可以让一个普通用户拥有超级用户或其他用户的权限 , 也可以让超级拥护以普通用户的身份做一些事情 。
格式:su[选项][?][使用者账号]
说明:若没有指定的使用者账号,则系统预设值为超级用户root 。该命令中个选项的含义分别为:
-c:执行一个命令后就结束 。
-:加了这个减号的目的是使环境变量和欲转换的用户相同 。
-m:保留环境变量不变 。
Linux系统管理命令:
1. wall命令:对全部以登陆的用户发送信息 。
2. write命令:向系统中某一用户发送信息 。
格式:write 用户账号 [终端名称]
3. mesg命令:设定是否允许其他用户用write命令给自己发送信息 。
如果允许输入命令:mesg y
如果不允许输入命令:mesg n
4. sync命令:在关闭Linux系统是使用的 。Sync是强制把内存中的数据写回硬盘,以免数据丢失 。
5. shutdown命令:可以安全的关闭或重启Linux它在系统关闭之前给系统上的所有登陆用户提示一条警告信息 。
格式:shutdown [选项][时间][警告信息]
命令中选项的含义:
-k:并不真正关机,而只是发出警告信息给所有用户 。
-r:关机后立即重新启动 。
-h:关机后不重新启动 。
-f快速关机 , 重新启动时跳过fsck 。
-n:快速关机,不经过init程序 。
-c:取消一个已经运行的shutdown 。
6. free命令:查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区 。
格式:free [-b | -k |-m]
命令中各个选项的含义:
-b:以字节为单位显示 。
-k:以K字节为单位显示 。
-m:以兆字节为单位显示 。
7. uptime命令:显示系统已经运行了多长时间,它依次显示下列信息:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载 。
8. df命令:检查文件系统的磁盘空间占用情况 。
格式:df [选项]
说明:df命令可显示所有文件系统对I节点和磁盘块的使用情况 。
命令中各个选项的含义:
-a:显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统 。
-k:以k字节为单位显示 。
-i:显示i节点信息,而不是磁盘块 。
-t:显示各指定类型的文件系统的磁盘空间使用情况 。
-x:列出不是某一指定类型文件系统的磁盘空间使用情况 。
-T:显示文件系统类型 。
9. du命令:显示磁盘空间的使用情况 。统计目录(或文件)所占磁盘的大小 。
格式:du [选项] [Names…]
说明:该命令逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况 。若没有给出Names,则对当前目录进行统计 。
命令中各个选项的含义:
-s:对每个Names参数只给出占用的数据块总数 。
-a:递归的显示指定目录中各文件及子孙目录中个文件占用的数据块数 。若既不指定-s , 也不指定-a,则显示Names中的每一个目录及其中的各子目录所占的磁盘块数 。
-b:以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位) 。
-k:以1024字节为单位列出磁盘空间的使用情况 。
-c:最后再加上一个总计(系统缺省设置) 。
-l:计算所有的文件大小 , 对硬链接文件,则计算多次 。
-x:跳过在不同文件系统上的目录不予统计 。
10. dd命令:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换 。
格式:dd [选项]
命令中各个选项的含义:
if = 输入文件(或设备名称) 。
of = 输出文件(或设备名称) 。
ibs = bytes 一次读取bytes字节,及读入缓冲区的字节数 。
skip = blocks 跳过读入缓冲区开头的ibs*blocks块 。
obs = bytes 一次写入bytes字节,及写入缓冲区的字节数 。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs).
cbs = byte 一次转换bytes字节 。
count = blocks 只拷贝输入的block块 。
conv = ASCⅡ 把EBCDIC码转换为ASCⅡ 。
conv = ebcdic 把ASCⅡ码转换为EBCDIC码 。
conv = ibm ibm把ASCⅡ码转换为alternate EBCDIC码 。
conv = block 把变动位转换成固定字符 。
conv = ublock 把固定位转换成变动位 。
conv = ucase 把字母由小写转换为大写 。
conv = lcase 把字母由大写转换为小写 。
conv = notrunc 不截短输出文件 。
conv = swab 交换每一对输入字节 。
conv = noerror 出错是不停止处理 。
conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充) 。
11. fdformat命令:低级格式化软盘 。
格式:format [-n] device
说明:-n 软盘格式化后不作检验 。
12. echo命令:在显示器上显示一段文字,一般起到一个提示作用 。
格式:echo [-n] 字符串
13. cal命令:显示某年某月的日历 。
格式:cal [选项] [月 [年]]
命令中各个选项的含义:
-j:显示出给定月中的每一天是一年中的第几天(从1月1日算起) 。
-y:显示出整年的日历 。
14. date命令:显示和设置系统日期和时间 。
格式:date [选项] 显示时间格式 (以开头,后面接格式)
date [选项] 设置时间格式
命令中各个选项的含义:
15. clear命令:清除屏幕上的信息 。
Vi的基本命令:
1. 移动光标:
Ctrlb:上滚一屏
Ctrlf:下滚一屏
Ctrld:下滚半屏
Ctrlu:上滚半屏
G: 移到文件最后
W:移到下个字的开头
B:跳至上个字的开头
2. 删除
x:删除当前光标所在后面一个字符
#x:删除当前光标所在后面#个字符 。例如,5x表示删除5个字符 。
dd:删除当前光标所在行
#dd:删除当前光标所在后面#行 。例如,5dd表示删除字光标算起的5行 。
:l,#d:例如,:1,12d表示删除自行1至行12的文字
X:删当前光标的左字符
D:删至行尾
3. 更改
cw:更改光标处的字到此单字的字尾处
c#w:例如 , c3w表示更改3个字
cc:修改行
c:替换到行尾
4. 取代
r:取代光标处的字符
R:取代字符直到按ESC为止
5. 复制
yw:拷贝光标处的字到字尾只缓冲区
P:把缓冲区的资料贴上来
yy:拷贝光标所在之行至缓冲区
#yy:例如:5yy,拷贝光标所在之处以下5行至缓冲区
Linux文件的复制,删除和移动命令
1.cp命令:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中 , 同MSDOS下的COPY命令一样,功能十分强大 。
语法:cp[选项]源文件或目录 , 目标文件或目录
说明该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中 。
该命令的各项选项含义如下:
-a:该选项通常在拷贝目录是使用 。他保留链接,文件属性,并递归地拷贝目录,其作用等于dpr选项的组合 。
-d:拷贝是保留链接
-f:删除已经存在的目标文件而不提示 。
-I:和 f选项相反,在覆盖目标文件之前将给出提示要求拥护确认 。回答y时目标文件将被覆盖 , 是交互式拷贝 。
-p:此时cp除复制源文件的内容外,还将把其修改时间和反问权限也复制到新文件中 。
-r;若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件 。此时目标文件必须为一个目录名 。
-L:不作拷贝 , 只是链接文件 。
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp 命令拷贝文件后,这个文件酒会被新源文件覆盖 , 因此 , 建议用户在使用cp命令拷贝文件时,最好使用I选项 。
2.mv命令:用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中 。该命令如同MS-DOS下的ren 和 move 的组合 。
语法:mv[选项]源文件或目录 目标文件或目录 。
说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中 。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),他将所给的源文件或目录重命名为给顶的目标文件名 。当第二个参数是已存在的目录名称时,源文件或目录参加参数可以有很多个,mv命令将个参数指定的源文件均移至目标目录中 。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失 。
命令中各选项的含义为:
-I:交互方式操作 。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件 。
-f:禁止交互操作 。在mv操作要覆盖某已有的目标文件是不给任何指示,指定此选项后,I选项将不再起作用 。
如果所给目标文件(不是目录)已存在 , 此时该文件的内容将后备新文件覆盖,为防止用户用mv命令破坏另一个文件,使用mv命令移动文件时,最好使用I选项 。
3.rm命令:用户可以用rm命令删除不需要的文件 。该命令的功能问删除一个目录中的一个或多个文件或目录 , 他也可以将某个目录及其下的所有文件及子目录均删除 。对于链接文件,只是断开了链接,源文件保持不变 。
Rm命令的一般形式为:
Rm [选项]文件……
如果没有使用-r选项,则rm不会删除目录 。
该命令的各选项含义如下:
-f:忽略不存在的文件 , 从不给出提示 。
-r:指示rm将参数中列出的全部目录和子目录均递归地删除 。
-I:进行交互式删除 。
使用rm命令要小心 。因为一旦文件被删除,他是不能被恢复的 。为了防止这种情况的发生可以使用I选项俩逐个确认要删除的文件 。如果用户输入y,文件将被删除 。如果输入任何其他东西,文件则不会删除 。
Linux目录的创建与删除命令:
1. mkdir命令
功能:创建一个目录(类似MS-DOS下的md命令) 。
语法:mkdir[选项]dir-name
说明:该命令创建由dir-name命名的目录 。要求创建目录的用户在当前目录中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有的目录或文件名称 。
命令中个选项的含义为:
-m:对新建目录设置存取权限 。也可以用chmod命令设置 。
-p:可以是一个路径名称 。此时若路径中的某些目录尚不存在 , 加上此选项后 , 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 。
2. rmdir命令
功能:删除空目录 。
语法:rmdir[选项]dir-name 。/
说明:dir-name表示目录名 。该命令从一个目录中删除一个或多个子目录项 。需要特别注意的是,一个目录被删除之前必须是空的 。Rm-r dir 命令可代替rndir,但是有危险性 。删除某目录时也必须具有对父目录的、写权限 。
命令中个选项的含义为:
-p递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除 。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息 。
3. cd命令
功能:改变工作目录 。
语法:cd[directory]
说明:该命令将当前目录改变至directory所指定的目录 。若没有指定directory,则回到用户的主目录 。为了改变到指定目录,用户必须拥有对指定目录的执行和读权限 。
该命令可以使用通配符(如”*,_”这样的通配符号) 。
4. pwd命令
在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录 , 也可以利用cd命令从一个目录转换到另一个目录 。然而,没有提示符来告知用户目前处于哪一个目录中 。想要知道当前所处的目录,可以用pwd命令,该命令显示整个路径名 。
语法:pwd
说明:此命令显示出当前工作目录的绝对路径 。
5. ls命令
ls是list的简写 , 其功能为列出目录的内容 。这是拥护最常用的一个命令之一,因为用户需要不时地查看某个目录的内容,该命令类似于DOS下的dir命令
语法:ls[选项][目录或是文件]
对于每个目录 , 该命令将列出其中的所有子目录与文件 。对于每个文件 , ls将输出其文件名以及所要求的其他信息 。默认情况下 , 输出条目按字母顺序排序 。但未给出目录名或是文件名时,就显示当前目录的信息 。
命令中各个选项的含义:
-a:显示指定目录下所有子目录与文件 , 包括隐藏文件 。
-A:显示指定目录下所有子目录与文件 , 包括隐藏文件 。但不列出“.”和“..”.
-b:对文件名中的不可显示字符用把禁止
linux中所有设备都是以文件的形式显示
linux下文件的后缀名无实际意义
命令
pwd 显示路径
man命令 列出操作说明
ls -l/-help列出 文件目录
cd / 目录做实验
安装步骤 configure make make install?
rm -r dl 递归删除目录
rm -rf 删除所有目录
rm -f 加文件名 删除文件
rmdir文件地址 删除文件夹所有和rm -rf功能差不多
touch 加名字 创建新文件
cp 复制 mv 移动 rm 删除
vi 文本编辑器 输入a将从命令格式变成输入格式
head tail 查看前面和后面
find 加位置 加文件名 查找
echo $PATH 查询路径
useradd 加名字 添加用户
userdel 加名字 删除用户
su 加用户名 切换用户
chmodx/-x 加文件名 修改文件权限
chmod 755 加文件名 改变权限在安装程序时
grep 加文本字符 加在那个文件 查找字符存在那行
fdisk -l 查看磁盘信息
命令1|命令2|命令三... 管道
ps -ef查看进程
ifconfig linux查看ip
重定向
linux和其它机器之间共享文件vsftp Windows和linux传输文件15-17
putty远程登录软件ssh
gzip 压缩和解压缩 -d解压 21
service iptables off防火墙关闭
tar -xvf 第二层解压缩
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz ./DirName
压缩:tar zcvf FileName.tar.gz DirName
.tar.bz2
解压:tar xjf FileName.tar.bz2 ./DirName
压缩:tar cjf FileName.tar.bz2 DirName
rpm -ivh 加.rpm文件 安装
安装sudo apt-get install 软件名
;
linux如何用shell编写在运行一个命令后打开新的标签或者终端,并在新终端里运行其他命令?如果好奇 , 那可以研究研究,如果工作需要,还是换个方式实现吧 。
如何在Linux下使用Git Git是一款开源分布式版本控制系统,能够帮助Linux管理内核开发 , 那么Linux要如何使用Git,下面就是Linux使用Git的方法:
*初始化git仓库,使用git init命令
*添加文件到git仓库分两步:
1、使用git add filename ;可分多次使用,添加多个文件到暂存区
2、使用git commit -m “说明” ;完成提交到分支
*查看工作区状态,使用git status 命令;如果提示有修改可使用git diff filename 查看修改内容
*HEAD指向当前版本,HEAD^表示上一个版本,HEAD^^上上一个版本……HEAD~100指向之前第100个版本 。
*回退版本:使用git log查看提交历史;使用git log --pretty=oneline 精简显示
使用git reset --hard commit_id 回退到版本号为commit_id的版本
*回退版本之后如果想再看改回来,可以使用git reflog 查看历史命令,找出想改回的版本号,再使用git reset hard commit_id 返回即可 。
*注意:git跟踪并管理的是修改,而不是文件,如果一个文件修改并add之后,再次修改,如果不再次add就提交的话 , 只会提交第一次的修改 。
*撤销修改:
1、如果文件还在工作区,即没有add也没有commit,则使用git checkout -- filename 还原到服务器版即可;
2、如果已经add到暂存区,首先使用git reset HEAD filename从暂存区取回工作区,再按照1进行操作即可;
3、如果已经提交到版本库 , 则按照版本回退的方式进行修改即可;
4、如果已经push到远程仓库,就麻烦了
*删除使用以下命令:
1、git rm filename 从工作区删除
2、git commit -m ”说明“ 更新分支中文件进行删除
将在工作区的文件删除之后,可以使用git checkout -- filename 从分支中取回,但是只能恢复文件到最新版本,最后一次提交之后的修改则不能恢复 。
*分支:
1、创建分支
git checkout -b branchname 创建并切换到改分区 , 相当于一下两个命令:
git branch branchname 创建分支
git checkout branchname 切换到分区
2、查看当前指向的分支:git branch 会列出所有分支,当前指向的分支之前多了个*
3、切换分支就是git checkout branchname
4、合并分支:git merge branchname 合并branchname到当前分支
5、删除分支:git branch -d branchname 删除branchname分支
注意:创建、合并、删除分支都非常快,git鼓励使用分支完成某个任务,合并后删除分支,和直接在master分支上进行工作是一样的效果,但是过程更加安全; 这些之所以快是因为在这些过程中我们只是修改了指向分支的指针 , 如创建一个branch就是创建了一个指向分支的指针,然后修改HEAD指向该指针;即HEAD指向分支,分支就是提交 。
*冲突解决:
git无法自动合并分支时,就必须首先解决冲突;解决冲突之后,再提交 , 即完成了合并
使用git log --graph 可以查看分支合并图 。
*保存工作现场 git stash 保存之后就可以进行其他工作 而不影响上次的修改
恢复工作现?。?
1、git stash apply 恢复时并不删除stash中内容
2、git stash pop 恢复时会删除stash中的内容
*远程库信息产看使用git remote (-v)加上-v显示信息更加详细
*分支推送到远程库:即将所有本地的提交推送到远程库
git push origin(远程库名) master (要推送的分支)
*抓取分支:git pull ; git clone
*协作模式:
1、使用git push origin branchname 推送自己的修改
2、如果推送失败,因为远程分支比本地更新 , 先使用git pull 合并
3、如果合并有冲突,解决冲突,在本地提交
4、再推送
注意:如果使用git pull 合并时提示 ”no tracking information“说明本地分支没有和远程分支建立链接关系,使用以下指令建立关系:git branch --set -upstream branch origin/branchname
*在本地创建与远程对应的分支:git branch -b branchname origin/branchname 本地与远程分支的名称最好一致
*创建标签
1、打标签git tag name 默认标签打在最新提交的commit上,如果想打在其他版本上,找到commit_id即可
2、显示标签:git log -pretty=oneline --abbrev -commit
git tag tag_name commit_id
3、查看标签:git tag 显示所有标签
4、查看标签信息:git show tag_name
5、创建带有说明的标签: git tag -a tag_name -m ”信息“;-a表示标签名,-m指定说明文字
*操作标签:git tag -d tag_name 删除标签
推送标签到远程库:git push origin tag_name
一次推送所有标签到远程库:git push origin --tag
上面就是Linux使用Git的方法了 。
关于linux打标签命令和linux快速打出文件名的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 什么手机拍搞笑视频好,什么手机拍搞笑视频好用
- 欧美老人角色扮演游戏,外国游戏角色扮演
- python怎么让蜂鸣器响,python控制电脑蜂鸣器
- 怎么添加mysql到服务 mysql加入服务
- 更新鸿蒙系统无服务,更新鸿蒙系统无服务怎么办
- 怎么判断无线路由器是否坏了,怎样判断无线路由器坏了
- 虎牙可以课堂直播吗手机,虎牙可以直播看电视吗
- go语言udp并发处理 go udp编程
- 雪梨直播为什么不封号,主播雪梨为什么火