From b3f2252eee9a836707af9ef5df667f5c52eb0081 Mon Sep 17 00:00:00 2001 From: jaywcjlove <398188662@qq.com> Date: Tue, 29 Nov 2016 13:13:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0188=E6=9D=A1=E5=91=BD?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- command/alias.md | 51 +++++ command/apachectl.md | 25 +++ command/arch.md | 21 ++ command/arpwatch.md | 23 ++ command/badblocks.md | 82 +++++++ command/bind.md | 56 +++++ command/bunzip2.md | 38 ++++ command/bzip2.md | 125 +++++++++++ command/bzip2recover.md | 20 ++ command/cd.md | 33 +++ command/chattr.md | 52 +++++ command/chfn.md | 64 ++++++ command/chgrp.md | 40 ++++ command/chkconfig.md | 65 ++++++ command/chmod.md | 72 ++++++ command/chown.md | 43 ++++ command/chroot.md | 119 ++++++++++ command/chsh.md | 90 ++++++++ command/cksum.md | 47 ++++ command/cmp.md | 60 +++++ command/col.md | 23 ++ command/colrm.md | 19 ++ command/comm.md | 126 +++++++++++ command/compress.md | 65 ++++++ command/cpio.md | 93 ++++++++ command/crontab.md | 204 +++++++++++++++++ command/csplit.md | 73 ++++++ command/cut.md | 159 ++++++++++++++ command/date.md | 147 +++++++++++++ command/dd.md | 124 +++++++++++ command/declare.md | 48 ++++ command/depmod.md | 61 +++++ command/df.md | 78 +++++++ command/diff.md | 78 +++++++ command/diffstat.md | 65 ++++++ command/dircolors.md | 142 ++++++++++++ command/dirs.md | 37 ++++ command/dmesg.md | 38 ++++ command/du.md | 99 +++++++++ command/dump.md | 52 +++++ command/e2fsck.md | 62 ++++++ command/ed.md | 38 ++++ command/edquota.md | 200 +++++++++++++++++ command/egrep.md | 41 ++++ command/eject.md | 38 ++++ command/elm.md | 26 +++ command/enable.md | 94 ++++++++ command/ex.md | 18 ++ command/exit.md | 58 +++++ command/export.md | 56 +++++ command/fdisk.md | 315 ++++++++++++++++++++++++++ command/fgrep.md | 84 +++++++ command/file.md | 69 ++++++ command/find.md | 477 +++++++++++++++++++++++++++++----------- command/finger.md | 43 ++++ command/fmt.md | 29 +++ command/fold.md | 26 +++ command/free.md | 60 +++++ command/fsck.md | 53 +++++ command/ftp.md | 67 ++++++ command/ftpcount.md | 14 ++ command/ftpshut.md | 21 ++ command/ftpwho.md | 21 ++ command/grep.md | 232 +++++++++++++++++++ command/groupdel.md | 25 +++ command/groupmod.md | 26 +++ command/grpconv.md | 37 ++++ command/grpunconv.md | 37 ++++ command/gunzip.md | 64 ++++++ command/gzexe.md | 24 ++ command/gzip.md | 83 +++++++ command/halt.md | 32 +++ command/hdparm.md | 113 ++++++++++ command/hwclock.md | 62 ++++++ command/id.md | 75 +++++++ command/ifconfig.md | 117 ++++++++++ command/indent.md | 84 +++++++ command/insmod.md | 46 ++++ command/ispell.md | 18 ++ command/jed.md | 67 ++++++ command/joe.md | 45 ++++ command/join.md | 32 +++ command/kill.md | 76 +++++++ command/last.md | 48 ++++ command/lastb.md | 61 +++++ command/lha.md | 43 ++++ command/lilo.md | 134 +++++++++++ command/ln.md | 94 ++++++++ command/login.md | 25 +++ command/logname.md | 21 ++ command/logout.md | 14 ++ command/logrotate.md | 29 +++ command/look.md | 28 +++ command/losetup.md | 67 ++++++ command/lsattr.md | 37 ++++ command/lsmod.md | 100 +++++++++ command/mail.md | 87 ++++++++ command/mailq.md | 28 +++ command/mesg.md | 25 +++ command/mkbootdisk.md | 40 ++++ command/mkdir.md | 45 ++++ command/mke2fs.md | 48 ++++ command/mkfs.md | 40 ++++ command/mkinitrd.md | 60 +++++ command/mkisofs.md | 98 +++++++++ command/mkswap.md | 111 ++++++++++ command/mktemp.md | 26 +++ command/modprobe.md | 76 +++++++ command/mtools.md | 45 ++++ command/ncftp.md | 61 +++++ command/netstat.md | 166 ++++++++++++++ command/nice.md | 38 ++++ command/ntsysv.md | 29 +++ command/od.md | 148 +++++++++++++ command/passwd.md | 125 +++++++++++ command/paste.md | 25 +++ command/patch.md | 56 +++++ command/pico.md | 58 +++++ command/ping.md | 53 +++++ command/ps.md | 83 +++++++ command/pstree.md | 44 ++++ command/pwconv.md | 28 +++ command/pwunconv.md | 25 +++ command/quota.md | 148 +++++++++++++ command/quotacheck.md | 46 ++++ command/quotaoff.md | 27 +++ command/quotaon.md | 27 +++ command/rcp.md | 125 +++++++++++ command/reboot.md | 31 +++ command/renice.md | 36 +++ command/repquota.md | 35 +++ command/restore.md | 52 +++++ command/rlogin.md | 28 +++ command/rm.md | 49 +++++ command/rmdir.md | 41 ++++ command/rmmod.md | 39 ++++ command/rpm.md | 211 ++++++++++++++++++ command/rsh.md | 27 +++ command/screen.md | 220 ++++++++++++++++++ command/sed.md | 432 ++++++++++++++++++++++++++++++++++++ command/set.md | 63 ++++++ command/shutdown.md | 46 ++++ command/smbclient.md | 83 +++++++ command/sort.md | 160 ++++++++++++++ command/spell.md | 18 ++ command/split.md | 58 +++++ command/startx.md | 88 ++++++++ command/stat.md | 55 +++++ command/su.md | 50 +++++ command/sudo.md | 171 ++++++++++++++ command/swapoff.md | 32 +++ command/swapon.md | 39 ++++ command/sync.md | 34 +++ command/talk.md | 85 +++++++ command/tar.md | 114 ++++++++++ command/tcpdump.md | 150 +++++++++++++ command/tee.md | 61 +++++ command/telnet.md | 57 +++++ command/tftp.md | 155 +++++++++++++ command/tload.md | 38 ++++ command/top.md | 89 ++++++++ command/touch.md | 40 ++++ command/tr.md | 107 +++++++++ command/traceroute.md | 69 ++++++ command/ulimit.md | 62 ++++++ command/umask.md | 50 +++++ command/umount.md | 77 +++++++ command/unalias.md | 40 ++++ command/uname.md | 73 ++++++ command/unarj.md | 27 +++ command/uniq.md | 60 +++++ command/unset.md | 35 +++ command/unzip.md | 73 ++++++ command/useradd.md | 54 +++++ command/userdel.md | 38 ++++ command/usermod.md | 60 +++++ command/w.md | 37 ++++ command/wall.md | 28 +++ command/wc.md | 26 +++ command/whereis.md | 65 ++++++ command/which.md | 42 ++++ command/who.md | 52 +++++ command/whoami.md | 31 +++ command/write.md | 41 ++++ command/xlsatoms.md | 21 ++ command/xlsclients.md | 23 ++ command/xlsfonts.md | 27 +++ command/zip.md | 78 +++++++ command/zipinfo.md | 35 +++ 189 files changed, 12896 insertions(+), 126 deletions(-) create mode 100644 command/alias.md create mode 100644 command/apachectl.md create mode 100644 command/arch.md create mode 100644 command/arpwatch.md create mode 100644 command/badblocks.md create mode 100644 command/bind.md create mode 100644 command/bunzip2.md create mode 100644 command/bzip2.md create mode 100644 command/bzip2recover.md create mode 100644 command/cd.md create mode 100644 command/chattr.md create mode 100644 command/chfn.md create mode 100644 command/chgrp.md create mode 100644 command/chkconfig.md create mode 100644 command/chmod.md create mode 100644 command/chown.md create mode 100644 command/chroot.md create mode 100644 command/chsh.md create mode 100644 command/cksum.md create mode 100644 command/cmp.md create mode 100644 command/col.md create mode 100644 command/colrm.md create mode 100644 command/comm.md create mode 100644 command/compress.md create mode 100644 command/cpio.md create mode 100644 command/crontab.md create mode 100644 command/csplit.md create mode 100644 command/cut.md create mode 100644 command/date.md create mode 100644 command/dd.md create mode 100644 command/declare.md create mode 100644 command/depmod.md create mode 100644 command/df.md create mode 100644 command/diff.md create mode 100644 command/diffstat.md create mode 100644 command/dircolors.md create mode 100644 command/dirs.md create mode 100644 command/dmesg.md create mode 100644 command/du.md create mode 100644 command/dump.md create mode 100644 command/e2fsck.md create mode 100644 command/ed.md create mode 100644 command/edquota.md create mode 100644 command/egrep.md create mode 100644 command/eject.md create mode 100644 command/elm.md create mode 100644 command/enable.md create mode 100644 command/ex.md create mode 100644 command/exit.md create mode 100644 command/export.md create mode 100644 command/fdisk.md create mode 100644 command/fgrep.md create mode 100644 command/file.md create mode 100644 command/finger.md create mode 100644 command/fmt.md create mode 100644 command/fold.md create mode 100644 command/free.md create mode 100644 command/fsck.md create mode 100644 command/ftp.md create mode 100644 command/ftpcount.md create mode 100644 command/ftpshut.md create mode 100644 command/ftpwho.md create mode 100644 command/grep.md create mode 100644 command/groupdel.md create mode 100644 command/groupmod.md create mode 100644 command/grpconv.md create mode 100644 command/grpunconv.md create mode 100644 command/gunzip.md create mode 100644 command/gzexe.md create mode 100644 command/gzip.md create mode 100644 command/halt.md create mode 100644 command/hdparm.md create mode 100644 command/hwclock.md create mode 100644 command/id.md create mode 100644 command/ifconfig.md create mode 100644 command/indent.md create mode 100644 command/insmod.md create mode 100644 command/ispell.md create mode 100644 command/jed.md create mode 100644 command/joe.md create mode 100644 command/join.md create mode 100644 command/kill.md create mode 100644 command/last.md create mode 100644 command/lastb.md create mode 100644 command/lha.md create mode 100644 command/lilo.md create mode 100644 command/ln.md create mode 100644 command/login.md create mode 100644 command/logname.md create mode 100644 command/logout.md create mode 100644 command/logrotate.md create mode 100644 command/look.md create mode 100644 command/losetup.md create mode 100644 command/lsattr.md create mode 100644 command/lsmod.md create mode 100644 command/mail.md create mode 100644 command/mailq.md create mode 100644 command/mesg.md create mode 100644 command/mkbootdisk.md create mode 100644 command/mkdir.md create mode 100644 command/mke2fs.md create mode 100644 command/mkfs.md create mode 100644 command/mkinitrd.md create mode 100644 command/mkisofs.md create mode 100644 command/mkswap.md create mode 100644 command/mktemp.md create mode 100644 command/modprobe.md create mode 100644 command/mtools.md create mode 100644 command/ncftp.md create mode 100644 command/netstat.md create mode 100644 command/nice.md create mode 100644 command/ntsysv.md create mode 100644 command/od.md create mode 100644 command/passwd.md create mode 100644 command/paste.md create mode 100644 command/patch.md create mode 100644 command/pico.md create mode 100644 command/ping.md create mode 100644 command/ps.md create mode 100644 command/pstree.md create mode 100644 command/pwconv.md create mode 100644 command/pwunconv.md create mode 100644 command/quota.md create mode 100644 command/quotacheck.md create mode 100644 command/quotaoff.md create mode 100644 command/quotaon.md create mode 100644 command/rcp.md create mode 100644 command/reboot.md create mode 100644 command/renice.md create mode 100644 command/repquota.md create mode 100644 command/restore.md create mode 100644 command/rlogin.md create mode 100644 command/rm.md create mode 100644 command/rmdir.md create mode 100644 command/rmmod.md create mode 100644 command/rpm.md create mode 100644 command/rsh.md create mode 100644 command/screen.md create mode 100644 command/sed.md create mode 100644 command/set.md create mode 100644 command/shutdown.md create mode 100644 command/smbclient.md create mode 100644 command/sort.md create mode 100644 command/spell.md create mode 100644 command/split.md create mode 100644 command/startx.md create mode 100644 command/stat.md create mode 100644 command/su.md create mode 100644 command/sudo.md create mode 100644 command/swapoff.md create mode 100644 command/swapon.md create mode 100644 command/sync.md create mode 100644 command/talk.md create mode 100644 command/tar.md create mode 100644 command/tcpdump.md create mode 100644 command/tee.md create mode 100644 command/telnet.md create mode 100644 command/tftp.md create mode 100644 command/tload.md create mode 100644 command/top.md create mode 100644 command/touch.md create mode 100644 command/tr.md create mode 100644 command/traceroute.md create mode 100644 command/ulimit.md create mode 100644 command/umask.md create mode 100644 command/umount.md create mode 100644 command/unalias.md create mode 100644 command/uname.md create mode 100644 command/unarj.md create mode 100644 command/uniq.md create mode 100644 command/unset.md create mode 100644 command/unzip.md create mode 100644 command/useradd.md create mode 100644 command/userdel.md create mode 100644 command/usermod.md create mode 100644 command/w.md create mode 100644 command/wall.md create mode 100644 command/wc.md create mode 100644 command/whereis.md create mode 100644 command/which.md create mode 100644 command/who.md create mode 100644 command/whoami.md create mode 100644 command/write.md create mode 100644 command/xlsatoms.md create mode 100644 command/xlsclients.md create mode 100644 command/xlsfonts.md create mode 100644 command/zip.md create mode 100644 command/zipinfo.md diff --git a/command/alias.md b/command/alias.md new file mode 100644 index 00000000000..071b29d9f8f --- /dev/null +++ b/command/alias.md @@ -0,0 +1,51 @@ +alias +=== + +用来设置指令的别名 + +## 补充说明 + +**alias命** 用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号`''`将原来的命令引起来,防止特殊字符导致错误。 + +alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件`/etc/bashrc`中。 + +### 语法 + +``` +alias(选项)(参数) +``` + +### 选项 + +``` +-p:打印已经设置的命令别名。 +``` + +### 参数 + +命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。 + +### 实例 + +**alias 的基本使用方法为:** + +``` +alias 新的命令='原命令 -选项/参数' +``` + +例如:`alias l=‘ls -lsh'`将重新定义ls命令,现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。 + +要删除一个别名,可以使用 unalias 命令,如 unalias l。 + +**查看系统已经设置的别名:** + +``` +alias -p +alias cp='cp -i' +alias l.='ls -d .* --color=tty' +alias ll='ls -l --color=tty' +alias ls='ls --color=tty' +alias mv='mv -i' +alias rm='rm -i' +alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' +``` \ No newline at end of file diff --git a/command/apachectl.md b/command/apachectl.md new file mode 100644 index 00000000000..e7f11f2aafe --- /dev/null +++ b/command/apachectl.md @@ -0,0 +1,25 @@ +apachectl +=== + +Apache服务器前端控制工具 + +## 补充说明 + +**apachectl命** 是Apache的Web服务器前端控制工具,用以启动、关闭和重新启动Web服务器进程。 + +### 语法 + +``` +apachectl(参数) +``` + +### 参数 + +* configtest:检查设置文件中的语法是否正确; +* fullstatus:显示服务器完整的状态信息; +* graceful:重新启动Apache服务器,但不会中断原有的连接; +* help:显示帮助信息; +* restart:重新启动Apache服务器; +* start:启动Apache服务器; +* status:显示服务器摘要的状态信息; +* stop:停止Apache服务器。 \ No newline at end of file diff --git a/command/arch.md b/command/arch.md new file mode 100644 index 00000000000..5c813b0a5dc --- /dev/null +++ b/command/arch.md @@ -0,0 +1,21 @@ +arch +=== + +显示当前主机的硬件架构类型 + +## 补充说明 + +**arch命** 用于显示当前主机的硬件架构类型。arch命令等同于`命令name -m`在当前的Linux系统下,arch命令输出结果有:i386、i486、i586、alpha、sparc、arm、m68k、mips、ppc、i686等 + +### 语法 + +``` +arch +``` + +### 实例 + +``` +arch +x86_64 +``` \ No newline at end of file diff --git a/command/arpwatch.md b/command/arpwatch.md new file mode 100644 index 00000000000..178b36a9389 --- /dev/null +++ b/command/arpwatch.md @@ -0,0 +1,23 @@ +arpwatch +=== + +监听网络上ARP的记录 + +## 补充说明 + +**arpwatch命** 用来监听网络上arp的记录。 + +### 语法 + +``` +arpwatch(选项) +``` + +### 选项 + +``` +-d:启动排错模式; +-f<记录文件>:设置存储ARP记录的文件,预设为/var/arpwatch/arp.dat; +-i<接口>:指定监听ARP的接口,预设的接口为eth0; +-r<记录文件>:从指定的文件中读取ARP记录,而不是从网络上监听。 +``` \ No newline at end of file diff --git a/command/badblocks.md b/command/badblocks.md new file mode 100644 index 00000000000..7da52b7601a --- /dev/null +++ b/command/badblocks.md @@ -0,0 +1,82 @@ +badblocks +=== + +查找磁盘中损坏的区块 + +## 补充说明 + +**badblock命** 用于查找磁盘中损坏的区块。 硬盘是一个损耗设备,当使用一段时间后可能会出现坏道等物理故障。电脑硬盘出现坏道后,如果不及时更换或进行技术处理,坏道就会越来越多,并会造成频繁死机和数据丢失。最好的处理方式是更换磁盘,但在临时的情况下,应及时屏蔽坏道部分的扇区,不要触动它们。badblocks就是一个很好的检查坏道位置的工具。 + +### 语法 + +``` +badblock(选项)(参数) +``` + +### 选项 + +``` +-b<区块大小>:指定磁盘的区块大小,单位为字节; +-o<输出文件>:将检查的结果写入指定的输出文件; +-s:在检查时显示进度; +-v:执行时显示详细的信息; +-w:在检查时,执行写入测试。 +``` + +### 参数 + +* 磁盘装置:指定要检查的磁盘装置; +* 磁盘区块数:指定磁盘装置的区块总数; +* 启始区块:指定要从哪个区块开始检查。 + +### 实例 + +badblocks以4096的一个block,每一个block检查16次,将结果输出到“hda-badblocks-list”文件里。 + +``` +badblocks -b 4096 -c 16 /dev/hda1 -o hda-badblocks-list +``` + +hda-badblocks-list是个文本文件,内容如下: + +``` +cat hda-badblocks-list +51249 +51250 +51251 +51253 +51254 +…… +61245 +…… +``` + +可以针对可疑的区块多做几次操作。下面,badblocks以4096字节为一个“block”,每一个“block”检查1次, 将结果输出到“hda-badblocks-list.1”文件中,由第51000 block开始,到63000 block结束。 + +``` +badblocks -b 4096 -c 1 /dev/hda1 -o hda-badblocks-list.1 63000 51000 +``` + +这次花费的时间比较短,硬盘在指定的情况下在很短的时间就产生“嘎嘎嘎嘎”的响声。由于检查条件的不同,其输出的结果也不完全是相同的。重复几次同样的操作,因条件多少都有些不同,所以结果也有所不同。进行多次操作后,直到产生最后的hda-badblock-list.final文件。 + +### 其他 + +**1、fsck使用badblocks的信息** + +badblocks只会在日志文件中标记出坏道的信息,但若希望在检测磁盘时也能跳过这些坏块不检测,可以使用fsck的-l参数: + +``` +fsck.ext3 -l /tmp/hda-badblock-list.final /dev/hda1 +``` + +**2、在创建文件系统前检测坏道** + +badblocks可以随e2fsck和mke2fs的-c删除一起运行(对ext3文件系统也一样),在创建文件系统前就先检测坏道信息: + +``` +mkfs.ext3 -c /dev/hda1 +``` + +代码表示使用-c在创建文件系统前检查坏道的硬盘。 + +这个操作已经很清楚地告知我们可以采用`mkfs.ext3 -c`选项用`read-only`方式检查硬盘。这个命令会在格式化硬盘时检查硬盘,并标出错误的硬盘“block”。用这个方法格式化硬盘,需要有相当大的耐心,因为命令运行后,会一个个用读的方式检查硬盘。 \ No newline at end of file diff --git a/command/bind.md b/command/bind.md new file mode 100644 index 00000000000..5ff86cddc87 --- /dev/null +++ b/command/bind.md @@ -0,0 +1,56 @@ +bind +=== + +显示或设置键盘按键与其相关的功能 + +## 补充说明 + +**bind命** 用于显示和设置命令行的键盘序列绑定功能。通过这一命令,可以提高命令行中操作效率。您可以利用bind命令了解有哪些按键组合与其功能,也可以自行指定要用哪些按键组合。 + +### 语法 + +``` +bind(选项) +``` + +### 选项 + +``` +-d:显示按键配置的内容; +-f<按键配置文件>:载入指定的按键配置文件; +-l:列出所有的功能; +-m<按键配置>:指定按键配置; +-q<功能>:显示指定功能的按键; +-v:列出目前的按键配置与其功能。 +``` + +### 实例 + +``` +bind -x '"\C-l":ls -l' #直接按 CTRL+L 就列出目录 +``` + +其中keyseq可以使用`showkey -a`命令来获取: + +``` +[root@localhost ~]# showkey -a + +Press any keys - Ctrl-D will terminate this program + +^[[A 27 0033 0x1b 上 + 91 0133 0x5b + 65 0101 0x41 +^[[B 27 0033 0x1b 下 + 91 0133 0x5b + 66 0102 0x42 +^[[D 27 0033 0x1b 左 + 91 0133 0x5b + 68 0104 0x44 +^[[C 27 0033 0x1b 右 + 91 0133 0x5b + 67 0103 0x43 + 32 0040 0x20 +^M 13 0015 0x0d 字母M +^C 3 0003 0x03 Ctrl-C +^D 4 0004 0x04 Ctrl-D 退出 +``` \ No newline at end of file diff --git a/command/bunzip2.md b/command/bunzip2.md new file mode 100644 index 00000000000..2c4e132e11e --- /dev/null +++ b/command/bunzip2.md @@ -0,0 +1,38 @@ +bunzip2 +=== + +创一个bz2文件压缩包 + +## 补充说明 + +**bunzip2命** 解压缩由bzip2指令创建的”.bz2"压缩包。对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2其实是bzip2的符号链接,即软链接,因此压缩解压都可以通过bzip2实现。 + +### 语法 + +``` +bunzip2(选项)(参数) +``` + +### 选项 + +``` +-f或--force:解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件; +-k或——keep:在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数; +-s或——small:降低程序执行时,内存的使用量; +-v或——verbose:解压缩文件时,显示详细的信息; +-l,--license,-V或——version:显示版本信息。 +``` + +### 参数 + +.bz2压缩包:指定需要解压缩的.bz2压缩包。 + +### 实例 + +将`/opt`目录下的etc.zip、var.zip和backup.zip进行压缩,设置压缩率为最高,同时在压缩完毕后不删除原始文件,显示压缩过程的详细信息。 + +``` +bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip +``` + +压缩完毕后,在`/opt`下就会生成相应的etc.zip.bz2、var.zip.bz2和backup.zip.bz2文件。 \ No newline at end of file diff --git a/command/bzip2.md b/command/bzip2.md new file mode 100644 index 00000000000..b279b491745 --- /dev/null +++ b/command/bzip2.md @@ -0,0 +1,125 @@ +bzip2 +=== + +将文件压缩成bz2格式 + +## 补充说明 + +**bzip2命** 用于创建和管理(包括解压缩)“.bz2”格式的压缩包。我们遇见Linux压缩打包方法有很多种,以下讲解了Linux压缩打包方法中的Linux bzip2命令的多种范例供大家查看,相信大家看完后会有很多收获。 + +### 语法 + +``` +bzip2(选项)(参数) +``` + +### 选项 + +``` +-c或——stdout:将压缩与解压缩的结果送到标准输出; +-d或——decompress:执行解压缩; +-f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数; +-h或——help:在线帮助; +-k或——keep:bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数; +-s或——small:降低程序执行时内存的使用量; +-t或——test:测试.bz2压缩文件的完整性; +-v或——verbose:压缩或解压缩文件时,显示详细的信息; +-z或——compress:强制执行压缩; +-V或——version:显示版本信息; +--repetitive-best:若文件中有重复出现的资料时,可利用此参数提高压缩效果; +--repetitive-fast:若文件中有重复出现的资料时,可利用此参数加快执行效果。 +``` + +### 参数 + +文件:指定要压缩的文件。 + +### 实例 + +**压缩指定文件filename:** + +``` +bzip2 filename +或 +bzip2 -z filename +``` + +这里,压缩的时候不会输出,会将原来的文件filename给删除,替换成filename.bz2.如果以前有filename.bz2则不会替换并提示错误(如果想要替换则指定-f选项,例如`bzip2 -f filename`;如果filename是目录则也提醒错误不做任何操作;如果filename已经是压过的了有bz2后缀就提醒一下,不再压缩,没有bz2后缀会再次压缩。 + +**解压指定的文件filename.bz2:** + +``` +bzip2 -d filename.bz2 +或 +bunzip2 filename.bz2 +``` + +这里,解压的时候没标准输出,会将原来的文件filename.bz2给替换成filename。如果以前有filename则不会替换并提示错误(如果想要替换则指定`-f`选项,例如`bzip2 -df filename.bz2`。 + +**压缩解压的时候将结果也输出:** + +``` +$bzip2 -v filename +``` + +输入之后,输出如下: + +``` +filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out. +``` + +这里,加上`-v`选项就会输出了,只用压缩举例了,解压的时候同理`bzip2 -dv filename.bz2`不再举例了。 + +**模拟解压实际并不解压:** + +``` +bzip2 -tv filename.bz2 +``` + +输入之后,输出如下: + +``` +filename.bz2: ok +``` + +这里,`-t`指定要进行模拟解压,不实际生成结果,也就是说类似检查文件,当然就算目录下面有filename也不会有什么错误输出了,因为它根本不会真的解压文件。为了在屏幕上输出,这里加上`-v`选项了,如果是真的解压`bzip2 -dv filename.bz2`则输出的是把"ok"替换成了"done"。 + +**压缩解压的时候,除了生成结果文件,将原来的文件也保存:** + +``` +bzip2 -k filename +``` + +这里,加上`-k`就保存原始的文件了,否则原始文件会被结果文件替代。只用压缩举例了,解压的时候同理`$bzip2 -dk filename.bz2`不再举例了。 + +**解压到标准输出:** + +``` +bzip2 -dc filename.bz2 +``` + +输入之后,输出如下: + +``` +hahahhaahahha +``` + +这里,使用`-c`指定到标准输出,输出的是文件filename的内容,不会将filename.bz2删除。 + +**压缩到标准输出:** + +``` +bzip2 -c filename +bzip2: I won't write compressed data to a terminal. +bzip2: For help, type: `bzip2 --help'. +``` + +这里,使用`-c`指定压缩到标准输出不删除原有文件,不同的是,压缩后的文件无法输出到标准输出。 + +**使用bzip2的时候将所有后面的看作文件(即使文件名以'-'开头):** + +``` +bzip2 -- -myfilename +``` + +这里主要是为了防止文件名中`-`产生以为是选项的歧义。 \ No newline at end of file diff --git a/command/bzip2recover.md b/command/bzip2recover.md new file mode 100644 index 00000000000..602a339cb4b --- /dev/null +++ b/command/bzip2recover.md @@ -0,0 +1,20 @@ +bzip2recover +=== + +恢复被破坏的.bz2压缩包中的文件 + +## 补充说明 + +**bzip2recover命** 可用于恢复被破坏的“.bz2”压缩包中的文件。 + +bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便解压缩正常的区块。通常只适用在压缩文件很大的情况。 + +### 语法 + +``` +bzip2recover(参数) +``` + +### 参数 + +文件:指定要恢复数据的.bz2压缩包。 \ No newline at end of file diff --git a/command/cd.md b/command/cd.md new file mode 100644 index 00000000000..a5f9648a468 --- /dev/null +++ b/command/cd.md @@ -0,0 +1,33 @@ +cd +=== + +切换用户当前工作目录 + +## 补充说明 + +**cd命** 用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,`~`也表示为home directory的意思,`.`则是表示目前所在的目录,`..`则表示目前目录位置的上一层目录。 + +### 语法 + +``` +cd (选项) (参数) +``` + +### 选项 + +``` +-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录 +-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。 +- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。 +``` + +### 实例 + +``` +cd 进入用户主目录; +cd ~ 进入用户主目录; +cd - 返回进入此目录之前所在的目录; +cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思); +cd ../.. 返回上两级目录; +cd !$ 把上个命令的参数作为cd参数使用。 +``` \ No newline at end of file diff --git a/command/chattr.md b/command/chattr.md new file mode 100644 index 00000000000..fc66c84184b --- /dev/null +++ b/command/chattr.md @@ -0,0 +1,52 @@ +chattr +=== + +用来改变文件属性 + +## 补充说明 + +**chattr命** 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式: + +``` +a:让文件或目录仅供附加用途; +b:不更新文件或目录的最后存取时间; +c:将文件或目录压缩后存放; +d:将文件或目录排除在倾倒操作之外; +i:不得任意更动文件或目录; +s:保密性删除文件或目录; +S:即时更新文件或目录; +u:预防意外删除。 +``` + +### 语法 + +``` +chattr(选项) +``` + +### 选项 + +``` +-R:递归处理,将指令目录下的所有文件及子目录一并处理; +-v<版本编号>:设置文件或目录版本; +-V:显示指令执行过程; ++<属性>:开启文件或目录的该项属性; +-<属性>:关闭文件或目录的该项属性; +=<属性>:指定文件或目录的该项属性。 +``` + +### 实例 + +用chattr命令防止系统中某个关键文件被修改: + +``` +chattr +i /etc/fstab +``` + +然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。 + +让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作: + +``` +chattr +a /data1/user_act.log +``` \ No newline at end of file diff --git a/command/chfn.md b/command/chfn.md new file mode 100644 index 00000000000..692b310bc82 --- /dev/null +++ b/command/chfn.md @@ -0,0 +1,64 @@ +chfn +=== + +用来改变finger命令显示的信息 + +## 补充说明 + +**chfn命** 用来改变finger命令显示的信息。这些信息都存放在/etc目录里的passwd文件里。若不指定任何选项,则chfn命令会进入问答式界面。 + +### 语法 + +``` +chfn(选项)(参数) +``` + +### 选项 + +``` +-f<真实姓名>或--full-name<真实姓名>:设置真实姓名; +-h<家中电话>或--home-phone<家中电话>:设置家中的电话号码; +-o<办公地址>或--office<办公地址>:设置办公室的地址; +-p<办公电话>或--office-phone<办公电话>:设置办公室的电话号码; +-u或--help:在线帮助; +-v或-version:显示版本信息。 +``` + +### 参数 + +用户名:指定要改变finger信息的用户名。 + +### 实例 + +范例1,改变finger信息: + +``` +[root@localhost Desktop]# chfn +Changing finger information for root. +Name [root]: jack +Office []: hn +Office Phone []: 888888 +Home Phone []: 9999999 + +Finger information changed. +``` + +范例2,改变账号真实姓名: + +``` +[root@localhost Desktop]# chfn -f jack +Changing finger information for root. +Finger information changed. +``` + +范例3: + +``` +shell>> chfn +Changing finger information for user +Password: [del] +Name[]:linuxde ### 提供 finger 时的资料 +Office[]:NCCU +Office Phone[]: [del] +Home Phone[]: [del] +``` \ No newline at end of file diff --git a/command/chgrp.md b/command/chgrp.md new file mode 100644 index 00000000000..adc8c9a606c --- /dev/null +++ b/command/chgrp.md @@ -0,0 +1,40 @@ +chgrp +=== + +用来变更文件或目录的所属群组 + +## 补充说明 + +**chgrp命** 用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。 + +在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。 + +### 语法 + +``` +chgrp(选项)(参数) +``` + +### 选项 + +``` +-c或——changes:效果类似“-v”参数,但仅回报更改的部分; +-f或--quiet或——silent:不显示错误信息; +-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件; +-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理; +-v或——verbose:显示指令执行过程; +--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; +``` + +### 参数 + +* 组:指定新工作名称; +* 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。 + +### 实例 + +将`/usr/meng`及其子目录下的所有文件的用户组改为mengxin + +``` +chgrp -R mengxin /usr/meng +``` \ No newline at end of file diff --git a/command/chkconfig.md b/command/chkconfig.md new file mode 100644 index 00000000000..25dd8f88c71 --- /dev/null +++ b/command/chkconfig.md @@ -0,0 +1,65 @@ +chkconfig +=== + +检查或设置系统的各种服务 + +## 补充说明 + +**chkconfig命** 检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。 + +### 语法 + +``` +chkconfig(选项) +``` + +### 选项 + +``` +--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据; +--del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据; +--level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。 +``` + +等级代号列表: + +* 等级0表示:表示关机 +* 等级1表示:单用户模式 +* 等级2表示:无网络连接的多用户命令行模式 +* 等级3表示:有网络连接的多用户命令行模式 +* 等级4表示:不可用 +* 等级5表示:带图形界面的多用户模式 +* 等级6表示:重新启动 + +需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。 + +运行级文件: + +每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用`-`代替运行级。第二行对服务进行描述,可以用`\`跨行注释。 + +例如random.init包含三行: + +``` +# chkconfig: 2345 20 80 +# description: Saves and restores system entropy pool for \ +# higher quality random number generation. +``` + +### 实例 + +``` +chkconfig --list #列出所有的系统服务。 +chkconfig --add httpd #增加httpd服务。 +chkconfig --del httpd #删除httpd服务。 +chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。 +chkconfig --list #列出系统所有的服务启动情况。 +chkconfig --list mysqld #列出mysqld服务设置情况。 +chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。 +chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级。 +``` + +如何增加一个服务: + +1. 服务脚本必须存放在`/etc/ini.d/`目录下; +2. `chkconfig --add servicename`在chkconfig工具服务列表中增加此服务,此时服务会被在`/etc/rc.d/rcN.d`中赋予K/S入口了; +3. `chkconfig --level 35 mysqld on`修改服务的默认启动等级。 \ No newline at end of file diff --git a/command/chmod.md b/command/chmod.md new file mode 100644 index 00000000000..e82e7bbac55 --- /dev/null +++ b/command/chmod.md @@ -0,0 +1,72 @@ +chmod +=== + +用来变更文件或目录的权限 + +## 补充说明 + +**chmod命** 用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。 + +权限范围的表示法如下: + +`u` User,即文件或目录的拥有者; +`g` Group,即文件或目录的所属群组; +`o` Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围; +`a` All,即全部的用户,包含拥有者,所属群组以及其他用户; +`r` 读取权限,数字代号为“4”; +`w` 写入权限,数字代号为“2”; +`x` 执行或切换权限,数字代号为“1”; +`-` 不具任何权限,数字代号为“0”; +`s` 特殊功能说明:变更文件或目录的权限。 + +### 语法 + +``` +chmod(选项)(参数) +``` + +### 选项 + +``` +-c或——changes:效果类似“-v”参数,但仅回报更改的部分; +-f或--quiet或——silent:不显示错误信息; +-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理; +-v或——verbose:显示指令执行过程; +--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; +<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置; +<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置; +<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置; +``` + +### 参数 + +权限模式:指定文件的权限模式; +文件:要改变权限的文件。 + +### 知识扩展和实例 + +Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在`/etc/passwd`文件中。每个人的密码则是记录在`/etc/shadow`文件下。 此外,所有的组群名称记录在`/etc/group`內! + +linux文件的用户权限的分析图 + +!linux文件的用户权限的分析图 + +例:rwx rw- r-- + +r=读取属性  //值=4 +w=写入属性  //值=2 +x=执行属性  //值=1 + +``` +chmod u+x,g+w f01  //为文件f01设置自己可以执行,组员可以写入的权限 +chmod u=rwx,g=rw,o=r f01 +chmod 764 f01 +chmod a+x f01  //对文件f01的u,g,o都设置可执行属性 +``` + +文件的属主和属组属性设置 + +``` +chown user:market f01  //把文件f01给uesr,添加到market组 +ll -d f1 查看目录f1的属性 +``` \ No newline at end of file diff --git a/command/chown.md b/command/chown.md new file mode 100644 index 00000000000..519429e74bc --- /dev/null +++ b/command/chown.md @@ -0,0 +1,43 @@ +chown +=== + +用来变更文件或目录的拥有者或所属群组 + +## 补充说明 + +**chown命** 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。 + +只有文件主和超级用户才可以便用该命令。 + +### 语法 + +``` +chown(选项)(参数) +``` + +### 选项 + +``` +-c或——changes:效果类似“-v”参数,但仅回报更改的部分; +-f或--quite或——silent:不显示错误信息; +-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件; +-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理; +-v或——version:显示指令执行过程; +--dereference:效果和“-h”参数相同; +--help:在线帮助; +--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同; +--version:显示版本信息。 +``` + +### 参数 + +用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者; +文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。 + +### 实例 + +将目录`/usr/meng`及其下面的所有文件、子目录的文件主改成 liu: + +``` +chown -R liu /usr/meng +``` \ No newline at end of file diff --git a/command/chroot.md b/command/chroot.md new file mode 100644 index 00000000000..4022581417e --- /dev/null +++ b/command/chroot.md @@ -0,0 +1,119 @@ +chroot +=== + +把根目录换成指定的目的目录 + +## 补充说明 + +**chroot命** 用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以`/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为`/`位置。 + +在经过 chroot 命令之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个: + +**增加了系统的安全性,限制了用户的权力:** + +在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。 + +**建立一个与原系统隔离的系统目录结构,方便用户的开发:** + +使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。 + +**切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:** + +chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。 + +### 语法 + +``` +chroot(选项)(参数) +``` + +### 选项 + +``` +--help:在线帮助; +--version:显示版本信息。 +``` + +### 参数 + +* 目录:指定新的根目录; +* 指令:指定要执行的指令。 + +### 实例 + +**将target作为根目录(运行其中的`/bin/sh`):** + +``` +chroot target /bin/sh +``` + +这里,target是busybox安装好的路径,类似一个文件系统包含了许多工具。这样,将会进入一个shell界面,这个shell以target为根。运行exit退出该shell又返回原来的本机环境了,也可以使用Ctrl+D。 + +注意: + +* 根用户才行 +* 如果直接chroot target默认寻找target的/bin/bash.这会以target作为根目录 + +将target作为根目录(运行其中的`/bin/ls`): + +``` +chroot target /bin/ls +``` + +这里,target是busybox安装好的路径,类似一个文件系统包含了许多工具。这样运行的是target中的ls(不是本机的`/bin/ls`),然后返回立即本机的目录环境。 + +注意,自己在本地编译一个程序生成a.out之后,拷进`target/bin/`中这样运行却不行,因为它包含了动态连接的库,需要用ldd查看a.out需要那些动态库,将这些库拷贝到新根的对应路径下才能执行。 + +**用chroot运行自己编译的一个程序:** + +准备chroot的根目录: + +``` +mkdir newRoot +``` + +编译自己的程序: + +``` +gcc main.c +``` + +这里main.c生成a.out,功能是输出hello。 + +查看程序需要的库: + +``` +ldd a.out +``` + +输入之后,输出如下: + +``` +linux-gate.so.1 = > (0xb8034000) +libc.so.6 = > /lib/tls/i686/cmov/libc.so.6 (0xb7eab000) +/lib/ld-linux.so.2 (0xb801a000) +``` + +将程序需要的库和程序拷贝到新根目录下: + +``` +cp a.out newRoot +mkdir newRoot/lib +cp /lib/tls/i686/cmov/libc.so.6 newRoot/lib +cp /lib/ld-linux.so.2 newRoot/lib +``` + +这里newRoot内容将如下: + +``` +a.out lib/ +``` + +使用chroot运行自己的程序: + +``` +su +chroot newRoot /a.out +``` + +这样就能够正确运行a.out了,因为a.out使用到了其他的动态连接库,所以需要将库拷贝到newRoot中,如果没有其他库那么直接拷贝a.out就能运行。例如静态编译后的busybox,其安装目录中的`/bin/busybox`就没有依赖其他库。 \ No newline at end of file diff --git a/command/chsh.md b/command/chsh.md new file mode 100644 index 00000000000..b41485a7174 --- /dev/null +++ b/command/chsh.md @@ -0,0 +1,90 @@ +chsh +=== + +用来更换登录系统时使用的shell + +## 补充说明 + +**chsh命** 用来更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。 + +### 语法 + +``` +chsh(选项)(参数) +``` + +### 选项 + +``` +-s或--shell:更改系统预设的shell环境。; +-l或--list-shells:列出目前系统可用的shell清单; +-u或--help:在线帮助; +-v或-version:显示版本信息。 +``` + +### 参数 + +用户名:要改变默认shell的用户。 + +### 实例 + +**查看系统安装了哪些shell的两种方法:** + +第一种: + +``` +[rocrocket@localhost ~]$ chsh -l +/bin/sh +/bin/bash +/sbin/nologin +/bin/zsh +``` + +第二种: + +``` +rocrocket@localhost ~ /etc/shells +/bin/sh +/bin/bash +/sbin/nologin +/bin/zsh +``` + +其实`chsh -l`也是来查看这个文件。 + +**查看当前正在使用的shell:** + +``` +rocrocket@localhost ~ $SHELL +/bin/bash +``` + +注意SHELL一定要是大写。可以看到,目前使用的shell是`/bin/bash` + +**把我的shell改成zsh:** + +``` +[rocrocket@localhost ~]$ chsh -s /bin/zsh +Changing shell for rocrocket. +Password: +Shell changed. +[rocrocket@localhost ~]$ +``` + +使用chsh加选项`-s`就可以修改登录的shell了!你会发现你现在执行`echo $SHELL`后仍然输出为`/bin/bash`,这是因为你需要重启你的shell才完全投入到zsh怀抱中去。`chsh -s`其实修改的就是`/etc/passwd`文件里和你的用户名相对应的那一行。现在来查看下: + +``` +rocrocket@localhost ~ ^rocrocket +rocrocket:x:500:500:rocrocket,China:/rocrocket/PSB/home:/bin/zsh +``` + +你可以发现输出内容的最后部分已经变成了`/bin/zsh`了,下次重启的时候,linux就会读取这一命令来启动shell了! + +**把shell修改回/bin/bash:** + +``` +[rocrocket@localhost ~]$ chsh -s /bin/bash +Changing shell for rocrocket. +Password: +Shell changed. +``` \ No newline at end of file diff --git a/command/cksum.md b/command/cksum.md new file mode 100644 index 00000000000..e9e9b8d2189 --- /dev/null +++ b/command/cksum.md @@ -0,0 +1,47 @@ +cksum +=== + +检查文件的CRC是否正确 + +## 补充说明 + +**cksum命** 是检查文件的CRC是否正确,确保文件从一个系统传输到另一个系统的过程中不被损坏。这种方法要求校验和在源系统中被计算出来,在目的系统中又被计算一次,两个数字进行比较,如果校验和相等,则该文件被认为是正确传输了。 + +注意:CRC是指一种排错检查方法,即循环冗余校验法。 + +指定文件交由cksum命令进行校验后,会返回校验结果供用户核对文件是否正确无误。若不指定任何文件名称或是所给予的文件名为"-",则cksum命令会从标准输入设备中读取数据。 + +### 语法 + +``` +cksum(选项)(参数) +``` + +### 选项 + +``` +--help:在线帮助; +--version:显示版本信息。 +``` + +### 参数 + +文件:指定要计算校验的版本信息。 + +### 实例 + +使用cksum命令计算文件"testfile1"的完整性,输入如下命令: + +``` +cksum testfile1 #对指定文件进行CRC校验 +``` + +以上命令执行后,将输出校验码等相关的信息,具体输出信息如下所示: + +``` +1263453430 78 testfile1 #输出信息 +``` + +上面的输出信息中,"1263453430"表示校验码,"78"表示字节数。 + +注意:如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。 \ No newline at end of file diff --git a/command/cmp.md b/command/cmp.md new file mode 100644 index 00000000000..5a5e336b093 --- /dev/null +++ b/command/cmp.md @@ -0,0 +1,60 @@ +cmp +=== + +比较两个文件是否有差异 + +## 补充说明 + +**cmp命** 用来比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有差异,预设会标示出第一个不通之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为“-”,则cmp指令会从标准输入设备读取数据。 + +### 语法 + +``` +cmp(选项)(参数) +``` + +### 选项 + +``` +-c或--print-chars:除了标明差异处的十进制字码之外,一并显示该字符所对应字符; +-i<字符数目>或--ignore-initial=<字符数目>:指定一个数目; +-l或——verbose:标示出所有不一样的地方; +-s或--quiet或——silent:不显示错误信息; +-v或——version:显示版本信息; +--help:在线帮助。 +``` + +### 参数 + +目录:比较两个文件的差异。 + +### 实例 + +使用cmp命令比较文件"testfile"和文件"testfile1"两个文件,则输入下面的命令: + +``` +cmp testfile testfile1 #比较两个指定的文件 +``` + +在上述指令执行之前,使用cat命令查看两个指定的文件内容,如下所示: + +``` +cat testfile #查看文件内容 +Absncn 50 #显示文件“testfile” +Asldssja 60 +Jslkadjls 85 + +cat testfile1 #查看文件内容 +Absncn 50 #显示文件“testfile1” +AsldssjE 62 +Jslkadjls 85 +``` + +然后,再执行cmp命令,并返回比较结果,具体如下所示: + +``` +cmp testfile testfile1 #比较两个文件 +testfile testfile1 #有差异:第8字节,第2行 +``` + +注意:在比较结果中,只能够显示第一比较结果。 \ No newline at end of file diff --git a/command/col.md b/command/col.md new file mode 100644 index 00000000000..e3bdf61ac42 --- /dev/null +++ b/command/col.md @@ -0,0 +1,23 @@ +col +=== + +过滤控制字符 + +## 补充说明 + +**col命** 是一个标准输入文本过滤器,它从标注输入设备读取文本内容,并把内容显示到标注输出设备。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符`>`和`>>`,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效滤除这些控制字符。 + +### 语法 + +``` +col(选项) +``` + +### 选项 + +``` +-b:过滤掉所有的控制字符,包括RLF和HRLF; +-f:滤掉RLF字符,但允许将HRLF字符呈现出来; +-x:以多个空格字符来表示跳格字符; +-l<缓冲区列数>:预设的内存缓冲区有128列,用户可以自行指定缓冲区的大小。 +``` \ No newline at end of file diff --git a/command/colrm.md b/command/colrm.md new file mode 100644 index 00000000000..2963a4e7f01 --- /dev/null +++ b/command/colrm.md @@ -0,0 +1,19 @@ +colrm +=== + +删除文件中的指定列 + +## 补充说明 + +**colrm命** 用于删除文件中的指定列。colrm命令从标准输入设备读取书记,转而输出到标准输出设备。如果不加任何参数,则colrm命令不会过滤任何一行。 + +### 语法 + +``` +colrm(参数) +``` + +### 参数 + +* 起始列号:指定要删除的指定列; +* 结尾列号:指定要删除的结尾列。 \ No newline at end of file diff --git a/command/comm.md b/command/comm.md new file mode 100644 index 00000000000..f2a990ed4a3 --- /dev/null +++ b/command/comm.md @@ -0,0 +1,126 @@ +comm +=== + +两个文件之间的比较 + +## 补充说明 + +**comm命** 可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集、求差、以及差集操作。 + +* 交集:打印出两个文件所共有的行。 +* 求差:打印出指定文件所包含的且不相同的行。 +* 差集:打印出包含在一个文件中,但不包含在其他指定文件中的行。 + +### 语法 + +``` +comm(选项)(参数) +``` + +### 选项 + +``` +-1:不显示在第一个文件出现的内容; +-2:不显示在第二个文件中出现的内容; +-3:不显示同时在两个文件中都出现的内容。 +``` + +### 参数 + +* 文件1:指定要比较的第一个有序文件; +* 文件2:指定要比较的第二个有序文件。 + +### 实例 + +``` +root@localhost text aaa.txt +aaa +bbb +ccc +ddd +eee +111 +222 +``` + +``` +[root@localhost text]# cat bbb.txt +bbb +ccc +aaa +hhh +ttt +jjj +``` + +``` +[root@localhost text]# comm aaa.txt bbb.txt +aaa + bbb + ccc + aaa +ddd +eee +111 +222 + hhh + ttt + jjj +第一列 第二列 第三列 +``` + +输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列是以制表符(\t)作为定界符。 + +**交集** + +打印两个文件的交集,需要删除第一列和第二列: + +``` +[root@localhost text]# comm aaa.txt bbb.txt -1 -2 +bbb +ccc +``` + +**求差** + +打印出两个文件中不相同的行,需要删除第三列: + +``` +root@localhost text 's/^\t//' +aaa +aaa +ddd +eee +111 +222 +hhh +ttt +jjj +``` + +sed 's/^\t//' 是将制表符(\t)删除,以便把两列合并成一列。 + +**差集** + +通过删除不需要的列,可以得到aaa.txt和bbb.txt的差集: + +aaa.txt的差集 + +``` +[root@localhost text]# comm aaa.txt bbb.txt -2 -3 +aaa +ddd +eee +111 +222 +``` + +bbb.txt的差集 + +``` +[root@localhost text]# comm aaa.txt bbb.txt -1 -3 +aaa +hhh +ttt +jjj +``` \ No newline at end of file diff --git a/command/compress.md b/command/compress.md new file mode 100644 index 00000000000..aa23b6c2c85 --- /dev/null +++ b/command/compress.md @@ -0,0 +1,65 @@ +compress +=== + +使用Lempress-Ziv编码压缩数据文件 + +## 补充说明 + +**compress命** 使用“Lempress-Ziv”编码压缩数据文件。compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出".Z"的扩展名。当要解压缩时,可执行uncompress指令。事实上uncompress是指向compress的符号连接,因此不论是压缩或解压缩,都可通过compress指令单独完成。 + +### 语法 + +``` +compress(选项)(参数) +``` + +### 选项 + +``` +-f:不提示用户,强制覆盖掉目标文件; +-c:将结果送到标准输出,无文件被改变; +-r:递归的操作方式; +-b<压缩效率>:压缩效率是一个介于9~16的数值,预设值为"16",指定愈大的数值,压缩效率就愈高; +-d:对文件进行解压缩而非压缩; +-v:显示指令执行过程; +-V:显示指令版本及程序预设值。 +``` + +### 参数 + +文件:指定要压缩的文件列表。 + +### 实例 + +将`/etc/man.config`复到`/tmp` ,并加以压缩 + +``` +root@localhost ~ /tmp +root@localhost tmp /etc/man.config . +[root@localhost tmp]# compress man.config +root@localhost tmp -l +``` + +``` +-rw-r--r-- 1 root root 2605 Jul 27 11:43 man.config.Z +``` + +将刚刚的压缩档解开 + +``` +[root@localhost tmp]# compress -d man.config.Z +``` + +将 man.config 压缩成另外一个文件来备份 + +``` +[root@localhost tmp]# compress -c man.config > man.config.back.Z +[root@localhost tmp]# ll man.config* +``` + +``` +-rw-r--r-- 1 root root 4506 Jul 27 11:43 man.config +-rw-r--r-- 1 root root 2605 Jul 27 11:46 man.config.back.Z +``` + +这个`-c`的选项比较有趣!会将压缩过程的资料输出到屏幕上,而不是写入成为file.Z文件。所以,我们可以透过资料流重导向的方法将资料输出成为另一个档名。 \ No newline at end of file diff --git a/command/cpio.md b/command/cpio.md new file mode 100644 index 00000000000..d7d7760cea4 --- /dev/null +++ b/command/cpio.md @@ -0,0 +1,93 @@ +cpio +=== + +用来建立、还原备份档的工具程序 + +## 补充说明 + +**cpio命** 主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。 + +### 语法 + +``` +cpio(选项) +``` + +### 选项 + +``` +-0或--null:接受新增列控制字符,通常配合find指令的“-print0”参数使用; +-a或--rest-access-time:重新设置文件的存取时间; +-A或--append:附加到已存在的备份文档中,且这个备份文档必须存放在磁盘上,而不能放置于磁带机里; +-b或--awap:此参数的效果和同时指定“-ss”参数相同; +-B:将输入/输出的区块大小改成5210Bytes; +-c:使用旧ASCII备份格式; +-C<区块大小>或--io-size=<区块大小>:设置输入/输出的区块大小,单位是Byte; +-d或--make-directories:如有需要cpio会自行建立目录; +-E<范本文件>或--pattern-file=<范本文件>:指定范本文件,其内含有一个或多个范本样式,让cpio解开符合范本条件的文件,格式为每列一个范本样式; +-f或--nonmatching:让cpio解开所有不符合范本条件的文件; +-F<备份档>或--file=<备份档>:指定备份档的名称,用来取代标准输入或输出,也能借此通过网络使用另一台主机的保存设备存取备份档; +-H<备份格式>:指定备份时欲使用的文件格式; +-i或--extract:执行copy-in模式,还原备份档; +-l<备份档>:指定备份档的名称,用来取代标准输入,也能借此通过网络使用另一台主机的保存设备读取备份档; +-k:此参数将忽略不予处理,仅负责解决cpio不同版本间的兼容性问题; +-l或--link:以硬连接的方式取代复制文件,可在copy-pass模式下运用; +-L或--dereference:不建立符号连接,直接复制该连接所指向的原始文件; +-m或preserve-modification-time:不去更改文件的更改时间; +-M<回传信息>或--message=<回传信息>:设置更换保存媒体的信息; +-n或--numeric-uid-gid:使用“-tv”参数列出备份档的内容时,若再加上参数“-n”,则会以用户识别和群组识别码替代拥有者和群组名称列出文件清单; +-o或--create:执行copy-out模式,建立备份档; +-O<备份档>:指定备份档的名称,用来取代标准输出,也能借此通过网络使用另一台主机的保存设备存放备份档; +-p或--pass-through:执行copy-pass模式,略过备份步骤,直接将文件复制到目的目录; +-r或--rename:当有文件名称需要更改时,采用互动模式; +-R<拥有者><:/.><所属群组>或----owner<拥有者><:/.><所属群组> 在copy-in模式还原备份档,或copy-pass模式复制文件时,可指定这些备份,复制的文件的拥有者与所属群组; +-s或--swap-bytes:交换每队字节的内容; +-S或--swap-halfwords:交换每半个字节的内容; +-t或--list:将输入的内容呈现出来; +-u或--unconditional:置换所有文件,不论日期时间的新旧与否,皆不予询问而直接覆盖; +-v或--verbose:详细显示指令的执行过程; +-V或--dot:执行指令时。在每个文件的执行程序前面加上“.”号; +--block-size=<区块大小>:设置输入/输出的区块大小,假如设置数值为5,则区块大小为2500,若设置成10,则区块大小为5120,以此类推; +--force-local:强制将备份档存放在本地主机; +--help:在线帮助; +--no-absolute-filenames:使用相对路径建立文件名称; +--no-preserve-owner:不保留文件的拥有者,谁解开了备份档,那些文件就归谁所有; +-only-verify-crc:当备份档采用CRC备份格式时,可使用这项参数检查备份档内的每个文件是否正确无误; +--quiet:不显示复制了多少区块; +--sparse:倘若一个文件内含有大量的连续0字节,则将此文件存在稀疏文件; +--version:显示版本信息。 +``` + +### 实例 + +**将`/etc`下的所有普通文件都备份到`/opt/etc.cpio`,使用以下命令:** + +``` +find /etc –type f | cpio –ocvB >/opt/etc.cpio +``` + +**将系统上所有资料备份到磁带机内,使用以下命令:** + +``` +find / -print | cpio -covB > /dev/st0 +``` + +这里的`/dev/st0`是磁带的设备名,代表SCSI磁带机。 + +**查看上例磁带机上备份的文件,使用以下命令:** + +``` +cpio -icdvt < /dev/st0 > /tmp/st_content +``` + +有时可能因为备份的文件过多,一个屏幕无法显示完毕,此时我们利用下面命令,让磁带机的文件信息输出到文件。 + +**将示例1中的备份包还原到相应的位置,如果有相同文件进行覆盖,使用以下命令:** + +``` +cpio –icduv < /opt/etc.cpio +``` + +注意,cpio恢复的路径,如果cpio在打包备份的时候用的是绝对路径,那么在恢复的时候会自动恢复到这些绝对路径下,本例就会将备份文件全部还原到/etc路径下对应的目录中。同理,如果在打包备份用的是相对路径,还原时也将恢复到相对路径下。 + +通过上面的示例,可以看出,cpio无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别读取,而find命令的输出刚好做到了这点,因此,cpio命令一般和find命令配合使用。其实,上面的示例我们已经看到了它们的组合用法。 \ No newline at end of file diff --git a/command/crontab.md b/command/crontab.md new file mode 100644 index 00000000000..232b09d0630 --- /dev/null +++ b/command/crontab.md @@ -0,0 +1,204 @@ +crontab +=== + +提交和管理用户的需要周期性执行的任务 + +## 补充说明 + +**crontab命** 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 + +### 语法 + +``` +crontab(选项)(参数) +``` + +### 选项 + +``` +-e:编辑该用户的计时器设置; +-l:列出该用户的计时器设置; +-r:删除该用户的计时器设置; +-u<用户名称>:指定要设定计时器的用户名称。 +``` + +### 参数 + +crontab文件:指定包含待执行任务的crontab文件。 + +### 知识扩展 + +Linux下的任务调度分为两类:**系统任务调度**和**用户任务调度**。 + +**系统任务调度:**系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在`/etc`目录下有一个crontab文件,这个就是系统任务调度的配置文件。 + +`/etc/crontab`文件包括下面几行: + +``` +SHELL=/bin/bash +PATH=/sbin:/bin:/usr/sbin:/usr/bin +MAILTO=""HOME=/ + +# run-parts +51 * * * * root run-parts /etc/cron.hourly +24 7 * * * root run-parts /etc/cron.daily +22 4 * * 0 root run-parts /etc/cron.weekly +42 4 1 * * root run-parts /etc/cron.monthly +``` + +前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。 + +**用户任务调度:**用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在`/var/spool/cron`目录中。其文件名与用户名一致,使用者权限文件如下: + +``` +/etc/cron.deny 该文件中所列用户不允许使用crontab命令 +/etc/cron.allow 该文件中所列用户允许使用crontab命令 +/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名 +``` + +crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: + +``` +minute hour day month week command 顺序:分 时 日 月 周 +``` + +其中: + +* minute: 表示分钟,可以是从0到59之间的任何整数。 +* hour:表示小时,可以是从0到23之间的任何整数。 +* day:表示日期,可以是从1到31之间的任何整数。 +* month:表示月份,可以是从1到12之间的任何整数。 +* week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 +* command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 + +在以上各个字段中,还可以使用以下特殊字符: + +* 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 +* 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” +* 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” +* 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。 + +**crond服务** + +``` +/sbin/service crond start //启动服务 +/sbin/service crond stop //关闭服务 +/sbin/service crond restart //重启服务 +/sbin/service crond reload //重新载入配置 +``` + +查看crontab服务状态: + +``` +service crond status +``` + +手动启动crontab服务: + +``` +service crond start +``` + +查看crontab服务是否已设置为开机启动,执行命令: + +``` +ntsysv +``` + +加入开机自动启动: + +``` +chkconfig –level 35 crond on +``` + +### 实例 + +每1分钟执行一次command + +``` +* * * * * command +``` + +每小时的第3和第15分钟执行 + +``` +3,15 * * * * command +``` + +在上午8点到11点的第3和第15分钟执行 + +``` +3,15 8-11 * * * command +``` + +每隔两天的上午8点到11点的第3和第15分钟执行 + +``` +3,15 8-11 */2 * * command +``` + +每个星期一的上午8点到11点的第3和第15分钟执行 + +``` +3,15 8-11 * * 1 command +``` + +每晚的21:30重启smb  + +``` +30 21 * * * /etc/init.d/smb restart +``` + +每月1、10、22日的4 : 45重启smb  + +``` +45 4 1,10,22 * * /etc/init.d/smb restart +``` + +每周六、周日的1:10重启smb + +``` +10 1 * * 6,0 /etc/init.d/smb restart +``` + +每天18 : 00至23 : 00之间每隔30分钟重启smb  + +``` +0,30 18-23 * * * /etc/init.d/smb restart +``` + +每星期六的晚上11:00 pm重启smb  + +``` +0 23 * * 6 /etc/init.d/smb restart +``` + +每一小时重启smb  + +``` +* */1 * * * /etc/init.d/smb restart +``` + +晚上11点到早上7点之间,每隔一小时重启smb + +``` +* 23-7/1 * * * /etc/init.d/smb restart +``` + +每月的4号与每周一到周三的11点重启smb  + +``` +0 11 4 * mon-wed /etc/init.d/smb restart +``` + +一月一号的4点重启smb + +``` +0 4 1 jan * /etc/init.d/smb restart +``` + +每小时执行`/etc/cron.hourly`目录内的脚本 + +``` +01 * * * * root run-parts /etc/cron.hourly +``` \ No newline at end of file diff --git a/command/csplit.md b/command/csplit.md new file mode 100644 index 00000000000..b6cb92fbd9f --- /dev/null +++ b/command/csplit.md @@ -0,0 +1,73 @@ +csplit +=== + +将一个大文件分割成小的碎片文件 + +## 补充说明 + +**csplit命** 用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件。碎片文件的命名类似“xx00”,“xx01”。csplit命令是split的一个变体,split只能够根据文件大小或行数来分割,但csplit能够根据文件本身特点来分割文件。 + +### 语法 + +``` +csplit(选项)(参数) +``` + +### 选项 + +``` +-b<输出格式>或--suffix-format=<输出格式>:预设的输出格式其文件名称为xx00,xx01等,用户可以通过改变<输出格式>来改变输出的文件名; +-f<输出字首字符串>或--prefix=<输出字首字符串>:预设的输出字首字符串其文件名为xx00,xx01等,如果制定输出字首字符串为“hello”,则输出的文件名称会变成hello00,hello、01...... +-k或--keep-files:保留文件,就算发生错误或中断执行,与不能删除已经输出保存的文件; +-n<输出文件名位数>或--digits=<输出文件名位数>:预设的输出文件名位数其文件名称为xx00,xx01......如果用户指定输出文件名位数为“3”,则输出的文件名称会变成xx000,xx001等; +-q或-s或--quiet或——silent:不显示指令执行过程; +-z或--elide-empty-files:删除长度为0 Byte文件。 +``` + +### 参数 + +* 文件:指定要分割的原文件; +* 模式:指定要分割文件时的匹配模式。 + +### 实例 + +示例测试文件 server.log + +``` +cat server.log +SERVER-1 +[con] 10.10.10.1 suc +[con] 10.10.10.2 fai +[dis] 10.10.10.3 pen +[con] 10.10.10.4 suc +SERVER-2 +[con] 10.10.10.5 suc +[con] 10.10.10.6 fai +[dis] 10.10.10.7 pen +[con] 10.10.10.8 suc +SERVER-3 +[con] 10.10.10.9 suc +[con] 10.10.10.10 fai +[dis] 10.10.10.11 pen +[con] 10.10.10.12 suc +``` + +需要将server.log分割成server1.log、server2.log、server3.log,这些文件的内容分别取自原文件中不同的SERVER部分: + +``` +root@localhost split server00.log +root@localhost split +server01.log server02.log server03.log server.log +``` + +**命令详细说明:** + +``` +/[正则表达式]/ #匹配文本样式,比如/SERVER/,从第一行到包含SERVER的匹配行。 +{*} #表示根据匹配重复执行分割,直到文件尾停止,使用{整数}的形式指定分割执行的次数。 +-s #静默模式,不打印其他信息。 +-n #指定分割后的文件名后缀的数字个数。比如01、02、03等。 +-f #指定分割后的文件名前缀。 +-b #指定后缀格式。比如%02d.log,类似于C语言中的printf参数格式。 +rm server00.log #是删除第一个文件,因为分割后的的第一个文件没有内容,匹配的单词就位于文件的第一行中。 +``` \ No newline at end of file diff --git a/command/cut.md b/command/cut.md new file mode 100644 index 00000000000..5388d163d6b --- /dev/null +++ b/command/cut.md @@ -0,0 +1,159 @@ +cut +=== + +连接文件并打印到标准输出设备上 + +## 补充说明 + +**cut命** 用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。 + +说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如`cut fl f2 > f3`将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。 + +当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。 + +### 语法 + +``` +cut(选项)(参数) +``` + +### 选项 + +``` +-b:仅显示行中指定直接范围的内容; +-c:仅显示行中指定范围的字符; +-d:指定字段的分隔符,默认的字段分隔符为“TAB”; +-f:显示指定字段的内容; +-n:与“-b”选项连用,不分割多字节字符; +--complement:补足被选择的字节、字符或字段; +--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; +--help:显示指令的帮助信息; +--version:显示指令的版本信息。 +``` + +### 参数 + +文件:指定要进行内容过滤的文件。 + +### 实例 + +例如有一个学生报表信息,包含No、Name、Mark、Percent: + +``` +root@localhost text test.txt +No Name Mark Percent +01 tom 69 91 +02 jack 71 87 +03 alex 68 98 + +``` + +使用 **-f** 选项提取指定字段: + +``` +[root@localhost text]# cut -f 1 test.txt +No +01 +02 +03 +``` + +``` +[root@localhost text]# cut -f2,3 test.txt +Name Mark +tom 69 +jack 71 +alex 68 + +``` + +**--complement** 选项提取指定字段之外的列(打印除了第二列之外的列): + +``` +[root@localhost text]# cut -f2 --complement test.txt +No Mark Percent +01 69 91 +02 71 87 +03 68 98 + +``` + +使用 **-d** 选项指定字段分隔符: + +``` +[root@localhost text]# cat test2.txt +No;Name;Mark;Percent +01;tom;69;91 +02;jack;71;87 +03;alex;68;98 +``` + +``` +[root@localhost text]# cut -f2 -d";" test2.txt +Name +tom +jack +alex + +``` + +### 指定字段的字符或者字节范围 + +cut命令可以将一串字符作为列来显示,字符字段的记法: + +* **N-**:从第N个字节、字符、字段到结尾; +* **N-M**:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段; +* **-M**:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。 + +上面是记法,结合下面选项将摸个范围的字节、字符指定为字段: + +* **-b** 表示字节; +* **-c** 表示字符; +* **-f** 表示定义字段。 + +**示例** + +``` +[root@localhost text]# cat test.txt +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +``` + +打印第1个到第3个字符: + +``` +[root@localhost text]# cut -c1-3 test.txt +abc +abc +abc +abc +abc + +``` + +打印前2个字符: + +``` +[root@localhost text]# cut -c-2 test.txt +ab +ab +ab +ab +ab + +``` + +打印从第5个字符开始到结尾: + +``` +[root@localhost text]# cut -c5- test.txt +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +efghijklmnopqrstuvwxyz +``` \ No newline at end of file diff --git a/command/date.md b/command/date.md new file mode 100644 index 00000000000..f9b3acd0422 --- /dev/null +++ b/command/date.md @@ -0,0 +1,147 @@ +date +=== + +显示或设置系统时间与日期 + +## 补充说明 + +**date命** 是显示或设置系统时间与日期。 + +很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。 + +### 语法 + +``` +date(选项)(参数) +``` + +### 选项 + +``` +-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号; +-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号; +-u:显示GMT; +--help:在线帮助; +--version:显示版本信息。 +``` + +### 参数 + +<+时间日期格式>:指定显示时使用的日期时间格式。 + +### 日期格式字符串列表 + +``` +%H 小时,24小时制(00~23) +%I 小时,12小时制(01~12) +%k 小时,24小时制(0~23) +%l 小时,12小时制(1~12) +%M 分钟(00~59) +%p 显示出AM或PM +%r 显示时间,12小时制(hh:mm:ss %p) +%s 从1970年1月1日00:00:00到目前经历的秒数 +%S 显示秒(00~59) +%T 显示时间,24小时制(hh:mm:ss) +%X 显示时间的格式(%H:%M:%S) +%Z 显示时区,日期域(CST) +%a 星期的简称(Sun~Sat) +%A 星期的全称(Sunday~Saturday) +%h,%b 月的简称(Jan~Dec) +%B 月的全称(January~December) +%c 日期和时间(Tue Nov 20 14:12:58 2012) +%d 一个月的第几天(01~31) +%x,%D 日期(mm/dd/yy) +%j 一年的第几天(001~366) +%m 月份(01~12) +%w 一个星期的第几天(0代表星期天) +%W 一年的第几个星期(00~53,星期一为第一天) +%y 年的最后两个数字(1999则是99) +``` + +### 实例 + +格式化输出: + +``` +date +"%Y-%m-%d" +2009-12-07 +``` + +输出昨天日期: + +``` +date -d "1 day ago" +"%Y-%m-%d" +2012-11-19 +``` + +2秒后输出: + +``` +date -d "2 second" +"%Y-%m-%d %H:%M.%S" +2012-11-20 14:21.31 +``` + +传说中的 1234567890 秒: + +``` +date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S" +2009-02-13 23:02:30 +``` + +普通转格式: + +``` +date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S" +2009/12/12 00:00.00 +``` + +apache格式转换: + +``` +date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S" +2009-12-05 00:00.37 +``` + +格式转换后时间游走: + +``` +date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S" +2007-12-05 00:00.37 +``` + +加减操作: + +``` +date +%Y%m%d //显示前天年月日 +date -d "+1 day" +%Y%m%d //显示前一天的日期 +date -d "-1 day" +%Y%m%d //显示后一天的日期 +date -d "-1 month" +%Y%m%d //显示上一月的日期 +date -d "+1 month" +%Y%m%d //显示下一月的日期 +date -d "-1 year" +%Y%m%d //显示前一年的日期 +date -d "+1 year" +%Y%m%d //显示下一年的日期 +``` + +设定时间: + +``` +date -s //设置当前时间,只有root权限才能设置,其他只能查看 +date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00 +date -s 01:01:01 //设置具体时间,不会对日期做更改 +date -s "01:01:01 2012-05-23" //这样可以设置全部时间 +date -s "01:01:01 20120523" //这样可以设置全部时间 +date -s "2012-05-23 01:01:01" //这样可以设置全部时间 +date -s "20120523 01:01:01" //这样可以设置全部时间 +``` + +有时需要检查一组命令花费的时间,举例: + +``` +#!/bin/bash + +start=$(date +%s) +nmap man.linuxde.net &> /dev/null + +end=$(date +%s) +difference=$(( end - start )) +echo $difference seconds. +``` \ No newline at end of file diff --git a/command/dd.md b/command/dd.md new file mode 100644 index 00000000000..bc4a32d5919 --- /dev/null +++ b/command/dd.md @@ -0,0 +1,124 @@ +dd +=== + +复制文件并对原文件的内容进行转换和格式化处理 + +## 补充说明 + +**dd命** 用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。 + +建议在有需要的时候使用dd 对物理磁盘操作,如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。另外,使用dd对磁盘操作时,最好使用块设备文件。 + +### 语法 + +``` +dd(选项) +``` + +### 选项 + +``` +bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数; +cbs=<字节数>:转换时,每次只转换指定的字节数; +conv=<关键字>:指定文件转换的方式; +count=<区块数>:仅读取指定的区块数; +ibs=<字节数>:每次读取的字节数; +obs=<字节数>:每次输出的字节数; +of=<文件>:输出到文件; +seek=<区块数>:一开始输出时,跳过指定的区块数; +skip=<区块数>:一开始读取时,跳过指定的区块数; +--help:帮助; +--version:显示版本信息。 +``` + +### 实例 + +``` +[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1 +1+0 records in +1+0 records out +1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s + +root@localhost text -sh sun.txt +1.1M sun.txt +``` + +该命令创建了一个1M大小的文件sun.txt,其中参数解释: + +* **if** 代表输入文件。如果不指定if,默认就会从stdin中读取输入。 +* **of** 代表输出文件。如果不指定of,默认就会将stdout作为默认输出。 +* **bs** 代表字节为单位的块大小。 +* **count** 代表被复制的块数。 +* **/dev/zero** 是一个字符设备,会不断返回0值字节(\0)。 + +块大小可以使用的计量单位表 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
单元大小代码
字节(1B)c
字节(2B)w
块(512B)b
千字节(1024B)k
兆字节(1024KB)M
吉字节(1024MB)G
+ +以上命令可以看出dd命令来测试内存操作速度: + +``` +1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s +``` \ No newline at end of file diff --git a/command/declare.md b/command/declare.md new file mode 100644 index 00000000000..3e018b0d38f --- /dev/null +++ b/command/declare.md @@ -0,0 +1,48 @@ +declare +=== + +声明或显示shell变量 + +## 补充说明 + +**declare命** 用于声明和显示已存在的shell变量。当不提供变量名参数时显示所有shell变量。declare命令若不带任何参数选项,则会显示所有shell变量及其值。declare的功能与typeset命令的功能是相同的。 + +### 语法 + +``` +declare(选项)(参数) +``` + +### 选项 + +``` ++/-:"-"可用来指定变量的属性,"+"则是取消变量所设的属性; +-f:仅显示函数; +r:将变量设置为只读; +x:指定的变量会成为环境变量,可供shell以外的程序来使用; +i:[设置值]可以是数值,字符串或运算式。 +``` + +### 参数 + +shell变量:声明shell变量,格式为“变量名=值”。 + +### 实例 + +首先使用declare命令定义shell变量"test",并且将其值设置为"man.linuxde.net",输入如下命令: + +``` +declare test='man.linuxde.net' #定义并初始化shell变量 +``` + +上面的命令执行后,再使用echo命令将该shell变量值输出,输入如下命令: + +``` +echo $test #输出shell变量的值 +``` + +上面的指令执行后,其输出的结果如下: + +``` +man.linuxde.net +``` \ No newline at end of file diff --git a/command/depmod.md b/command/depmod.md new file mode 100644 index 00000000000..f9726259497 --- /dev/null +++ b/command/depmod.md @@ -0,0 +1,61 @@ +depmod +=== + +分析可载入模块的相依性 + +## 补充说明 + +**depmod命** 可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用。 + +### 语法 + +``` +depmod(选项) +``` + +### 选项 + +``` +-a或--all:分析所有可用的模块; +-d或debug:执行排错模式; +-e:输出无法参照的符号; +-i:不检查符号表的版本; +-m<文件>或system-map<文件>:使用指定的符号表文件; +-s或--system-log:在系统记录中记录错误; +-v或--verbose:执行时显示详细的信息; +-V或--version:显示版本信息; +--help:显示帮助。 +``` + +### 实例 + +``` +depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a +``` + +* `/home/windsome/EMMA3PF-KernelSource-20080626/install_pos`是我`make mod_install`后,所有模块的存放路径。 +* `./boot/System.map`是`make linux`后生成,我拷贝到此目录的。 +* `2.6.18_pro500-bcm91250-mips2_fp_be`是我build的linux的版本。 + +编译linux过程及执行depmod的例子: + +``` +genkernel.sh (at linux-2.6.18_pro500) +####### +export INSTALL_ROOT_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos" +export INSTALL_MOD_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos" +rm /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/lib -rf +rm /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/boot/* -rf +cd +make +make modules_install +cp vmlinux System.map /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/boot/ -p +cd /home/windsome/EMMA3PF-KernelSource-20080626/install_pos +depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a +``` + +其他用法: + +在linux桌面系统中,当你编译了新的驱动,为了能够用`modprobe ***`加载模块, 你需要先将模块拷贝到`/lib/modules /2.6.31-20-generic`目录下,然后运行`sudo depmod -a`将模块信息写入modules.dep、modules.dep.bin、modules.alias.bin、modules.alias和modules.pcimap文件中。 + +如,我编译了一个新的wifi驱动r8192se_pci.ko,将其拷贝到`/lib/modules/2.6.31-20-generic/wireless`下,然后到`/lib/modules/2.6.31-20-generic`运行`depmod -a`,之后可以在任意目录运行modprobe r8192se_pci。 \ No newline at end of file diff --git a/command/df.md b/command/df.md new file mode 100644 index 00000000000..ef0c08227b2 --- /dev/null +++ b/command/df.md @@ -0,0 +1,78 @@ +df +=== + +显示磁盘的相关信息 + +## 补充说明 + +**df命** 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 + +### 语法 + +``` +df(选项)(参数) +``` + +### 选项 + +``` +-a或--all:包含全部的文件系统; +--block-size=<区块大小>:以指定的区块大小来显示区块数目; +-h或--human-readable:以可读性较高的方式来显示信息; +-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; +-i或--inodes:显示inode的信息; +-k或--kilobytes:指定区块大小为1024字节; +-l或--local:仅显示本地端的文件系统; +-m或--megabytes:指定区块大小为1048576字节; +--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; +-P或--portability:使用POSIX的输出格式; +--sync:在取得磁盘使用信息前,先执行sync指令; +-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; +-T或--print-type:显示文件系统的类型; +-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; +--help:显示帮助; +--version:显示版本信息。 +``` + +### 参数 + +文件:指定文件系统上的文件。 + +### 实例 + +查看系统磁盘设备,默认是KB为单位: + +``` +[root@LinServ-1 ~]# df +文件系统 1K-块 已用 可用 已用% 挂载点 +/dev/sda2 146294492 28244432 110498708 21% / +/dev/sda1 1019208 62360 904240 7% /boot +tmpfs 1032204 0 1032204 0% /dev/shm +/dev/sdb1 2884284108 218826068 2518944764 8% /data1 +``` + +使用`-h`选项以KB以上的单位来显示,可读性高: + +``` +[root@LinServ-1 ~]# df -h +文件系统 容量 已用 可用 已用% 挂载点 +/dev/sda2 140G 27G 106G 21% / +/dev/sda1 996M 61M 884M 7% /boot +tmpfs 1009M 0 1009M 0% /dev/shm +/dev/sdb1 2.7T 209G 2.4T 8% /data1 +``` + +查看全部文件系统: + +``` +[root@LinServ-1 ~]# df -a +文件系统 1K-块 已用 可用 已用% 挂载点 +/dev/sda2 146294492 28244432 110498708 21% / +proc 0 0 0 - /proc +sysfs 0 0 0 - /sys +devpts 0 0 0 - /dev/pts +/dev/sda1 1019208 62360 904240 7% /boot +tmpfs 1032204 0 1032204 0% /dev/shm +/dev/sdb1 2884284108 218826068 2518944764 8% /data1 +none 0 0 0 - /proc/sys/fs/binfmt_misc +``` \ No newline at end of file diff --git a/command/diff.md b/command/diff.md new file mode 100644 index 00000000000..6676dc5186e --- /dev/null +++ b/command/diff.md @@ -0,0 +1,78 @@ +diff +=== + +比较给定的两个文件的不同 + +## 补充说明 + +**diff命** 在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。 + +### 语法 + +``` +diff(选项)(参数) +``` + +### 选项 + +``` +-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用; +-a或——text:diff预设只会逐行比较文本文件; +-b或--ignore-space-change:不检查空格字符的不同; +-B或--ignore-blank-lines:不检查空白行; +-c:显示全部内容,并标出不同之处; +-C<行数>或--context<行数>:与执行“-c-<行数>”指令相同; +-d或——minimal:使用不同的演算法,以小的单位来做比较; +-D<巨集名称>或ifdef<巨集名称>:此参数的输出格式可用于前置处理器巨集; +-e或——ed:此参数的输出格式可用于ed的script文件; +-f或-forward-ed:输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处; +-H或--speed-large-files:比较大文件时,可加快速度; +-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若两个文件在某几行有所不同,而之际航同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异; +-i或--ignore-case:不检查大小写的不同; +-l或——paginate:将结果交由pr程序来分页; +-n或——rcs:将比较结果以RCS的格式来显示; +-N或--new-file:在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录,文件A 若使用-N参数,则diff会将文件A 与一个空白的文件比较; +-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称; +-P或--unidirectional-new-file:与-N类似,但只有当第二个目录包含了第一个目录所没有的文件时,才会将这个文件与空白的文件做比较; +-q或--brief:仅显示有无差异,不显示详细的信息; +-r或——recursive:比较子目录中的文件; +-s或--report-identical-files:若没有发现任何差异,仍然显示信息; +-S<文件>或--starting-file<文件>:在比较目录时,从指定的文件开始比较; +-t或--expand-tabs:在输出时,将tab字符展开; +-T或--initial-tab:在每行前面加上tab字符以便对齐; +-u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同; +-v或——version:显示版本信息; +-w或--ignore-all-space:忽略全部的空格字符; +-W<宽度>或--width<宽度>:在使用-y参数时,指定栏宽; +-x<文件名或目录>或--exclude<文件名或目录>:不比较选项中所指定的文件或目录; +-X<文件>或--exclude-from<文件>;您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件; +-y或--side-by-side:以并列的方式显示文件的异同之处; +--help:显示帮助; +--left-column:在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容; +--suppress-common-lines:在使用-y参数时,仅显示不同之处。 +``` + +### 参数 + +* 文件1:指定要比较的第一个文件; +* 文件2:指定要比较的第二个文件。 + +### 实例 + +将目录`/usr/li`下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令: + +``` +diff /usr/li test.txt #使用diff指令对文件进行比较 +``` + +上面的命令执行后,会将比较后的不同之处以指定的形式列出,如下所示: + +``` +n1 a n3,n4 +n1,n2 d n3 +n1,n2 c n3,n4 +``` + +其中,字母"a"、"d"、"c"分别表示添加、删除及修改操作。而"n1"、"n2"表示在文件1中的行号,"n3"、"n4"表示在文件2中的行号。 + +注意:以上说明指定了两个文件中不同处的行号及其相应的操作。在输出形式中,每一行后面将跟随受到影响的若干行。其中,以<开始的行属于文件1,以>开始的行属于文件2。 \ No newline at end of file diff --git a/command/diffstat.md b/command/diffstat.md new file mode 100644 index 00000000000..0e89e8bff4a --- /dev/null +++ b/command/diffstat.md @@ -0,0 +1,65 @@ +diffstat +=== + +显示diff命令输出信息的柱状图 + +## 补充说明 + +**diffstat命** 用来显示diff命令输出信息的柱状图,用以显示diff命令比较两个文件的不同统计信息。用户也可以直接使用`|`将diff命令所输出的结果直接送给diffstat命令进行统计结果的显示。使用该命令时,若所比较的文件或者子目录不在当前目录下,则应该使用其完整路径。 + +### 语法 + +``` +diffstat(选项)(参数) +``` + +### 选项 + +``` +-n<文件名长度>:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名; +-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包括了文件的路径; +-w:指定要输出时栏位的宽度; +-v:显示版本信息。 +``` + +### 参数 + +文件:指定保存有diff命令的输出信息文件。 + +### 实例 + +将目录"test1"和"test2"下的同名文件"testf.txt"使用diff命令进行比较。然后使用diffstat命令对结果进行统计显示,输入如下命令: + +``` +diff test1 test2 | diffstat #进行比较结果的统计显示 +``` + +注意:使用这条命令可以非常方便地实现统计显示的功能。 + +对于查看文件中的内容,用户可以通过cat命令进行查看即可,具体操作如下: + +``` +cat test1/testf.txt #查看test1/testf的内容 +abc +def +ghi +jkl +mno +pqr +stu +vws + +cat test2/testf.txt #查看test2/testf的内容 +abc +def +ghi +jkl +mno +``` + +从上面的文件内容显示,可以看到两个文件内容的差别。现在来运行刚才的命令,对文件比较的结果进行统计显示,结果如下: + +``` +testfile | 2 +- #统计信息输出显示 +1 file changed, 1 insertion(+), 1 deletion(-) +``` \ No newline at end of file diff --git a/command/dircolors.md b/command/dircolors.md new file mode 100644 index 00000000000..276425f6c6e --- /dev/null +++ b/command/dircolors.md @@ -0,0 +1,142 @@ +dircolors +=== + +置ls命令在显示目录或文件时所用的色彩 + +## 补充说明 + +**dircolors命** 设置ls命令在显示目录或文件时所用的色彩。dircolors可根据[色彩配置文件]来设置LS_COLORS环境变量或是显示设置LS_COLORS环境变量的命令。 + +### 语法 + +``` +dircolors(选项)(参数) +``` + +### 选项 + +``` +-b或--sh或--bourne-shell:显示在Boume shell中,将LS_COLORS设为目前预设置的shell指令; +-c或--csh或--c-shell:显示在C shell中,将LS_COLORS设为目前预设置的shell指令; +-p或--print-database:显示预设置; +-help:显示帮助; +-version:显示版本信息。 +``` + +### 参数 + +文件:指定用来设置颜色的文件。 + +### 实例 + +``` +[root@localhost ~]# dircolors -p +# Configuration file for dircolors, a utility to help you set the +# LS_COLORS environment variable used by GNU ls with the --color option. +# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the +# slackware version of dircolors) are recognized but ignored. +# Below, there should be one TERM entry for each termtype that is colorizable +TERM linux +TERM linux-c +TERM mach-color +TERM console +TERM con132x25 +TERM con132x30 +TERM con132x43 +TERM con132x60 +TERM con80x25 +TERM con80x28 +TERM con80x30 +TERM con80x43 +TERM con80x50 +TERM con80x60 +TERM cygwin +TERM dtterm +TERM putty +TERM xterm +TERM xterm-color +TERM xterm-debian +TERM rxvt +TERM screen +TERM screen-bce +TERM screen-w +TERM vt100 +TERM Eterm +# Below are the color init strings for the basic file types. A color init +# string consists of one or more of the following numeric codes: +# Attribute codes: +# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed +# Text color codes: +# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white +# Background color codes: +# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white +NORMAL 00 # global default, although everything should be something. +FILE 00 # normal file +DIR 01;34 # directory +LINK 01;36 # symbolic link. (If you set this to 'target' instead of a + # numerical value, the color is as for the file pointed to.) +FIFO 40;33 # pipe +SOCK 01;35 # socket +DOOR 01;35 # door +BLK 40;33;01 # block device driver +CHR 40;33;01 # character device driver +ORPHAN 40;31;01 # symlink to nonexistent file +SETUID 37;41 # file that is setuid (u+s) +SETGID 30;43 # file that is setgid (g+s) +STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w) +OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky +STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable +# This is for files with execute permission: +exec 01;32 +# List any file extensions like '.gz' or '.tar' that you would like ls +# to colorize below. Put the extension, a space, and the color init string. +# (and any comments you want to add after a '#') +# If you use DOS-style suffixes, you may want to uncomment the following: +#.cmd 01;32 # executables (bright green) +#.exe 01;32 +#.com 01;32 +#.btm 01;32 +#.bat 01;32 +.tar 01;31 # archives or compressed (bright red) +.tgz 01;31 +.arj 01;31 +.taz 01;31 +.lzh 01;31 +.zip 01;31 +.z 01;31 +.Z 01;31 +.gz 01;31 +.bz2 01;31 +.deb 01;31 +.rpm 01;31 +.jar 01;31 +# image formats +.jpg 01;35 +.jpeg 01;35 +.gif 01;35 +.bmp 01;35 +.pbm 01;35 +.pgm 01;35 +.ppm 01;35 +.tga 01;35 +.xbm 01;35 +.xpm 01;35 +.tif 01;35 +.tiff 01;35 +.png 01;35 +.mov 01;35 +.mpg 01;35 +.mpeg 01;35 +.avi 01;35 +.fli 01;35 +.gl 01;35 +.dl 01;35 +.xcf 01;35 +.xwd 01;35 +# audio formats +.flac 01;35 +.mp3 01;35 +.mpc 01;35 +.ogg 01;35 +.wav 01;35 +``` \ No newline at end of file diff --git a/command/dirs.md b/command/dirs.md new file mode 100644 index 00000000000..8ae9ecbfe26 --- /dev/null +++ b/command/dirs.md @@ -0,0 +1,37 @@ +dirs +=== + +显示目录记录 + +## 补充说明 + +**dirs命** 显示当前目录栈中的所有记录(不带参数的dirs命令显示当前目录栈中的记录)。dirs始终显示当然目录, 再是堆栈中的内容;即使目录堆栈为空, dirs命令仍然只显示当然目录。 + +### 语法 + +``` +dirs(选项)(参数) +``` + +### 选项 + +``` +-c:删除目录栈中的所有记录 +-l:以完整格式显示 +-p:一个目录一行的方式显示 +-v:每行一个目录来显示目录栈的内容,每个目录前加上的编号 ++N:显示从左到右的第n个目录,数字从0开始 +-N:显示从右到左的第n个日录,数字从0开始 + +``` + +### 参数 + +目录:显示目录堆叠中的记录。 + +### 实例 + +``` +[root@localhost etc]# dirs +/etc +``` \ No newline at end of file diff --git a/command/dmesg.md b/command/dmesg.md new file mode 100644 index 00000000000..d5ac3922e1b --- /dev/null +++ b/command/dmesg.md @@ -0,0 +1,38 @@ +dmesg +=== + +显示Linux系统启动信息 + +## 补充说明 + +**dmesg命** 被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在`/var/log/dmesg`文件里。 + +### 语法 + +``` +dmesg(选项) +``` + +### 选项 + +``` +-c:显示信息后,清除ring buffer中的内容; +-s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小; +-n:设置记录信息的层级。 +``` + +### 实例 + +``` +root@localhost ~ +Linux version 2.6.18-348.6.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue May 21 15:34:22 EDT 2013 +BIOS-provided physical RAM map: + BIOS-e820: 0000000000010000 - 000000000009f400 (usable) + BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved) + BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) + BIOS-e820: 0000000000100000 - 000000007f590000 (usable) + BIOS-e820: 000000007f590000 - 000000007f5e3000 (ACPI NVS) + BIOS-e820: 000000007f5e3000 - 000000007f5f0000 (ACPI data) + BIOS-e820: 000000007f5f0000 - 000000007f600000 (reserved) + BIOS-e820: 00000000e0000000 - 00000000e8000000 (reserved) +``` \ No newline at end of file diff --git a/command/du.md b/command/du.md new file mode 100644 index 00000000000..f0267996b27 --- /dev/null +++ b/command/du.md @@ -0,0 +1,99 @@ +du +=== + +显示每个文件和目录的磁盘使用空间 + +## 补充说明 + +**du命** 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。 + +### 语法 + +``` +du [选项][文件] +``` + +### 选项 + +``` +-a或-all 显示目录中个别文件的大小。 +-b或-bytes 显示目录或文件大小时,以byte为单位。 +-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 +-k或--kilobytes 以KB(1024bytes)为单位输出。 +-m或--megabytes 以MB为单位输出。 +-s或--summarize 仅显示总计,只列出最后加总的值。 +-h或--human-readable 以K,M,G为单位,提高信息的可读性。 +-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 +-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。 +-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。 +-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。 +--exclude=<目录或文件> 略过指定的目录或文件。 +-D或--dereference-args 显示指定符号链接的源文件大小。 +-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。 +-l或--count-links 重复计算硬件链接的文件。 +``` + +### 实例 + +显示目录或者文件所占空间: + +``` +root@localhost [test]# du +608 ./test6 +308 ./test4 +4 ./scf/lib +4 ./scf/service/deploy/product +4 ./scf/service/deploy/info +12 ./scf/service/deploy +16 ./scf/service +4 ./scf/doc +4 ./scf/bin +32 ./scf +8 ./test3 +1288 . +``` + +只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小 + +显示指定文件所占空间: + +``` +[root@localhost test]# du log2012.log +300 log2012.log +``` + +查看指定目录的所占空间: + +``` +[root@localhost test]# du scf +4 scf/lib +4 scf/service/deploy/product +4 scf/service/deploy/info +12 scf/service/deploy +16 scf/service +4 scf/doc +4 scf/bin +32 scf +``` + +显示多个文件所占空间: + +``` +root@localhost test.gz log31.tar.gz +4 log30.tar.gz +4 log31.tar.gz +``` + +只显示总和的大小: + +``` +[root@localhost test]# du -s +1288 . + +[root@localhost test]# du -s scf +32 scf + +root@localhost test .. +[root@localhost soft]# du -s test +1288 test +``` \ No newline at end of file diff --git a/command/dump.md b/command/dump.md new file mode 100644 index 00000000000..6720f691579 --- /dev/null +++ b/command/dump.md @@ -0,0 +1,52 @@ +dump +=== + +用于备份ext2或者ext3文件系统 + +## 补充说明 + +**dump命** 用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。 + +### 语法 + +``` +dump(选项)(参数) +``` + +### 选项 + +``` +-0123456789:备份的层级; +-b<区块大小>:指定区块的大小,单位为KB; +-B<区块数目>:指定备份卷册的区块数目; +-c:修改备份磁带预设的密度与容量; +-d<密度>:设置磁带的密度。单位为BPI; +-f<设备名称>:指定备份设备; +-h<层级>:当备份层级等于或大于指定的层级时,将不备份用户标示为“nodump”的文件; +-n:当备份工作需要管理员介入时,向所有“operator”群组中的使用者发出通知; +-s<磁带长度>:备份磁带的长度,单位为英尺; +-T<日期>:指定备份的时间与日期; +-u:备份完毕后,在/etc/dumpdates中记录备份的文件系统、层级、日期与时间等; +-w:与-W类似,但仅显示需要备份的文件; +-W:显示需要备份的文件及其最后一次备份的层级、时间与日期。 +``` + +### 参数 + +备份源:指定要备份的文件、目录或者文件系统。 + +### 实例 + +将`/home`目录所有内容备份到`/tmp/homeback.bak`文件中,备份层级为`0`并在`/etc/dumpdates`中记录相关信息: + +``` +‍dump -0u -f /tmp/homeback.bak /home +``` + +将`/home`目录所有内容备份到`/tmp/homeback.bak`文件中,备份层级为`1`(只备份上次使用层次`0`备份后发生过改变的数据)并在`/etc/dumpdates`中记录相关信息: + +``` +dump -1u -f /tmp/homeback.bak /home +``` + +通过dump命令的备份层级,可实现完整+增量备份、完整+差异备份,在配合crontab可以实现无人值守备份。 \ No newline at end of file diff --git a/command/e2fsck.md b/command/e2fsck.md new file mode 100644 index 00000000000..0e2351bfe85 --- /dev/null +++ b/command/e2fsck.md @@ -0,0 +1,62 @@ +e2fsck +=== + +用于检查第二扩展文件系统的完整性 + +## 补充说明 + +**e2fsck命** 用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误。 + +e2fsck执行后的传回值及代表意义如下: + +* 0 没有任何错误发生。 +* 1 文件系统发生错误,并且已经修正。 +* 2 文件系统发生错误,并且已经修正。 +* 4 文件系统发生错误,但没有修正。 +* 8 运作时发生错误。 +* 16 使用的语法发生错误。 +* 128 共享的函数库发生错误。 + +### 语法 + +``` +e2fsck(选项)(参数) +``` + +### 选项 + +``` +-a:不询问使用者意见,便自动修复文件系统; +-b:指定superblock,而不使用预设的superblock; +-B<区块大小>:指定区块的大小,单位为字节; +-c:一并执行badblocks,以标示损坏的区块; +-C:将检查过程的信息完整记录在file descriptor中,使得整个检查过程都能完整监控; +-d:显示排错信息; +-f:即使文件系统没有错误迹象,仍强制地检查正确性; +-F:执行前先清除设备的缓冲区; +-l<文件>:将文件中指定的区块加到损坏区块列表; +-L<文件>:先清除损坏区块列表,再将文件中指定的区块加到损坏区块列表。因此损坏区块列表的区块跟文件中指定的区块是一样的; +-n:以只读模式开启文件系统,并采取非互动方式执行,所有的问题对话均设置以"no"回答; +-p:不询问使用者意见,便自动修复文件系统; +-r:此参数只为了兼容性而存在,并无实际作用; +-s:如果文件系统的字节顺序不适当,就交换字节顺序,否则不做任何动作; +-S:不管文件系统的字节顺序,一律交换字节顺序; +-t:显示时间信息; +-v:执行时显示详细的信息; +-V:显示版本信息; +-y:采取非互动方式执行,所有的问题均设置以"yes"回答。 +``` + +### 参数 + +文件系统或者分区:指定文件系统或者分区所对应的设备文件名。 + +### 实例 + +检查`/dev/sda1`是否有问题,如发现问题便自动修复: + +``` +e2fsck -a -y /dev/sda1 +``` + +执行e2fsck或fsck前请先umount partition,否则有机会令档案系统毁损。如果需要对根目录`/`进行检查及修复,便需要进入singal user mode执行。 \ No newline at end of file diff --git a/command/ed.md b/command/ed.md new file mode 100644 index 00000000000..768b238068b --- /dev/null +++ b/command/ed.md @@ -0,0 +1,38 @@ +ed +=== + +单行纯文本编辑器 + +## 补充说明 + +**ed命** 是单行纯文本编辑器,它有命令模式(command mode)和输入模式(input mode)两种工作模式。ed命令支持多个内置命令,常见内置命令如下: + +``` +A:切换到输入模式,在文件的最后一行之后输入新的内容; +C:切换到输入模式,用输入的内容替换掉最后一行的内容; +i:切换到输入模式,在当前行之前加入一个新的空行来输入内容; +d:用于删除最后一行文本内容; +n:用于显示最后一行的行号和内容; +w:<文件名>:一给定的文件名保存当前正在编辑的文件; +q:退出ed编辑器。 +``` + +### 语法 + +``` +ed(选项)(参数) +``` + +### 选项 + +``` +-G或——traditional:提供兼容的功能; +-p<字符串>:指定ed在command mode的提示字符; +-s,-,--quiet或——silent:不执行开启文件时的检查功能; +--help:显示帮助; +--version:显示版本信息。 +``` + +### 参数 + +文件:待编辑的文件。 \ No newline at end of file diff --git a/command/edquota.md b/command/edquota.md new file mode 100644 index 00000000000..d861d9368b6 --- /dev/null +++ b/command/edquota.md @@ -0,0 +1,200 @@ +edquota +=== + +用于编辑指定用户或工作组磁盘配额 + +## 补充说明 + +**edquota命** 用于编辑指定用户或工作组磁盘配额。edquota预设会使用vi来编辑使用者或群组的quota设置。 + +### 语法 + +``` +edquota(选项)(参数) +``` + +### 选项 + +``` +-u:设置用户的quota,这是预设的参数; +-g:设置群组的quota; +-p<源用户名称>:将源用户的quota设置套用至其他用户或群组; +-t:设置宽限期限。 +``` + +### 参数 + +用户:指定要编辑磁盘配额限制的用户名或者工作组。 + +### 实例 + +**配置系统的磁盘配额支持** + +首先,磁盘配额是区域性的,我们可以决定哪块分区进行磁盘配额,哪块分区不用(自然也就不用配置了)。一般而言,作为一台web虚拟主机服务器,`/home`和`/www`(或者类似的)是供用户存放资源的分区,所以可以对这两个分区进行磁盘配额。假定我们需要对`/home`分区实现用户级的限制,而对`/www`进行每个组的用户配额。 + +第一步: + +``` +vi /etc/fstab +``` + +找到对应于`/home`和`/www`的行,例如: + +``` +/dev/sda5 /home ext2 defaults 1 2 +/dev/sda7 /www ext2 defaults 1 2 +``` + +在`/home`里实现用户级的磁盘配额,所以对sda5行的挂装选项域做如下修改: + +``` +/dev/sda5 /home ext2 defaults,usrquota 1 2 +``` + +注意,是usrquota哦。类似的,我们可以如下修改`/www`行: + +``` +/dev/sda7 /www ext2 defaults,grpquota 1 2 +``` + +如编辑根用户 + +改`/etc/fstab`文件中 + +``` +LABEL=/ / ext2 defaults,usrquota,grpquota 1 1 +``` + +说明:`/etc/fstab`文件的每一行由六个字段组成: + +* 第一个字段:文件系统(分区)的注释(类似卷标); +* 第二个字段:文件系统的装载点; +* 第三个字段:文件系统类型(磁盘配额只能在ext2文件系统上实现); +* 第四个字段:装载文件系统是使用的选项,如果只想实现基于用户的磁盘配额,就加入usrquota关键字,只想实现基于组的磁盘配额,就加入grpqouta关键字,如果两者都需要,就全写入,中间可以用逗号分隔。 +* 第五个字段:表明该文件系统(分区)是否为只读,如果是0就表示只读,1表示可以读写。 +* 第六个字段:表示系统启动执行fsck时检查的顺序。 + +注意:请特别注意这里的拼写,是usrquota和grpquota,不要写成userquota和groupquota。 + +进入单用户模式,用quotacheck生成.user或.group文件 + +quotacheck 你的目录 + +``` +example:quotacheck / ; quotacheck /home +``` + +如果单用户模式报错的话umount你的设备`/dev/hda*` + +再执行就ok了,重启动系统,如果一切正常的话,quota将开始正常工作。 + +**设置用户和组配额的分配量** + +对磁盘配额的限制一般是从一个用户占用磁盘大小和所有文件的数量两个方面来进行的。在具体操作之前,我们先了解一下磁盘配额的两个基本概念:软限制和硬限制。 + +* 软限制:一个用户在文件系统可拥有的最大磁盘空间和最多文件数量,在某个宽限期内可以暂时超过这个限制。 +* 硬限制:一个用户可拥有的磁盘空间或文件的绝对数量,绝对不允许超过这个限制。 + +**通过edquota直接编辑数据文件:** + +使用编辑配额命令edquota为用户配置定额,在重新启动系统之后,我们假设lanf是需要定额的系统帐户,可以使用如下命令来为用户分配磁盘配额: + +``` +edquota -u lanf +``` + +这个命令将启动默认文本编辑器(如vi或其他由$EDITOR 环境变量指定的编辑器),其内容如下所示: + +``` +Quotas for user lanf: +/dev/sda5:blocks in use:0,limits(soft = 0,hard = 0) +inodes in use:0,limits(soft = 0,hard = 0) +``` + +这表示lanf用户在`/dev/sda5`分区(该分区已经在usrquota的控制之下)中迄今使用了0个数据块(以K为单位),并且没有设限制(包括软限制soft和硬限制hard),同样,lanf在这个分区也没有任何文件和目录,并且也没有任何软硬限制。如果,我们想对用户进行磁盘容量的限制的话,只需要修改blocks行的limits部分就可以了,注意单位使用的是K。例如要为lanf分配100M磁盘的软限制,400M硬限制,可以使用如下的设置: + +``` +Quotas for user lanf: +/dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800) +inodes in use:0,limits(soft = 0,hard = 0) +``` + +同样的,要对文件目录的数量限制可以相应的修改inodes行。我们也可以同时对这两项都作出限制。只需要如下的修改Quotas for user lanf: + +``` +/dev/sda5:blocks in use:0,limits(soft = 102400,hard = 409800) +inodes in use:0,limits(soft = 12800,hard = 51200) +``` + +这表示除了相应的容量的限制外,还对文件/目录的数量做了12800个的软限制和51200个的硬限制。在保存了新的配置后,该用户的磁盘使用就不能超过硬限制。如果用户试图超过这个限制,该操作将被取消,然后得到一个错误信息。但是,如果每个用户都要这么麻烦的设置的话,那这种重复的体力劳动实在有点令人不寒而栗,而且也太浪费时间了。幸好edquota还有个-p参数(prototype)可以对已有的用户设置进行拷贝。例如,我们想对Jack、Tom、Chen三个用户使用和lanf一样的限额配置,可以使用如下的命令: + +``` +edquota -p lanf -u Jack Tom Chen +``` + +这样一来,这三个用户就被赋予了和lanf一样的磁盘配额。 + +对组的配额,除了edquota命令中对应`-u`选项的改为`-g`选项,例如下面对webterm1组的操作: + +``` +edquota -g webterm1 +``` + +实际上,以上的限制只是对用户设定的硬限制在起作用。如果需要使软限制也起作用的话,还需要对用户的软限制设定宽限期,缺省的软限制的宽限期是无穷,这可以使用edquota命令的`-t`选项来实现。运行下面的命令: + +``` +edquota -t +``` + +edquota将打开缺省编辑器显示如下内容: + +``` +time units may be:days,hours,minutes,or seconds +Grace period before enforcing soft limits for users: +/dev/sda5:block grace period:0 days,file grace period:0 days +``` + +可以使用天、小时、分、秒为单位来设定宽限期。例如,在下面这个例子中,磁盘空间限制的宽限期为两天,而文件数量限制的宽限期只有6个小时。 + +``` +Time units may be:days,hours,minutes,or seconds +Grace period before enforcing soft limits for users: +/dev/sda5:block grace period:2 days,file grace period:6 hours +``` + +**通过setquota工具加入:** + +比如加入用户bye2000的磁盘配额,执行以下命令: + +``` +setquota –u / 2000 2500 100 110 bye2000 +``` + +以下是setquota命令用法的简单描述: + +``` +setquota [ -u|-g ] 装载点 软块数 硬块数 软文件数 硬文件数 用户名/组名 +``` + +**查看用户磁盘使用情况** + +要查明某一个用户使用了多少磁盘空间,例如lanf,可以使用如下的命令: + +``` +quota -u lanf +``` + +显示: + +``` +Disk quotas for user lanf(uid 503): +Filesystem blocks quota limit grace file quota limit grace +/dev/sda5 3 102400 409800 1 12800 51200 +``` + +同样,可以使用`quota -g groupname`命令来参看某个组的磁盘使用情况。 + +注意: + +1. 如果该用户没有配置磁盘限额的话,输出显示`Disk quotas for user hujm (uid 503): none` +2. 如果不带任何参数运行quota的话,查看的是你自己的配额使用情况。 \ No newline at end of file diff --git a/command/egrep.md b/command/egrep.md new file mode 100644 index 00000000000..b5439f895ae --- /dev/null +++ b/command/egrep.md @@ -0,0 +1,41 @@ +egrep +=== + +在文件内查找指定的字符串 + +## 补充说明 + +**egrep命** 用于在文件内查找指定的字符串。egrep执行效果与`grep -E`相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。 + +### 语法 + +``` +egrep(选项)(查找模式)(文件名1,文件名2,……) +``` + +### 实例 + +显示文件中符合条件的字符。例如,查找当前目录下所有文件中包含字符串"Linux"的文件,可以使用如下命令: + +``` +egrep Linux * +``` + +结果如下所示: + +``` +#以下五行为 testfile 中包含Linux字符的行 +testfile:hello Linux! +testfile:Linux is a free Unix-type operating system. +testfile:This is a Linux testfile! +testfile:Linux +testfile:Linux + +#以下两行为testfile1中含Linux字符的行 +testfile1:helLinux! +testfile1:This a Linux testfile! + +#以下两行为 testfile_2 中包含Linux字符的行 +testfile_2:Linux is a free unix-type opterating system +testfile_2:Linux test +``` \ No newline at end of file diff --git a/command/eject.md b/command/eject.md new file mode 100644 index 00000000000..f7bbfb4efbb --- /dev/null +++ b/command/eject.md @@ -0,0 +1,38 @@ +eject +=== + +用来退出抽取式设备 + +## 补充说明 + +**eject命** 用来退出抽取式设备。若设备已挂入,则eject命令会先将该设备卸除再退出。 + +eject允许可移动介质(典型是cd-ROM、软盘、磁带、或者JAZ以及zip磁盘)在软件控制下弹出。该命令也可以控制一些多盘片CD-ROM控制器,控制一些设备支持的自动弹出功能,以及控制一些CD-ROM驱动器磁盘托盘的关闭。与name相应的设备将被弹出,name可以为设备文件或者其挂载点,也可以为完整路径或者省略前面的/dev或者/mnt设备文件名。如果没有指定name,缺省使用cdrom。 + +有四种不同的弹出的方法,具体要看设备是CD-ROM, SCSI设备,可移动软盘,还是磁带而定。默认的弹出会依次尝试所有四种方法,直到成功为止。如果设备当前是挂载上来的,那么在弹出前要先卸载。 + +### 语法 + +``` +eject(选项)(参数) +``` + +### 选项 + +``` +-a<开关>或--auto<开关>:控制设备的自动退出功能; +-c<光驱编号>或--changerslut<光驱编号> 选择光驱柜中的光驱; +-d或--default:显示预设的设备,而不是实际执行动作; +-f或--floppy:退出抽取式磁盘; +-h或--help:显示帮助; +-n或--noop:显示指定的设备; +-q或--tape:退出磁带; +-r或--cdrom:退出光盘; +-s或--scsi:以SCSI指令来退出设备; +-t或--trayclose:关闭光盘的托盘; +-v或--verbose:执行时,显示详细的说明。 +``` + +### 参数 + +设备名:指定弹出的设备名称。 \ No newline at end of file diff --git a/command/elm.md b/command/elm.md new file mode 100644 index 00000000000..7b4f3df2c4f --- /dev/null +++ b/command/elm.md @@ -0,0 +1,26 @@ +elm +=== + +纯文本邮件客户端程序 + +## 补充说明 + +**elm命** 是一个E-mail客户端管理程序,它提供了纯文本交互式全屏幕界面。 + +### 语法 + +``` +elm(选项) +``` + +### 选项 + +``` +-s<邮件主题>:指定新邮件的邮件主题; +-f<目录>:开启程序时,读取指定的目录; +-h:显示帮助; +-i<文件名>:将文件内容插入送出的邮件中; +-m:进入elm后,不显示指令说明; +-v:显示elm的版本信息; +-z:若收件信箱没有邮件,则不启动elm程序。 +``` \ No newline at end of file diff --git a/command/enable.md b/command/enable.md new file mode 100644 index 00000000000..b5f425ec648 --- /dev/null +++ b/command/enable.md @@ -0,0 +1,94 @@ +enable +=== + +启动或关闭shell内建命令 + +## 补充说明 + +**enable命** 用于临时关闭或者激活指定的shell内部命令。若要执行的文件名称与shell内建命令相同,可用`enable -n`来关闭shell内建命令。若不加`-n`选项,enable可重新启动关闭的命令。 + +linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令。因为了解了这一点,所以看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable命令我们就能做到了。 + +### 语法 + +``` +enable(选项)(参数) +``` + +### 选项 + +``` +-n:关闭指定的内部命令; +-a:显示所有激活的内部命令; +-f:从指定文件中读取内部命令。 +``` + +### 参数 + +内部命令:指定要关闭或激活的内部命令。 + +### 实例 + +使用enable命令显示所有激活的内部命令: + +``` +[root@localhost ~]# enable -a +enable . +enable : +enable [ +enable alias +enable bg +enable bind +enable break +enable builtin +enable caller +enable cd +enable command +enable compgen +enable complete +enable continue +enable declare +enable dirs +enable disown +enable echo +enable enable +enable eval +enable exec +enable exit +enable export +enable false +enable fc +enable fg +enable getopts +enable hash +enable help +enable history +enable jobs +enable kill +enable let +enable local +enable logout +enable popd +enable printf +enable pushd +enable pwd +enable read +enable readonly +enable return +enable set +enable shift +enable shopt +enable source +enable suspend +enable test +enable times +enable trap +enable true +enable type +enable typeset +enable ulimit +enable umask +enable unalias +enable unset +enable wait +``` \ No newline at end of file diff --git a/command/ex.md b/command/ex.md new file mode 100644 index 00000000000..3a79f593f09 --- /dev/null +++ b/command/ex.md @@ -0,0 +1,18 @@ +ex +=== + +启动vim编辑器的ex编辑模式 + +## 补充说明 + +在**ex**模式下启动vim文本编辑器。ex执行效果如同`vi -E`,适用于法及参数可参照vi指令,如要从Ex模式回到普通模式,则在vim中输入`:vi`或`:visual`即可。 + +### 语法 + +``` +ex(参数) +``` + +### 参数 + +文件:指定待编辑的文件。 \ No newline at end of file diff --git a/command/exit.md b/command/exit.md new file mode 100644 index 00000000000..f6a76fafe5d --- /dev/null +++ b/command/exit.md @@ -0,0 +1,58 @@ +exit +=== + +退出当前的shell + +## 补充说明 + +**exit命** 同于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。 + +### 语法 + +``` +exit(参数) +``` + +### 参数 + +返回值:指定shell返回值。 + +### 实例 + +退出当前shell: + +``` +[root@localhost ~]# exit +logout +``` + +在脚本中,进入脚本所在目录,否则退出: + +``` +cd $(dirname $0) || exit 1 +``` + +在脚本中,判断参数数量,不匹配就打印使用方式,退出: + +``` +if [ "$#" -ne "2" ]; then + echo "usage: $0 " + exit 2 +fi +``` + +在脚本中,退出时删除临时文件: + +``` +trap "rm -f tmpfile; echo Bye." EXIT +``` + +检查上一命令的退出码: + +``` +./mycommand.sh +EXCODE=$? +if [ "$EXCODE" == "0" ]; then + echo "O.K" +fi +``` \ No newline at end of file diff --git a/command/export.md b/command/export.md new file mode 100644 index 00000000000..87f9a49635d --- /dev/null +++ b/command/export.md @@ -0,0 +1,56 @@ +export +=== + +设置或显示系统环境变量 + +## 补充说明 + +**export命** 用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。 + +一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。 + +### 语法 + +``` +export(选项)(参数) +``` + +### 选项 + +``` +-f:代表[变量名称]中为函数名称; +-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中; +-p:列出所有的shell赋予程序的环境变量。 +``` + +### 参数 + +变量:指定要输出或者删除的环境变量。 + +### 实例 + +一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。查看已经存在的环境变量: + +``` +[root@localhost ~]# export +declare -x G_BROKEN_FILENAMES="1" +declare -x HISTSIZE="1000" +declare -x HOME="/root" +declare -x hostname="localhost" +declare -x INPUTRC="/etc/inputrc" +declare -x LANG="zh_CN.UTF-8" +declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" +declare -x logname="root" +declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:" +declare -x mail="/var/spool/mail/root" +declare -x OLDPWD +declare -x PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin" +declare -x pwd="/root" +declare -x SHELL="/bin/bash" +declare -x SHLVL="1" +declare -x SSH_CLIENT="192.168.2.111 2705 22" +declare -x SSH_CONNECTION="192.168.2.111 2705 192.168.2.2 22" +declare -x SSH_TTY="/dev/pts/0" +declare -x TERM="linux" +declare -x USER="root" +``` \ No newline at end of file diff --git a/command/fdisk.md b/command/fdisk.md new file mode 100644 index 00000000000..9d305884aef --- /dev/null +++ b/command/fdisk.md @@ -0,0 +1,315 @@ +fdisk +=== + +查看磁盘使用情况和磁盘分区 + +## 补充说明 + +**fdisk命** 用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。 + +### 语法 + +``` +fdisk(选项)(参数) +``` + +### 选项 + +``` +-b<分区大小>:指定每个分区的大小; +-l:列出指定的外围设备的分区表状况; +-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块; +-u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址; +-v:显示版本信息。 +``` + +### 参数 + +设备文件:指定要进行分区或者显示分区的硬盘设备文件。 + +### 实例 + +首先选择要进行操作的磁盘: + +``` +[root@localhost ~]# fdisk /dev/sdb +``` + +输入`m`列出可以执行的命令: + +``` +command (m for help): m +Command action + a toggle a bootable flag + b edit bsd disklabel + c toggle the dos compatibility flag + d delete a partition + l list known partition types + m print this menu + n add a new partition + o create a new empty DOS partition table + p print the partition table + q quit without saving changes + s create a new empty Sun disklabel + t change a partition's system id + u change display/entry units + v verify the partition table + w write table to disk and exit + x extra functionality (experts only) +``` + +输入`p`列出磁盘目前的分区情况: + +``` +Command (m for help): p + +Disk /dev/sdb: 3221 MB, 3221225472 bytes +255 heads, 63 sectors/track, 391 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/sdb1 1 1 8001 8e Linux LVM +/dev/sdb2 2 26 200812+ 83 Linux +``` + +输入`d`然后选择分区,删除现有分区: + +``` +Command (m for help): d +Partition number (1-4): 1 + +Command (m for help): d +Selected partition 2 +``` + +查看分区情况,确认分区已经删除: + +``` +Command (m for help): print + +Disk /dev/sdb: 3221 MB, 3221225472 bytes +255 heads, 63 sectors/track, 391 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System + +Command (m for help): +``` + +输入`n`建立新的磁盘分区,首先建立两个主磁盘分区: + +``` +Command (m for help): n +Command action + e extended + p primary partition (1-4) +p //建立主分区 +Partition number (1-4): 1 //分区号 +First cylinder (1-391, default 1): //分区起始位置 +Using default value 1 +last cylinder or +size or +sizeM or +sizeK (1-391, default 391): 100 //分区结束位置,单位为扇区 + +Command (m for help): n //再建立一个分区 +Command action + e extended + p primary partition (1-4) +p +Partition number (1-4): 2 //分区号为2 +First cylinder (101-391, default 101): +Using default value 101 +Last cylinder or +size or +sizeM or +sizeK (101-391, default 391): +200M //分区结束位置,单位为M +``` + +确认分区建立成功: + +``` +Command (m for help): p + +Disk /dev/sdb: 3221 MB, 3221225472 bytes +255 heads, 63 sectors/track, 391 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/sdb1 1 100 803218+ 83 Linux +/dev/sdb2 101 125 200812+ 83 Linux +``` + +再建立一个逻辑分区: + +``` +Command (m for help): n +Command action + e extended + p primary partition (1-4) +e //选择扩展分区 +Partition number (1-4): 3 +First cylinder (126-391, default 126): +Using default value 126 +Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +Using default value 391 +``` + +确认扩展分区建立成功: + +``` +Command (m for help): p + +Disk /dev/sdb: 3221 MB, 3221225472 bytes +255 heads, 63 sectors/track, 391 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/sdb1 1 100 803218+ 83 Linux +/dev/sdb2 101 125 200812+ 83 Linux +/dev/sdb3 126 391 2136645 5 Extended +``` + +在扩展分区上建立两个逻辑分区: + +``` +Command (m for help): n +Command action + l logical (5 or over) + p primary partition (1-4) +l //选择逻辑分区 +First cylinder (126-391, default 126): +Using default value 126 +Last cylinder or +size or +sizeM or +sizeK (126-391, default 391): +400M + +Command (m for help): n +Command action + l logical (5 or over) + p primary partition (1-4) +l +First cylinder (176-391, default 176): +Using default value 176 +Last cylinder or +size or +sizeM or +sizeK (176-391, default 391): +Using default value 391 +``` + +确认逻辑分区建立成功: + +``` +Command (m for help): p + +Disk /dev/sdb: 3221 MB, 3221225472 bytes +255 heads, 63 sectors/track, 391 cylinders +Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System +/dev/sdb1 1 100 803218+ 83 Linux +/dev/sdb2 101 125 200812+ 83 Linux +/dev/sdb3 126 391 2136645 5 Extended +/dev/sdb5 126 175 401593+ 83 Linux +/dev/sdb6 176 391 1734988+ 83 Linux + +Command (m for help): +``` + +从上面的结果我们可以看到,在硬盘sdb我们建立了2个主分区(sdb1,sdb2),1个扩展分区(sdb3),2个逻辑分区(sdb5,sdb6) + +注意:主分区和扩展分区的磁盘号位1-4,也就是说最多有4个主分区或者扩展分区,逻辑分区开始的磁盘号为5,因此在这个实验中试没有sdb4的。 + +最后对分区操作进行保存: + +``` +Command (m for help): w +The partition table has been altered! + +Calling ioctl() to re-read partition table. +Syncing disks. +``` + +建立好分区之后我们还需要对分区进行格式化才能在系统中使用磁盘。 + +在sdb1上建立ext2分区: + +``` +root@localhost ~.ext2 /dev/sdb1 +mke2fs 1.39 (29-May-2006) +Filesystem label= +OS type: Linux +Block size=4096 (log=2) +Fragment size=4096 (log=2) +100576 inodes, 200804 blocks +10040 blocks (5.00%) reserved for the super user +First data block=0 +Maximum filesystem blocks=209715200 +7 block groups +32768 blocks per group, 32768 fragments per group +14368 inodes per group +Superblock backups stored on blocks: + 32768, 98304, 163840 + +Writing inode tables: done +Writing superblocks and filesystem accounting information: done + +This filesystem will be automatically checked every 32 mounts or +180 days, whichever comes first. Use tune2fs -c or -i to override. +``` + +在sdb6上建立ext3分区: + +``` +[root@localhost ~]# mkfs.ext3 /dev/sdb6 +mke2fs 1.39 (29-May-2006) +Filesystem label= +OS type: Linux +Block size=4096 (log=2) +Fragment size=4096 (log=2) +217280 inodes, 433747 blocks +21687 blocks (5.00%) reserved for the super user +First data block=0 +Maximum filesystem blocks=444596224 +14 block groups +32768 blocks per group, 32768 fragments per group +15520 inodes per group +Superblock backups stored on blocks: + 32768, 98304, 163840, 229376, 294912 + +Writing inode tables: done +Creating journal (8192 blocks): done +Writing superblocks and filesystem accounting information: done + +This filesystem will be automatically checked every 32 mounts or +180 days, whichever comes first. Use tune2fs -c or -i to override. +[root@localhost ~]# +``` + +建立两个目录`/oracle`和`/web`,将新建好的两个分区挂载到系统: + +``` +root@localhost ~ /oracle +[root@localhost ~]# mkdir /web +root@localhost ~ /dev/sdb1 /oracle +[root@localhost ~]# mount /dev/sdb6 /web +``` + +查看分区挂载情况: + +``` +root@localhost ~ -h +文件系统 容量 已用 可用 已用% 挂载点 +/dev/mapper/VolGroup00-LogVol00 + 6.7G 2.8G 3.6G 44% / +/dev/sda1 99M 12M 82M 13% /boot +tmpfs 125M 0 125M 0% /dev/shm +/dev/sdb1 773M 808K 733M 1% /oracle +/dev/sdb6 1.7G 35M 1.6G 3% /web +``` + +如果需要每次开机自动挂载则需要修改`/etc/fstab`文件,加入两行配置: + +``` +[root@localhost ~]# vim /etc/fstab + +/dev/VolGroup00/LogVol00 / ext3 defaults 1 1 +LABEL=/boot /boot ext3 defaults 1 2 +tmpfs /dev/shm tmpfs defaults 0 0 +devpts /dev/pts devpts gid=5,mode=620 0 0 +sysfs /sys sysfs defaults 0 0 +proc /proc proc defaults 0 0 +/dev/VolGroup00/LogVol01 swap swap defaults 0 0 +/dev/sdb1 /oracle ext2 defaults 0 0 +/dev/sdb6 /web ext3 defaults 0 0 +``` \ No newline at end of file diff --git a/command/fgrep.md b/command/fgrep.md new file mode 100644 index 00000000000..4a95a3bcbb0 --- /dev/null +++ b/command/fgrep.md @@ -0,0 +1,84 @@ +fgrep +=== + +为文件搜索文字字符串 + +## 补充说明 + +**fgrep命** 是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的文件 fgrep 命令将显示包含匹配行的文件。 + +fgrep 命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。fgrep 命令使用快速的压缩算法。`$, *, [, |, (, )`和`\`等字符串被 fgrep 命令按字面意思解释。这些字符并不解释为正则表达式,但它们在 grep 和 egrep 命令中解释为正则表达式。因为这些字符对于 shell 有特定的含义,完整的字符串应该加上单引号`‘ ... ’`。. 如果没有指定文件, fgrep 命令假定标准输入。一般,找到的每行都复制到标准输出中去。如果不止一个输入文件,则在找到的每行前打印文件名。 + +1. fgrep 命令和带 -F 标志的 grep命令是一样的但出错和用法消息不同-s 标志功能也不同。 +2. 每行限制在 2048 个字节。 +3. 段落(-p 标志下)目前限制在5000个字符的长度。 +4. 不要在特定的文件中运行 grep 命令,因为会产生不可预料的结果。 +5. 输入行不能包含空字符。 +6. 输入文件应该以换行字符结尾。 +7. 虽然可以同时指定很多标志,但某些标志会覆盖其余的标志。例如,如果同时指定 -l 和 -n ,只有文件名写入到标准输出中去。 + +### 语法 + +``` +fgrep(选项)(参数) +``` + +### 选项 + +``` +-b:在找到的每行之前添加行所在的块编号。使用此标志有助于按照上下文查找磁盘块号码。-b 标志不能用于标准输入或者管道输入。 +-c:仅显示匹配行的计数。 +-e 模式:指定模式。这个工作模式很简单,但当此模式以 a-(减号) 开头时却是很有用的。 +-f StringFile:指定包含字符串的文件。 +-h:当多个文件被处理时隐藏文件名。 +-i:当进行比较时忽略字母的大小写。 +-l:只列出包含匹配行的文件名(一次)。文件名之间用换行符分隔。 +n:将文件中每行的相对行号置于行前。 +-pSeparator:显示包含匹配行的整个段落。段落之间将按照Separator参数指定的段落分隔符加以分隔,这些分隔符是与搜索模式有着相同格式的模式。包含段落分隔符的行将仅用作分隔符;它们不会被包含在输出中。缺省的段落分隔符是空白行。 +-q:禁止所有写入到标准输出的操作,不管是否为匹配行。如果选中输入行,以 0 状态退出。 +-s:仅显示出错消息。这在检查状态时很有用。 +-v:显示除了匹配特定模式的行以外的所有行。 +-w:执行单词搜索。 +-x:显示匹配模式的行,要求无额外的字符。 +-y:当进行比较时忽略字符的大小写。 +``` + +此命令返回以下出口值: + +``` +0 找到匹配项。 +1 未找到匹配项。 +>1 发现语法错误,或者文件不可访问(即使找到了匹配项)。 +``` + +### 实例 + +**搜索几个文件中的一个简单字符串:** + +``` +fgrep strcpy *.c +``` + +在当前目录下所有以 .c 字符串结尾的文件中搜索字符串 strcpy。 + +**计数匹配某模式的行数:** + +``` +fgrep -c 『{』pgm.cfgrep -c 『}』pgm.c +``` + +显示在 pgm.c 中包含左括号和右括号的行的数目。 + +如果在您的 C 程序中一行中没有包含多于一个 { (左括号) 或者 } (右括号),并且括号正确匹配,那么这两个数字将是一样的。如果这两个数字不一样,您可以将包含括号的行按照他们在文件中的位置顺序显示出来,使用以下命令: + +``` +egrep {\|} pgm.c +``` + +**显示包含某模式的文件名:** + +``` +fgrep -l strcpy *.c +``` + +搜索当前目录下以 .c 结尾的文件,然后显示包含 strcpy 字符串的文件名。 \ No newline at end of file diff --git a/command/file.md b/command/file.md new file mode 100644 index 00000000000..fa40d172663 --- /dev/null +++ b/command/file.md @@ -0,0 +1,69 @@ +file +=== + +用来探测给定文件的类型。 + +## 补充说明 + +**file命** 用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。 + +### 语法 + +``` +file(选项)(参数) +``` + +### 选项 + +``` +-b:列出辨识结果时,不显示文件名称; +-c:详细显示指令执行过程,便于排错或分析程序执行的情形; +-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称; +-L:直接显示符号连接所指向的文件类别; +-m<魔法数字文件>:指定魔法数字文件; +-v:显示版本信息; +-z:尝试去解读压缩文件的内容。 +``` + +### 参数 + +文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。 + +### 实例 + +显示文件类型 + +``` +root@localhost ~.log +install.log: UTF-8 Unicode text + +[root@localhost ~]# file -b install.log <== 不显示文件名称 +UTF-8 Unicode text + +[root@localhost ~]# file -i install.log <== 显示MIME类别。 +install.log: text/plain; charset=utf-8 + +[root@localhost ~]# file -b -i install.log +text/plain; charset=utf-8 + +``` + +显示符号链接的文件类型 + +``` +root@localhost ~ -l /var/mail +lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail + +[root@localhost ~]# file /var/mail +/var/mail: symbolic link to `spool/mail' + +[root@localhost ~]# file -L /var/mail +/var/mail: directory + +[root@localhost ~]# file /var/spool/mail +/var/spool/mail: directory + +[root@localhost ~]# file -L /var/spool/mail +/var/spool/mail: directory + +``` \ No newline at end of file diff --git a/command/find.md b/command/find.md index 0418682003c..dcbd3a25b7c 100644 --- a/command/find.md +++ b/command/find.md @@ -1,132 +1,357 @@ - find === - -指定目录下查找文件。 + +在指定目录下查找文件 ## 补充说明 -find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 - -find指令用于查找符合条件的文件。任何位于参数之前的字符串都将被视为欲查找的目录。 - -## 语法 - -```bash -find [目录...][-amin <分钟>][-anewer <参考文件或目录>] -[-atime <24小时数>][-cmin <分钟>][-cnewer <参考文件或目录>] -[-ctime <24小时数>][-daystart][-depyh][-empty][-exec <执行指令>] -[-false][-fls <列表文件>][-follow][-fprint <列表文件>][-fprint0 <列表文件>][-fprintf <列表文件><输出格式>] -[-fstype <文件系统类型>][-gid <群组识别码>][-group <群组名称>][-help] -[-ilname <范本样式>][-iname <范本样式>][-inum ][-ipath <范本样式>][-iregex <范本样式>] -[-links <连接数目>][-lname <范本样式>][-ls] -[-maxdepth <目录层级>][-mindepth <目录层级>][-mmin <分钟>][-mount] -[-mtime <24小时数>][-name <范本样式>][-newer <参考文件或目录>][-nogroup][noleaf] [-nouser][-ok <执行指令>][-path <范本样式>][-perm <权限数值>][-print][-print0][-printf <输出格式>][-prune][-regex <范本样式>] -[-size <文件大小>][-true][-type <文件类型>][-uid <用户识别码>][-used <日数>][-user <拥有者名称>][-version][-xdev][-xtype <文件类型>] -``` - -## 参数 - -- -amin<分钟>  查找在指定时间曾被存取过的文件或目录,单位以分钟计算。 -- -anewer<参考文件或目录>  查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。 -- -atime<24小时数>  查找在指定时间曾被存取过的文件或目录,单位以24小时计算。 -- -cmin<分钟>  查找在指定时间之时被更改的文件或目录。 -- -cnewer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 -- -ctime<24小时数>  查找在指定时间之时被更改的文件或目录,单位以24小时计算。 -- -daystart  从本日开始计算时间。 -- -depth  从指定目录下最深层的子目录开始查找。 -- -expty  寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录。 -- -exec<执行指令>  假设find指令的回传值为True,就执行该指令。 -- -false  将find指令的回传值皆设为False。 -- -fls<列表文件>  此参数的效果和指定"-ls"参数类似,但会把结果保存为指定的列表文件。 -- -follow  排除符号连接。 -- -fprint<列表文件>  此参数的效果和指定"-print"参数类似,但会把结果保存成指定的列表文件。 -- -fprint0<列表文件>  此参数的效果和指定"-print0"参数类似,但会把结果保存成指定的列表文件。 -- -fprintf<列表文件><输出格式>  此参数的效果和指定"-printf"参数类似,但会把结果保存成指定的列表文件。 -- -fstype<文件系统类型>  只寻找该文件系统类型下的文件或目录。 -- -gid<群组识别码>  查找符合指定之群组识别码的文件或目录。 -- -group<群组名称>  查找符合指定之群组名称的文件或目录。 -- -help或--help  在线帮助。 -- -ilname<范本样式>  此参数的效果和指定"-lname"参数类似,但忽略字符大小写的差别。 -- -iname<范本样式>  此参数的效果和指定"-name"参数类似,但忽略字符大小写的差别。 -- -inum  查找符合指定的inode编号的文件或目录。 -- -ipath<范本样式>  此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别。 -- -iregex<范本样式>  此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别。 -- -links<连接数目>  查找符合指定的硬连接数目的文件或目录。 -- -iname<范本样式>  指定字符串作为寻找符号连接的范本样式。 -- -ls  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。 -- -maxdepth<目录层级>  设置最大目录层级。 -- -mindepth<目录层级>  设置最小目录层级。 -- -mmin<分钟>  查找在指定时间曾被更改过的文件或目录,单位以分钟计算。 -- -mount  此参数的效果和指定"-xdev"相同。 -- -mtime<24小时数>  查找在指定时间曾被更改过的文件或目录,单位以24小时计算。 -- -name<范本样式>  指定字符串作为寻找文件或目录的范本样式。 -- -newer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 -- -nogroup  找出不属于本地主机群组识别码的文件或目录。 -- -noleaf  不去考虑目录至少需拥有两个硬连接存在。 -- -nouser  找出不属于本地主机用户识别码的文件或目录。 -- -ok<执行指令>  此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"y"或"Y",则放弃执行指令。 -- -path<范本样式>  指定字符串作为寻找目录的范本样式。 -- -perm<权限数值>  查找符合指定的权限数值的文件或目录。 -- -print  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称之前皆有"./"字符串。 -- -print0  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行。 -- -printf<输出格式>  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定。 -- -prune  不寻找字符串作为寻找文件或目录的范本样式。 -- -regex<范本样式>  指定字符串作为寻找文件或目录的范本样式。 -- -size<文件大小>  查找符合指定的文件大小的文件。 -- -true  将find指令的回传值皆设为True。 -- -typ<文件类型>  只寻找符合指定的文件类型的文件。 -- -uid<用户识别码>  查找符合指定的用户识别码的文件或目录。 -- -used<日数>  查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算。 -- -user<拥有者名称>  查找符合指定的拥有者名称的文件或目录。 -- -version或--version  显示版本信息。 -- -xdev  将范围局限在先行的文件系统中。 -- -xtype<文件类型>  此参数的效果和指定"-type"参数类似,差别在于它针对符号连接检查。 - -## 例子 - -```bash -$ find . -name '*.DS_Store' -type f -delete # 删除所有.DS_Store文件 -$ find ~ -name "*.txt" -print # 在$HOME中查.txt文件并显示 -$ find . -size +1000000c -print # 查长度大于1Mb的文件 -$ find . -size 100c -print # 查长度为100c的文件 -$ find . -size +10 -print # 查长度超过期作废10块的文件(1块=512字节) -$ find -name april* # 在当前目录下查找以april开始的文件 -$ find -name april* fprint file # 在当前目录下查找以april开始的文件,并把结果输出到file中 -$ find -name ap* -o -name may* # 查找以ap或may开头的文件 -$ find /mnt -name tom.txt -ftype vfat # 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件 -$ find /mnt -name t.txt ! -ftype vfat # 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件 -$ find /tmp -name wa* -type l # 在/tmp下查找名为wa开头且类型为符号链接的文件 -$ find ~ -mtime -2 # 在/home下查最近两天内改动过的文件 -$ find ~ -atime -1 # 查1天之内被存取过的文件 -$ find ~ -mmin +60 # 在/home下查60分钟前改动过的文件 -$ find ~ -amin +30 # 查最近30分钟前被存取过的文件 -$ find ~ -newer tmp.txt # 在/home下查更新时间比tmp.txt近的文件或目录 -$ find ~ -anewer tmp.txt # 在/home下查存取时间比tmp.txt近的文件或目录 -$ find ~ -used -2 # 列出文件或目录被改动过之后,在2日内被存取过的文件或目录 -$ find ~ -user cnscn # 列出/home目录内属于用户cnscn的文件或目录 -$ find ~ -uid +501 # 列出/home目录内用户的识别码大于501的文件或目录 -$ find ~ -group cnscn # 列出/home内组为cnscn的文件或目录 -$ find ~ -gid 501 # 列出/home内组id为501的文件或目录 -$ find ~ -nouser # 列出/home内不属于本地用户的文件或目录 -$ find ~ -nogroup # 列出/home内不属于本地组的文件或目录 -$ find ~ -name tmp.txt -maxdepth 4 # 列出/home内的tmp.txt 查时深度最多为3层 -$ find ~ -name tmp.txt -mindepth 3 # 从第2层开始查 -$ find ~ -empty # 查找大小为0的文件或空目录 -$ find ~ -size +512k # 查大于512k的文件 -$ find ~ -size -512k # 查小于512k的文件 -$ find ~ -links +2 # 查硬连接数大于2的文件或目录 -$ find ~ -perm 0700 # 查权限为700的文件或目录 -$ find ~ -perm 755 -print | more # 查找权限为755的文件 -$ find /tmp -name tmp.txt -exec cat {} \; -$ find /tmp -name tmp.txt ok rm {} \; - -$ find / -amin -10 # 查找在系统中最后10分钟访问的文件 -$ find / -atime -2 # 查找在系统中最后48小时访问的文件 -$ find / -empty # 查找在系统中为空的文件或者文件夹 -$ find / -group cat # 查找在系统中属于 groupcat的文件 -$ find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件 -$ find / -mtime -1 # 查找在系统中最后24小时里修改过的文件 -$ find / -nouser # 查找在系统中属于作废用户的文件 -$ find / -user fred # 查找在系统中属于FRED这个用户的文件 +
+ +
本文索引
+ +[隐藏)] + +* 语法 +* 选项 +* 参数 +* 实例 + * 根据文件或者正则表达式进行匹配 + * 否定参数 + * 根据文件类型进行搜索 + * 基于目录深度搜索 + * 根据文件时间戳进行搜索 + * 根据文件大小进行匹配 + * 删除匹配文件 + * 根据文件权限/所有权进行匹配 + * 借助-exec选项与其他命令结合使用 + * 搜索但跳出指定的目录 + * find其他技巧收集 + +
+ +**find命令**用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 + +### 语法 + +``` +find(选项)(参数) +``` + +### 选项 + +``` +-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算; +-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录; +-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算; +-cmin<分钟>:查找在指定时间之时被更改过的文件或目录; +-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; +-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算; +-daystart:从本日开始计算时间; +-depth:从指定目录下最深层的子目录开始查找; +-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录; +-exec<执行指令>:假设find指令的回传值为True,就执行该指令; +-false:将find指令的回传值皆设为False; +-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件; +-follow:排除符号连接; +-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件; +-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件; +-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件; +-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录; +-gid<群组识别码>:查找符合指定之群组识别码的文件或目录; +-group<群组名称>:查找符合指定之群组名称的文件或目录; +-help或——help:在线帮助; +-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别; +-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别; +-inum:查找符合指定的inode编号的文件或目录; +-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别; +-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别; +-links<连接数目>:查找符合指定的硬连接数目的文件或目录; +-iname<范本样式>:指定字符串作为寻找符号连接的范本样式; +-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出; +-maxdepth<目录层级>:设置最大目录层级; +-mindepth<目录层级>:设置最小目录层级; +-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算; +-mount:此参数的效果和指定“-xdev”相同; +-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算; +-name<范本样式>:指定字符串作为寻找文件或目录的范本样式; +-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录; +-nogroup:找出不属于本地主机群组识别码的文件或目录; +-noleaf:不去考虑目录至少需拥有两个硬连接存在; +-nouser:找出不属于本地主机用户识别码的文件或目录; +-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令; +-path<范本样式>:指定字符串作为寻找目录的范本样式; +-perm<权限数值>:查找符合指定的权限数值的文件或目录; +-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串; +-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行; +-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定; +-prune:不寻找字符串作为寻找文件或目录的范本样式; +-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式; +-size<文件大小>:查找符合指定的文件大小的文件; +-true:将find指令的回传值皆设为True; +-typ<文件类型>:只寻找符合指定的文件类型的文件; +-uid<用户识别码>:查找符合指定的用户识别码的文件或目录; +-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算; +-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录; +-version或——version:显示版本信息; +-xdev:将范围局限在先行的文件系统中; +-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。 +``` + +### 参数 + +起始目录:查找文件的起始目录。 + +### 实例 + +#### 根据文件或者正则表达式进行匹配 + +列出当前目录及子目录下所有文件和文件夹 + +``` +find . +``` + +在`/home`目录下查找以.txt结尾的文件名 + +``` +find /home -name "*.txt" +``` + +同上,但忽略大小写 + +``` +find /home -iname "*.txt" +``` + +当前目录及子目录下查找所有以.txt和.pdf结尾的文件 + +``` +find . \( -name "*.txt" -o -name "*.pdf" \) + +或 + +find . -name "*.txt" -o -name "*.pdf" +``` + +匹配文件路径或者文件 + +``` +find /usr/ -path "*local*" +``` + +基于正则表达式匹配文件路径 + +``` +find . -regex ".*\(\.txt\|\.pdf\)$" +``` + +同上,但忽略大小写 + +``` +find . -iregex ".*\(\.txt\|\.pdf\)$" +``` + +#### 否定参数 + +找出/home下不是以.txt结尾的文件 + +``` +find /home ! -name "*.txt" +``` + +#### 根据文件类型进行搜索 + +``` +find . -type 类型参数 +``` + +类型参数列表: + +* **f** 普通文件 +* **l** 符号连接 +* **d** 目录 +* **c** 字符设备 +* **b** 块设备 +* **s** 套接字 +* **p** Fifo + +#### 基于目录深度搜索 + +向下最大深度限制为3 + +``` +find . -maxdepth 3 -type f +``` + +搜索出深度距离当前目录至少2个子目录的所有文件 + +``` +find . -mindepth 2 -type f +``` + +#### 根据文件时间戳进行搜索 + +``` +find . -type f 时间戳 +``` + +UNIX/Linux文件系统每个文件都有三种时间戳: + +* **访问时间**(-atime/天,-amin/分钟):用户最近一次访问时间。 +* **修改时间**(-mtime/天,-mmin/分钟):文件最后一次修改时间。 +* **变化时间**(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。 + +搜索最近七天内被访问过的所有文件 + +``` +find . -type f -atime -7 +``` + +搜索恰好在七天前被访问过的所有文件 + +``` +find . -type f -atime 7 +``` + +搜索超过七天内被访问过的所有文件 + +``` +find . -type f -atime +7 +``` + +搜索访问时间超过10分钟的所有文件 + +``` +find . -type f -amin +10 +``` + +找出比file.log修改时间更长的所有文件 + +``` +find . -type f -newer file.log +``` + +#### 根据文件大小进行匹配 + +``` +find . -type f -size 文件大小单元 +``` + +文件大小单元: + +* **b** —— 块(512字节) +* **c** —— 字节 +* **w** —— 字(2字节) +* **k** —— 千字节 +* **M** —— 兆字节 +* **G** —— 吉字节 + +搜索大于10KB的文件 + +``` +find . -type f -size +10k +``` + +搜索小于10KB的文件 + +``` +find . -type f -size -10k +``` + +搜索等于10KB的文件 + +``` +find . -type f -size 10k +``` + +#### 删除匹配文件 + +删除当前目录下所有.txt文件 + +``` +find . -type f -name "*.txt" -delete +``` + +#### 根据文件权限/所有权进行匹配 + +当前目录下搜索出权限为777的文件 + +``` +find . -type f -perm 777 +``` + +找出当前目录下权限不是644的php文件 + +``` +find . -type f -name "*.php" ! -perm 644 +``` + +找出当前目录用户tom拥有的所有文件 + +``` +find . -type f -user tom +``` + +找出当前目录用户组sunk拥有的所有文件 + +``` +find . -type f -group sunk +``` + +#### 借助`-exec`选项与其他命令结合使用 + +找出当前目录下所有root的文件,并把所有权更改为用户tom + +``` +find .-type f -user root -exec chown tom {} \; +``` + +上例中,**{}** 用于与**-exec**选项结合使用来匹配所有文件,然后会被替换为相应的文件名。 + +找出自己家目录下所有的.txt文件并删除 + +``` +find $HOME/. -name "*.txt" -ok rm {} \; +``` + +上例中,**-ok**和**-exec**行为一样,不过它会给出提示,是否执行相应的操作。 + +查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中 + +``` +find . -type f -name "*.txt" -exec cat {} \;> all.txt +``` + +将30天前的.log文件移动到old目录中 + +``` +find . -type f -mtime +30 -name "*.log" -exec cp {} old \; +``` + +找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来 + +``` +find . -type f -name "*.txt" -exec printf "File: %s\n" {} \; +``` + +因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令 + +``` +-exec ./text.sh {} \; +``` + +#### 搜索但跳出指定的目录 + +查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk + +``` +find . -path "./sk" -prune -o -name "*.txt" -print +``` + +#### find其他技巧收集 + +要列出所有长度为零的文件 + ``` +find . -empty +``` \ No newline at end of file diff --git a/command/finger.md b/command/finger.md new file mode 100644 index 00000000000..192aed3a8e7 --- /dev/null +++ b/command/finger.md @@ -0,0 +1,43 @@ +finger +=== + +用于查找并显示用户信息 + +## 补充说明 + +**finger命** 用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。 + +### 语法 + +``` +finger(选项)(参数) +``` + +### 选项 + +``` +-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容; +-m:排除查找用户的真实姓名; +-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话; +-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。 +``` + +不指定finger的选项如果提供操作者的话,缺省设为`-l`输出风格,否则为`-s`风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目。 + +### 参数 + +用户名:指定要查询信息的用户。 + +### 实例 + +在计算机上使用finger: + +``` +[root@localhost root]# finger +login Name Tty Idle Login time Office Office Phone +root root tty1 2 Dec 18 13 +root root pts/0 1 Dec 18 13 +root root *pts/1 Dec 18 13 +``` + +如果要查询远程机上的用户信息,需要在用户名后面接`@主机名`,采用`用户名@主机名`的格式,不过要查询的网络主机需要运行finger守护进程的支持。 \ No newline at end of file diff --git a/command/fmt.md b/command/fmt.md new file mode 100644 index 00000000000..67e9d4fafc6 --- /dev/null +++ b/command/fmt.md @@ -0,0 +1,29 @@ +fmt +=== + +读取文件后优化处理并输出 + +## 补充说明 + +**fmt命** 读取文件的内容,根据选项的设置对文件格式进行简单的优化处理,并将结果送到标准输出设备。 + +### 语法 + +``` +fmt(选项)(参数) +``` + +### 选项 + +``` +-c或--crown-margin:每段前两列缩排; +-p<列起始字符串>或-prefix=<列起始字符串>:仅合并含有指定字符串的列,通常运用在程序语言的注解方面; +-s或--split-only:只拆开字数超出每列字符数的列,但不合并字数不足每列字符数的列; +-t或--tagged-paragraph:每列前两列缩排,但第1列和第2列的缩排格式不同; +-u或--uniform-spacing:每列字符之间都以一个空格字符间隔,每个句子之间则两个空格字符分隔; +-w<每列字符数>或--width=<每列字符数>或-<每列字符数>:设置每列的最大字符数。 +``` + +### 参数 + +指定要优化格式的文件。 \ No newline at end of file diff --git a/command/fold.md b/command/fold.md new file mode 100644 index 00000000000..33e57897483 --- /dev/null +++ b/command/fold.md @@ -0,0 +1,26 @@ +fold +=== + +控制文件内容输出时所占用的屏幕宽度 + +## 补充说明 + +**fold命** 用于控制文件内容输出时所占用的屏幕宽度。fold命令会从指定的文件里读取内容,将超过限定列宽的列加入增列字符后,输出到标准输出设备。若不指定任何文件名称,或是所给予的文件名为“-”,则fold指令会从标准输入设备读取数据。 + +### 语法 + +``` +fold(选项)(参数) +``` + +### 选项 + +``` +-b或——bytes:以Byte为单位计算列宽,而非采用行数编号为单位; +-s或——spaces:以空格字符作为换列点; +-w<每列行数>或--width<每列行数>:设置每列的最大行数。 +``` + +### 参数 + +文件:指定要显示内容的文件。 \ No newline at end of file diff --git a/command/free.md b/command/free.md new file mode 100644 index 00000000000..b123b56d0c2 --- /dev/null +++ b/command/free.md @@ -0,0 +1,60 @@ +free +=== + +显示内存的使用情况 + +## 补充说明 + +**free命** 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 + +### 语法 + +``` +free(选项) +``` + +### 选项 + +``` +-b:以Byte为单位显示内存使用情况; +-k:以KB为单位显示内存使用情况; +-m:以MB为单位显示内存使用情况; +-o:不显示缓冲区调节列; +-s<间隔秒数>:持续观察内存使用状况; +-t:显示内存总和列; +-V:显示版本信息。 +``` + +### 实例 + +``` +free -m + total used free shared buffers cached +Mem: 2016 1973 42 0 163 1497 +-/+ buffers/cache: 312 1703 +Swap: 4094 0 4094 +``` + +**第一部分Mem行解释:** + +``` +total:内存总数; +used:已经使用的内存数; +free:空闲的内存数; +shared:当前已经废弃不用; +buffers Buffer:缓存内存数; +cached Page:缓存内存数。 +``` + +关系:total = used + free + +**第二部分(-/+ buffers/cache)解释:** + +``` +(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached +(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached +``` + +可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。 + +第三部分是指交换分区。 \ No newline at end of file diff --git a/command/fsck.md b/command/fsck.md new file mode 100644 index 00000000000..1148cdfea5d --- /dev/null +++ b/command/fsck.md @@ -0,0 +1,53 @@ +fsck +=== + +检查并且试图修复文件系统中的错误 + +## 补充说明 + +**fsck命** 被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。 + +### 语法 + +``` +fsck(选项)(参数) +``` + +### 选项 + +``` +-a:自动修复文件系统,不询问任何问题; +-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; +-N:不执行指令,仅列出实际执行会进行的动作; +-P:当搭配"-A"参数使用时,则会同时检查所有的文件系统; +-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; +-R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查; +-s:依序执行检查作业,而非同时执行; +-t<文件系统类型>:指定要检查的文件系统类型; +-T:执行fsck指令时,不显示标题信息; +-V:显示指令执行过程。 +``` + +### 参数 + +文件系统:指定要查看信息的文件系统。 + +### 实例 + +linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是`/dev/hda2`,接着用如下的命令去对付它: + +``` +fsck -y /dev/hda2 +``` + +结束后使用reboot命令重启系统这样就好了! + +如果不知道时哪个地方出了问题,可以直接: + +``` +fsck +``` + +在随后的多个确认对话框中输入`:y` + +结束后同样使用reboot命令重启系统这样就好了! \ No newline at end of file diff --git a/command/ftp.md b/command/ftp.md new file mode 100644 index 00000000000..45134fbbb1e --- /dev/null +++ b/command/ftp.md @@ -0,0 +1,67 @@ +ftp +=== + +用来设置文件系统相关功能 + +## 补充说明 + +**ftp命** 用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux进行ftp操作将会非常容易。 + +### 语法 + +``` +ftp(选项)(参数) +``` + +### 选项 + +``` +-d:详细显示指令执行过程,便于排错或分析程序执行的情况; +-i:关闭互动模式,不询问任何问题; +-g:关闭本地主机文件名称支持特殊字符的扩充特性; +-n:不使用自动登录; +-v:显示指令执行过程。 +``` + +### 参数 + +主机:指定要连接的FTP服务器的主机名或ip地址。 + +### 实例 + +``` +FTP>ascii: 设定以ASCII方式传送文件(缺省值) +FTP>bell: 每完成一次文件传送,报警提示. +FTP>binary: 设定以二进制方式传送文件. +FTP>bye: 终止主机FTP进程,并退出FTP管理方式. +FTP>case: 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. +FTP>cd: 同UNIX的CD命令. +FTP>cdup: 返回上一级目录. +FTP>chmod: 改变远端主机的文件权限. +FTP>close: 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. +FTP>delete: 删除远端主机中的文件. +FTP>dir remote-directory] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. +FTP>get [remote-file] [local-file] 从远端主机中传送至本地主机中. +FTP>help [command] 输出命令的解释. +FTP>lcd: 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. +FTP>ls [remote-directory] [local-file] 同DIR. +FTP>macdef: 定义宏命令. +FTP>mdelete [remote-files] 删除一批文件. +FTP>mget [remote-files] 从远端主机接收一批文件至本地主机. +FTP>mkdir directory-name 在远端主机中建立目录. +FTP>mput local-files 将本地主机中一批文件传送至远端主机. +FTP>open host [port] 重新建立一个新的连接. +FTP>prompt: 交互提示模式. +FTP>put local-file [remote-file] 将本地一个文件传送至远端主机中. +FTP>pwd: 列出当前远端主机目录. +FTP>quit: 同BYE. +FTP>recv remote-file [local-file] 同GET. +FTP>rename [from] [to] 改变远端主机中的文件名. +FTP>rmdir directory-name 删除远端主机中的目录. +FTP>send local-file [remote-file] 同PUT. +FTP>status: 显示当前FTP的状态. +FTP>system: 显示远端主机系统类型. +FTP>user user-name [password] [account] 重新以别的用户名登录远端主机. +FTP>? [command]: 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 +FTP>! 从 ftp 子系统退出到外壳。 +``` \ No newline at end of file diff --git a/command/ftpcount.md b/command/ftpcount.md new file mode 100644 index 00000000000..f143e054dff --- /dev/null +++ b/command/ftpcount.md @@ -0,0 +1,14 @@ +ftpcount +=== + +显示目前已FTP登入的用户人数 + +## 补充说明 + +显示目前已ftp登入的用户人数。执行这项指令可得知目前用FTP登入系统的人数以及FTP登入人数的上限。 + +语法: + +``` +ftpcount +``` \ No newline at end of file diff --git a/command/ftpshut.md b/command/ftpshut.md new file mode 100644 index 00000000000..f634fe421d9 --- /dev/null +++ b/command/ftpshut.md @@ -0,0 +1,21 @@ +ftpshut +=== + +在指定的时间关闭FTP服务器 + +## 补充说明 + +功能说明:在指定的时间关闭ftp服务器。本指令提供系统管理者在设置的时间关闭FTP服务器,且能在关闭之前发出警告信息通知用户。关闭时间若设置后为"none",则会马上关闭服务器。如果采 用"+30"的方式来设置表示服务器在30分钟之后关闭。依次类推,假设使用"1130"的格式则代表服务器会在每日的11时30分关闭,时间格式为24 小时制。FTP服务器关闭后,在/etc目录下会产生一个名称为shutmsg的文件,把它删除后即可再度启动FTP服务器的功能。 + +语法: + +``` +ftpshut [-d<分钟>][-l<分钟>][关闭时间]["警告信息"] +``` + +参数: + +``` +-d<分钟> 切断所有FTP连线时间。 +-l<分钟> 停止接受FTP登入的时间。 +``` \ No newline at end of file diff --git a/command/ftpwho.md b/command/ftpwho.md new file mode 100644 index 00000000000..c5a5fc614de --- /dev/null +++ b/command/ftpwho.md @@ -0,0 +1,21 @@ +ftpwho +=== + +显示当前每个ftp会话信息 + +## 补充说明 + +**ftpwho命** ftp服务器套件proftpd的工作指令,用于显示当前每个ftp会话信息。 + +### 语法 + +``` +ftpwho(选项) +``` + +### 选项 + +``` +-h:显示帮助信息; +-v:详细模式,输出更多信息。 +``` \ No newline at end of file diff --git a/command/grep.md b/command/grep.md new file mode 100644 index 00000000000..84a2a9ebd2d --- /dev/null +++ b/command/grep.md @@ -0,0 +1,232 @@ +grep +=== + +强大的文本搜索工具 + +## 补充说明 + +**gre** (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 + +### 选项 + +``` +**-a** 不要忽略二进制数据。 +**-A**<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。 +**-b** 在显示符合范本样式的那一行之外,并显示该行之前的内容。 +**-c** 计算符合范本样式的列数。 +**-C<显示列数>或-<显示列数>** 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。 +**-d<进行动作>** 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。 +**-e<范本样式>** 指定字符串作为查找文件内容的范本样式。 +**-E** 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。 +**-f<范本文件>** 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。 +**-F** 将范本样式视为固定字符串的列表。 +**-G** 将范本样式视为普通的表示法来使用。 +**-h** 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。 +**-H** 在显示符合范本样式的那一列之前,标示该列的文件名称。 +**-i** 胡列字符大小写的差别。 +**-l** 列出文件内容符合指定的范本样式的文件名称。 +**-L** 列出文件内容不符合指定的范本样式的文件名称。 +**-n** 在显示符合范本样式的那一列之前,标示出该列的编号。 +**-q** 不显示任何信息。 +**-R/-r** 此参数的效果和指定“-d recurse”参数相同。 +**-s** 不显示错误信息。 +**-v** 反转查找。 +**-w** 只显示全字符合的列。 +**-x** 只显示全列符合的列。 +**-y** 此参数效果跟“-i”相同。 +**-o** 只输出文件中匹配到的部分。 +``` + +## grep命令常见用法 + +在文件中搜索一个单词,命令会返回一个包含**“match_pattern”**的文本行: + +``` +grep match_pattern file_name +grep "match_pattern" file_name + +``` + +在多个文件中查找: + +``` +grep "match_pattern" file_1 file_2 file_3 ... + +``` + +输出除之外的所有行 **-v** 选项: + +``` +grep -v "match_pattern" file_name + +``` + +标记匹配颜色 **--color=auto** 选项: + +``` +grep "match_pattern" file_name --color=auto + +``` + +使用正则表达式 **-E** 选项: + +``` +grep -E "[1-9]+" +或 +egrep "[1-9]+" + +``` + +只输出文件中匹配到的部分 **-o** 选项: + +``` +echo this is a test line. | grep -o -E "[a-z]+\." +line. + +echo this is a test line. | egrep -o "[a-z]+\." +line. + +``` + +统计文件或者文本中包含匹配字符串的行数 **-c** 选项: + +``` +grep -c "text" file_name + +``` + +输出包含匹配字符串的行数 **-n** 选项: + +``` +grep "text" -n file_name +或 +cat file_name | grep "text" -n + +#多个文件 +grep "text" -n file_1 file_2 + +``` + +打印样式匹配所位于的字符或字节偏移: + +``` +echo gun is not unix | grep -b -o "not" +7:not + +#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 **-b -o** 一般总是配合使用。 + +``` + +搜索多个文件并查找匹配文本在哪些文件中: + +``` +grep -l "text" file1 file2 file3... + +``` + +### grep递归搜索文件 + +在多级目录中对文本进行递归搜索: + +``` +grep "text" . -r -n +# .表示当前目录。 + +``` + +忽略匹配样式中的字符大小写: + +``` +echo "hello world" | grep -i "HELLO" +hello + +``` + +选项 **-e** 制动多个匹配样式: + +``` +echo this is a text line | grep -e "is" -e "line" -o +is +line + +#也可以使用**-f**选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。 +cat patfile +aaa +bbb + +echo aaa bbb ccc ddd eee | grep -f patfile -o + +``` + +在grep搜索结果中包括或者排除指定文件: + +``` +#只在目录中所有的.php和.html文件中递归搜索字符"main()" +grep "main()" . -r --include *.{php,html} + +#在搜索结果中排除所有README文件 +grep "main()" . -r --exclude "README" + +#在搜索结果中排除filelist文件列表里的文件 +grep "main()" . -r --exclude-from filelist + +``` + +使用0值字节后缀的grep与xargs: + +``` +#测试文件: +echo "aaa" > file1 +echo "bbb" > file2 +echo "aaa" > file3 + +grep "aaa" file* -lZ | xargs -0 rm + +#执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用。 + +``` + +grep静默输出: + +``` +grep -q "test" filename + +#不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。 + +``` + +打印出匹配文本之前或者之后的行: + +``` +#显示匹配某个结果之后的3行,使用 -A 选项: +seq 10 | grep "5" -A 3 +5 +6 +7 +8 + +#显示匹配某个结果之前的3行,使用 -B 选项: +seq 10 | grep "5" -B 3 +2 +3 +4 +5 + +#显示匹配某个结果的前三行和后三行,使用 -C 选项: +seq 10 | grep "5" -C 3 +2 +3 +4 +5 +6 +7 +8 + +#如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符: +echo -e "a\nb\nc\na\nb\nc" | grep a -A 1 +a +b +-- +a +b +``` \ No newline at end of file diff --git a/command/groupdel.md b/command/groupdel.md new file mode 100644 index 00000000000..99148ce3415 --- /dev/null +++ b/command/groupdel.md @@ -0,0 +1,25 @@ +groupdel +=== + +用于删除指定的工作组 + +## 补充说明 + +**groupdel命** 用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 + +### 语法 + +``` +groupdel(参数) +``` + +### 参数 + +组:要删除的工作组名。 + +### 实例 + +``` +groupadd damon //创建damon工作组 +groupdel damon //删除这个工作组 +``` \ No newline at end of file diff --git a/command/groupmod.md b/command/groupmod.md new file mode 100644 index 00000000000..20360c1da78 --- /dev/null +++ b/command/groupmod.md @@ -0,0 +1,26 @@ +groupmod +=== + +更改群组识别码或名称 + +## 补充说明 + +**groupmod命** 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。 + +### 语法 + +``` +groupmod(选项)(参数) +``` + +### 选项 + +``` +-g<群组识别码>:设置欲使用的群组识别码; +-o:重复使用群组识别码; +-n<新群组名称>:设置欲使用的群组名称。 +``` + +### 参数 + +组名:指定要修改的工作的组名。 \ No newline at end of file diff --git a/command/grpconv.md b/command/grpconv.md new file mode 100644 index 00000000000..8c22564749f --- /dev/null +++ b/command/grpconv.md @@ -0,0 +1,37 @@ +grpconv +=== + +用来开启群组的投影密码 + +## 补充说明 + +**grpconv命** 用来开启群组的投影密码。Linux系统里的用户和群组密码,分别存放在`/etc`目录下的passwd和group文件中。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在`/etc`目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符。投影密码的功能可随时开启或关闭,您只需执行grpconv指令就能开启群组投影密码。 + +### 语法 + +``` +grpconv +``` + +### 实例 + +设置cdy组密码 + +``` +groupmod --password 123456 cdy +cat /etc/group | grep cdy +cdy:123456:1000: //看出密码是123456 +``` + +启动影子系统 + +``` +grpconv +cat /etc/group | grep cdy +cdy:x:1000: //看出密码段已经被x替代 + +cat /etc/gshadow | grep cdy +cdy:123456:: //已经移到影子文件了 +``` + +注:gshadow, shadow只有root权限才可以查看。 \ No newline at end of file diff --git a/command/grpunconv.md b/command/grpunconv.md new file mode 100644 index 00000000000..b9c063da17e --- /dev/null +++ b/command/grpunconv.md @@ -0,0 +1,37 @@ +grpunconv +=== + +用来关闭群组的投影密码 + +## 补充说明 + +**grpunconv命** 用来关闭群组的投影密码。它会把密码从gshadow文件内,回存到group文件里。 + +### 语法 + +``` +grpunconv +``` + +### 实例 + +未关闭的情况 + +``` +cat /etc/gshadow | grep cdy +cdy:123456:: +``` + +关闭影子密码 + +``` +cat /etc/gshadow +cat: /etc/gshadow: 没有那个文件或目录 +``` + +查看密码已经复制到`/etc/group`中了。 + +``` +cat /etc/group | grep cdy +cdy:123456:1000: +``` \ No newline at end of file diff --git a/command/gunzip.md b/command/gunzip.md new file mode 100644 index 00000000000..7a1eeaa1f42 --- /dev/null +++ b/command/gunzip.md @@ -0,0 +1,64 @@ +gunzip +=== + +用来解压缩文件 + +## 补充说明 + +**gunzip命** 用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。 + +### 语法 + +``` +gunzip(选项)(参数) +``` + +### 选项 + +``` +-a或——ascii:使用ASCII文字模式; +-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备; +-f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接; +-h或——help:在线帮助; +-l或——list:列出压缩文件的相关信息; +-L或——license:显示版本与版权信息; +-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理; +-N或——name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上; +-q或——quiet:不显示警告信息; +-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理; +-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串; +-t或——test:测试压缩文件是否正确无误; +-v或——verbose:显示指令执行过程; +-V或——version:显示版本信息; +``` + +### 参数 + +文件列表:指定要解压缩的压缩包。 + +### 实例 + +首先将`/etc`目录下的所有文件以及子目录进行压缩,备份压缩包etc.zip到`/opt`目录,然后对etc.zip文件进行gzip压缩,设置gzip的压缩级别为9。 + +``` +zip –r /opt/etc.zip /etc +gzip -9v /opt/etc.zip +``` + +查看上述etc.zip.gz文件的压缩信息。 + +``` +gzip -l /opt/etc.zip.gz +compressed uncompressed ratio uncompressed_name +11938745 12767265 6.5% /opt/etc.zip +``` + +解压上述etc.zip.gz文件到当前目录。 + +``` +[root@mylinux ~]#gzip –d /opt/etc.zip.gz +或者执行 +[root@mylinux ~]#gunzip /opt/etc.zip.gz +``` + +通过上面的示例可以知道`gzip –d`等价于`gunzip`命令。 \ No newline at end of file diff --git a/command/gzexe.md b/command/gzexe.md new file mode 100644 index 00000000000..a26adc0d763 --- /dev/null +++ b/command/gzexe.md @@ -0,0 +1,24 @@ +gzexe +=== + +用来压缩可执行文件 + +## 补充说明 + +**gzexe命** 用来压缩可执行文件,压缩后的文件仍然为可执行文件,在执行时进行自动解压缩。当您去执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。这个命令也可以看成是gunzip命令的一个扩展。 + +### 语法 + +``` +gzexe(选项)(参数) +``` + +### 选项 + +``` +-d:解压缩被gzexe压缩过的可执行文件。 +``` + +### 参数 + +文件:指定需要压缩的可执行文件。 \ No newline at end of file diff --git a/command/gzip.md b/command/gzip.md new file mode 100644 index 00000000000..021cde036f0 --- /dev/null +++ b/command/gzip.md @@ -0,0 +1,83 @@ +gzip +=== + +用来压缩文件 + +## 补充说明 + +**gzip命** 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。 + +gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 + +### 语法 + +``` +gzip(选项)(参数) +``` + +### 选项 + +``` +-a或——ascii:使用ASCII文字模式; +-d或--decompress或----uncompress:解开压缩文件; +-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接; +-h或——help:在线帮助; +-l或——list:列出压缩文件的相关信息; +-L或——license:显示版本与版权信息; +-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记; +-N或——name:压缩文件时,保存原来的文件名称及时间戳记; +-q或——quiet:不显示警告信息; +-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理; +-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串; +-t或——test:测试压缩文件是否正确无误; +-v或——verbose:显示指令执行过程; +-V或——version:显示版本信息; +-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高; +--best:此参数的效果和指定“-9”参数相同; +--fast:此参数的效果和指定“-1”参数相同。 + +``` + +### 参数 + +文件列表:指定要压缩的文件列表。 + +### 实例 + +把test6目录下的每个文件压缩成.gz文件 + +``` +gzip * +``` + +把上例中每个压缩的文件解压,并列出详细的信息 + +``` +gzip -dv * +``` + +详细显示例1中每个压缩的文件的信息,并不解压 + +``` +gzip -l * +``` + +压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz + +``` +gzip -r log.tar +``` + +递归的压缩目录 + +``` +gzip -rv test6 +``` + +这样,所有test下面的文件都变成了*.gz,目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。 + +递归地解压目录 + +``` +gzip -dr test6 +``` \ No newline at end of file diff --git a/command/halt.md b/command/halt.md new file mode 100644 index 00000000000..35cc10e451b --- /dev/null +++ b/command/halt.md @@ -0,0 +1,32 @@ +halt +=== + +关闭正在运行的Linux操作系统 + +## 补充说明 + +**halt命** 用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 + +### 语法 + +``` +halt(选项) +``` + +### 选项 + +``` +-d:不要在wtmp中记录; +-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统; +-i:在halt之前,关闭全部的网络界面; +-n:halt前,不用先执行sync; +-p:halt之后,执行poweroff; +-w:仅在wtmp中记录,而不实际结束系统。 +``` + +### 实例 + +``` +halt -p //关闭系统后关闭电源。 +halt -d //关闭系统,但不留下纪录。 +``` \ No newline at end of file diff --git a/command/hdparm.md b/command/hdparm.md new file mode 100644 index 00000000000..a6e3fe5329c --- /dev/null +++ b/command/hdparm.md @@ -0,0 +1,113 @@ +hdparm +=== + +显示与设定硬盘的参数 + +## 补充说明 + +**hdparm命** 提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数。 + +### 语法 + +``` +hdparm(选项)(参数) +``` + +### 选项 + +``` +-a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定; +-A<0或1>:启动或关闭读取文件时的快取功能; +-c:设定IDE32位I/O模式; +-C:检测IDE硬盘的电源管理模式; +-d<0或1>:设定磁盘的DMA模式; +-f:将内存缓冲区的数据写入硬盘,并清楚缓冲区; +-g:显示硬盘的磁轨,磁头,磁区等参数; +-h:显示帮助; +-i:显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供; +-I:直接读取硬盘所提供的硬件规格信息; +-k<0或1>:重设硬盘时,保留-dmu参数的设定; +-K<0或1>:重设硬盘时,保留-APSWXZ参数的设定; +-m<磁区数>:设定硬盘多重分区存取的分区数; +-n<0或1>:忽略硬盘写入时所发生的错误; +-p:设定硬盘的PIO模式; +-P<磁区数>:设定硬盘内部快取的分区数; +-q:在执行后续的参数时,不在屏幕上显示任何信息; +-r<0或1>:设定硬盘的读写模式; +-S<时间>:设定硬盘进入省电模式前的等待时间; +-t;评估硬盘的读取效率; +-T:平谷硬盘快取的读取效率; +-u<0或1>:在硬盘存取时,允许其他中断要求同时执行; +-v:显示硬盘的相关设定; +-w<0或1>:设定硬盘的写入快取; +-X<传输模式>:设定硬盘的传输模式; +-y:使IDE硬盘进入省电模式; +-Y:使IDE硬盘进入睡眠模式; +-Z:关闭某些Seagate硬盘的自动省电功能。 +``` + +### 参数 + +设备文件:指定id驱动对应的设备文件名。 + +### 实例 + +显示硬盘的相关设置: + +``` +hdparm /dev/sda +/dev/sda: +IO_support = 0 (default 16-bit) +readonly = 0 (off) +readahead = 256 (on) +geometry = 19457[柱面数]/255[磁头数]/63[扇区数], sectors = 312581808[总扇区数], start = 0[起始扇区数] + +``` + +显示硬盘的柱面、磁头、扇区数: + +``` +hdparm -g /dev/sda +/dev/sda: +geometry = 19457[柱面数]/255[磁头数]/63[扇区数], sectors = 312581808[总扇区数], start = 0[起始扇区数] +``` + +测试硬盘的读取速度: + +``` +hdparm -T /dev/sda +/dev/sda: + Timing cached reads: 4684 MB in 2.00 seconds = 2342.92 MB/sec +``` + +测试硬盘缓存的读取速度: + +``` +hdparm -T /dev/xvda +/dev/xvda: +Timing cached reads: 11154 MB in 1.98 seconds = 5633.44 MB/sec + +``` + +检测硬盘的电源管理模式: + +``` +hdparm -C /dev/sda +/dev/sda: +drive state is: standby [省电模式] +``` + +查询并设置硬盘多重扇区存取的扇区数,以增进硬盘的存取效率: + +``` +hdparm -m /dev/sda +hdparm -m #参数值为整数值如8 /dev/sda +``` + +**附:硬盘坏道修复方法** + +``` +检查:smartctl -l selftest /dev/sda +卸载:umount /dev/sda* +修复:badblocks /dev/sda +``` \ No newline at end of file diff --git a/command/hwclock.md b/command/hwclock.md new file mode 100644 index 00000000000..f1e67a7528b --- /dev/null +++ b/command/hwclock.md @@ -0,0 +1,62 @@ +hwclock +=== + +显示与设定硬件时钟 + +## 补充说明 + +**hwclock命** 是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。 + +在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。 + +### 语法 + +``` +hwclock(选项) +``` + +### 选项 + +``` +--adjust:hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟; +--debug:显示hwclock执行时详细的信息; +--directisa:hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟; +--hctosys:将系统时钟调整为与目前的硬件时钟一致; +--set --date=<日期与时间>:设定硬件时钟; +--show:显示硬件时钟的时间与日期; +--systohc:将硬件时钟调整为与目前的系统时钟一致; +--test:仅测试程序,而不会实际更改硬件时钟; +--utc:若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作; +--version:显示版本信息。 +``` + +### 实例 + +设置硬件时间要依赖于操作系统时间,具体方法如下: + +``` +hwclock –systohc +hwclock --systohc –-utc +``` + +不加任何参数使用hwclock,可以查看当前的硬件日期和时间。 + +``` +hwclock +``` + +查看clock文件,确认是否设置了UTC: + +``` +cat /etc/default/rcS +UTC=yes +``` + +在其他一些版本的Linux(如RebHat)中可以这样查看: + +``` +cat /etc/sysconfig/clock +ZONE="America/Los_Angeles" +UTC=false +ARC=false +``` \ No newline at end of file diff --git a/command/id.md b/command/id.md new file mode 100644 index 00000000000..9d08e15edc3 --- /dev/null +++ b/command/id.md @@ -0,0 +1,75 @@ +id +=== + +显示用户的ID以及所属群组的ID + +## 补充说明 + +**id命** 可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。 + +当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在`/etc/group`文件中搜寻。如往常一样,你可以在控制台输入`man id`进入id的手册页来获取更多的详情。 + +### 语法 + +``` +id -gGnru][--version][用户名称] +``` + +### 选项 + +``` +-g或--group   显示用户所属群组的ID。 +-G或--groups 显示用户所属附加群组的ID。 +-n或--name   显示用户,所属群组或附加群组的名称。 +-r或--real   显示实际ID。 +-u或--user   显示用户ID。 +-help   显示帮助。 +-version   显示版本信息。 +``` + +### 实例 + +``` +[root@localhost ~]# id +uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) +``` + +解释:用户root的UID号码 = 0,GID号码 = 0。用户root是下面组的成员: + +* root组GID号是:0 +* bin组GID号是:1 +* daemon组GID号是:2 +* sys组GID号是:3 +* adm组GID号是:4 +* disk组GID号是:6 +* wheel组GID号是:10 + +打印用户名、UID 和该用户所属的所有组,要这么做,我们可以使用 -a 选项: + +``` +[root@localhost ~]# id -a +uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) +``` + +输出所有不同的组ID ,有效的,真实的和补充的,我们可以使用 -G 选项来实现: + +``` +[root@localhost ~]# id -G +0 1 2 3 4 6 10 +``` + +结果只会显示GID号。你可以和`/etc/group`文件比较。下面是`/etc/group`文件的示例内容: + +只输出有效的组ID,通过使用 -g 选项来只输出有效组ID: + +``` +[root@localhost ~]# id -g +0 +``` + +输出特定用户信息,我们可以输出特定的用户信息相关的UID和GID。只需要在id命令后跟上用户名: + +``` +[root@localhost ~]# id www +uid=500(www) gid=500(www) groups=500(www) +``` \ No newline at end of file diff --git a/command/ifconfig.md b/command/ifconfig.md new file mode 100644 index 00000000000..6b0012c93ff --- /dev/null +++ b/command/ifconfig.md @@ -0,0 +1,117 @@ +ifconfig +=== + +配置和显示Linux系统网卡的网络参数 + +## 补充说明 + +**ifconfig命** 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 + +### 语法 + +``` +ifconfig(参数) +``` + +### 参数 + +``` +add<地址>:设置网络设备IPv6的ip地址; +del<地址>:删除网络设备IPv6的IP地址; +down:关闭指定的网络设备; +<硬件地址>:设置网络设备的类型与硬件地址; +io_addr:设置网络设备的I/O地址; +irq:设置网络设备的IRQ; +media<网络媒介类型>:设置网络设备的媒介类型; +mem_start<内存地址>:设置网络设备在主内存所占用的起始地址; +metric<数目>:指定在计算数据包的转送次数时,所要加上的数目; +mtu<字节>:设置网络设备的MTU; +netmask<子网掩码>:设置网络设备的子网掩码; +tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址; +up:启动指定的网络设备; +-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理; +-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能; +-promisc:关闭或启动指定网络设备的promiscuous模式; +IP地址:指定网络设备的IP地址; +网络设备:指定网络设备的名称。 +``` + +### 实例 + +**显示网络设备信息(激活状态的):** + +``` +[root@localhost ~]# ifconfig +eth0 Link encap:Ethernet HWaddr 00:16:3E:00:1E:51 + inet addr:10.160.7.81 Bcast:10.160.15.255 Mask:255.255.240.0 + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:61430830 errors:0 dropped:0 overruns:0 frame:0 + TX packets:88534 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:3607197869 (3.3 GiB) TX bytes:6115042 (5.8 MiB) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:16436 Metric:1 + RX packets:56103 errors:0 dropped:0 overruns:0 frame:0 + TX packets:56103 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:5079451 (4.8 MiB) TX bytes:5079451 (4.8 MiB) +``` + +说明: + +**eth0**表示第一块网卡,其中`HWaddr`表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是`00:16:3E:00:1E:51`。 + +**inet addr**用来表示网卡的IP地址,此网卡的IP地址是`10.160.7.81`,广播地址`Bcast:10.160.15.255`,掩码地址`Mask:255.255.240.0`。 + +**lo**是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回坏地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。 + +* 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。 +* 第二行:网卡的IP地址、子网、掩码。 +* 第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。 +* 第四、五行:接收、发送数据包情况统计。 +* 第七行:接收、发送数据字节数统计信息。 + +**启动关闭指定网卡:** + +``` +ifconfig eth0 up +ifconfig eth0 down +``` + +`ifconfig eth0 up`为启动网卡eth0,`ifconfig eth0 down`为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。 + +**为网卡配置和删除IPv6地址:** + +``` +ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 +ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 +``` + +**用ifconfig修改MAC地址:** + +``` +ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE +``` + +**配置IP地址:** + +``` +[root@localhost ~]# ifconfig eth0 192.168.2.10 +[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 +[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 +``` + +**启用和关闭arp协议:** + +``` +ifconfig eth0 arp #开启网卡eth0 的arp协议 +ifconfig eth0 -arp #关闭网卡eth0 的arp协议 +``` + +**设置最大传输单元:** + +``` +ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes +``` \ No newline at end of file diff --git a/command/indent.md b/command/indent.md new file mode 100644 index 00000000000..32379fcccef --- /dev/null +++ b/command/indent.md @@ -0,0 +1,84 @@ +indent +=== + +格式化C语言的源文件 + +## 补充说明 + +**indent命** 可辨识C的原始代码文件,并加以格式化,以方便程序员阅读、修改等操作。 + +### 语法 + +``` +indent(选项)(源文件) +或 +indent(选项)(源文件)(-o 目标文件) +``` + +### 选项 + +``` +-bad:在声明区加上空白行; +-bap:添加空白行; +-bbb:在注释后面添加空白行; +-bc:在声明段中,如果出现逗号就换行; +-bl:if(或是else、for等)与后面执行区段的“{”不同行,且“}”自成一行-bli<缩排格数>设置{}缩排的格数; +-br:if(或是else、for等)与后面执行区段的“{”同行,且“}”自成一行; +-bs:在sizeof之后空一格; +-c<栏数>:将注释置于程序右侧指定的栏位; +-cd<栏数>:将注释置于声明右侧指定的栏位; +-cdb:注释符号自成一行; +-ce:将else置于“}”(if执行区段的结尾)之后; +-ci:<缩排格数>:叙述过长而换行时,指定换行后缩排的格数; +-cli<缩排格数>:使用case时,switch缩排的格数; +-cp<栏数>:将注释置于else与elseif叙述右侧指定的栏位; +-cs:在case之后空一格; +-d<缩排格数>:针对不是放在程序码右侧的注释,设置其缩排格数; +-di<栏数>:将声明区段的变量置于指定的栏位; +-fc1:针对放在每行最前端的注释,设置其格式; +-fca:设置所有注释的格式; +-gnu:使用指定的GNU格式,该参数为默认值; +-i<格数>:设置缩排的格数; +-ip<格数>:设置参数的缩排格数; +-kr:指定使用Kernighan&Ritchie的格式; +-lp:叙述过长而换行,且叙述中包含了括号时,将括号中的每行起始栏位内容垂直对其排列; +-nbad:在声明区段后不要加上空白行; +-nbap:在程序后面不添加空白行; +-nbbb:在注释段后面不添加空白行; +-nbc:在声明段中,即使出现逗号,也不换行; +-ncdb:注释符号不自成一行; +-nce:不将else置于“}”后面; +-ncs:不在case后面空一格; +-nfc1:不要格式化放在每行最前端的注释; +-nfca:不用格式化任何的注释; +-nip:参数不要缩排; +-nlp:叙述过长而换行,且叙述中包含了括号时,不用将括号中的每行起始栏位垂直对其排列; +-npcs:在调用函数名之后,不要添加空格; +-npro:不要读取indent的配置文件“.indent.pro”; +-npsl:程序类型与程序名称放在同一行; +-nsc:注释左侧不要添加星号; +-nsob:不用处理多余的空白行; +-nss:若for或while区段仅有一行时,在分号前不加空格; +-nv:不显示详细的信息; +-orig:使用berkeley格式; +-pcs:在调用函数名与“{”之间添加空格; +-psl:程序类型置于程序名称的前一行; +-sc:在每行注释左侧添加星号; +-sob:删除多余的空白行; +-ss:若for或swile区段仅有一行时,在分号前加上空格; +-st:将结果显示在标准输出设备上; +-T:数据类型名称缩排; +-ts<格数>:设置tab的长度; +-v:显示详细的执行过程; +--version:显示版本信息。 +``` + +### 实例 + +使用indent命令将C语言源文件"test.c"中所有的sizeof后面添加一个空格,输入如下命令: + +``` +indent -bs /home/rootlocal/桌面/test.c +``` + +执行上面的命令后,用户可以打开指定的源文件查看在sizeof后面是否都添加了一个空格。由于该命令的参数非常多,所以用户可以根据实际需要选择适合的参数进行使用即可。 \ No newline at end of file diff --git a/command/insmod.md b/command/insmod.md new file mode 100644 index 00000000000..ee7a6043e13 --- /dev/null +++ b/command/insmod.md @@ -0,0 +1,46 @@ +insmod +=== + +将给定的模块加载到内核中 + +## 补充说明 + +**insmod命** 用于将给定的模块加载到内核中。Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。 + +### 语法 + +``` +insmod(选项)(参数) +``` + +### 选项 + +``` +-f:不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入; +-k:将模块设置为自动卸除; +-m:输出模块的载入信息; +-o<模块名称>:指定模块的名称,可使用模块文件的文件名; +-p:测试模块是否能正确地载入kernel; +-s:将所有信息记录在系统记录文件中; +-v:执行时显示详细的信息; +-x:不要汇出模块的外部符号; +-X:汇出模块所有的外部符号,此为预设置。 +``` + +### 参数 + +内核模块:指定要加载的内核模块文件。 + +### 实例 + +加载RAID1阵列级别模块,如下所示: + +``` +[root@localhost boot]# insmod /lib/modules/2.6. +18-8.el5/kernel/drivers/md/raid1.ko + +root@localhost boot | grep raid1 +raid1 25153 0 +``` + +从以上显示结果可知,RAID1模块已加载成功。只是在使用insmod命令加载模块时,需要使用绝对路径方能加载,且加载时无法自动解决依赖关系。 \ No newline at end of file diff --git a/command/ispell.md b/command/ispell.md new file mode 100644 index 00000000000..9af5112e77a --- /dev/null +++ b/command/ispell.md @@ -0,0 +1,18 @@ +ispell +=== + +检查文件中出现的拼写错误 + +## 补充说明 + +**ispell命** 用于检查文件中出现的拼写错误。 + +### 语法 + +``` +ispell(参数) +``` + +### 参数 + +文件:指定要进行拼写检查的文件。 \ No newline at end of file diff --git a/command/jed.md b/command/jed.md new file mode 100644 index 00000000000..aed2aecc659 --- /dev/null +++ b/command/jed.md @@ -0,0 +1,67 @@ +jed +=== + +主要用于编辑代码的编辑器 + +## 补充说明 + +**jed命** 是由Slang所开发,其主要用用途是编辑程序的源代码。它支持彩色语法加亮显示,可以模拟emacs,EDT,wordstar和Brief编辑器。 + +### 语法 + +``` +jed(选项)(参数) +``` + +### 选项 + +``` +-2:显示上下两个编辑区; +-batch:以批处理模式来执行; +-f<函数>:执行Slang函数; +-g<行数>:移到缓冲区中指定的行数; +-i<文件>:将指定的文件载入缓冲区; +-n:不要载入jed.rc配置文件; +-s<字符串>:查找并移到指定的字符串。 +``` + +### 参数 + +文件:指定待编辑的文件列表。 + +### 实例 + +以上下两个编辑区的方式,开启 mysource.c 原始代码文件。若要切换编辑区,可利用稍后介绍的命令,开启操作命令,开启功能表后,按 3 ,再按 2 ,即可切换编辑区: + +``` +jed -2 mysource.c +``` + +**操作** + +有些Emacs的组合键和jed菜单组合键冲突例如Alt+f在Emacs中应该是“前进一个单词”,而在jed中则是“文件菜单” 想使用Emacs风格的组合键的话,编辑`/usr/share/jed/lib/menus.slc`找到如下段落: + +``` +unsetsetkey ("selectmenubar", "\em"); +unsetsetkey ("@\emF", "\ef"); +unsetsetkey ("@\emE", "\ee"); +unsetsetkey ("@\emo", "\eo"); +% Mode menu unsetsetkey ("@\emS", "\es"); +unsetsetkey ("@\emB", "\eb"); +unsetsetkey ("@\emi", "\ei"); +unsetsetkey ("@\emH", "\eh"); +unset_setkey ("@\emy", "\ey"); +``` + +可以根据自己的需要修改,也可以简单的注释掉;使用菜单可以用F10键。 + +由于Jed可模拟多种编辑器,其各自按键指令也有所不同。这里以模拟 Emacs 为例,说明在编辑器中的操作方法。 + +**文件** + +``` +/usr/share/jed/lib/*.sl 这是默认的运行jed slang的文件。 +/usr/share/jed/lib/site.sl 这是默认的启动文件。 +/etc/jed.rc 这是全局系统配置文件。 +~/.jedrc 这是用户配置文件。 +``` \ No newline at end of file diff --git a/command/joe.md b/command/joe.md new file mode 100644 index 00000000000..91389b68198 --- /dev/null +++ b/command/joe.md @@ -0,0 +1,45 @@ +joe +=== + +强大的纯文本编辑器 + +## 补充说明 + +**joe命** 是一款功能强大的纯文本编辑器,拥有众多编写程序和文本的优良特性。 + +### 语法 + +``` +joe(选项)(参数) +``` + +### 选项 + +``` +-force:强制在最后一行的结尾处加上换行符号; +-lines<行数>:设置行数; +-lightoff:选取的区块在执行完区块命令后,就会恢复成原来的状态; +-autoindent:自动缩排; +-backpath:<目录>:指定备份文件的目录; +-beep:编辑时,若有错误即发出哔声; +-columns<栏位>:设置栏数; +-csmode:可执行连续查找模式; +-dopadding:是程序跟tty间存在缓冲区; +-exask:在程序中,执行“Ctrl+k+x”时,会先确认是否要保存文件; +-force:强制在最后一行的结尾处加上换行符号; +-help:执行程序时一并显示帮助; +-keepup:在进入程序后,画面上方为状态列; +-marking:在选取区块时,反白区块会随着光标移动; +-mid:当光标移出画面时,即自动卷页,使光标回到中央; +-nobackups:不建立备份文件; +-nonotice:程序执行时,不显示版本信息; +-nosta:程序执行时,不显示状态列; +-noxon:尝试取消“Ctrl+s”和“Ctrl+q”键的功能; +-orphan:若同时开启一个以上的文件,则其他文件会置于独立的缓冲区,而不会另外开启编辑区; +-pg<行数>:按“PageUp”或“PageDown”换页时,所要保留前一页的行数; +-skiptop<行数>:不使用屏幕上方指定的行数。 +``` + +### 参数 + +文件:指定要编辑的文件。 \ No newline at end of file diff --git a/command/join.md b/command/join.md new file mode 100644 index 00000000000..bb301d10926 --- /dev/null +++ b/command/join.md @@ -0,0 +1,32 @@ +join +=== + +两个文件中指定栏位内容相同的行连接起来 + +## 补充说明 + +**join命** 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。 + +### 语法 + +``` +join(选项)(参数) +``` + +### 选项 + +``` +-a<1或2>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行; +-e<字符串>:若[文件1]与[文件2]中找不到指定的栏位,则在输出中填入选项中的字符串; +-i或--ignore-case:比较栏位内容时,忽略大小写的差异; +-o<格式>:按照指定的格式来显示结果; +-t<字符>:使用栏位的分割字符; +-v<1或2>:更-a相同,但是只显示文件中没有相同栏位的行; +-1<栏位>:连接[文件1]指定的栏位; +-2<栏位>:连接[文件2]指定的栏位。 +``` + +### 参数 + +* 文件1:要进行合并操作的第1个文件参数; +* 文件2:要进行合并操作的第2个文件参数。 \ No newline at end of file diff --git a/command/kill.md b/command/kill.md new file mode 100644 index 00000000000..1f84e6ff6d8 --- /dev/null +++ b/command/kill.md @@ -0,0 +1,76 @@ +kill +=== + +删除执行中的程序或工作 + +## 补充说明 + +**kill命** 用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。 + +### 语法 + +``` +kill(选项)(参数) +``` + +### 选项 + +``` +-a:当处理当前进程时,不限制命令名和进程号的对应关系; +-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称; +-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号; +-s <信息名称或编号>:指定要送出的信息; +-u:指定用户。 +``` + +### 参数 + +进程或作业识别号:指定要删除的进程或作业。 + +### 实例 + +列出所有信号名称: + +``` + kill -l + 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL + 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE + 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 +13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT +17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP +21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU +25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH +29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN +35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 +39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 +43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 +47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 +51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 +55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 +59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 +63) SIGRTMAX-1 64) SIGRTMAX +``` + +只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,**下面是常用的信号:** + +``` +HUP 1 终端断线 +INT 2 中断(同 Ctrl + C) +QUIT 3 退出(同 Ctrl + \) +TERM 15 终止 +KILL 9 强制终止 +CONT 18 继续(与STOP相反, fg/bg命令) +STOP 19 暂停(同 Ctrl + Z) +``` + +先用ps查找进程,然后用kill杀掉: + +``` +ps -ef | grep vim +root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log +root 3370 2822 0 16:21 pts/0 00:00:00 grep vim + +kill 3268 +kill 3268 +-bash: kill: (3268) - 没有那个进程 +``` \ No newline at end of file diff --git a/command/last.md b/command/last.md new file mode 100644 index 00000000000..96d849b5aa5 --- /dev/null +++ b/command/last.md @@ -0,0 +1,48 @@ +last +=== + +列出目前与过去登入系统的用户相关信息 + +## 补充说明 + +**last命** 用于显示用户最近登录信息。单独执行last命令,它会读取`/var/log/wtmp`的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。 + +### 语法 + +``` +last(选项)(参数) +``` + +### 选项 + +``` +-a:把从何处登入系统的主机名称或ip地址,显示在最后一行; +-d:将IP地址转换成主机名称; +-f <记录文件>:指定记录文件。 +-n <显示列数>或-<显示列数>:设置列出名单的显示列数; +-R:不显示登入系统的主机名称或IP地址; +-x:显示系统关机,重新开机,以及执行等级的改变等信息。 +``` + +### 参数 + +* 用户名:显示用户登录列表; +* 终端:显示从指定终端的登录列表。 + +### 实例 + +last命令用了显示用户登录情况,以下是直接显示固定行数的记录: + +``` +last -10 +root pts/0 221.6.45.34 Tue Dec 17 09:40 still logged in +root pts/0 221.6.45.34 Mon Dec 16 09:00 - 11:57 (02:56) +root pts/0 222.94.97.122 Sun Dec 15 20:39 - 23:28 (02:48) +root pts/0 222.95.209.80 Sat Dec 14 14:39 - 14:58 (00:18) +root pts/0 221.6.45.34 Thu Dec 12 16:55 - 17:37 (00:41) +root pts/0 49.65.139.195 Wed Dec 11 20:40 - 21:16 (00:35) +root pts/0 49.65.139.195 Wed Dec 11 19:46 - 20:03 (00:17) +root pts/0 221.6.45.34 Tue Dec 10 14:41 - 15:52 (01:10) +root pts/0 221.6.45.34 Mon Dec 9 17:24 - 17:30 (00:06) +root pts/0 221.6.45.34 Mon Dec 9 09:38 - 11:41 (02:02) +``` \ No newline at end of file diff --git a/command/lastb.md b/command/lastb.md new file mode 100644 index 00000000000..b1341274504 --- /dev/null +++ b/command/lastb.md @@ -0,0 +1,61 @@ +lastb +=== + +列出登入系统失败的用户相关信息 + +## 补充说明 + +**lastb命** 用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于`/var/log`目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。 + +### 语法 + +``` +lastb(选项)(参数) +``` + +### 选项 + +``` +-a:把从何处登入系统的主机名称或ip地址显示在最后一行; +-d:将IP地址转换成主机名称; +-f<记录文件>:指定记录文件; +-n<显示列数>或-<显示列数>:设置列出名单的显示列数; +-R:不显示登入系统的主机名称或IP地址; +-x:显示系统关机,重新开机,以及执行等级的改变等信息。 +``` + +### 参数 + +* 用户名:显示中的用户的登录列表; +* 终端:显示从指定终端的登录列表。 + +### 实例 + +首次运行lastb命令会报下的错误: + +``` +lastb: /var/log/btmp: No such file or directory +Perhaps this file was removed by the operator to prevent logging lastb info. +``` + +只需建立这个不存在的文件即可。 + +``` +touch /var/log/btmp +``` + +使用ssh的登录失败不会记录在btmp文件中。 + +``` +lastb | head +root ssh:notty 110.84.129.3 Tue Dec 17 06:19 - 06:19 (00:00) +root ssh:notty 110.84.129.3 Tue Dec 17 04:05 - 04:05 (00:00) +root ssh:notty 110.84.129.3 Tue Dec 17 01:52 - 01:52 (00:00) +root ssh:notty 110.84.129.3 Mon Dec 16 23:38 - 23:38 (00:00) +leonob ssh:notty 222.211.85.18 Mon Dec 16 22:18 - 22:18 (00:00) +leonob ssh:notty 222.211.85.18 Mon Dec 16 22:18 - 22:18 (00:00) +root ssh:notty 110.84.129.3 Mon Dec 16 21:25 - 21:25 (00:00) +root ssh:notty 110.84.129.3 Mon Dec 16 19:12 - 19:12 (00:00) +root ssh:notty 110.84.129.3 Mon Dec 16 17:00 - 17:00 (00:00) +admin ssh:notty 129.171.193.99 Mon Dec 16 16:52 - 16:52 (00:00) +``` \ No newline at end of file diff --git a/command/lha.md b/command/lha.md new file mode 100644 index 00000000000..30ba9f0fa1c --- /dev/null +++ b/command/lha.md @@ -0,0 +1,43 @@ +lha +=== + +压缩或解压缩lzh格式文件 + +## 补充说明 + +**lha命** 是从lharc演变而来的压缩程序,文件经它压缩后,会另外产生具有`.lzh`扩展名的压缩文件。 + +### 选项 + +``` +-a或a:压缩文件,并加入到压缩文件内。 +-a<0/1/2>/u 压缩文件时,采用不同的文件头。 +-c或c:压缩文件,重新建构新的压缩文件后,再将其加入。 +-d或d:从压缩文件内删除指定的文件。 +-d或d:压缩文件,然后将其加入,重新建构,更新压缩文件或,删除原始文件,也就是把文件移到压缩文件中。 +-e或e:解开压缩文件。 +-f或f:强制执行lha命令,在解压时会直接覆盖已有的文件而不加以询问。 +-g或g:使用通用的压缩格式,便于解决兼容性的问题。 +-i或i:解开压缩文件时,忽略保存在压缩文件内的文件路径,直接将其解压后存放在现行目录下或是指定的目录中。 +-l或l:列出压缩文件的相关信息。 +-m或m:此选项的效果和同时指定"-ad"选项相同。 +-n或n:不执行指令,仅列出实际执行会进行的动作。 +-o或o:采用lharc兼容格式,将压缩后的文件加入,更新压缩文件。 +-p或p:从压缩文件内输出到标准输出设备。 +-q或q:不显示指令执行过程。 +-t或t:检查备份文件内的每个文件是否正确无误。 +-u或u:更换较新的文件到压缩文件内。 +-u或u:在文件压缩时采用不同的文件头,然后更新到压缩文件内。 +-v或v:详细列出压缩文件的相关信息。 +-w=<目的目录>或w=<目的目录>:指定解压缩的目录。 +-x或x:解开压缩文件。 +-z或z:不压缩文件,直接把它加入,更新压缩文件。 +``` + +### 实例 + +``` +lha -a abc.lhz a.b #压缩a.b文件,压缩后生成 abc.lhz 文件 +lha -a abc2 /home/hnlinux #压缩目录 +lha -xiw=agis abc #解压文件abc,到当前目录 +``` \ No newline at end of file diff --git a/command/lilo.md b/command/lilo.md new file mode 100644 index 00000000000..33c46911d1d --- /dev/null +++ b/command/lilo.md @@ -0,0 +1,134 @@ +lilo +=== + +安装核心载入开机管理程序 + +## 补充说明 + +**lilo命** 用于安装核心载入,开机管理程序。lilo是个Linux系统核心载入程序,同时具备管理开机的功能。单独执行lilo指令,它会读取/etc/lilo.conf配置文件,然后根据其内容安装lilo。 + +Linux lilo已经成为所有 Linux 发行版的标准组成部分。作为一个 较老的/最老的 Linux 引导加载程序,它那不断壮大的 Linux 社区支持使它能够随时间的推移而发展,并始终能够充当一个可用的现代引导加载程序。有一些新的功能,比如增强的用户界面,以及对能够突破原来 1024-柱面限制的新 BIOS 功能的利用。 + +虽然 LILO 仍在不断地发展,但 LILO 工作原理的基本概念保持不变。 + +### 语法 + +``` +lilo(选项) +``` + +### 选项 + +``` +-b<外围设备代号>:指定安装lilo之处的外围设备代号; +-c:使用紧致映射模式; +-C<配置文件>:指定lilo的配置文件; +-d<延迟时间>:设置开机延迟时间; +-D<识别标签>:指定开机后预设启动的操作系统,或系统核心识别标签; +-f<几何参数文件>:指定磁盘的几何参数配置文件; +-i<开机磁区文件>:指定欲使用的开机磁区文件,预设是/boot目录里的boot.b文件; +-I<识别标签>:显示系统核心存放之处; +-l:产生线形磁区地址; +-m<映射文件>:指定映射文件; +-P:决定要修复或忽略分区表的错误; +-q:列出映射的系统核心文件; +-r<根目录>:设置系统启动时欲挂入成为根目录的目录; +-R<执行指令>:设置下次启动系统时,首先执行的指令; +-s<备份文件>:指定备份文件; +-S<备份文件>:强制指定备份文件; +-t:不执行指令,仅列出实际执行会进行的动作; +-u<外围色设备代号>:删除lilo; +-U<外围设备代号>:此选项的效果和指定"-u"参数类似,当不检查时间戳记; +-v:显示指令执行过程; +-V:显示版本信息。 +``` + +### 实例 + +**使用 LILO 作为引导加载程序** + +要使用 LILO 作为引导加载程序,需要做的事情取决于是要进行全新安装还是要让已经安装的 Linux 改为使用 LILO。如果是要进行全新安装,那么直接跳转到 配置 LILO 那一节。如果已经安装了某个 Linux 发行版,那么通常可以选择安装并配置 LILO(并可以将机器引导到新的 Linux 安装)。 + +要将现有的 Linux 迁移到 LILO,首先必须获得最新版本的 LILO(见 参考资料)。在做任何其他事情之前,建议您确保在手边拥有一张 Linux 引导盘 —— 如果偶而弄错了某些地方,它可以提供很大的帮助,能够恢复到初始的 Linux 配置!将 LILO 安装到系统中之后,让它接管 MBR 非常简单。以 root 用户身份输入: + +``` +/sbin/lilo -v -v +``` + +这将使用当前的 LILO 默认值,抹去 MBR 中当前所有内容。不过,请阅读 配置 LILO,以确保能够按预期引导起来。也要注意,如果想要在同一机器上运行 Windows 和 Linux,那么应该先安装 Windows OS,然后再安装 Linux OS,这样,在 Linux 安装中所选择的引导加载程序就不会被 Windows 引导加载程序所覆盖。与 Linux 引导加载程序不同,多数 Window 引导加载程序不支持引导 Linux。如果已经先安装了 Linux,那么只需要自己创建一张 Linux 引导盘,这样就可以在安装完 Windows 之后,回到 Linux 安装中并重写 MBR。 + +**配置 LILO** + +LILO 的配置都是通过位于 /etc/lilo.conf 的一个配置文件来完成的。清单 1 给出了一个示例配置,使用的是我的家用机器,支持 Linux 和 Windows 机器的双重引导。了解我的工作站的基本配置,就可以想像出这些配置是如何与实际机器相关联的: + +主 HDD(物理磁盘 1)上安装了 Windows XP(最初机器上只有它)。在 Linux 术语中,这个 HDD 是 /dev/hda(在 grub 术语中是 hd0,0)。 + +从 HDD(物理磁盘 2)上安装了 Red Hat Linux;root 分区位于这个硬盘驱动器的第三个分区,即 /dev/hdb3(在 GRUB 术语中是 hd1,3)。 + +lilo.conf 示例文件: + +``` +boot=/dev/hda +map=/boot/map +install=/boot/boot.b +prompt +timeout=100 +compact +default=Linux +image=/boot/vmlinuz-2.4.18-14 + label=Linux + root=/dev/hdb3 + read-only + password=linux +other=/dev/hda + label=WindowsXP +``` + +配置文件选项说明: + +* boot= 行告诉 LILO 在哪里安装引导加载程序。在上面的示例中,将把它安装到第一块硬盘的 MBR。也可以选择将 LILO 安装到 /dev/hdb3(示例中的 Linux 分区),这样需要向 /dev/hda 安装另一个引导加载程序,并令其指向 LILO 引导加载程序;然后只需要让 LILO 作为二级引导加载程序。通常,引导加载程序应该位于 /dev/hda。还可以将这个参数指向软盘驱动器(最常见的是 /dev/fd0),来制做 LILO 软盘引导磁盘。 +* map= 指向引导期间 LILO 内部使用的映射文件。当使用 /sbin/lilo 命令安装 LILO 时, 它会自动生成这个文件,其中包含有描述符表(还有其他内容)。建议不要改动这个文件! +* install= 是 LILO 在引导过程中内部使用的文件之一。它同时包含有引导加载程序的主要部分和二级部分。boot.b 文件的 一个片段被写入到 MBR(引导加载程序的主要部分),它会指向那个映射,接下来指向二级引导加载程序。同样,不要改动它! +* prompt= 告诉 LILO 使用用户界面(本例中给出了两个选择 —— Linux 和 WindowsXP)。除了使用 prompt/user 界面以外,在适当情况下还可以为 Linux 内核等指定具体的参数。如果不在配置文件中指定此选项,那么 LILO 将引导到 默认的 OS,不发生任何用户交互,也不会等待。(但是请注意,如果在引导时按下了 SHIFT,那么还是可以得到提示,当不想把 引导加载程序暴露给普通用户时,这非常有用)。 +* timeout= 是引导提示在自动引导默认 OS(本例中是 Linux)之前的等待时间(以十分之一秒为单位)。 如果在 lilo.conf 没有指定 prompt,那么这个参数就会被忽略。 +* compact 选项可以大大加速引导过程,它会将连续的读磁盘的请求合并为一个单独的请求。不过,这可能是 一件祸福参半的事情,因为我在论坛上看到过很多贴子提到了关于此选项的问题。当希望从软盘引导时,这个选项尤其有用。 +* default= 选项告诉 LILO 默认使用哪个映像进行引导,比如在等待超时之后。这与 lilo.conf 文件中的某个映像的 标签相关联。如果没有在配置文件中指定此选项,那么它将引导文件中指定的第一个映像。 +* 对于允许用户引导到的每一个 Linux 版本,都应该指定 image= 及以下三个选项。image 选项指定希望 引导到的内核版本。 +* label= 标明了在运行期间希望能够从用户界面引导的不同 OS。另外,这个标签用于指定引导的默认 OS。 (注意:标签名称中避免出现空格;否则,引导那个文件时会出现无法预期的错误。) +* root= 告诉 LILO OS 文件系统实际所在的位置。在我们的示例中为 /dev/hdb3,即第二块硬盘上的第三个分区。 +* read-only 告诉 LILO 以只读的方式初始引导到文件系统。OS 一旦完全引导起来,就会以读写方式挂载。 +* password= 允许您为将要引导到的特定 OS 设置口令。不幸的是,这个口令是以可读文本的方式保存在 lilo.conf 文件中,所以,所有人都能够读取它。如果需要,还可以对想要引导自的每个操作系统设置口令(在我们的示例中,只为 Linux 的引导 设置了一个口令)。 +* other= 的动作类似于 image 和 root 选项的组合,但是用于除了 Linux 以外的其他操作系统。 在我们的示例中,它告诉 LILO 到哪里去找到 Windows OS(位于第一块硬盘的第一个分区)。如果先安装 Windows,后安装 Linux,通常会是这样。 +* label= 与所有其他 label 选项相同。 + +在 lilo.conf 文件中可以使用很多其他参数,不过清单 1 中的参数就足以让机器可用了。要获得关于 lilo.conf 的这些以及其他参数的 进一步资料,请参考手册页(man lilo.conf)。由于在引导时不会读取 lilo.conf,所以,当这个文件有改动时,需要“更新”MBR。 如果不完成此步骤就重新引导,那么对 lilo.conf 的修改不会在启动中反映出来。与先前将 LILO 写入 MBR 类似,需要运行: + +``` +/sbin/lilo -v -v +``` + +`-v -v`标记会为您给出非常详细的输出。当像我们那样运行 LILO 时,有很多参数可以指定。 参阅手册页以获得更进一步的信息(man lilo)。 + +**初始引导过程** + +当 LILO 初始引导时,它会按次序打印出每个字母 —— L-I-L-O。如果所有字母都显示出来,那么第一阶段引导就成功了。缺少任何内容 都表示出现了问题: + +L:第一阶段引导加载程序已经被加载。如果 LILO 停止在这里,那么是在引导第二阶段引导加载程序时出现了问题。这通常会伴随有一个错误代码。 在这个阶段的常见问题是介质问题,或者在 lilo.conf 文件中指定了不正确的磁盘参数。 + +LI:第二阶段引导加载程序已经被加载。LILO 在此处停止表示第二阶段引导加载程序不能被执行。同样,这可能是因为出现了与只显示 L 类似的问题: 正在加载,或者因 boot.b 文件被破坏、移动或删除而不能加载。 + +LIL:第二阶段引导加载程序正在被执行。此时,可能会再次出现介质问题,或者映射文件(如 lilo.conf 文件中所指定的)在寻找描述符表时 可能会出现问题。 + +LIL?:加载到与上面相同的阶段。这通常意味着加载第二阶段引导加载程序使用了错误的地址,最常见的原因是 boot.b 所在的位置与 lilo.conf 文件所指定的不同。 + +LIL-:加载到与上面相同的阶段。加载描述符表时出现问题,最常见的原因是描述符表错误。 + +LILO:LILO 成功被加载,没有出现任何错误。 + +**引导时的附加配置** + +LILO 被成功加载后,将看到 LILO 提示符。还是使用前面的示例 lilo.conf 文件,此时将有两个选择,可能对 LILO 新手来说并不直观。首先,可以 让 LILO 超时(10 秒后),这将引导`/dev/hdb3`,即 Linux 分区。另外,可以按下 TAB 键,这将列出将要引导的操作系统选项。在我们的示例 lilo.conf 中, 将得到的选项是 “Linux” 和 “Windows”。输入哪一个,就会引导到哪个 OS。指定加载 Linux 选项,会提示输入一个口令,在本例中是 linux。如果输入的口令有误,则会返回 LILO 提示符。 + +不幸的是,LILO 不支持引导期间的交互式配置,所以,只能在 lilo.conf 中或者运行`/sbin/lilo`时指定选项。 + +关于第一次尝试 LILO 的最后一点建议是:我发现使用软盘引导磁盘比使用硬盘实现 LILO 配置更为安全。为此,必须在 lilo.conf 文件中使用`boot=/dev/fd0`替换`boot=/dev/hda`。那样,如果弄乱了lilo.conf文件 中的任何配置,都可以取出引导磁盘并像先前一样引导到 Linux。当使用软盘进行引导一切正常以后,可以将lilo.conf修改回`boot=/dev/hda`,然后最后一次运行`/sbin/lilo`来上传修改。 \ No newline at end of file diff --git a/command/ln.md b/command/ln.md new file mode 100644 index 00000000000..be5b20126cc --- /dev/null +++ b/command/ln.md @@ -0,0 +1,94 @@ +ln +=== + +用来为文件创件连接 + +## 补充说明 + +**ln命** 用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。 + +注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。 + +### 语法 + +``` +ln(选项)(参数) +``` + +### 选项 + +``` +-b或--backup:删除,覆盖目标文件之前的备份; +-d或-F或——directory:建立目录的硬连接; +-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在; +-i或——interactive:覆盖既有文件之前先询问用户; +-n或--no-dereference:把符号连接的目的目录视为一般文件; +-s或——symbolic:对源文件建立符号连接,而非硬连接; +-S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它; +-v或——verbose:显示指令执行过程; +-V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串; +--help:在线帮助; +--version:显示版本信息。 +``` + +### 参数 + +* 源文件:指定连接的源文件。如果使用`-s`选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件; +* 目标文件:指定源文件的目标连接文件。 + +### 实例 + +将目录`/usr/mengqc/mub1`下的文件m2.c链接到目录`/usr/liu`下的文件a2.c + +``` +cd /usr/mengqc +ln /mub1/m2.c /usr/liu/a2.c +``` + +在执行ln命令之前,目录`/usr/liu`中不存在a2.c文件。执行ln之后,在`/usr/liu`目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用`ls -l`命令可以看到链接数的变化。 + +在目录`/usr/liu`下建立一个符号链接文件abc,使它指向目录`/usr/mengqc/mub1` + +``` +ln -s /usr/mengqc/mub1 /usr/liu/abc +``` + +执行该命令后,`/usr/mengqc/mub1`代表的路径将存放在名为`/usr/liu/abc`的文件中。 + +## 扩展知识 + +Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。 + +文件链接有两种形式,即硬链接和符号链接。 + +### 硬链接 + +建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。如图所示的m2.c文件就在目录mub1和liu中都建立了目录项。 + +创建硬链接后,己经存在的文件的I节点号(Inode)会被多个目录文件项使用。一个文件的硬链接数可以在目录的长列表格式的第二列中看到,无额外链接的文件的链接数为l。 + +在默认情况下,ln命令创建硬链接。ln命令会增加链接数,rm命令会减少链接数。一个文件除非链接数为0,否则不会从文件系统中被物理地删除。 + +对硬链接有如下限制: + +* 不能对目录文件做硬链接。 +* 不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。 + +### 符号链接 + +符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件(如图中的abc文件),其中包含它提供链接的另一个文件的路径名,如图中虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。 + +!符号连接 + +与硬链接不同的是,符号链接确实是一个新文件,当然它具有不同的I节点号;而硬链接并没有建立新文件。 + +符号链接没有硬链接的限制,可以对目录文件做符号链接,也可以在不同文件系统之间做符号链接。 + +用`ln -s`命令建立符号链接时,源文件最好用绝对路径名。这样可以在任何工作目录下进行符号链接。而当源文件用相对路径时,如果当前的工作路径与要创建的符号链接文件所在路径不同,就不能进行链接。 + +符号链接保持了链接与源文件或目录之间的区别: + +* 删除源文件或目录,只删除了数据,不会删除链接。一旦以同样文件名创建了源文件,链接将继续指向该文件的新数据。 +* 在目录长列表中,符号链接作为一种特殊的文件类型显示出来,其第一个字母是l。 +* 符号链接的大小是其链接文件的路径名中的字节数。 +* 当用`ln -s`命令列出文件时,可以看到符号链接名后有一个箭头指向源文件或目录,例如`lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file`其中,表示“文件大小”的数字“14”恰好说明源文件名`original_file`由14个字符构成。 \ No newline at end of file diff --git a/command/login.md b/command/login.md new file mode 100644 index 00000000000..821dba45506 --- /dev/null +++ b/command/login.md @@ -0,0 +1,25 @@ +login +=== + +登录系统或切换用户身份 + +## 补充说明 + +**login命** 用于给出登录界面,可用于重新登录或者切换用户身份,也可通过它的功能随时更换登入身份。在Slackware发行版中 ,您可在命令后面附加欲登入的用户名称,它会直接询问密码,等待用户输入。当`/etc/nologin`文件存在时,系统只root帐号登入系统,其他用户一律不准登入。 + +### 语法 + +``` +login(选项)(参数) +``` + +### 选项 + +``` +-p:告诉login指令不销毁环境变量; +-h:指定远程服务器的主机名。 +``` + +### 参数 + +用户名:指定登录使用的用户名。 \ No newline at end of file diff --git a/command/logname.md b/command/logname.md new file mode 100644 index 00000000000..3f073214f7e --- /dev/null +++ b/command/logname.md @@ -0,0 +1,21 @@ +logname +=== + +用来显示用户名称 + +## 补充说明 + +**logname命** 用来显示用户名称。 + +### 语法 + +``` +logname(选项) +``` + +### 选项 + +``` +--help:在线帮助; +--vesion:显示版本信息。 +``` \ No newline at end of file diff --git a/command/logout.md b/command/logout.md new file mode 100644 index 00000000000..00a7d16d538 --- /dev/null +++ b/command/logout.md @@ -0,0 +1,14 @@ +logout +=== + +退出当前登录的Shell + +## 补充说明 + +**logout命** 用于退出当前登录的Shell,logout指令让用户退出系统,其功能和login指令相互对应。 + +### 语法 + +``` +logout +``` \ No newline at end of file diff --git a/command/logrotate.md b/command/logrotate.md new file mode 100644 index 00000000000..befbf045793 --- /dev/null +++ b/command/logrotate.md @@ -0,0 +1,29 @@ +logrotate +=== + +统日志进行轮转、压缩和删除 + +## 补充说明 + +**logrotate命** 用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱。使用logrotate指令,可让你轻松管理系统所产生的记录文件。每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,预设的配置文件存放在`/etc/logrotate.conf`文件中。 + +### 语法 + +``` +logrotate(选项)(参数) +``` + +### 选项 + +``` +-?或--help:在线帮助; +-d或--debug:详细显示指令执行过程,便于排错或了解程序执行的情况; +-f或--force :强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然; +-s<状态文件>或--state=<状态文件>:使用指定的状态文件; +-v或--version:显示指令执行过程; +-usage:显示指令基本用法。 +``` + +### 参数 + +配置文件:指定lograote指令的配置文件。 \ No newline at end of file diff --git a/command/look.md b/command/look.md new file mode 100644 index 00000000000..dd7206cfc2d --- /dev/null +++ b/command/look.md @@ -0,0 +1,28 @@ +look +=== + +显示文件中以指定字符串开头的任意行 + +## 补充说明 + +**look命** 用于显示文件中以指定字符串开头的任意行。 + +### 语法 + +``` +look(选项)(参数) +``` + +### 选项 + +``` +-a:使用另一个字典文件web2,该文件也位于/usr/dict目录下; +-d:只对比英文字母和数字,其余一概忽略不予比对; +-f:忽略字符大小写差别; +-t<字尾字符串>:设置字尾字符串。 +``` + +### 参数 + +* 字符串:指定要查找的字符串; +* 文件:指定要查找的目标文件。 \ No newline at end of file diff --git a/command/losetup.md b/command/losetup.md new file mode 100644 index 00000000000..075a13980e8 --- /dev/null +++ b/command/losetup.md @@ -0,0 +1,67 @@ +losetup +=== + +设定与控制循环(loop)设备 + +## 补充说明 + +**losetup命** 用来设置循环设备。循环设备可把文件虚拟成块设备,籍此来模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。 + +### 语法 + +``` +losetup -e encryption +losetup [ -d ] loop_device +``` + +### 选项 + +``` +-a 显示所有循环设备的状态。 +-d 卸除设备。 +-e <加密选项> 启动加密编码 。 +-f 寻找第一个未使用的循环设备。 +-o <偏移量>设置数据偏移量,单位是字节。 +``` + +### 参数 + +* loop_device:循环设备可以是/dev/loop0, /dev/loop1 ... /dev/loop7。 +* file:要与循环设备相关联的文件名,这个往往是一个磁盘镜象文件,如 *.img + +### loop设备介绍 + +在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。在使用之前,一个 loop 设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。 + +上面说的文件格式,我们经常见到的是 cd 或 DVD 的 ISO 光盘镜像文件或者是软盘(硬盘)的 *.img 镜像文件。通过这种 loop mount (回环mount)的方式,这些镜像文件就可以被 mount 到当前文件系统的一个目录下。 + +至此,顺便可以再理解一下 loop 之含义:对于第一层文件系统,它直接安装在我们计算机的物理设备之上;而对于这种被 mount 起来的镜像文件(它也包含有文件系统),它是建立在第一层文件系统之上,这样看来,它就像是在第一层文件系统之上再绕了一圈的文件系统,所以称为 loop。 + +### 实例 + +创建空的磁盘镜像文件,这里创建一个1.44M的软盘: + +``` +dd if=/dev/zero of=floppy.img bs=512 count=2880 +``` + +使用 losetup将磁盘镜像文件虚拟成快设备: + +``` +losetup /dev/loop1 floppy.img +``` + +挂载块设备: + +``` +mount /dev/loop0 /tmp +``` + +经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。 + +卸载loop设备: + +``` +umount /tmp +losetup -d /dev/loop1 +``` \ No newline at end of file diff --git a/command/lsattr.md b/command/lsattr.md new file mode 100644 index 00000000000..2e8c3c8bfc3 --- /dev/null +++ b/command/lsattr.md @@ -0,0 +1,37 @@ +lsattr +=== + +查看文件的第二扩展文件系统属性 + +## 补充说明 + +**lsattr命** 用于查看文件的第二扩展文件系统属性。 + +### 语法 + +``` +lsattr(选项)(参数) +``` + +### 选项 + +``` +-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。 +-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。 +-R:递归的操作方式; +-V:显示指令的版本信息; +-a:列出目录中的所有文件,包括隐藏文件。 +``` + +lsattr经常使用的几个选项-D,-E,-R这三个选项不可以一起使用,它们是互斥的,经常使用的还有-l,-H,使用lsattr时,必须指出具体的设备名,用-l选项指出要显示设备的逻辑名称,否则要用-c,-s,-t等选项唯一的确定某个已存在的设备。 + +### 参数 + +文件:指定显示文件系统属性的文件名。 + +### 实例 + +``` +lsattr -E -l rmt0 -H +lsattr -EO -l rmt0 +``` \ No newline at end of file diff --git a/command/lsmod.md b/command/lsmod.md new file mode 100644 index 00000000000..1b4b577fa6f --- /dev/null +++ b/command/lsmod.md @@ -0,0 +1,100 @@ +lsmod +=== + +显示已载入系统的模块 + +## 补充说明 + +**lsmod命** 用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。 + +### 语法 + +``` +lsmod +``` + +### 实例 + +``` +[root@LinServ-1 ~]# lsmod +Module Size Used by +ipv6 272801 15 +xfrm_nalgo 13381 1 ipv6 +crypto_api 12609 1 xfrm_nalgo +ip_conntrack_ftp 11569 0 +xt_limit 6721 2 +xt_state 6209 2 +ip_conntrack 53665 2 ip_conntrack_ftp,xt_state +nfnetlink 10713 1 ip_conntrack +xt_tcpudp 7105 6 +xt_multiport 7233 1 +iptable_filter 7105 1 +ip_tables 17029 1 iptable_filter +x_tables 17349 5 xt_limit,xt_state,xt_tcpudp,xt_multiport,ip_tables +dm_mirror 24393 0 +dm_multipath 27213 0 +scsi_dh 12481 1 dm_multipath +video 21193 0 +backlight 10049 1 video +sbs 18533 0 +power_meter 16461 0 +hwmon 7365 1 power_meter +i2c_ec 9025 1 sbs +dell_wmi 8401 0 +wmi 12137 1 dell_wmi +button 10705 0 +battery 13637 0 +asus_acpi 19289 0 +ac 9157 0 +lp 15849 0 +snd_hda_intel 401453 0 +snd_seq_dummy 7877 0 +snd_seq_oss 32577 0 +snd_seq_midi_event 11073 1 snd_seq_oss +snd_seq 49585 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event +snd_seq_device 11725 3 snd_seq_dummy,snd_seq_oss,snd_seq +snd_pcm_oss 42817 0 +snd_mixer_oss 19009 1 snd_pcm_oss +snd_pcm 72517 2 snd_hda_intel,snd_pcm_oss +ide_cd 40161 0 +snd_timer 24517 2 snd_seq,snd_pcm +tpm_tis 16713 0 +r8169 43077 0 +snd_page_alloc 14281 2 snd_hda_intel,snd_pcm +tpm 19041 1 tpm_tis +i2c_i801 12737 0 +mii 9409 1 r8169 +serio_raw 10693 0 +i2c_core 24897 2 i2c_ec,i2c_i801 +snd_hwdep 12869 1 snd_hda_intel +tpm_bios 11073 1 tpm +cdrom 36577 1 ide_cd +pcspkr 7105 0 +parport_pc 29669 1 +sg 36973 0 +snd 57797 9 snd_hda_intel,snd_seq_oss,snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_hwdep +parport 37513 2 lp,parport_pc +soundcore 11553 1 snd +dm_raid45 67273 0 +dm_message 6977 1 dm_raid45 +dm_region_hash 15681 1 dm_raid45 +dm_log 14785 3 dm_mirror,dm_raid45,dm_region_hash +dm_mod 63993 4 dm_mirror,dm_multipath,dm_raid45,dm_log +dm_mem_cache 9537 1 dm_raid45 +ata_piix 23749 4 +libata 158085 1 ata_piix +sd_mod 25409 6 +scsi_mod 144277 4 scsi_dh,sg,libata,sd_mod +ext3 126281 3 +jbd 57705 1 ext3 +uhci_hcd 25421 0 +ohci_hcd 24937 0 +ehci_hcd 34509 0 +``` + +* 第1列:表示模块的名称。 +* 第2列:表示模块的大小。 +* 第3列:表示依赖模块的个数。 +* 第4列:表示依赖模块的内容。 + +通常在使用lsmod命令时,都会采用类似`lsmod | grep -i ext3`这样的命令来查询当前系统是否加载了某些模块。 \ No newline at end of file diff --git a/command/mail.md b/command/mail.md new file mode 100644 index 00000000000..a01521c56fa --- /dev/null +++ b/command/mail.md @@ -0,0 +1,87 @@ +mail +=== + +命令行下发送和接收电子邮件 + +## 补充说明 + +**mail命** 是命令行的电子邮件发送和接收工具。操作的界面不像elm或pine那么容易使用,但功能非常完整。 + +### 语法 + +``` +mail(选项)(参数) +``` + +### 选项 + +``` +-b<地址>:指定密件副本的收信人地址; +-c<地址>:指定副本的收信人地址; +-f<邮件文件>:读取指定邮件文件中的邮件; +-i:不显示终端发出的信息; +-I:使用互动模式; +-n:程序使用时,不使用mail.rc文件中的设置; +-N:阅读邮件时,不显示邮件的标题; +-s<邮件主题>:指定邮件的主题; +-u<用户帐号>:读取指定用户的邮件; +-v:执行时,显示详细的信息。 +``` + +### 参数 + +邮件地址:收信人的电子邮箱地址。 + +### 实例 + +**直接使用shell当编辑器** + +``` +mail -s "Hello from linuxde.net by shell" admin@linuxde.net +hello,this is the content of mail. +welcome to www.linuxde.net +``` + +第一行是输入的命令,`-s`表示邮件的主题,后面的`admin@linuxde.net`则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按**CTRL+D**结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。 + +**使用管道进行邮件发送** + +``` +echo "hello,this is the content of mail.welcome to www.linuxde.net" | mail -s "Hello from linuxde.net by pipe" admin@linuxde.net +``` + +使用管道直接敲入这行命令即可完成邮件的发送,其中echo后的是邮件正文。 + +**使用文件进行邮件发送** + +``` +mail -s "Hello from linuxde.net by file" admin@linuxde.net < mail.txt +``` + +使用上面的命令后,我们就可以把mail.txt文件的内容作为邮件的内容发送给admin@linuxde.net了。 + +使用上述三种方式都可以给外部邮箱进行邮件发送,但因为前面2中都是直接在shell中敲入邮件内容,因此无法输入中文,即使我们使用粘贴的方式输入了中文,那么收到的邮件也是乱码的。但第3种方式,我们可以在window下编辑好邮件内容后,放到linux下,再进行发送,这样就可以正常发送中文了。不过目前邮件的中文标题暂时没有找到解决办法。 + +因为mail程序本身就是调用sendmail来进行邮件发送的,因此我们可以在mail命令中使用sendmail的参数进行配置,比如我想使用特定的发件人发送邮件,可以使用如下命令: + +``` +mail -s "Hello from linuxde.net with sender" admin@linuxde.net -- -f user@linuxde.net:指定设备; +--mkinitrdargs<参数>:设置mkinitrd的参数; +--noprompt:不会提示用户插入磁盘; +--verbose:执行时显示详细的信息; +--version:显示版本信息。 +``` + +### 参数 + +内核:指定内核版本。 + +### 实例 + +``` +mkbootdisk --device /dev/fd0 `uname -r` +``` + +其中,``uname -r``是目前Linux 系统所使用的核心版本,如果你有多个核心版本的话,你以可以直接输入核心版本。例如在这个网页中所使用的核心有两个版本,一个是2.2.12-20,另一个是2.2.18,若要以2.2.18设定开机的话,可以使用: + +``` +mkbootdisk --device /dev/fd0 2.2.18 +``` \ No newline at end of file diff --git a/command/mkdir.md b/command/mkdir.md new file mode 100644 index 00000000000..d75ea9e2815 --- /dev/null +++ b/command/mkdir.md @@ -0,0 +1,45 @@ +mkdir +=== + +用来创建目录 + +## 补充说明 + +**mkdir命** 用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。  + +注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。 + +在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。 + +### 语法 + +``` +mkdir (选项)(参数) +``` + +### 选项 + +``` +-Z:设置安全上下文,当使用SELinux时有效; +-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限; +-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录; +--version 显示版本信息。 +``` + +### 参数 + +目录:指定要创建的目录列表,多个目录之间用空格隔开。 + +### 实例 + +在目录`/usr/meng`下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问 + +``` +mkdir -m 700 /usr/meng/test +``` + +在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问 + +``` +mkdir -p-m 750 bin/os_1 +``` \ No newline at end of file diff --git a/command/mke2fs.md b/command/mke2fs.md new file mode 100644 index 00000000000..8f94a01a1aa --- /dev/null +++ b/command/mke2fs.md @@ -0,0 +1,48 @@ +mke2fs +=== + +创建磁盘分区上的“etc2/etc3”文件系统 + +## 补充说明 + +**mke2fs命** 被用于创建磁盘分区上的“etc2/etc3”文件系统。 + +### 语法 + +``` +mke2fs(选项)(参数) +``` + +### 选项 + +``` +-b<区块大小>:指定区块大小,单位为字节; +-c;检查是否有损坏的区块; +-f<不连续区段大小>:指定不连续区段的大小,单位为字节; +-F:不管指定的设备为何,强制执行mke2fs; +-i<字节>:指定"字节/inode"的比例; +-N:指定要建立的inode数目; +-l<文件>:从指定的文件中,读取文件西中损坏区块的信息; +-L<标签>:设置文件系统的标签名称; +-m<百分比值>:指定给管理员保留区块的比例,预设为5%; +-M:记录最后一次挂入的目录; +-q:执行时不显示任何信息; +-r:指定要建立的ext2文件系统版本; +-R=<区块数>:设置磁盘阵列参数; +-S:仅写入superblock与group descriptors,而不更改inode able inode bitmap以及block bitmap; +-v:执行时显示详细信息; +-V:显示版本信息。 +``` + +### 参数 + +* 设备文件:指定要创建的文件系统的分区设备文件名; +* 块数:指定要创建的文件系统的磁盘块数量。 + +### 实例 + +创建指定的ext2文件系统。 + +``` +mke2fs -q /dev/hda1 +``` \ No newline at end of file diff --git a/command/mkfs.md b/command/mkfs.md new file mode 100644 index 00000000000..958dc3e644b --- /dev/null +++ b/command/mkfs.md @@ -0,0 +1,40 @@ +mkfs +=== + +用于在设备上创建Linux文件系统 + +## 补充说明 + +**mkfs命** 用于在设备上(通常为硬盘)创建Linux文件系统。mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。 + +### 语法 + +``` +mkfs(选项)(参数) +``` + +### 选项 + +``` +fs:指定建立文件系统时的参数; +-t<文件系统类型>:指定要建立何种文件系统; +-v:显示版本信息与详细的使用方法; +-V:显示简要的使用方法; +-c:在制做档案系统前,检查该partition是否有坏轨。 +``` + +### 参数 + +* 文件系统:指定要创建的文件系统对应的设备文件名; +* 块数:指定文件系统的磁盘块数。 + +### 实例 + +在`/dev/hda5`上建一个msdos的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来: + +``` +mkfs -V -t msdos -c /dev/hda5 + +mkfs -t ext3 /dev/sda6 //将sda6分区格式化为ext3格式 +mkfs -t ext2 /dev/sda7 //将sda7分区格式化为ext2格式 +``` \ No newline at end of file diff --git a/command/mkinitrd.md b/command/mkinitrd.md new file mode 100644 index 00000000000..3e70a6a023d --- /dev/null +++ b/command/mkinitrd.md @@ -0,0 +1,60 @@ +mkinitrd +=== + +建立要载入ramdisk的映像文件 + +## 补充说明 + +**mkinitrd命** 建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。 + +这个是重新封包核心的命令,例如你自己修改了一个设备的驱动,如果这个驱动要加入核心级别的话,就需要对核心进行重新封包,把新加的配置编译到核心内部去! + +### 语法 + +``` +mkinitrd(选项)(参数) +``` + +### 选项 + +``` +-f:若指定的映像问家名称与现有文件重复,则覆盖现有的文件; +-v:执行时显示详细的信息; +--omit-scsi-modules:不要载入SCSI模块; +--preload=<模块名称>:指定要载入的模块; +--with=<模块名称>:指定要载入的模块; +--version:显示版本信息。 +``` + +### 参数 + +* 映像文件:指定要创建的映像文件; +* 内核版本:指定内核版本。 + +### 实例 + +``` +root@localhost tmp -r) +Creating initramfs +WARNING: using /tmp for temporary files +Looking for deps of module ide-disk +Looking for deps of module ext3 jbd +Looking for deps of module jbd +Using modules: ./kernel/fs/jbd/jbd.ko ./kernel/fs/ext3/ext3.ko +/sbin/nash -> /tmp/initrd.Vz3928/bin/nash +/sbin/insmod.static -> /tmp/initrd.Vz3928/bin/insmod +/sbin/udev.static -> /tmp/initrd.Vz3928/sbin/udev +/etc/udev/udev.conf -> /tmp/initrd.Vz3928/etc/udev/udev.conf +copy from /lib/modules/2.6.9-5.EL/./kernel/fs/jbd/jbd.ko(elf32-i386) to /tmp/initrd.Vz3928/lib/jbd.ko(elf32-i386) +copy from /lib/modules/2.6.9-5.EL/./kernel/fs/ext3/ext3.ko(elf32-i386) to /tmp/initrd.Vz3928/lib/ext3.ko(elf32-i386) +Loading module jbd +Loading module ext3 + +root@localhost tmp myinitrd.img +myinitrd.img: gzip compressed data, from Unix, max compression + +root@localhost tmp myinitrd.img myinitrd.img.gz +[root@localhost tmp]# gzip -d myinitrd.img.gz +[root@localhost tmp]# file myinitrd.img +myinitrd.img: ASCII cpio archive (SVR4 with no CRC) +``` \ No newline at end of file diff --git a/command/mkisofs.md b/command/mkisofs.md new file mode 100644 index 00000000000..43d7aca3b5a --- /dev/null +++ b/command/mkisofs.md @@ -0,0 +1,98 @@ +mkisofs +=== + +建立ISO 9660映像文件 + +## 补充说明 + +**mkisofs命** 用来将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。 + +### 语法 + +``` +mkisofs(选项)(参数) +``` + +### 选项 + +``` +-a或--all:mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中; +-A<应用程序id>或-appid<应用程序ID>:指定光盘的应用程序ID; +-abstract<摘要文件>:指定摘要文件的文件名; +-b<开机映像文件>或-eltorito-boot<开机映像文件>:指定在制作可开机光盘时所需的开机映像文件; +-biblio:指定ISBN文件的文件名,ISBN文件位于光盘根目录下,记录光盘的ISBN; +-c<开机文件名称>:制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件; +-C<盘区编号,盘区编号>:将许多节区合成一个映像文件时,必须使用此参数; +-copyright<版权信息文件>:指定版权信息文件的文件名; +-d或-omit-period:省略文件后的句号; +-D或-disable-deep-relocation:ISO 9660最多只能处理8层的目录,超过8层的部分,RRIP会自动将它们设置成ISO 9660兼容的格式。使用-D参数可关闭此功能; +-f或-follow-links:忽略符号连接; +-h:显示帮助; +-hide<目录或文件名>:使指定的目录或文件在ISO 9660或Rock RidgeExtensions的系统中隐藏; +-hide-joliet<目录或文件名>:使指定的目录或文件在Joliet系统中隐藏; +-J或-joliet:使用Joliet格式的目录与文件名称; +-l或-full-iso9660-filenames:使用ISO 9660 32字符长度的文件名; +-L或-allow-leading-dots:允许文件名的第一个字符为句号; +-log-file<记录文件>:在执行过程中若有错误信息,预设会显示在屏幕上; +-m<目录或文件名>或-exclude<目录或文件名>:指定的目录或文件名将不会房入映像文件中; +-M<映像文件>或-prev-session<映像文件>:与指定的映像文件合并; +-N或-omit-version-number:省略ISO 9660文件中的版本信息; +-o<映像文件>或-output<映像文件>:指定映像文件的名称; +-p<数据处理人>或-preparer<数据处理人>:记录光盘的数据处理人; +-print-size:显示预估的文件系统大小; +-quiet:执行时不显示任何信息; +-r或-rational-rock:使用Rock Ridge Extensions,并开放全部文件的读取权限; +-R或-rock:使用Rock Ridge Extensions; +-sysid<系统ID>:指定光盘的系统ID; +-T或-translation-table:建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上; +-v或-verbose:执行时显示详细的信息; +-V<光盘ID>或-volid<光盘ID>:指定光盘的卷册集ID; +-volset-size<光盘总数>:指定卷册集所包含的光盘张数; +-volset-seqno<卷册序号>:指定光盘片在卷册集中的编号; +-x<目录>:指定的目录将不会放入映像文件中; +-z:建立通透性压缩文件的SUSP记录,此记录目前只在Alpha机器上的Linux有效。 +``` + +### 参数 + +路径:需要添加到映像文件中的路径。 + +### 实例 + +linux中用mkisofs命令把文件制作成ISO步骤: + +把NFS服务器上的目录挂载到本地/mnt/nfs/的目录: + +``` +mount -t nfs 10.0.2.2:/linuxos/rhel4.0_update3/ /mnt/nfs/ +``` + +把已挂载的文件复制到本地: + +``` +cp -a /mnt/NFS/* /root/Decp -a /mnt/nfs/* /root/Desktop/rhel4.0/&sktop/rhel4.0/& +``` + +查找boot.cat文件并删除掉: + +``` +find rhel4.0/ -name boot.cat | xargs rm +``` + +查找TRANS.TBL文件并删除掉: + +``` +find rhel4.0/ -name TRANS.TBL -exec rm {} \; +``` + +复制本地的所需文件到指定目录: + +``` +cp /usr/share/comps/i386/.discinfo rhel4.0/ +``` + +把指定目录下的所有文件制作成ISO文件: + +``` +mkisofs -R -J -T -v -no-emul-boot -boot-load-size 4 -boot-info-table -V RHEL4ASDVD -b isolinux/isolinux.bin -c isolinux/boot.cat -o /RHEL4AS.iso rhel4.0/ +``` \ No newline at end of file diff --git a/command/mkswap.md b/command/mkswap.md new file mode 100644 index 00000000000..1dc86785530 --- /dev/null +++ b/command/mkswap.md @@ -0,0 +1,111 @@ +mkswap +=== + +建立和设置SWAP交换分区 + +## 补充说明 + +**mkswap命** 用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。 + +### 语法 + +``` +mkswap(选项)(参数) +``` + +### 选项 + +``` +-c:建立交换区前,先检查是否有损坏的区块; +-f:在SPARC电脑上建立交换区时,要加上此参数; +-v0:建立旧式交换区,此为预设值; +-v1:建立新式交换区。 +``` + +### 参数 + +设备:指定交换空间对应的设备文件或者交换文件。 + +### 实例 + +**查看系统swap space大小:** + +``` +free -m +total used free shared buffers cached +Mem: 377 180 197 0 19 110 +-/+ buffers/cache: 50 327 +Swap: 572 0 572 +``` + +**查看当前的swap空间(file(s)/partition(s)):** + +``` +swapon -s + +等价于 + +cat /proc/swaps +``` + +**添加交换空间** + +添加一个**交换分区**或添加一个**交换文件**。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。 + +添加一个交换分区,步骤如下: + +使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区),使用 mkswap 命令来设置交换分区: + +``` +mkswap /dev/sdb2 +``` + +启用交换分区: + +``` +swapon /dev/sdb2 +``` + +写入`/etc/fstab`,以便在引导时启用: + +``` +/dev/sdb2 swap swap defaults 0 0 +``` + +添加一个交换文件,步骤如下: + +创建大小为512M的交换文件: + +``` +dd if=/dev/zero of=/swapfile1 bs=1024 count=524288 +``` + +使用mkswap命令来设置交换文件: + +``` +mkswap /swapfile1 +``` + +启用交换分区: + +``` +swapon /swapfile1 +``` + +写入`/etc/fstab`,以便在引导时启用: + +``` +/swapfile1 swap swap defaults 0 0 +``` + +新添了交换分区并启用它之后,请查看`cat /proc/swaps`或free命令的输出来确保交换分区已被启用了。 + +**删除交换空间:** + +禁用交换分区: + +``` +swapoff /dev/sdb2 +``` + +从`/etc/fstab`中删除项目,使用fdisk或yast工具删除分区。 \ No newline at end of file diff --git a/command/mktemp.md b/command/mktemp.md new file mode 100644 index 00000000000..3dcec0e1629 --- /dev/null +++ b/command/mktemp.md @@ -0,0 +1,26 @@ +mktemp +=== + +创建临时文件供shell脚本使用 + +## 补充说明 + +**mktemp命** 被用来创建临时文件供shell脚本使用。 + +### 语法 + +``` +mktemp(选项)(参数) +``` + +### 选项 + +``` +-q:执行时若发生错误,不会显示任何信息; +-u:暂存文件会在mktemp结束前先行删除; +-d:创建一个目录而非文件。 +``` + +### 参数 + +文件:指定创建的临时文件。 \ No newline at end of file diff --git a/command/modprobe.md b/command/modprobe.md new file mode 100644 index 00000000000..c267b1bd7fe --- /dev/null +++ b/command/modprobe.md @@ -0,0 +1,76 @@ +modprobe +=== + +自动处理可载入模块 + +## 补充说明 + +**modprobe命** 用于智能地向内核中加载模块或者从内核中移除模块。 + +modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。 + +### 语法 + +``` +modprobe(选项)(参数) +``` + +### 选项 + +``` +-a或--all:载入全部的模块; +-c或--show-conf:显示所有模块的设置信息; +-d或--debug:使用排错模式; +-l或--list:显示可用的模块; +-r或--remove:模块闲置不用时,即自动卸载模块; +-t或--type:指定模块类型; +-v或--verbose:执行时显示详细的信息; +-V或--version:显示版本信息; +-help:显示帮助。 +``` + +### 参数 + +模块名:要加载或移除的模块名称。 + +### 实例 + +**查看modules的配置文件:** + +``` +modprobe -c +``` + +这里,可以查看modules的配置文件,比如模块的alias别名是什么等。会打印许多行信息,例如其中的一行会类似如下: + +``` +alias symbol:ip_conntrack_unregister_notifier ip_conntrack +``` + +**列出内核中所有已经或者未挂载的所有模块:** + +``` +modprobe -l +``` + +这里,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实`modprobe -l`读取的模块列表就位于`/lib/modules/`uname -r``目录中;其中`uname -r`是内核的版本,例如输出结果的其中一行是: + +``` +/lib/modules/2.6.18-348.6.1.el5/kernel/net/netfilter/xt_statistic.ko +``` + +**挂载vfat模块:** + +``` +modprobe vfat +``` + +这里,使用格式`modprobe 模块名`来挂载一个模块。挂载之后,用lsmod可以查看已经挂载的模块。模块名是不能带有后缀的,我们通过`modprobe -l`所看到的模块,都是带有`.ko`或`.o`后缀。 + +**移除已经加载的模块:** + +``` +modprobe -r 模块名 +``` + +这里,移除已加载的模块,和rmmod功能相同。 \ No newline at end of file diff --git a/command/mtools.md b/command/mtools.md new file mode 100644 index 00000000000..6b91e9c750e --- /dev/null +++ b/command/mtools.md @@ -0,0 +1,45 @@ +mtools +=== + +显示mtools支持的指令 + +## 补充说明 + +**mtools命** 显示mtools支持的指令,mtools为MS-DOS文件系统的工具程序,可模拟许多MS-DOS的指令。这些指令都是mtools的符号连接,因此会有一些共同的特性。 + +### 语法 + +``` +mtools(选项) +``` + +### 选项 + +``` +-a:长文件名重复时自动更改目标文件的长文件名; +-A:短文件名重复但长文件名不同时自动更改目标文件的短文件名; +-o:长文件名重复时,将目标文件覆盖现有的文件; +-O:短文件名重复但长文件名不同时,将目标文件覆盖现有的文件; +-r:长文件名重复时,要求用户更改目标文件的长文件名; +-R:短文件名重复但长文件名不同时,要求用户更改目标文件的短文件名; +-s:长文件名重复时,则不处理该目标文件; +-S:短文件名重复但长文件名不同时,则不处理该目标文件; +-v:执行时显示详细的说明; +-V:显示版本信息。 +``` + +### 实例 + +使用mtools命令显示其支持的所有的指令,输入如下命令: + +``` +[root@localhost ~]# mtools #显示所有支持的指令名称 +Supported commands: +mattrib, mbadblocks, mcat, mcd, mclasserase, mcopy, mdel, mdeltree +mdir, mdoctorfat, mdu, mformat, minfo, mlabel, mmd, mmount +mpartition, mrd, mread, mmove, mren, mshowfat, mtoolstest, mtype +mwrite, mzip + +``` + +如上所示,其显示的所有命令均为mtools工具所支持的。 \ No newline at end of file diff --git a/command/ncftp.md b/command/ncftp.md new file mode 100644 index 00000000000..2c0cc43142f --- /dev/null +++ b/command/ncftp.md @@ -0,0 +1,61 @@ +ncftp +=== + +是增强的的FTP工具 + +## 补充说明 + +**ncftp命** 是增强的的ftp工具,比传统的FTP指令更加强大。FTP让用户得以下载存放于服务器主机的文件,也能将文件上传到远端主机放置。ncftp是文字模式FTP程序的佼佼者,它具备多样特色,包括显示传输速率,下载进度,自动续传,标住书签,可通过防火墙和代理服务器等。 + +### 语法 + +``` +ncftp(选项)(参数) +``` + +### 选项 + +``` +-u:指定登录FTP服务器时使用的用户名; +-p:指定登录FTP服务器时使用的密码; +-P:如果FTP服务器没有使用默认的TCP协议的21端口,则使用此选项指定FTP服务器的端口号。 +-m:在传之前尝试在目录位置创建目录(用于传目录的情况) +-R:递规传子目录 +``` + +### 参数 + +FTP服务器:指定远程FTP服务器的ip地址或主机名。 + +### 安装 + +``` +wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.3-src.tar.gz +tar zxvf ncftp-3.2.3-src.tar.gz +cd ncftp-3.2.3/ +./configure --prefix=/usr/local/ncftp +make && make install +``` + +### 实例 + +将本地/etc/目录内的所有文件和目录,上传到FTP服务器的flv/games/目录内(如果不存在flv/games/目录则自动创建)。 + +``` +/usr/local/ncftp/bin/ncftpput -u koumm -p koumm -P 21 -m -R 192.168.162.137 flv/games/ /etc/* +``` + +**指令说明** + +ncftp的基本命令和普通ftp一样,可以输入help获得命令列表。对于所有的命令,都可以使用help <命令>的格式获得详细帮助。l开头的就是对本地执行的命令,其它的就是对登入的ftp服务目录的操作命令。 + +增加的本地文件系统的操作命令: + +* lls: 列出本地当前目录文件; +* lmkdir : 本地建立目录; +* lrename: 本地文件改名; +* lpwd: 显示当前本地路 径; +* lchmod: 改变本地文件权限; +* lpage: 显示本地文件内容; +* lrm: 删除本地文件; +* lrmdir: 删除本地目录。 \ No newline at end of file diff --git a/command/netstat.md b/command/netstat.md new file mode 100644 index 00000000000..4f3b28351a6 --- /dev/null +++ b/command/netstat.md @@ -0,0 +1,166 @@ +netstat +=== + +查看Linux中网络系统状态信息 + +## 补充说明 + +**netstat命** 用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。 + +### 语法 + +``` +netstat(选项) +``` + +### 选项 + +``` +-a或--all:显示所有连线中的Socket; +-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址; +-c或--continuous:持续列出网络状态; +-C或--cache:显示路由器配置的快取信息; +-e或--extend:显示网络其他相关信息; +-F或--fib:显示FIB; +-g或--groups:显示多重广播功能群组组员名单; +-h或--help:在线帮助; +-i或--interfaces:显示网络界面信息表单; +-l或--listening:显示监控中的服务器的Socket; +-M或--masquerade:显示伪装的网络连线; +-n或--numeric:直接使用ip地址,而不通过域名服务器; +-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称; +-o或--timers:显示计时器; +-p或--programs:显示正在使用Socket的程序识别码和程序名称; +-r或--route:显示Routing Table; +-s或--statistice:显示网络工作信息统计表; +-t或--tcp:显示TCP传输协议的连线状况; +-u或--udp:显示UDP传输协议的连线状况; +-v或--verbose:显示指令执行过程; +-V或--version:显示版本信息; +-w或--raw:显示RAW传输协议的连线状况; +-x或--unix:此参数的效果和指定"-A unix"参数相同; +--ip或--inet:此参数的效果和指定"-A inet"参数相同。 +``` + +### 实例 + +**列出所有端口 (包括监听和未监听的)** + +``` +netstat -a #列出所有端口 +netstat -at #列出所有tcp端口 +netstat -au #列出所有udp端口 +``` + +**列出所有处于监听状态的 Sockets** + +``` +netstat -l #只显示监听端口 +netstat -lt #只列出所有监听 tcp 端口 +netstat -lu #只列出所有监听 udp 端口 +netstat -lx #只列出所有监听 UNIX 端口 +``` + +**显示每个协议的统计信息** + +``` +netstat -s 显示所有端口的统计信息 +netstat -st 显示TCP端口的统计信息 +netstat -su 显示UDP端口的统计信息 + +``` + +**在netstat输出中显示 PID 和进程名称** + +``` +netstat -pt +``` + +`netstat -p`可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。 + +**在netstat输出中不显示主机,端口和用户名(host, port or user)** + +当你不想让主机,端口和用户名显示,使用`netstat -n`。将会使用数字代替那些名称。同样可以加速输出,因为不用进行比对查询。 + +``` +netstat -an +``` + +如果只是不想让这三个名称中的一个被显示,使用以下命令: + +``` +netsat -a --numeric-ports +netsat -a --numeric-hosts +netsat -a --numeric-users +``` + +**持续输出netstat信息** + +``` +netstat -c #每隔一秒输出网络信息 +``` + +**显示系统不支持的地址族(Address Families)** + +``` +netstat --verbose +``` + +在输出的末尾,会有如下的信息: + +``` +netstat: no support for `AF IPX' on this system. +netstat: no support for `AF AX25' on this system. +netstat: no support for `AF X25' on this system. +netstat: no support for `AF NETROM' on this system. +``` + +**显示核心路由信息** + +``` +netstat -r +``` + +使用`netstat -rn`显示数字格式,不查询主机名称。 + +**找出程序运行的端口** + +并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。 + +``` +netstat -ap | grep ssh +``` + +找出运行在指定端口的进程: + +``` +netstat -an | grep ':80' +``` + +**显示网络接口列表** + +``` +netstat -i +``` + +显示详细信息,像是ifconfig使用`netstat -ie`。 + +**IP和TCP分析** + +查看连接某服务端口最多的的IP地址: + +``` +netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip$1 print ipi -nr +``` + +TCP各种状态列表: + +``` +netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state$NF print i,"\t",state[i]}' +``` + +查看phpcgi进程数,如果接近预设值,说明不够用,需要增加: + +``` +netstat -anpo | grep "php-cgi" | wc -l +``` \ No newline at end of file diff --git a/command/nice.md b/command/nice.md new file mode 100644 index 00000000000..bc3ebb77f68 --- /dev/null +++ b/command/nice.md @@ -0,0 +1,38 @@ +nice +=== + +改变程序执行的优先权等级 + +## 补充说明 + +**nice命** 用于以指定的进程调度优先级启动其他的程序。 + +### 语法 + +``` +nice(选项)(参数) +``` + +### 选项 + +``` +-n:指定进程的优先级(整数)。 +``` + +### 参数 + +指令及选项:需要运行的指令及其他选项。 + +### 实例 + +新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU: + +``` +nice -19 tar zcf pack.tar.gz documents +``` + +方法非常简单,即在原命令前加上`nice -19`。很多人可能有疑问了,最低优先级不是19么?那是因为这个“-19”中的“-”仅表示参数前缀;所以,如果希望将当前目录下的documents目录打包,并且赋予tar进程最高的优先级: + +``` +nice --19 tar zcf pack.tar.gz documents +``` \ No newline at end of file diff --git a/command/ntsysv.md b/command/ntsysv.md new file mode 100644 index 00000000000..19c612932cb --- /dev/null +++ b/command/ntsysv.md @@ -0,0 +1,29 @@ +ntsysv +=== + +集中管理系统的各种服务 + +## 补充说明 + +**ntsysv命** 提供了一个基于文本界面的菜单操作方式,集中管理系统不同的运行等级下的系统服务启动状态。在RedHat各个发行版,CentOS各个版本,都自带这个工具。它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。 + +### 语法 + +``` +ntsysv(选项) +``` + +### 选项 + +``` +--leve:指定运行等级; +--back:在互动式界面里,显示Back钮,而非cancel钮。 +``` + +### 实例 + +输入ntsysv命令后,出现一个交互式的管理菜单,如下: + +!ntsysv + +使用空格键选择或者取消选项! \ No newline at end of file diff --git a/command/od.md b/command/od.md new file mode 100644 index 00000000000..cfddc1de3aa --- /dev/null +++ b/command/od.md @@ -0,0 +1,148 @@ +od +=== + +输出文件的八进制、十六进制等格式编码的字节 + +## 补充说明 + +**od命** 用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。 + +常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。 + +### 语法 + +``` +od(选项)(参数) +``` + +### 选项 + +``` +-a:此参数的效果和同时指定“-ta”参数相同; +-A:<字码基数>:选择以何种基数计算字码; +-b:此参数的效果和同时指定“-toC”参数相同; +-c:此参数的效果和同时指定“-tC”参数相同; +-d:此参数的效果和同时指定“-tu2”参数相同; +-f:此参数的效果和同时指定“-tfF”参数相同; +-h:此参数的效果和同时指定“-tx2”参数相同; +-i:此参数的效果和同时指定“-td2”参数相同; +-j<字符数目>或--skip-bytes=<字符数目>:略过设置的字符数目; +-l:此参数的效果和同时指定“-td4”参数相同; +-N<字符数目>或--read-bytes=<字符数目>:到设置的字符树目为止; +-o:此参数的效果和同时指定“-to2”参数相同; +-s<字符串字符数>或--strings=<字符串字符数>:只显示符合指定的字符数目的字符串; +-t<输出格式>或--format=<输出格式>:设置输出格式; +-v或--output-duplicates:输出时不省略重复的数据; +-w<每列字符数>或--width=<每列字符数>:设置每列的最大字符数; +-x:此参数的效果和同时指定“-h”参数相同; +--help:在线帮助; +--version:显示版本信息。 +``` + +### 参数 + +文件:指定要显示的文件。 + +### 实例 + +``` +linuxde@localhost ~ abcdef g > tmp +linuxde@localhost ~ tmp +abcdef g +``` + +说明:先准备一个tmp文件 + +``` +[linuxde@localhost ~]$ od -b tmp +0000000 141 142 143 144 145 146 040 147 012 +0000011 +``` + +说明:使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节 + +``` +[linuxde@localhost ~]$ od -c tmp +0000000 a b c d e f g \n +0000011 +``` + +说明:使用ASCII码进行输出,注意其中包括转义字符 + +``` +[linuxde@localhost ~]$ od -t d1 tmp +0000000 97 98 99 100 101 102 32 103 10 +0000011 +``` + +说明:使用单字节十进制进行解释 + +``` +[linuxde@localhost ~]$ od -A d -c tmp +0000000 a b c d e f g \n +0000009 +``` + +说明:设置地址格式为十进制。 + +``` +[linuxde@localhost ~]$ od -A x -c tmp +000000 a b c d e f g \n +000009 +``` + +说明:设置地址格式为十六进制 + +``` +[linuxde@localhost ~]$ od -j 2 -c tmp +0000002 c d e f g \n +0000011 +``` + +说明:跳过开始的两个字节 + +``` +[linuxde@localhost ~]$ od -N 2 -j 2 -c tmp +0000002 c d +0000004 +``` + +说明:跳过开始的两个字节,并且仅输出两个字节 + +``` +[linuxde@localhost ~]$ od -w1 -c tmp +0000000 a +0000001 b +0000002 c +0000003 d +0000004 e +0000005 f +0000006 +0000007 g +0000010 \n +0000011 +``` + +说明:每行仅输出1个字节 + +``` +[linuxde@localhost ~]$ od -w2 -c tmp +0000000 a b +0000002 c d +0000004 e f +0000006 g +0000010 \n +0000011 +``` + +说明:每行输出两个字节 + +``` +[linuxde@localhost ~]$ od -w3 -b tmp +0000000 141 142 143 +0000003 144 145 146 +0000006 040 147 012 +0000011 +``` + +说明:每行输出3个字节,并使用八进制单字节进行解释 \ No newline at end of file diff --git a/command/passwd.md b/command/passwd.md new file mode 100644 index 00000000000..081bcedf303 --- /dev/null +++ b/command/passwd.md @@ -0,0 +1,125 @@ +passwd +=== + +用于让用户可以更改自己的密码 + +## 补充说明 + +**passwd命** 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。 + +### 语法 + +``` +passwd(选项)(参数) +``` + +### 选项 + +``` +-d:删除密码,仅有系统管理者才能使用; +-f:强制执行; +-k:设置只有在密码过期失效后,方能更新; +-l:锁住密码; +-s:列出密码的相关信息,仅有系统管理者才能使用; +-u:解开已上锁的帐号。 +``` + +### 参数 + +用户名:需要设置密码的用户名。 + +### 知识扩展 + +与用户、组账户信息相关的文件 + +存放用户信息: + +``` +/etc/passwd +/etc/shadow +``` + +存放组信息: + +``` +/etc/group +/etc/gshadow +``` + +用户信息文件分析(每项用`:`隔开) + +``` +例如:jack:X:503:504:::/home/jack/:/bin/bash +jack  //用户名 +X  //口令、密码 +503  //用户id(0代表root、普通新建用户从500开始) +504  //所在组 +:  //描述 +/home/jack/  //用户主目录 +/bin/bash  //用户缺省Shell +``` + +组信息文件分析 + +``` +例如:jack:$!$:???:13801:0:99999:7:*:*: +jack  //组名 +$!$  //被加密的口令 +13801  //创建日期与今天相隔的天数 +0  //口令最短位数 +99999  //用户口令 +7  //到7天时提醒 +*  //禁用天数 +*  //过期天数 +``` + +### 实例 + +如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。 + +``` +[root@localhost ~]# passwd linuxde //更改或创建linuxde用户的密码; +Changing password for user linuxde. +New UNIX password: //请输入新密码; +Retype new UNIX password: //再输入一次; +passwd: all authentication tokens updated successfully. //成功; +``` + +普通用户如果想更改自己的密码,直接运行passwd即可,比如当前操作的用户是linuxde。 + +``` +[linuxde@localhost ~]$ passwd +Changing password for user linuxde. //更改linuxde用户的密码; +(current) UNIX password: //请输入当前密码; +New UNIX password: //请输入新密码; +Retype new UNIX password: //确认新密码; +passwd: all authentication tokens updated successfully. //更改成功; +``` + +比如我们让某个用户不能修改密码,可以用`-l`选项来锁定: + +``` +[root@localhost ~]# passwd -l linuxde //锁定用户linuxde不能更改密码; +Locking password for user linuxde. +passwd: Success //锁定成功; + +linuxde@localhost ~ linuxde //通过su切换到linuxde用户; +[linuxde@localhost ~]$ passwd //linuxde来更改密码; +Changing password for user linuxde. +Changing password for linuxde +(current) UNIX password: //输入linuxde的当前密码; +passwd: Authentication token manipulation error //失败,不能更改密码; +``` + +再来一例: + +``` +[root@localhost ~]# passwd -d linuxde //清除linuxde用户密码; +Removing password for user linuxde. +passwd: Success //清除成功; + +[root@localhost ~]# passwd -S linuxde //查询linuxde用户密码状态; +Empty password. //空密码,也就是没有密码; +``` + +注意:当我们清除一个用户的密码时,登录时就无需密码,这一点要加以注意。 \ No newline at end of file diff --git a/command/paste.md b/command/paste.md new file mode 100644 index 00000000000..1b976c7060f --- /dev/null +++ b/command/paste.md @@ -0,0 +1,25 @@ +paste +=== + +将多个文件按列队列合并 + +## 补充说明 + +**paste命** 用于将多个文件按照列队列进行合并。 + +### 语法 + +``` +paste(选项)(参数) +``` + +### 选项 + +``` +-d<间隔字符>或--delimiters=<间隔字符>:用指定的间隔字符取代跳格字符; +-s或——serial串列进行而非平行处理。 +``` + +### 参数 + +文件列表:指定需要合并的文件列表。 \ No newline at end of file diff --git a/command/patch.md b/command/patch.md new file mode 100644 index 00000000000..886a6bbb855 --- /dev/null +++ b/command/patch.md @@ -0,0 +1,56 @@ +patch +=== + +为开放源代码软件安装补丁程序 + +## 补充说明 + +**patch命** 被用于为开放源代码软件安装补丁程序。让用户利用设置修补文件的方式,修改,更新原始文件。如果一次仅修改一个文件,可直接在命令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。 + +### 语法 + +``` +patch(选项)(参数) +``` + +### 选项 + +``` +-b或--backup:备份每一个原始文件; +-B<备份字首字符串>或--prefix=<备份字首字符串>:设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称; +-c或--context:把修补数据解译成关联性的差异; +-d<工作目录>或--directory=<工作目录>:设置工作目录; +-D<标示符号>或--ifdef=<标示符号>:用指定的符号把改变的地方标示出来; +-e或--ed:把修补数据解译成ed指令可用的叙述文件; +-E或--remove-empty-files:若修补过后输出的文件其内容是一片空白,则移除该文件; +-f或--force:此参数的效果和指定"-t"参数类似,但会假设修补数据的版本为新版本; +-F<监别列数>或--fuzz<监别列数>:设置监别列数的最大值; +-g<控制数值>或--get=<控制数值>:设置以RSC或SCCS控制修补作业; +-i<修补文件>或--input=<修补文件>:读取指定的修补问家你; +-l或--ignore-whitespace:忽略修补数据与输入数据的跳格,空格字符; +-n或--normal:把修补数据解译成一般性的差异; +-N或--forward:忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过; +-o<输出文件>或--output=<输出文件>:设置输出文件的名称,修补过的文件会以该名称存放; +-p<剥离层级>或--strip=<剥离层级>:设置欲剥离几层路径名称; +-f<拒绝文件>或--reject-file=<拒绝文件>:设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej; +-R或--reverse:假设修补数据是由新旧文件交换位置而产生; +-s或--quiet或--silent:不显示指令执行过程,除非发生错误; +-t或--batch:自动略过错误,不询问任何问题; +-T或--set-time:此参数的效果和指定"-Z"参数类似,但以本地时间为主; +-u或--unified:把修补数据解译成一致化的差异; +-v或--version:显示版本信息; +-V<备份方式>或--version-control=<备份方式>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-z"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字符串; +-Y<备份字首字符串>或--basename-prefix=--<备份字首字符串>:设置文件备份时,附加在文件基本名称开头的字首字符串; +-z<备份字尾字符串>或--suffix=<备份字尾字符串>:此参数的效果和指定"-B"参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上"backup/"字符串后,文件super.c会备份于/src/linux/fs/backup目录里; +-Z或--set-utc:把修补过的文件更改,存取时间设为UTC; +--backup-if-mismatch:在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件; +--binary:以二进制模式读写数据,而不通过标准输出设备; +--help:在线帮助; +--nobackup-if-mismatch:在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件; +--verbose:详细显示指令的执行过程。 +``` + +### 参数 + +* 原文件:指定需要打补丁的原始文件; +* 补丁文件:指定补丁文件。 \ No newline at end of file diff --git a/command/pico.md b/command/pico.md new file mode 100644 index 00000000000..b3b6f9619ec --- /dev/null +++ b/command/pico.md @@ -0,0 +1,58 @@ +pico +=== + +功能强大全屏幕的文本编辑器 + +## 补充说明 + +**pico命** 是功能强大全屏幕的文本编辑器。pico的操作简单,提供了丰富的快捷键。常用的快捷键如下: + +``` +Ctrl+G:获得pico的帮助信息; +Ctrl+O:保存文件内容,如果是新文件,需要输入文件名; +Ctrl+R:在当前光标位置插入一个指定的文本文件内容; +Ctrl+Y:向前翻页; +Ctrl+V:向后翻页; +Ctrl+w:对文件进行搜索; +Ctrl+K:剪切当前文件行到粘贴缓冲区; +Ctrl+U:粘贴缓冲区中的内容到当前光标所在位置; +Ctrl+C:显示当前光标位置; +Ctrl+T:调用拼写检查功能,对文档进行拼写检查; +Ctrl+J:段落重排; +Ctrl+X:退出,当文件内容发生改变时,提供是否保存修改。 +``` + +### 语法 + +``` +pico(选项)(参数) +``` + +### 选项 + +``` +-b:开启置换的功能; +-d:开启删除的功能; +-e:使用完整的文件名称; +-f:支持键盘上F1、F2...功能键; +-g:显示光标; +-h:在线帮助; +-j:开启切换的功能; +-k:预设pico在使用剪下命令时,会把光标所在的列的内容全部删除; +-m:开启鼠标支持的功能,您可用鼠标点选命令列表; +-n<间隔秒数>:设置多久检查一次新邮件; +-o<工作目录>:设置工作目录; +-q:忽略预设值; +-r<编辑页宽>:设置编辑文件的页宽; +-s<拼字检查器>:另外指定拼字检查器; +-t:启动工具模式; +-v:启动阅读模式,用户只能观看,无法编辑文件的内容; +-w:关闭自动换行,通过这个参数可以编辑内容很长的列; +-x:关闭页面下方的命令列表; +-z:让pico可被Ctrl+z中断,暂存在后台作业里; ++<列表编号>:执行pico指令进入编辑模式时,从指定的列数开始编辑。 +``` + +### 参数 + +文件:指定要编辑的文件。 \ No newline at end of file diff --git a/command/ping.md b/command/ping.md new file mode 100644 index 00000000000..1068287c4dc --- /dev/null +++ b/command/ping.md @@ -0,0 +1,53 @@ +ping +=== + +测试主机之间网络的连通性 + +## 补充说明 + +**ping命** 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。 + +### 语法 + +``` +ping(选项)(参数) +``` + +### 选项 + +``` +-d:使用Socket的SO_DEBUG功能; +-c<完成次数>:设置完成要求回应的次数; +-f:极限检测; +-i<间隔秒数>:指定收发信息的间隔时间; +-I<网络界面>:使用指定的网络界面送出数据包; +-l<前置载入>:设置在送出要求信息之前,先行发出的数据包; +-n:只输出数值; +-p<范本样式>:设置填满数据包的范本样式; +-q:不显示指令执行过程,开头和结尾的相关信息除外; +-r:忽略普通的Routing Table,直接将数据包送到远端主机上; +-R:记录路由过程; +-s<数据包大小>:设置数据包的大小; +-t<存活数值>:设置存活数值TTL的大小; +-v:详细显示指令的执行过程。 +``` + +### 参数 + +目的主机:指定发送ICMP报文的目的主机。 + +### 实例 + +``` +[root@AY1307311912260196fcZ ~]# ping www.linuxde.net +PING host.1.linuxde.net (100.42.212.8) 56(84) bytes of data. +64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=1 ttl=50 time=177 ms +64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=2 ttl=50 time=178 ms +64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=3 ttl=50 time=174 ms +64 bytes from 100-42-212-8.static.webnx.com (100.42.212.8): icmp_seq=4 ttl=50 time=177 ms +...按Ctrl+C结束 + +--- host.1.linuxde.net ping statistics --- +4 packets transmitted, 4 received, 0% packet loss, time 2998ms +rtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms +``` \ No newline at end of file diff --git a/command/ps.md b/command/ps.md new file mode 100644 index 00000000000..1c120705b37 --- /dev/null +++ b/command/ps.md @@ -0,0 +1,83 @@ +ps +=== + +报告当前系统的进程状态 + +## 补充说明 + +**ps命** 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 + +### 语法 + +``` +ps(选项) +``` + +### 选项 + +``` +-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。 +a:显示现行终端机下的所有程序,包括其他用户的程序。 +-A:显示所有程序。 +-c:显示CLS和PRI栏位。 +c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。 +-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。 +-d:显示所有程序,但不包括阶段作业领导者的程序。 +-e:此选项的效果和指定"A"选项相同。 +e:列出程序时,显示每个程序所使用的环境变量。 +-f:显示UID,PPIP,C与STIME栏位。 +f:用ASCII字符显示树状结构,表达程序间的相互关系。 +-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。 +g:显示现行终端机下的所有程序,包括群组领导者的程序。 +-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。 +h:不显示标题列。 +-H:显示树状结构,表示程序间的相互关系。 +-j或j:采用工作控制的格式显示程序状况。 +-l或l:采用详细的格式来显示程序状况。 +L:列出栏位的相关信息。 +-m或m:显示所有的执行绪。 +n:以数字来表示USER和WCHAN栏位。 +-N:显示所有的程序,除了执行ps指令终端机下的程序之外。 +-p<程序识别码>:指定程序识别码,并列出该程序的状况。 +p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。 +r:只列出现行终端机正在执行中的程序。 +-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。 +s:采用程序信号的格式显示程序状况。 +S:列出程序时,包括已中断的子程序资料。 +-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。 +t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。 +-T:显示现行终端机下的所有程序。 +-u<用户识别码>:此选项的效果和指定"-U"选项相同。 +u:以用户为主的格式来显示程序状况。 +-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。 +U<用户名称>:列出属于该用户的程序的状况。 +v:采用虚拟内存的格式显示程序状况。 +-V或V:显示版本信息。 +-w或w:采用宽阔的格式来显示程序状况。  +x:显示所有程序,不以终端机来区分。 +X:采用旧式的Linux i386登陆格式显示程序状况。 +-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。 +-<程序识别码>:此选项的效果和指定"p"选项相同。 +--cols<每列字符数>:设置每列的最大字符数。 +--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。 +--cumulative:此选项的效果和指定"S"选项相同。 +--deselect:此选项的效果和指定"-N"选项相同。 +--forest:此选项的效果和指定"f"选项相同。 +--headers:重复显示标题列。 +--help:在线帮助。 +--info:显示排错信息。 +--lines<显示列数>:设置显示画面的列数。 +--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。 +--group<群组名称>:此选项的效果和指定"-G"选项相同。 +--Group<群组识别码>:此选项的效果和指定"-G"选项相同。 +--pid<程序识别码>:此选项的效果和指定"-p"选项相同。 +--rows<显示列数>:此选项的效果和指定"--lines"选项相同。 +--sid<阶段作业>:此选项的效果和指定"-s"选项相同。 +--tty<终端机编号>:此选项的效果和指定"-t"选项相同。 +--user<用户名称>:此选项的效果和指定"-U"选项相同。 +--User<用户识别码>:此选项的效果和指定"-U"选项相同。 +--version:此选项的效果和指定"-V"选项相同。 +--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。 +``` + +由于ps命令能够支持的系统类型相当的多,所以选项多的离谱! \ No newline at end of file diff --git a/command/pstree.md b/command/pstree.md new file mode 100644 index 00000000000..32ad82548f5 --- /dev/null +++ b/command/pstree.md @@ -0,0 +1,44 @@ +pstree +=== + +以树状图的方式展现进程之间的派生关系 + +## 补充说明 + +**pstree命** 以树状图的方式展现进程之间的派生关系,显示效果比较直观。 + +### 语法 + +``` +pstree(选项) +``` + +### 选项 + +``` +-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示; +-c:不使用精简标示法; +-G:使用VT100终端机的列绘图字符; +-h:列出树状图时,特别标明现在执行的程序; +-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序; +-l:采用长列格式显示树状图; +-n:用程序识别码排序。预设是以程序名称来排序; +-p:显示程序识别码; +-u:显示用户名称; +-U:使用UTF-8列绘图字符; +-V:显示版本信息。 +``` + +### 实例 + +显示当前所有进程的进程号和进程id + +``` +pstree -p +``` + +显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。 + +``` +pstree -a +``` \ No newline at end of file diff --git a/command/pwconv.md b/command/pwconv.md new file mode 100644 index 00000000000..2407ed4ca57 --- /dev/null +++ b/command/pwconv.md @@ -0,0 +1,28 @@ +pwconv +=== + +用来开启用户的投影密码 + +## 补充说明 + +**pwconv命** 用来开启用户的投影密码。Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于`/etc`目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在`/etc`目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符,有效的强化了系统的安全性。 + +### 语法 + +``` +pwconv +``` + +### 实例 + +``` +cat /etc/passwd | grep test +test:x:3001:3001::/home/test:/bin/sh +``` + +此时可以发现密码段是x + +``` +cat /etc/shadow | grep test +test:$6$nYOEWamm$bz07nlv/.RgJufb3FAqJJeULfwybzgxmrWqbk7O4vI0KsT6N.ujrh6dDIUcAJdfjksyuyAFDPIngZeD3cgcf.0:15022:0:99999:7::: +``` \ No newline at end of file diff --git a/command/pwunconv.md b/command/pwunconv.md new file mode 100644 index 00000000000..f51b0f56219 --- /dev/null +++ b/command/pwunconv.md @@ -0,0 +1,25 @@ +pwunconv +=== + +用来关闭用户的投影密码 + +## 补充说明 + +**pwunconv命** 与pwconv功能相反,用来关闭用户的投影密码。它会把密码从shadow文件内,重回存到passwd文件里。 + +### 语法 + +``` +pwunconv +``` + +### 实例 + +``` +pwunconv //关闭影子密码 +cat /etc/passwd | grep test //发现密码已经在passwd文件中了 +test:$6$nYOEWamm$bz07nlv/.RgJufb3FAqJJeULfwybzgxmrWqbk7O4vI0KsT6N.ujrh6dDIUcAJdfjksyuyAFDPIngZeD3cgcf.0:3001:3001::/home/test:/bin/sh + +ls /etc/shadow //查看影子文件,提示没有这个文件或目录 +ls: cannot access /etc/shadow: No such file or directory +``` \ No newline at end of file diff --git a/command/quota.md b/command/quota.md new file mode 100644 index 00000000000..63974042ef8 --- /dev/null +++ b/command/quota.md @@ -0,0 +1,148 @@ +quota +=== + +显示磁盘已使用的空间与限制 + +## 补充说明 + +**quota命** 用于显示用户或者工作组的磁盘配额信息。输出信息包括磁盘使用和配额限制。 + +### 语法 + +``` +quota(选项)(参数) +``` + +### 选项 + +``` +-g:列出群组的磁盘空间限制; +-q:简明列表,只列出超过限制的部分; +-u:列出用户的磁盘空间限制; +-v:显示该用户或群组,在所有挂入系统的存储设备的空间限制; +-V:显示版本信息。 +``` + +### 参数 + +用户或者工作组:指定要显示的用户或者工作组。 + +### 实例 + +我们可以限制某一群组所能使用的最大磁盘配额,而且可以再限制某一使用者的最大磁盘配额 ,好比做一个收费的应用,vip可以得到空间更大一些。另外,以 Link 的方式,来使邮件可以作为限制的配额(更改`/var/spool/mail` 这个路径),不2,需要重新再规划一个硬盘!直接使用 Link 的方式指向 /home (或者其它已经做好的 quota 磁盘)就可以!这通常是用在原本规划不好,但是却又不想要更动原有主机架构的情况中! + +要求:Linux 主机里面主要针对 quser1 及 quser2 两个使用者来进行磁盘配额, 且这两个使用者都是挂在 qgroup 组里面的。每个使用者总共有 50MB 的磁盘空间 (不考虑 inode) 限制!并且 soft limit 为 45 MB;而宽限时间设定为 1 天, 但是在一天之内必须要将多余的文件删除掉,否则将无法使用剩下的空间 ;gquota 这个组考虑最大限额,所以设定为 90 MB!(注意,这样设置的好处是富有弹性,好比现在的邮件服务,那么多用户,承诺给用户每人最大空间为数GB,然而人们不可能每人都会使用那么大的空间,所以邮件服务的总空间,实际上肯定不是注册客户数乘以数GB,否则这样得多大啊。) + +``` +root@localhost ~ qgroup +root@localhost ~ -m -g qgroup quser1 +[root@localhost ~]# useradd -m -g qgroup quser2 +root@localhost ~ quser1 +[root@localhost ~]# passwd quser2 +root@localhost ~ ===> 自己找一个合适的分区来做实验,这里用/disk2 +Filesystem 1K-blocks Used Available Use% Mounted on +/dev/hda1 5952252 3193292 2451720 57% / +/dev/hdb1 28267608 77904 26730604 1% /disk2 +/dev/hda5 9492644 227252 8775412 3% /disk1 + +root@localhost ~ /etc/fstab +LABEL=/ / ext3 defaults 1 1 +LABEL=/disk1 /disk1 ext3 defaults 1 2 +LABEL=/disk2 /disk2 ext3 defaults,usrquota,grpquota 1 2 +/dev/hda3 swap swap defaults 0 0 +``` + +注意多了`usrquota,grpquota`,在`defaults,usrquota,grpquota`之间都没有空格,务必正确书写。这样就算加入了 quota 的磁盘格式了!不过,由于真正的 quota 在读取的时候是读取`/etc/mtab`这个文件的,而该文件需要重新开机之后才能够以/etc/fstab 的新数据进行改写!所以这个时候可以选择:重新开机 (reboot)。 + +重新`remount filesystem`来驱动设定值。 + +``` +root@localhost ~ /dev/hdb1 +root@localhost ~ -a +root@localhost ~ '/disk2' /etc/mtab +/dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0 +``` + +事实上,也可以利用 mount 的 remount 功能。 + +``` +[root@localhost ~]# mount -o remount /disk2 +``` + +这样就已经成功的将 filesystem 的 quota 功能加入。 + +扫瞄磁盘的使用者使用状况,并产生重要的 aquota.group 与 aquota.user: + +``` +root@localhost ~ -avug +quotacheck: Scanning /dev/hdb1 [/disk2] done +quotacheck: Checked 3 directories and 4 files + +[root@localhost ~]# ll /disk2 +-rw------- 1 root root 6144 Sep 6 11:44 aquota.group +-rw------- 1 root root 6144 Sep 6 11:44 aquota.user +``` + +使用 quotacheck 就可以轻易的将所需要的数据给他输出了!但奇怪的是,在某些 Linux 版本中,不能够以 aquota.user(group) 来启动quota ,可能是因为旧版 quota 的关系, 所以就另外做了一个 link 文件按来欺骗 quota,这个动作非必要。(主要是学习这个思维很重要) + +``` +root@localhost ~ /disk2 +root@localhost ~ -s aquota.user quota.user +[root@localhost ~]# ln -s aquota.group quota.group +``` + +启动 quota 的限额: + +``` +root@localhost ~ -avug +/dev/hdb1 [/disk2]: group quotas turned on +/dev/hdb1 [/disk2]: user quotas turned on ===> 看到turned on,才是真的成功! +``` + +编辑使用者的可使用空间: + +``` +root@localhost ~ -u quser1 +Disk quotas for user quser1 (uid 502): + Filesystem blocks soft hard inodes soft hard + /dev/hdb1 0 45000 50000 0 0 0 +[root@localhost ~]# edquota -p quser1 quser2 ===> 直接复制给quser2 +``` + +接下来要来设定宽限时间,还是使用 edquota + +``` +[root@localhost ~]# edquota -t +Grace period before enforcing soft limits for users: +time units may be: days, hours, minutes, or seconds + Filesystem Block grace period Inode grace period + /dev/hdb1 1days 7days +``` + +使用`quota -v`来查询: + +``` +[root@localhost ~]# quota -vu quser1 quser2 +Disk quotas for user quser1 (uid 502): + Filesystem blocks quota limit grace files quota limit grace + /dev/hdb1 0 45000 50000 0 0 0 +Disk quotas for user quser2 (uid 503): + Filesystem blocks quota limit grace files quota limit grace + /dev/hdb1 0 45000 50000 0 0 0 +``` + +注意,由于使用者尚未超过45 MB,所以 grace ( 宽限时间 ) 就不会出现。 + +编辑群组可使用的空间: + +``` +[root@localhost ~]# edquota -g qgroup +Disk quotas for group qgroup (gid 502): + Filesystem blocks soft hard inodes soft hard + /dev/hdb1 0 80000 90000 0 0 0 + +[root@localhost ~]# quota -vg qgroup +Disk quotas for group qgroup (gid 502): + Filesystem blocks quota limit grace files quota limit grace + /dev/hdb1 0 80000 90000 0 0 0 +``` \ No newline at end of file diff --git a/command/quotacheck.md b/command/quotacheck.md new file mode 100644 index 00000000000..2804c875635 --- /dev/null +++ b/command/quotacheck.md @@ -0,0 +1,46 @@ +quotacheck +=== + +检查磁盘的使用空间与限制 + +## 补充说明 + +**quotacheck命** 通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设置用户和群组的磁盘空间限制。 + +### 语法 + +``` +quotacheck(选项)(参数) +``` + +### 选项 + +``` +-a:扫描在/etc/fstab文件里,有加入quota设置的分区; +-d:详细显示指令执行过程,便于排错或了解程序执行的情形; +-g:扫描磁盘空间时,计算每个群组识别码所占用的目录和文件数目; +-R:排除根目录所在的分区; +-u:扫描磁盘空间时,计算每个用户识别码所占用的目录和文件数目; +-v:显示指令执行过程。 +``` + +### 参数 + +文件系统:指定要扫描的文件系统。 + +### 实例 + +将所有的在`/etc/mtab`内,含有quota支持的partition进行扫描: + +``` +[root@linux ~]# quotacheck -avug +quotacheck: Scanning /dev/hdb1 [/disk2] done +quotacheck: Checked 3 directories and 4 files + +``` + +强制扫描已挂载的filesystem: + +``` +[root@linux ~]# quotacheck -avug -m +``` \ No newline at end of file diff --git a/command/quotaoff.md b/command/quotaoff.md new file mode 100644 index 00000000000..6dd54b4fa2e --- /dev/null +++ b/command/quotaoff.md @@ -0,0 +1,27 @@ +quotaoff +=== + +关闭Linux内核中指定文件系统的磁盘配额功能 + +## 补充说明 + +**quotaoff命** 用于关闭Linux内核中指定文件系统的磁盘配额功能。 + +### 语法 + +``` +quotaoff(选项)(参数) +``` + +### 选项 + +``` +-a:关闭在/etc/fstab文件里,有加入quota设置的分区的空间限制; +-g:关闭群组的磁盘空间限制; +-u:关闭用户的磁盘空间限制; +-v:显示指令执行过程。 +``` + +### 参数 + +文件系统:指定要关闭磁盘配额功能的文件系统。 \ No newline at end of file diff --git a/command/quotaon.md b/command/quotaon.md new file mode 100644 index 00000000000..9034a402f4a --- /dev/null +++ b/command/quotaon.md @@ -0,0 +1,27 @@ +quotaon +=== + +激活Linux内核中指定文件系统的磁盘配额功能 + +## 补充说明 + +**quotaon命** 用于激活Linux内核中指定文件系统的磁盘配额功能。执行quotaon指令可开启用户和群组的才磅秒年空间限制,各分区的文件系统根目录必须有quota.user和quota.group配置文件。 + +### 语法 + +``` +quotaon(选项)(参数) +``` + +### 选项 + +``` +-a:开启在/ect/fstab文件里,有加入quota设置的分区的空间限制; +-g:开启群组的磁盘空间限制; +-u:开启用户的磁盘空间限制; +-v:显示指令指令执行过程。 +``` + +### 参数 + +文件系统:指定要激活磁盘配额功能的文件系统。 \ No newline at end of file diff --git a/command/rcp.md b/command/rcp.md new file mode 100644 index 00000000000..2e4cc544064 --- /dev/null +++ b/command/rcp.md @@ -0,0 +1,125 @@ +rcp +=== + +使在两台Linux主机之间的文件复制操作更简单 + +## 补充说明 + +**rcp命** 使在两台Linux主机之间的文件复制操作更简单。通过适当的配置,在两台Linux主机之间复制文件而无需输入密码,就像本地文件复制一样简单。 + +### 语法 + +``` +rcp(选项)(参数) +``` + +### 选项 + +``` +-p:保留源文件或目录的属性,包括拥有者、所属群组、权限与时间; +-r:递归处理,将指定目录下的文件与子目录一并处理; +-x:加密两台Linux主机间传送的所有信息。 +-D:指定远程服务器的端口号。 +``` + +同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线`\\`、双引号`""`或单引号`''`括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。 + +directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式`rname@rhost:path`,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。 + +### 参数 + +源文件:指定要复制的源文件。源文件可以有多个。 + +### 实例 + +**rcp命令使用条件** + +如果系统中有`/etc/hosts`文件,系统管理员应确保该文件包含要与之进行通信的远程主机的项。配置过程: + +只对root用户生效 + +1、在双方root用户根目录下建立rhosts文件,并将双方的hostname加进去。在此之前应在双方的`/etc/hosts`文件中加入对方的ip和hostname + +2、把rsh服务启动起来,redhat默认是不启动的。 + +方法:用执行ntsysv命令,在rsh选项前用空格键选中,确定退出。然后执行`service xinetd restart`即可。 + +3、到`/etc/pam.d/`目录下,把rsh文件中的`auth required /lib/security/pam_securetty.so`一行用“#”注释掉即可。(只有注释掉这一行,才能用root用户登录) + +**将当前目录下的 test1 复制到名为 webserver1 的远程系统:** + +``` +rcp test1 webserver1:/home/root/test3 +``` + +在这种情况下,test1 被复制到远程子目录 test3下,名称仍为 test1 。如果仅提供了远程主机名,rcp 将把 test1 复制到远程主目录下,名称仍为 test1 。 + +**还可以在目的目录中包含文件名。例如,将文件复制到名为 webserver1的系统中:** + +``` +rcp test1 webserver1:/home/root/test3 +``` + +在这种情况下,将 test1 复制到远程目录root 下并将其命名为 test3。 + +**从远程系统复制文件:要将远程系统中的文件复制到本地目录下:** + +``` +rcp remote_hostname:remote_file local_fileEnter +``` + +**将远程系统 webserver1中的 test2 复制到当前目录:** + +``` +rcp webserver1:/home/root/test2 .Enter +``` + +`.`是“当前目录”的简写形式。在这种情况下,远程目录中的 test2 被复制到当前目录下,名称仍为 test2 。 + +如果希望用新名称复制文件,请提供目标文件名。如果希望将 test2 复制到本地系统中的其他目录下,请使用以下绝对或相对路径名: + +``` +rcp webserver1:/home/root/test2 otherdir/ Enter +``` + +或者,如果希望用其他文件名将文件复制到其他目录下: + +``` +rcp webserver1:/home/root/test2 otherdir/otherfile Enter +``` + +**将目录复制到远程系统:** + +要将本地目录及其文件和子目录复制到远程系统,请同时使用 rcp 和 -r(递归)选项。 + +``` +rcp -r local_dir remote_hostname:remote_dir Enter +``` + +如果当前目录下没有 local_dir,则除本地目录名外,还需要提供相对路径名(自当前目录开始)或绝对路径名(自 / 顶级目录开始)。另外,如果主目录下没有 remote_dir,则 remote_dir 将需要一个相对路径(自主目录开始)或绝对路径(自 / 开始)。 + +**要将名为 work 的子目录完整地复制到 webserver1远程计算机中的主目录下名为 products 的目录,请键入以下内容:** + +``` +rcp -r work webserver1:/home/root/products Enter +``` + +此命令在`webserver1:/home/root/products`下创建名为 work 的目录及其全部内容(假定`/home/root/products`已存在于 webserver1中)。 + +本示例假定用户处于包含 work 的本地目录下。否则,必须提供该目录的相对或绝对路径,如`/home/root/work`。 + +**从远程系统复制目录:** + +要将远程目录及其所有文件和子目录复制到本地目录,请在以下语法中使用 rcp 和 -r(递归)选项。 + +``` +rcp –r remote_hostname:remote_dir local_dir Enter +``` + +要将名为 work 的远程目录复制到当前目录,请键入以下内容: + +``` +rcp –r webserver1:/home/root/work .Enter +``` + +`.`表示当前目录。将在此目录下创建 work 目录。 \ No newline at end of file diff --git a/command/reboot.md b/command/reboot.md new file mode 100644 index 00000000000..32b86d34358 --- /dev/null +++ b/command/reboot.md @@ -0,0 +1,31 @@ +reboot +=== + +重新启动正在运行的Linux操作系统 + +## 补充说明 + +**reboot命** 用来重新启动正在运行的Linux操作系统。 + +### 语法 + +``` +reboot(选项) +``` + +### 选项 + +``` +-d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果; +-f:强制重新开机,不调用shutdown指令的功能; +-i:在重开机之前,先关闭所有网络界面; +-n:重开机之前不检查是否有未结束的程序; +-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。 +``` + +### 实例 + +``` +reboot //重开机。 +reboot -w //做个重开机的模拟(只有纪录并不会真的重开机)。 +``` \ No newline at end of file diff --git a/command/renice.md b/command/renice.md new file mode 100644 index 00000000000..8d55ef73555 --- /dev/null +++ b/command/renice.md @@ -0,0 +1,36 @@ +renice +=== + +修改正在运行的进程的调度优先级 + +## 补充说明 + +**renice命** 可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。 + +### 语法 + +``` +renice(选项)(参数) +``` + +### 选项 + +``` +-g:指定进程组id; +-p<程序识别码>:改变该程序的优先权等级,此参数为预设值。 +-u:指定开启进程的用户名。 +``` + +### 参数 + +进程号:指定要修改优先级的进程。 + +### 实例 + +将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1: + +``` +renice 1 987 -u daemon root -p 32 +``` + +注意:每一个行程都有一个唯一的id。 \ No newline at end of file diff --git a/command/repquota.md b/command/repquota.md new file mode 100644 index 00000000000..5cb7cd58344 --- /dev/null +++ b/command/repquota.md @@ -0,0 +1,35 @@ +repquota +=== + +报表的格式输出磁盘空间限制的状态 + +## 补充说明 + +**repquota命** 以报表的格式输出指定分区,或者文件系统的磁盘配额信息。 + +### 语法 + +``` +repquota(选项)(参数) +``` + +### 选项 + +``` +-a:列出在/etc/fstab文件里,有加入quota设置的分区的使用状况,包括用户和群组; +-g:列出所有群组的磁盘空间限制; +-u:列出所有用户的磁盘空间限制; +-v:显示该用户或群组的所有空间限制。 +``` + +### 参数 + +文件系统:要打印报表的文件系统或者对应的设备文件名。 + +### 实例 + +显示所有文件系统的磁盘使用情况 + +``` +repquota -a +``` \ No newline at end of file diff --git a/command/restore.md b/command/restore.md new file mode 100644 index 00000000000..858576faa52 --- /dev/null +++ b/command/restore.md @@ -0,0 +1,52 @@ +restore +=== + +所进行的操作和dump指令相反 + +## 补充说明 + +**restore命** 是dump命令的逆过程,用于还原dump命令生成的备份文件。倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。 + +### 语法 + +``` +restore(选项) +``` + +### 选项 + +``` +-b<区块大小>:设置区块大小,单位为Byte; +-c:不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件; +-C:使用对比模式,将备份的文件与现行的文件相互对比; +-D<文件系统>:允许用户指定文件系统的名称; +-f<备份文件>:从指定的文件中读取备份数据,进行还原操作; +-h:仅解除目录而不包括与该目录相关的所有文件; +-i:使用互动模式,在进行还原操作时,restore指令将依序询问用户; +-m:解开符合指定的inode编号的文件或目录而非用文件名称指定; +-r:进行还原操作; +-R:全面还原文件系统时,检查应从何处开始进行; +-s<文件编号>:当备份数据超过一卷磁带时,用户可以指定备份文件的编号; +-t:指定文件名称,若该文件已存在备份文件中,则列出它们的名称; +-v:显示指令执行过程; +-x:设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内; +-y:不询问任何问题,一律以同意回答并继续执行指令。 +``` + +### 实例 + +``` +dump -9 -u -f /dev/hda3 /home/frank/ +``` + +用restore命令来恢复备份: + +``` +restore rf /dev/hda3 /home/frank +``` + +用restore命令来查看备份文件里的文件列表: + +``` +restore ft /dev/hda3 +``` \ No newline at end of file diff --git a/command/rlogin.md b/command/rlogin.md new file mode 100644 index 00000000000..e3a0caf414c --- /dev/null +++ b/command/rlogin.md @@ -0,0 +1,28 @@ +rlogin +=== + +从当前终端登录到远程Linux主机 + +## 补充说明 + +**rlogin命** 用于从当前终端登录到远程Linux主机。 + +### 语法 + +``` +rlogin(选项)(参数) +``` + +### 选项 + +``` +-8:允许输入8位字符数据; +-e脱离字符>:设置脱离字符; +-E:滤除脱离字符; +-l用户名称>:指定要登入远端主机的用户名称; +-L:使用litout模式进行远端登入阶段操作。 +``` + +### 参数 + +远程主机:指定要登录的远程主机(ip地址或者域名)。 \ No newline at end of file diff --git a/command/rm.md b/command/rm.md new file mode 100644 index 00000000000..6a34a071d87 --- /dev/null +++ b/command/rm.md @@ -0,0 +1,49 @@ +rm +=== + +用于删除给定的文件和目录 + +## 补充说明 + +**r** **命令**可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。 + +注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。 + +### 语法 + +``` +rm (选项)(参数) +``` + +### 选项 + +``` +-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录; +-f:强制删除文件或目录; +-i:删除已有文件或目录之前先询问用户; +-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理; +--preserve-root:不对根目录进行递归操作; +-v:显示指令的详细执行过程。 +``` + +### 参数 + +文件:指定被删除的文件列表,如果参数中含有目录,则必须加上`-r`或者`-R`选项。 + +### 实例 + +交互式删除当前目录下的文件test和example + +``` +rm -i test example +Remove test ?n(不删除文件test) +Remove example ?y(删除文件example) +``` + +删除当前目录下除隐含文件外的所有文件和子目录 + +``` +# rm -r * +``` + +应注意,这样做是非常危险的! \ No newline at end of file diff --git a/command/rmdir.md b/command/rmdir.md new file mode 100644 index 00000000000..5800e9f886f --- /dev/null +++ b/command/rmdir.md @@ -0,0 +1,41 @@ +rmdir +=== + +用来删除空目录 + +## 补充说明 + +**rmdir命** 用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。 + +注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。 + +虽然还可以用带有`-r`选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。 + +### 语法 + +``` +rmdir(选项)(参数) +``` + +### 选项 + +``` +-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除; +--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息; +-v或-verboes:显示命令的详细执行过程; +--help:显示命令的帮助信息; +--version:显示命令的版本信息。 +``` + +### 参数 + +目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。 + +### 实例 + +删除子目录os_1和其父目录bin + +``` +cd /usr/meng/test +rmdir -p bin/os_1 +``` \ No newline at end of file diff --git a/command/rmmod.md b/command/rmmod.md new file mode 100644 index 00000000000..170d80da84a --- /dev/null +++ b/command/rmmod.md @@ -0,0 +1,39 @@ +rmmod +=== + +从运行的内核中移除指定的内核模块 + +## 补充说明 + +**rmmod命** 用于从当前运行的内核中移除指定的内核模块。执行rmmod指令,可删除不需要的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。 + +### 语法 + +``` +rmmod(选项)(参数) +``` + +### 选项 + +``` +-v:显示指令执行的详细信息; +-f:强制移除模块,使用此选项比较危险; +-w:等待着,直到模块能够被除时在移除模块; +-s:向系统日志(syslog)发送错误信息。 +``` + +### 参数 + +模块名:要移除的模块名称。 + +### 实例 + +用rmmod命令主要用于卸载正在使用的Linux内核模块,与`modprobe -r`命令相似,如下所示: + +``` +root@localhost boot | grep raid1 +raid1 25153 0 + +[root@localhost boot]# rmmod raid1 +[root@localhost boot]# lsmod | grep raid1 +``` \ No newline at end of file diff --git a/command/rpm.md b/command/rpm.md new file mode 100644 index 00000000000..3db7824765f --- /dev/null +++ b/command/rpm.md @@ -0,0 +1,211 @@ +rpm +=== + +RPM软件包的管理工具 + +## 补充说明 + +**rpm命** 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。 + +### 语法 + +``` +rpm(选项)(参数) +``` + +### 选项 + +``` +-a:查询所有套件; +-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称; +-c:只列出组态配置文件,本参数需配合"-l"参数使用; +-d:只列出文本文件,本参数需配合"-l"参数使用; +-e<套件档>或--erase<套件档>:删除指定的套件; +-f<文件>+:查询拥有指定文件的套件; +-h或--hash:套件安装时列出标记; +-i:显示套件的相关信息; +-i<套件档>或--install<套件档>:安装指定的套件档; +-l:显示套件的文件列表; +-p<套件档>+:查询指定的RPM套件档; +-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户; +-R:显示套件的关联性信息; +-s:显示文件状态,本参数需配合"-l"参数使用; +-U<套件档>或--upgrade<套件档>:升级指定的套件档; +-v:显示指令执行过程; +-vv:详细显示指令执行过程,便于排错。 +``` + +### 参数 + +软件包:指定要操纵的rpm软件包。 + +### 实例 + +**如何安装rpm软件包** + +rpm软件包的安装可以使用程序rpm来完成。执行下面的命令: + +``` +rpm -ivh your-package.rpm +``` + +其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。 + +安装过程中可能出现下面的警告或者提示: + +``` +... conflict with ... +``` + +可能是要安装的包里有一些文件可能会覆盖现有的文件,缺省时这样的情况下是无法正确安装的可以用`rpm --force -i`强制安装即可 + +``` +... is needed by ... +... is not installed ... +``` + +此包需要的一些软件你没有安装可以用`rpm --nodeps -i`来忽略此信息,也就是说`rpm -i --force --nodeps`可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能。 + +**如何安装.src.rpm软件包** + +有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法: + +方法一: + +``` +rpm -i your-package.src.rpm +cd /usr/src/redhat/SPECS +rpmbuild -bp your-package.specs #一个和你的软件包同名的specs文件 +cd /usr/src/redhat/BUILD/your-package/ #一个和你的软件包同名的目录 +./configure #这一步和编译普通的源码软件一样,可以加上参数 +make +make install +``` + +方法二: + +``` +rpm -i you-package.src.rpm +cd /usr/src/redhat/SPECS +``` + +前两步和方法一相同 + +``` +rpmbuild -bb your-package.specs #一个和你的软件包同名的specs文件 +``` + +这时在`/usr/src/redhat/RPM/i386/`(根据具体包的不同,也可能是i686,noarch等等)在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。 + +执行`rpm -i new-package.rpm`即可安装完成。 + +**如何卸载rpm软件包** + +使用命令`rpm -e`包名,包名可以包含版本号等信息,但是不可以有后缀.rpm,比如卸载软件包proftpd-1.2.8-1,可以使用下列格式: + +``` +rpm -e proftpd-1.2.8-1 +rpm -e proftpd-1.2.8 +rpm -e proftpd- +rpm -e proftpd +``` + +不可以是下列格式: + +``` +rpm -e proftpd-1.2.8-1.i386.rpm +rpm -e proftpd-1.2.8-1.i386 +rpm -e proftpd-1.2 +rpm -e proftpd-1 +``` + +有时会出现一些错误或者警告: + +``` +... is needed by ... +``` + +这说明这个软件被其他软件需要,不能随便卸载,可以用rpm -e --nodeps强制卸载 + +**如何不安装但是获取rpm包中的文件** + +使用工具rpm2cpio和cpio + +``` +rpm2cpio xxx.rpm | cpio -vi +rpm2cpio xxx.rpm | cpio -idmv +rpm2cpio xxx.rpm | cpio --extract --make-directories +``` + +参数i和extract相同,表示提取文件。v表示指示执行进程,d和make-directory相同,表示根据包中文件原来的路径建立目录,m表示保持文件的更新时间。 + +**如何查看与rpm包相关的文件和其他信息** + +下面所有的例子都假设使用软件包mysql-3.23.54a-11 + +1、我的系统中安装了那些rpm软件包。 + +``` +rpm -qa 讲列出所有安装过的包 +``` + +如果要查找所有安装过的包含某个字符串sql的软件包 + +``` +rpm -qa | grep sql +``` + +2、如何获得某个软件包的文件全名。 + +``` +rpm -q mysql +``` + +可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11 + +3、一个rpm包中的文件安装到那里去了? + +``` +rpm -ql 包名 +``` + +注意这里的是不包括.rpm后缀的软件包的名称,也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm。如果只是想知道可执行程序放到那里去了,也可以用which,比如: + +``` +which mysql +``` + +4、一个rpm包中包含那些文件。 + +* 一个没有安装过的软件包,使用`rpm -qlp ****.rpm` +* 一个已经安装过的软件包,还可以使用`rpm -ql ****.rpm` + +5、如何获取关于一个软件包的版本,用途等相关信息? + +* 一个没有安装过的软件包,使用`rpm -qip ****.rpm` +* 一个已经安装过的软件包,还可以使用`rpm -qi ****.rpm` + +6、某个程序是哪个软件包安装的,或者哪个软件包包含这个程序。 + +``` +rpm -qf `which 程序名` #返回软件包的全名 +rpm -qif `which 程序名` #返回软件包的有关信息 +rpm -qlf `which 程序名` #返回软件包的文件列表 +``` + +注意,这里不是引号,而是`,就是键盘左上角的那个键。也可以使用`rpm -qilf`,同时输出软件包信息和文件列表。 + +7、某个文件是哪个软件包安装的,或者哪个软件包包含这个文件。 + +注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以用于可执行程序,也可以用于普通的任何文件。前提是知道这个文件名。首先获得这个程序的完整路径,可以用whereis或者which,然后使用`rpm -qf`例如: + +``` +whereis ftptop +ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz + +rpm -qf /usr/bin/ftptop +proftpd-1.2.8-1 + +rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt +proftpd-1.2.8-1 +``` \ No newline at end of file diff --git a/command/rsh.md b/command/rsh.md new file mode 100644 index 00000000000..84362ac9102 --- /dev/null +++ b/command/rsh.md @@ -0,0 +1,27 @@ +rsh +=== + +连接远程主机并执行命令 + +## 补充说明 + +**rsh命** 用于连接到远程的指定主机并执行指定的命令。 + +### 语法 + +``` +rsh(选项)(参数) +``` + +### 选项 + +``` +-d:使用Socket层级的排错功能; +-l<用户名称>:指定要登入远端主机的用户名称; +-n:把输入的指令号向代号为/dev/null的特殊外围设备。 +``` + +### 参数 + +* 远程主机:指定要连接的远程主机; +* 指令:指定要在远程主机上执行的命令。 \ No newline at end of file diff --git a/command/screen.md b/command/screen.md new file mode 100644 index 00000000000..dd60b092e8b --- /dev/null +++ b/command/screen.md @@ -0,0 +1,220 @@ +screen +=== + +用于命令行终端切换 + +## 补充说明 + +**Scree** 是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。 + +**会话恢复** + +只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。 + +**多窗口** + +在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。 + +GNU's Screen 官方站点:http://www.gnu.org/software/screen/ + +### 语法 + +``` +# screen -AmRvx -[ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>] +``` + +### 选项 + +``` +-A  将所有的视窗都调整为目前终端机的大小。 +-d <作业名称>  将指定的screen作业离线。 +-h <行数>  指定视窗的缓冲区行数。 +-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。 +-r <作业名称>  恢复离线的screen作业。 +-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 +-s  指定建立新视窗时,所要执行的shell。 +-S <作业名称>  指定screen作业的名称。 +-v  显示版本信息。 +-x  恢复之前离线的screen作业。 +-ls或--list  显示目前所有的screen作业。 +-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。 +``` + +### 常用screen参数 + +``` +screen -S yourname -> 新建一个叫yourname的session +screen -ls -> 列出当前所有的session +screen -r yourname -> 回到yourname这个session +screen -d yourname -> 远程detach某个session +screen -d -r yourname -> 结束当前session并回到yourname这个session +``` + +在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。 + +``` +C-a ? -> 显示所有键绑定信息 +C-a c -> 创建一个新的运行shell的窗口并切换到该窗口 +C-a n -> Next,切换到下一个 window +C-a p -> Previous,切换到前一个 window +C-a 0..9 -> 切换到第 0..9 个 window +Ctrl+a [Space] -> 由视窗0循序切换到视窗9 +C-a C-a -> 在两个最近使用的 window 间切换 +C-a x -> 锁住当前的 window,需用用户密码解锁 +C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 +C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。 +C-a w -> 显示所有窗口列表 +C-a t -> time,显示当前时间,和系统的 load +C-a k -> kill window,强行关闭当前的 window +C-a -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 [vi 一样 + C-b Backward,PageUp + C-f Forward,PageDown + H(大写) High,将光标移至左上角 + L Low,将光标移至左下角 + 0 移到行首 + $ 行末 + w forward one word,以字为单位往前移 + b backward one word,以字为单位往后移 + Space 第一次按为标记区起点,第二次按为终点 + Esc 结束 copy mode +C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上 +``` + +### 使用 screen + +**安装screen** + +流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。 + +``` +root@TS-DEV ~ install screen +root@TS-DEV ~ -qa|grep screen +screen-4.0.3-4.el5 +[root@TS-DEV ~]# +``` + +**创建一个新的窗口** + +安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨: + +``` +[root@TS-DEV ~]# screen -S david +``` + +screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如: + +``` +[root@TS-DEV ~]# screen vi david.txt +``` + +screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。 + +**查看窗口和窗口名称** + +打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。窗口列表的样子一般是这样: + +``` +0$ bash 1-$ bash 2*$ bash +``` + +这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。 + +Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认。 + +**会话分离与恢复** + +你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/david.txt文件: + +``` +[root@TS-DEV ~]# screen vi /tmp/david.txt +``` + +之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d,Screen会给出detached提示: + +暂时中断会话 + +! + +半个小时之后回来了,找到该screen会话: + +``` +[root@TS-DEV ~]# screen -ls +``` + +! + +重新连接会话: + +``` +[root@TS-DEV ~]# screen -r 12865 +``` + +一切都在。 + +当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来: + +! + +**清除dead 会话** + +如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话: + +! + +**关闭或杀死窗口** + +正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。 + +如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。 + +除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。 + +### screen 高级应用  + +**会话共享** + +还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令: + +``` +[root@TS-DEV ~]# screen -x +``` + +这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。 + +**会话锁定与解锁** + +Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。 + +也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。 + +**发送命令到screen会话** + +在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作: + +``` +root@TS-DEV ~ www.baidu.com +``` + +这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。 + +**屏幕分割** + +现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a 在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。 + +可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。 + +! + +**C/P模式和操作** + +screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a 或者C-a [可以进入copy/paste模式,这个模式下可以像在vi中一样移动光标,并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。关于C/P模式下的高级操作,其文档的这一部分有比较详细的说明。 + +一般情况下,可以移动光标到指定位置,按下空格设置一个开头标记,然后移动光标到结尾位置,按下空格设置第二个标记,同时会将两个标记之间的部分储存在copy/paste buffer中,并退出copy/paste模式。在正常模式下,可以使用快捷键C-a ]将储存在buffer中的内容粘贴到当前窗口。 + +! + +**更多screen功能** + +同大多数UNIX程序一样,GNU Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。如果你愿意的话,也可以自己指定screen配置文件。 + +以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。 \ No newline at end of file diff --git a/command/sed.md b/command/sed.md new file mode 100644 index 00000000000..56ca2053474 --- /dev/null +++ b/command/sed.md @@ -0,0 +1,432 @@ +sed +=== + +功能强大的流式文本编辑器 + +## 补充说明 + +
+ +
本文索引
+ +[隐藏)] + +* sed的选项、命令、替换标记 + * 选项 + * 参数 + * sed命令 + * sed替换标记 + * sed元字符集 +* sed用法实例 + * 替换操作:s命令 + * 全面替换标记g + * 定界符 + * 删除操作:d命令 + * 已匹配字符串标记& + * 子串匹配标记\1 + * 组合多个表达式 + * 引用 + * 选定行的范围:,(逗号) + * 多点编辑:e命令 + * 从文件读入:r命令 + * 写入文件:w命令   + * 追加(行下):a\命令 + * 插入(行上):i\命令 + * 下一个:n命令 + * 变形:y命令 + * 退出:q命令 + * 保持和获取:h命令和G命令 + * 保持和互换:h命令和x命令 + * 脚本scriptfile + * 打印奇数行或偶数行 + * 打印匹配字符串的下一行 + +
+ +**sed**是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 + +## sed的选项、命令、替换标记 + +**命令格式** + +``` +sed options' file(s) +sed options +``` + +### 选项 + +``` +-e