From 801fcaadac42bf85e7e509f59f3951345af2cb0f Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Tue, 19 Oct 2021 05:57:58 +0000 Subject: [PATCH] deploy: 942693937c9bec0ad7edd7ddc5706a743e7834e9 --- c/ab.html | 28 ++-- c/accept.html | 28 ++-- c/ack.html | 52 ++----- c/alias.html | 56 ++----- c/apachectl.html | 24 +-- c/apk.html | 32 ++-- c/apropos.html | 32 ++-- c/apt-get.html | 32 ++-- c/apt-key.html | 28 ++-- c/apt-sortpkgs.html | 28 ++-- c/aptitude.html | 32 ++-- c/ar.html | 28 ++-- c/arch.html | 32 ++-- c/arj.html | 24 +-- c/arp.html | 32 ++-- c/arpd.html | 32 ++-- c/arping.html | 32 ++-- c/arptables.html | 24 +-- c/arpwatch.html | 24 +-- c/as.html | 28 ++-- c/at.html | 32 ++-- c/atop.html | 32 ++-- c/atq.html | 28 ++-- c/atrm.html | 32 ++-- c/awk.html | 172 ++++++---------------- c/axel.html | 32 ++-- c/badblocks.html | 36 ++--- c/base64.html | 28 ++-- c/basename.html | 32 ++-- c/batch.html | 32 ++-- c/bc.html | 32 ++-- c/bg.html | 36 ++--- c/bind.html | 28 ++-- c/blkid.html | 28 ++-- c/blockdev.html | 28 ++-- c/bmodinfo.html | 32 ++-- c/break.html | 36 ++--- c/builtin.html | 36 ++--- c/bunzip2.html | 32 ++-- c/bye.html | 24 +-- c/bzcat.html | 28 ++-- c/bzcmp.html | 24 +-- c/bzdiff.html | 24 +-- c/bzgrep.html | 24 +-- c/bzip2.html | 32 ++-- c/bzip2recover.html | 24 +-- c/bzless.html | 24 +-- c/bzmore.html | 24 +-- c/cal.html | 32 ++-- c/cancel.html | 28 ++-- c/cat.html | 48 ++---- c/cd.html | 40 ++--- c/cdrecord.html | 32 ++-- c/chage.html | 28 ++-- c/chattr.html | 28 ++-- c/chcon.html | 28 ++-- c/chfn.html | 32 ++-- c/chgrp.html | 32 ++-- c/chkconfig.html | 28 ++-- c/chmod.html | 40 ++--- c/chown.html | 32 ++-- c/chpasswd.html | 28 ++-- c/chroot.html | 32 ++-- c/chsh.html | 32 ++-- c/cksum.html | 32 ++-- c/clear.html | 24 +-- c/clock.html | 28 ++-- c/clockdiff.html | 24 +-- c/cmp.html | 32 ++-- c/col.html | 24 +-- c/colrm.html | 24 +-- c/comm.html | 48 ++---- c/command.html | 28 ++-- c/compress.html | 32 ++-- c/consoletype.html | 24 +-- c/continue.html | 36 ++--- c/convertquota.html | 32 ++-- c/cp.html | 32 ++-- c/cpio.html | 28 ++-- c/crontab.html | 36 ++--- c/csplit.html | 32 ++-- c/cu.html | 28 ++-- c/cupsdisable.html | 28 ++-- c/cupsenable.html | 28 ++-- c/curl.html | 32 ++-- c/cut.html | 36 ++--- c/date.html | 40 ++--- c/dd.html | 28 ++-- c/declare.html | 44 ++---- c/depmod.html | 28 ++-- c/df.html | 36 ++--- c/dhclient.html | 32 ++-- c/dhcpd.html | 24 +-- c/dhcrelay.html | 28 ++-- c/diff.html | 32 ++-- c/diff3.html | 28 ++-- c/diffstat.html | 32 ++-- c/dig.html | 32 ++-- c/dircolors.html | 32 ++-- c/dirname.html | 28 ++-- c/dirs.html | 40 ++--- c/disown.html | 44 ++---- c/dmesg.html | 28 ++-- c/dmidecode.html | 28 ++-- c/dnf.html | 24 +-- c/dnsdomainname.html | 28 ++-- c/domainname.html | 32 ++-- c/dos2unix.html | 32 ++-- c/dpkg-deb.html | 32 ++-- c/dpkg-divert.html | 32 ++-- c/dpkg-preconfigure.html | 32 ++-- c/dpkg-query.html | 32 ++-- c/dpkg-reconfigure.html | 32 ++-- c/dpkg-split.html | 32 ++-- c/dpkg-statoverride.html | 28 ++-- c/dpkg-trigger.html | 28 ++-- c/dpkg.html | 32 ++-- c/dris.html | 24 +-- c/dstat.html | 36 ++--- c/du.html | 28 ++-- c/dump.html | 32 ++-- c/e2fsck.html | 32 ++-- c/e2label.html | 28 ++-- c/echo.html | 32 ++-- c/ed.html | 28 ++-- c/edquota.html | 32 ++-- c/egrep.html | 24 +-- c/eject.html | 28 ++-- c/elinks.html | 28 ++-- c/elm.html | 24 +-- c/emacs.html | 32 ++-- c/enable.html | 44 ++---- c/env.html | 32 ++-- c/ethtool.html | 32 ++-- c/ex.html | 24 +-- c/exec.html | 32 ++-- c/exit.html | 36 ++--- c/expand.html | 28 ++-- c/export.html | 80 +++------- c/exportfs.html | 16 +- c/expr.html | 32 ++-- c/false.html | 28 ++-- c/fc.html | 40 ++--- c/fdisk.html | 32 ++-- c/fg.html | 36 ++--- c/fgrep.html | 28 ++-- c/file.html | 32 ++-- c/find.html | 80 +++------- c/findfs.html | 28 ++-- c/finger.html | 32 ++-- c/firewall-cmd.html | 24 +-- c/fishshell.html | 68 +++------ c/fmt.html | 28 ++-- c/fold.html | 28 ++-- c/fping.html | 28 ++-- c/free.html | 28 ++-- c/fsck.html | 32 ++-- c/ftp.html | 32 ++-- c/ftpcount.html | 16 +- c/ftpshut.html | 16 +- c/ftptop.html | 24 +-- c/ftpwho.html | 24 +-- c/fuser.html | 32 ++-- c/gcc.html | 32 ++-- c/gcov.html | 28 ++-- c/gdb.html | 36 ++--- c/get_module.html | 24 +-- c/getenforce.html | 24 +-- c/getsebool.html | 28 ++-- c/git.html | 308 ++++++++++----------------------------- c/gpasswd.html | 32 ++-- c/gpm.html | 24 +-- c/grep.html | 36 ++--- c/groupadd.html | 32 ++-- c/groupdel.html | 28 ++-- c/groupmod.html | 28 ++-- c/groups.html | 40 ++--- c/grpck.html | 28 ++-- c/grpconv.html | 24 +-- c/grpunconv.html | 24 +-- c/grub.html | 28 ++-- c/gunzip.html | 32 ++-- c/gzexe.html | 28 ++-- c/gzip.html | 32 ++-- c/halt.html | 28 ++-- c/hdparm.html | 32 ++-- c/head.html | 40 ++--- c/help.html | 36 ++--- c/hexdump.html | 28 ++-- c/history.html | 40 ++--- c/host.html | 32 ++-- c/hostid.html | 32 ++-- c/hostname.html | 28 ++-- c/hostnamectl.html | 32 ++-- c/hping3.html | 52 ++----- c/htdigest.html | 28 ++-- c/htop.html | 28 ++-- c/htpasswd.html | 36 ++--- c/hwclock.html | 28 ++-- c/iconv.html | 28 ++-- c/id.html | 40 ++--- c/ifcfg.html | 24 +-- c/ifconfig.html | 28 ++-- c/ifdown.html | 28 ++-- c/ifstat.html | 32 ++-- c/iftop.html | 32 ++-- c/ifup.html | 28 ++-- c/indent.html | 28 ++-- c/info.html | 32 ++-- c/init.html | 32 ++-- c/inotifywait.html | 36 ++--- c/insmod.html | 32 ++-- c/install.html | 28 ++-- c/iostat.html | 32 ++-- c/iotop.html | 32 ++-- c/ip.html | 32 ++-- c/ip6tables-restore.html | 24 +-- c/ip6tables-save.html | 24 +-- c/ip6tables.html | 28 ++-- c/ipcalc.html | 28 ++-- c/ipcrm.html | 28 ++-- c/ipcs.html | 28 ++-- c/iperf.html | 28 ++-- c/iptables-restore.html | 28 ++-- c/iptables-save.html | 28 ++-- c/iptables.html | 132 +++++------------ c/iptraf.html | 24 +-- c/iptstate.html | 24 +-- c/ispell.html | 24 +-- c/jed.html | 32 ++-- c/jobs.html | 36 ++--- c/joe.html | 28 ++-- c/join.html | 28 ++-- c/jq.html | 32 ++-- c/jwhois.html | 28 ++-- c/kernelversion.html | 20 +-- c/kexec.html | 24 +-- c/kill.html | 84 +++-------- c/killall.html | 32 ++-- c/last.html | 32 ++-- c/lastb.html | 32 ++-- c/lastlog.html | 28 ++-- c/ld.html | 32 ++-- c/ldconfig.html | 24 +-- c/ldd.html | 32 ++-- c/less.html | 32 ++-- c/let.html | 40 ++--- c/lftp.html | 32 ++-- c/lftpget.html | 28 ++-- c/lha.html | 24 +-- c/lilo.html | 28 ++-- c/ln.html | 44 ++---- c/lnstat.html | 24 +-- c/local.html | 44 ++---- c/locate.html | 28 ++-- c/logger.html | 28 ++-- c/login.html | 28 ++-- c/logname.html | 36 ++--- c/logout.html | 20 +-- c/logrotate.html | 36 ++--- c/logsave.html | 28 ++-- c/logwatch.html | 28 ++-- c/look.html | 28 ++-- c/losetup.html | 36 ++--- c/lp.html | 32 ++-- c/lpadmin.html | 28 ++-- c/lpc.html | 24 +-- c/lpq.html | 24 +-- c/lpr.html | 32 ++-- c/lprm.html | 32 ++-- c/lpstat.html | 24 +-- c/ls.html | 40 ++--- c/lsattr.html | 32 ++-- c/lsb_release.html | 16 +- c/lsblk.html | 24 +-- c/lscpu.html | 32 ++-- c/lsmod.html | 24 +-- c/lsof.html | 28 ++-- c/lspci.html | 28 ++-- c/lsusb.html | 28 ++-- c/ltrace.html | 28 ++-- c/lvcreate.html | 32 ++-- c/lvdisplay.html | 28 ++-- c/lvextend.html | 32 ++-- c/lvreduce.html | 32 ++-- c/lvremove.html | 32 ++-- c/lvresize.html | 32 ++-- c/lvscan.html | 28 ++-- c/lynx.html | 32 ++-- c/mail.html | 32 ++-- c/mailq.html | 28 ++-- c/mailstat.html | 28 ++-- c/make.html | 32 ++-- c/man.html | 36 ++--- c/mapfile.html | 48 ++---- c/md5sum.html | 32 ++-- c/mesg.html | 28 ++-- c/mii-tool.html | 28 ++-- c/mkbootdisk.html | 32 ++-- c/mkdir.html | 32 ++-- c/mke2fs.html | 32 ++-- c/mkfs.html | 32 ++-- c/mkinitrd.html | 32 ++-- c/mkisofs.html | 32 ++-- c/mknod.html | 36 ++--- c/mkswap.html | 32 ++-- c/mktemp.html | 28 ++-- c/modprobe.html | 32 ++-- c/more.html | 32 ++-- c/mount.html | 28 ++-- c/mpstat.html | 32 ++-- c/mtools.html | 28 ++-- c/mv.html | 32 ++-- c/mysql.html | 28 ++-- c/mysqladmin.html | 28 ++-- c/mysqldump.html | 28 ++-- c/mysqlimport.html | 28 ++-- c/mysqlshow.html | 28 ++-- c/named-checkzone.html | 28 ++-- c/nano.html | 28 ++-- c/nc.html | 28 ++-- c/ncftp.html | 36 ++--- c/nethogs.html | 36 ++--- c/netstat.html | 36 ++--- c/newusers.html | 28 ++-- c/nfsstat.html | 28 ++-- c/ngrep.html | 32 ++-- c/nice.html | 32 ++-- c/nisdomainname.html | 24 +-- c/nl.html | 44 ++---- c/nm.html | 28 ++-- c/nmap.html | 32 ++-- c/nmcli.html | 28 ++-- c/nohup.html | 32 ++-- c/nologin.html | 24 +-- c/nproc.html | 32 ++-- c/nslookup.html | 32 ++-- c/ntpdate.html | 24 +-- c/ntsysv.html | 28 ++-- c/objdump.html | 24 +-- c/od.html | 32 ++-- c/openssl.html | 20 +-- c/parted.html | 32 ++-- c/partprobe.html | 32 ++-- c/passwd.html | 36 ++--- c/paste.html | 28 ++-- c/patch.html | 28 ++-- c/pathchk.html | 28 ++-- c/perl.html | 28 ++-- c/pfctl.html | 28 ++-- c/pgrep.html | 32 ++-- c/php.html | 28 ++-- c/pico.html | 28 ++-- c/pidof.html | 32 ++-- c/pigz.html | 28 ++-- c/ping.html | 32 ++-- c/pkill.html | 32 ++-- c/pmap.html | 32 ++-- c/popd.html | 44 ++---- c/poweroff.html | 28 ++-- c/ppp-off.html | 20 +-- c/pr.html | 28 ++-- c/printf.html | 80 +++------- c/protoize.html | 28 ++-- c/ps.html | 28 ++-- c/pssh.html | 28 ++-- c/pstack.html | 20 +-- c/pstree.html | 28 ++-- c/pushd.html | 44 ++---- c/pv.html | 36 ++--- c/pvchange.html | 32 ++-- c/pvck.html | 32 ++-- c/pvcreate.html | 32 ++-- c/pvdisplay.html | 32 ++-- c/pvremove.html | 32 ++-- c/pvs.html | 32 ++-- c/pvscan.html | 28 ++-- c/pwck.html | 32 ++-- c/pwconv.html | 24 +-- c/pwd.html | 64 +++----- c/pwunconv.html | 24 +-- c/quota.html | 32 ++-- c/quotacheck.html | 32 ++-- c/quotaoff.html | 28 ++-- c/quotaon.html | 28 ++-- c/rcconf.html | 24 +-- c/rcp.html | 32 ++-- c/read.html | 36 ++--- c/readelf.html | 28 ++-- c/readonly.html | 44 ++---- c/reboot.html | 28 ++-- c/reject.html | 28 ++-- c/rename.html | 36 ++--- c/renice.html | 32 ++-- c/repquota.html | 32 ++-- c/resize.html | 28 ++-- c/restore.html | 28 ++-- c/restorecon.html | 28 ++-- c/return.html | 36 ++--- c/rev.html | 28 ++-- c/rexec.html | 32 ++-- c/rlogin.html | 28 ++-- c/rm.html | 32 ++-- c/rmdir.html | 32 ++-- c/rmmod.html | 32 ++-- c/route.html | 32 ++-- c/rpm.html | 36 ++--- c/rpm2cpio.html | 28 ++-- c/rpmbuild.html | 28 ++-- c/rpmdb.html | 24 +-- c/rpmquery.html | 28 ++-- c/rpmsign.html | 24 +-- c/rpmverify.html | 24 +-- c/rsh.html | 28 ++-- c/rsync.html | 28 ++-- c/runlevel.html | 24 +-- c/sar.html | 32 ++-- c/scp.html | 32 ++-- c/screen.html | 36 ++--- c/script.html | 32 ++-- c/scriptreplay.html | 32 ++-- c/sed.html | 132 +++++------------ c/seinfo.html | 28 ++-- c/semanage.html | 28 ++-- c/sendmail.html | 24 +-- c/seq.html | 28 ++-- c/service.html | 32 ++-- c/sesearch.html | 28 ++-- c/set.html | 32 ++-- c/setfacl.html | 20 +-- c/setpci.html | 32 ++-- c/setsebool.html | 28 ++-- c/setsid.html | 28 ++-- c/sftp-server.html | 20 +-- c/sftp.html | 32 ++-- c/sh.html | 28 ++-- c/shift.html | 36 ++--- c/shopt.html | 32 ++-- c/showmount.html | 28 ++-- c/shuf.html | 40 ++--- c/shutdown.html | 32 ++-- c/skill.html | 28 ++-- c/slabtop.html | 32 ++-- c/sleep.html | 28 ++-- c/slocate.html | 28 ++-- c/smbclient.html | 32 ++-- c/smbpasswd.html | 28 ++-- c/sort.html | 40 ++--- c/source.html | 44 ++---- c/speedtest-cli.html | 28 ++-- c/spell.html | 24 +-- c/split.html | 24 +-- c/squid.html | 24 +-- c/squidclient.html | 28 ++-- c/ss.html | 28 ++-- c/ssh-add.html | 28 ++-- c/ssh-agent.html | 28 ++-- c/ssh-copy-id.html | 28 ++-- c/ssh-keygen.html | 24 +-- c/ssh-keyscan.html | 28 ++-- c/ssh.html | 64 +++----- c/sshd.html | 24 +-- c/startx.html | 28 ++-- c/stat.html | 32 ++-- c/strace.html | 36 ++--- c/strings.html | 28 ++-- c/stty.html | 32 ++-- c/su.html | 32 ++-- c/sudo.html | 32 ++-- c/sum.html | 32 ++-- c/supervisord.html | 24 +-- c/suspend.html | 36 ++--- c/swapoff.html | 32 ++-- c/swapon.html | 32 ++-- c/sync.html | 28 ++-- c/sysctl.html | 36 ++--- c/syslog.html | 20 +-- c/systemctl.html | 20 +-- c/systool.html | 32 ++-- c/tac.html | 40 ++--- c/tail.html | 32 ++-- c/tailf.html | 32 ++-- c/talk.html | 28 ++-- c/tar.html | 68 +++------ c/tcpdump.html | 28 ++-- c/tcpreplay.html | 24 +-- c/tee.html | 40 ++--- c/telint.html | 28 ++-- c/telnet.html | 32 ++-- c/tempfile.html | 24 +-- c/test.html | 48 ++---- c/tftp.html | 32 ++-- c/time.html | 28 ++-- c/times.html | 28 ++-- c/tload.html | 32 ++-- c/tmux.html | 32 ++-- c/top.html | 32 ++-- c/touch.html | 32 ++-- c/tput.html | 24 +-- c/tr.html | 32 ++-- c/tracepath.html | 28 ++-- c/traceroute.html | 32 ++-- c/trap.html | 56 ++----- c/tree.html | 32 ++-- c/true.html | 32 ++-- c/tty.html | 36 ++--- c/type.html | 40 ++--- c/ulimit.html | 28 ++-- c/umask.html | 40 ++--- c/umount.html | 32 ++-- c/unalias.html | 44 ++---- c/uname.html | 36 ++--- c/unarj.html | 28 ++-- c/uncompress.html | 32 ++-- c/unexpand.html | 28 ++-- c/uniq.html | 40 ++--- c/unlink.html | 28 ++-- c/unprotoize.html | 28 ++-- c/unrar.html | 36 ++--- c/unset.html | 40 ++--- c/unzip.html | 32 ++-- c/updatedb.html | 28 ++-- c/uptime.html | 28 ++-- c/useradd.html | 32 ++-- c/userdel.html | 32 ++-- c/usermod.html | 32 ++-- c/usernetctl.html | 24 +-- c/users.html | 40 ++--- c/uucico.html | 28 ++-- c/uupick.html | 28 ++-- c/uuto.html | 24 +-- c/vdfuse.html | 32 ++-- c/vgchange.html | 32 ++-- c/vgconvert.html | 32 ++-- c/vgcreate.html | 32 ++-- c/vgdisplay.html | 32 ++-- c/vgextend.html | 32 ++-- c/vgreduce.html | 32 ++-- c/vgremove.html | 32 ++-- c/vgrename.html | 28 ++-- c/vgscan.html | 28 ++-- c/vi.html | 32 ++-- c/vmstat.html | 32 ++-- c/volname.html | 24 +-- c/w.html | 32 ++-- c/wait.html | 28 ++-- c/wall.html | 28 ++-- c/watch.html | 32 ++-- c/wc.html | 32 ++-- c/wget.html | 32 ++-- c/whatis.html | 24 +-- c/whereis.html | 32 ++-- c/which.html | 32 ++-- c/who.html | 40 ++--- c/whoami.html | 36 ++--- c/write.html | 28 ++-- c/xargs.html | 64 +++----- c/xauth.html | 28 ++-- c/xclip.html | 16 +- c/xhost.html | 24 +-- c/xinit.html | 24 +-- c/xlsatoms.html | 24 +-- c/xlsclients.html | 24 +-- c/xlsfonts.html | 24 +-- c/xset.html | 28 ++-- c/xz.html | 32 ++-- c/yes.html | 28 ++-- c/ypdomainname.html | 24 +-- c/yum.html | 32 ++-- c/zcat.html | 28 ++-- c/zfore.html | 24 +-- c/zip.html | 36 ++--- c/zipinfo.html | 28 ++-- c/zipsplit.html | 28 ++-- c/znew.html | 28 ++-- hot.html | 6 +- index.html | 6 +- linux-command.docset.zip | Bin 6994788 -> 6864941 bytes list.html | 6 +- 579 files changed, 5773 insertions(+), 12673 deletions(-) diff --git a/c/ab.html b/c/ab.html index 6ffac858e1..c9484cf227 100644 --- a/c/ab.html +++ b/c/ab.html @@ -10,7 +10,7 @@ ab 命令,Linux ab 命令详解:Apache服务器的性能测试工具 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
-

ab

+
+

ab

Apache服务器的性能测试工具

-

补充说明

+

补充说明

ab命令 是一个测试你 Apache http 服务器的工具,你可以通过这个工具,指定一个单位时间内向 apache 发出的请求数量来看看你的 Apache 和机器配合的性能如何。

-

语法

+

语法

ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value
 ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [
 -i  ]  [  -k  ]  [  -n  requests  ] [ -p POST-file ] [ -P proxy-auth-user‐
@@ -70,9 +64,7 @@ name:password ] ]  [  -y  <tr>-attributes  ]  [  -z   <td>-attributes   ]   [http://]host‐
 name[:port]/path
 
-

选项

+

选项

-A auth-username:password
       #  支持基本的验证证书,用户名和密码之间使用"冒号"                    :
       # 分隔开,ab将以明文方式传送过去.不管服务器是不是需要
@@ -164,9 +156,7 @@ name[:port<td>-attributes
       # 用于生成html表格每列的属性名 (<td>)
 
-

参数

+

参数

主机:被测试主机。

@@ -193,7 +183,7 @@ name[:port - - + + \ No newline at end of file diff --git a/c/accept.html b/c/accept.html index cc3259770e..6ce51890e6 100644 --- a/c/accept.html +++ b/c/accept.html @@ -10,7 +10,7 @@ accept 命令,Linux accept 命令详解:指示打印系统接受发往指定目标打印机的打印任务 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
-

accept

+
+

accept

指示打印系统接受发往指定目标打印机的打印任务

-

补充说明

+

补充说明

accept命令 属于CUPS套件,用于指示打印系统接受发往指定目标打印机的打印任务。

-

语法

+

语法

accept(选项)(参数)
 
-

选项

+

选项

-E:当连接到服务器时强制加密;
 -U:指定连接服务器时使用的用户名;
 -h:指定连接服务器名和端口号。
 
-

参数

+

参数

目标:指定目标打印机。

@@ -100,7 +90,7 @@
- - + + \ No newline at end of file diff --git a/c/ack.html b/c/ack.html index ed1fc08ee8..d0d55c6e59 100644 --- a/c/ack.html +++ b/c/ack.html @@ -10,7 +10,7 @@ ack 命令,Linux ack 命令详解:比grep好用的文本搜索工具 - Linux 命令搜索引擎 - + @@ -50,29 +50,21 @@ -
-

ack

+
+

ack

比grep好用的文本搜索工具

-

安装

+

安装

# ubuntu下要安装ack-grep,因为在debian系中,ack这个名字被其他的软件占用了。
 sudo apt-get install ack-grep
 # alpine Linux-apk软件包管理器 安装 ack
 apk install ack
 
-

参数

+

参数

这些参数在linux上的适用频率是相当高的,尤其是你用vim做为IDE的话

-c(统计)/ -i(忽略大小)/ -h(不显示名称)/
 -l(只显文件名)/ -n(加行号)/ -v(显示不匹配)
 
-

特点

+

特点

ack官网列出了这工具的5大卖点:

  1. 速度非常快,因为它只搜索有意义的东西。
  2. @@ -81,9 +73,7 @@ apk install ack
  3. 非常轻便,移植性好。
  4. 免费且开源
-

实例

+

实例

在记忆的时候大体上可以分为这几个部分:

Searching 代码搜索
Search output 搜索结果处理
File presentation 文件展示
File finding 文件查找
File inclusion/exclusion 文件过滤

@@ -93,9 +83,7 @@ apk install ack grep '^hello_world' . # 简单正则 ls -l | grep .py # 管道用法 -

Searching

+

Searching

简单的文本搜索,默认是递归的。

ack-grep hello
 ack-grep -i hello
@@ -103,40 +91,30 @@ ack-grep -v hello
 ack-grep -w hello
 ack-grep -Q 'hello*'
 
-

Search File

+

Search File

对搜索结果进行处理,比如只显示一个文件的一个匹配项,或者xxx

ack-grep --line=1       # 输出所有文件第二行
 ack-grep -l 'hello'     # 包含的文件名
 ack-grep -L 'print'     # 非包含文件名
 
-

File presentation

+

File presentation

输出的结果是以什么方式展示呢,这个部分有几个参数可以练习下

ack-grep hello --pager='less -R'    # 以less形式展示
 ack-grep hello --noheading      # 不在头上显示文件
 ack-grep hello --nocolor        # 不对匹配字符着色
 
-

File finding

+

File finding

没错,它可以查找文件,以省去你要不断的结合find和grep的麻烦,虽然在linux的思想是一个工具做好一件事。

ack-grep -f hello.py     # 查找全匹配文件
 ack-grep -g hello.py$    # 查找正则匹配文件
 ack-grep -g hello  --sort-files     # 查找然后排序
 
-

File Inclusion/Exclusion

+

File Inclusion/Exclusion

文件过滤,个人觉得这是一个很不错的功能。如果你曾经在搜索项目源码是不小心命中日志中的某个关键字的话,你会觉得这个有用。

ack-grep --python hello       # 查找所有python文件
 ack-grep -G hello.py$ hello   # 查找匹配正则的文件
 
-

参考资料

+

参考资料

@@ -165,7 +143,7 @@ ack-grep -G hello.py$ hello # 查找匹配正则
- - + + \ No newline at end of file diff --git a/c/alias.html b/c/alias.html index a0ad7f14ee..c958a56a3a 100644 --- a/c/alias.html +++ b/c/alias.html @@ -10,7 +10,7 @@ alias 命令,Linux alias 命令详解:定义或显示别名。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
-

alias

+
+

alias

定义或显示别名。

-

概要

+

概要

alias [-p] [name[=value] ...]
 
-

主要用途

+

主要用途

  • 简化较长的命令。
  • 定义一个或多个别名。
  • @@ -70,23 +64,15 @@
  • 显示一个或多个已定义别名。
  • 显示全部已定义的别名。
-

选项

+

选项

-p:显示全部已定义的别名。
 
-

参数

+

参数

name(可选):指定要(定义、修改、显示)的别名。

value(可选):别名的值。

-

返回值

+

返回值

alias返回true除非您要显示的别名未定义。

-

例子

+

例子

# 显示全部已定义的别名
 alias
 alias -p
@@ -99,9 +85,7 @@
 alias ls='ls --color=auto'
 alias ls='ls --color=never' grep='grep --color=never'
 
-

知识点

+

知识点

直接在shell里设定的命令别名,在终端关闭或者系统重新启动后都会失效,如何才能永久有效呢?

使用编辑器打开~/.bashrc,在文件中加入别名设置,如:alias rm='rm -i',保存后执行source ~/.bashrc,这样就可以永久保存命令的别名了。

因为修改的是当前用户目录下的~/.bashrc文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc/bashrc文件就可以了。

@@ -114,9 +98,7 @@

这个代码的意思就是如果存在那么就加载.bash_aliases文件,所以也可以在用户根目录下新建该文件用于单独存放命令别名设置。

-

错误用法

+

错误用法

  • 要显示的别名未定义。

    @@ -144,16 +126,12 @@ # alias ls='ls' # alias处理时将它们看成了两组 -

    Q&A

    +

    Q&A

    Q:如果我要显示一到多个别名,但不知道其中是否有未定义的该怎么办?

    A:正常执行就是了,alias不会因为有一个未定义的别名就结束对剩余参数的执行。

    Q:如果我这么定义alias cd='ls' ls='cd',会有什么后果?

    A:运行cd依然会切换目录,运行ls依然会列出文件夹的内容;不要这样定义。

    -

    注意

    +

    注意

    1. 执行脚本时请注意:
    @@ -175,9 +153,7 @@

    该命令是bash内建命令,相关的帮助信息请查看help命令。

  • -

    其他参考链接

    +

    其他参考链接

    Linux命令详解:[8]alias创建自己的命令

@@ -204,7 +180,7 @@
- - + + \ No newline at end of file diff --git a/c/apachectl.html b/c/apachectl.html index 4c3967f16d..42f29c09aa 100644 --- a/c/apachectl.html +++ b/c/apachectl.html @@ -10,7 +10,7 @@ apachectl 命令,Linux apachectl 命令详解:Apache服务器前端控制工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

apachectl

+
+

apachectl

Apache服务器前端控制工具

-

补充说明

+

补充说明

apachectl命令 是Apache的Web服务器前端控制工具,用以启动、关闭和重新启动Web服务器进程。

-

语法

+

语法

apachectl(参数)
 
-

参数

+

参数

  • configtest:检查设置文件中的语法是否正确;
  • fullstatus:显示服务器完整的状态信息;
  • @@ -102,7 +94,7 @@
- - + + \ No newline at end of file diff --git a/c/apk.html b/c/apk.html index 542a99ea6b..1cab7a24a2 100644 --- a/c/apk.html +++ b/c/apk.html @@ -10,7 +10,7 @@ apk 命令,Linux apk 命令详解:Alpine Linux 下的包管理工具 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
-

apk

+
+

apk

Alpine Linux 下的包管理工具

-

使用实例

+

使用实例

apk install xxx
 apk search xxx # 支持正则
 apk info xxx # 查看包的详细信息
@@ -65,33 +61,25 @@ apk show # list local package
 # 卸载并删除 包
 apk del openssh openntp vim
 
-

升级

+

升级

upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。

apk update # 更新最新本地镜像源
 apk upgrade # 升级软件
 apk add --upgrade busybox # 指定升级部分软件包
 
-

搜索

+

搜索

apk search # 查找所以可用软件包
 apk search -v # 查找所以可用软件包及其描述内容
 apk search -v 'acf*' # 通过软件包名称查找软件包
 apk search -v -d 'docker' # 通过描述文件查找特定的软件包
 
-

查看包信息

+

查看包信息

info命令用于显示软件包的信息。

apk info # 列出所有已安装的软件包
 apk info -a zlib # 显示完整的软件包信息
 apk info --who-owns /sbin/lbu # 显示指定文件属于的包
 
-

笔记

+

笔记

还是蛮喜欢 alpine 的,简单纯粹

apk add iproute2 # ss vs netstat
 ss -ptl
@@ -199,7 +187,7 @@ apk add dropbear 
 
-
-
+
+
 
 
\ No newline at end of file
diff --git a/c/apropos.html b/c/apropos.html
index 6b4fcba206..1a3817b59b 100644
--- a/c/apropos.html
+++ b/c/apropos.html
@@ -10,7 +10,7 @@
     
     apropos 命令,Linux apropos 命令详解:在 whatis 数据库中查找字符串 -  Linux 命令搜索引擎
     
-    
+    
 
 
 
@@ -50,24 +50,16 @@
 
 
 
-
-

apropos

+
+

apropos

在 whatis 数据库中查找字符串

-

补充说明

+

补充说明

apropos命令 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出。 

如果你不知道完成某个特定任务所需要命令的名称,可以使用一个关键字通过Linux apropos实用程序来搜索它。该实用程序可以搜索关键字并且显示所有包含匹配项的man页面的简短描述。另外,使用man实用程序和-k(关键字)选项,可以得到和用Linux apropos实用程序相同的结果(实际上是相同的命令)。

-

语法

+

语法

apropos [-dalhvV] -e|-[w|-r] [-s section] [-m system[,...]] [-M path] [-L locale] -C [file] keyword ...
 
-

选项

+

选项

-d, --debug:输出调试信息。
 -v, --verbose:输出详细的警告信息。
 -r, -- regex:将每个keyword作为正则表达式解释。这是默认行为。每个keyword将匹配手册页和描述。
@@ -83,13 +75,9 @@
 -h, --help:打印帮助信息并退出。
 -V, --version:打印版本信息并退出。
 
-

返回值

+

返回值

返回0表示成功,1表示用法、语法或配置文件错误,2表示操作错误,16表示没有找到匹配的内容。

-

实例

+

实例

[root@localhost ~]# man -k who
 at.allow [at]        (5)  - determine who can submit jobs via at or batch
 at.deny [at]         (5)  - determine who can submit jobs via at or batch
@@ -140,7 +128,7 @@ w                    (
-
-
+
+
 
 
\ No newline at end of file
diff --git a/c/apt-get.html b/c/apt-get.html
index ef58edf321..7c7e067c58 100644
--- a/c/apt-get.html
+++ b/c/apt-get.html
@@ -10,7 +10,7 @@
     
     apt-get 命令,Linux apt-get 命令详解:Debian Linux发行版中的APT软件包管理工具 -  Linux 命令搜索引擎
     
-    
+    
 
 
 
@@ -50,23 +50,15 @@
 
 
 
-
-

apt-get

+
+

apt-get

Debian Linux发行版中的APT软件包管理工具

-

补充说明

+

补充说明

apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。

-

语法

+

语法

apt-get [OPTION] PACKAGE
 
-

选项

+

选项

apt-get install 安装新包
 apt-get remove 卸载已安装的包(保留配置文件)
 apt-get purge 卸载已安装的包(删除配置文件)
@@ -79,16 +71,12 @@
 
 -c:指定配置文件。
 
-

参数

+

参数

  • 管理指令:对APT软件包的管理操作;
  • 软件包:指定要操纵的软件包。
-

实例

+

实例

使用apt-get命令的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get就能搜索到我们想要的软件。/etc/apt/sources.list是存放这些地址列表的配置文件,其格式如下:

deb web或[ftp地址] [发行版名字] main/contrib/non-[free]
 
@@ -145,7 +133,7 @@
- - + + \ No newline at end of file diff --git a/c/apt-key.html b/c/apt-key.html index e20b79f1ce..17d80fdb0d 100644 --- a/c/apt-key.html +++ b/c/apt-key.html @@ -10,7 +10,7 @@ apt-key 命令,Linux apt-key 命令详解:管理Debian Linux系统中的软件包密钥 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
-

apt-key

+
+

apt-key

管理Debian Linux系统中的软件包密钥

-

补充说明

+

补充说明

apt-key命令 用于管理Debian Linux系统中的软件包密钥。每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。

-

语法

+

语法

apt-key(参数)
 
-

参数

+

参数

操作指令:APT密钥操作指令。

-

实例

+

实例

apt-key list          # 列出已保存在系统中key。
 apt-key add keyname   # 把下载的key添加到本地trusted数据库中。
 apt-key del keyname   # 从本地trusted数据库删除key。
@@ -101,7 +91,7 @@ apt-key update        # 更新本地trusted数据库
 
- - + + \ No newline at end of file diff --git a/c/apt-sortpkgs.html b/c/apt-sortpkgs.html index c1fa851d17..61471dfca8 100644 --- a/c/apt-sortpkgs.html +++ b/c/apt-sortpkgs.html @@ -10,7 +10,7 @@ apt-sortpkgs 命令,Linux apt-sortpkgs 命令详解:Debian Linux下对软件包索引文件进行排序的工具 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
-

apt-sortpkgs

+
+

apt-sortpkgs

Debian Linux下对软件包索引文件进行排序的工具

-

补充说明

+

补充说明

apt-sortpkgs命令 是Debian Linux下对软件包索引文件进行排序的简单工具。

-

语法

+

语法

apt-sortpkgs(选项)(参数)
 
-

选项

+

选项

-s:使用源索引字段排序;
 -h:显示帮助信息。
 
-

参数

+

参数

文件:指定要排序的包含debian包信息的索引文件。

@@ -99,7 +89,7 @@
- - + + \ No newline at end of file diff --git a/c/aptitude.html b/c/aptitude.html index f791076d34..4daa4067c0 100644 --- a/c/aptitude.html +++ b/c/aptitude.html @@ -10,7 +10,7 @@ aptitude 命令,Linux aptitude 命令详解:Debian Linux系统中软件包管理工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

aptitude

+
+

aptitude

Debian Linux系统中软件包管理工具

-

补充说明

+

补充说明

aptitude命令 与apt-get命令一样,都是Debian Linux及其衍生系统中功能极其强大的包管理工具。与apt-get不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。它通过文本操作菜单和命令两种方式管理软件包。

-

语法

+

语法

aptitude(选项)(参数)
 
-

选项

+

选项

-h:显示帮助信息;
 -d:仅下载软件包,不执行安装操作;
 -P:每一步操作都要求确认;
@@ -74,13 +66,9 @@
 -v:显示附加信息;
 -u:启动时下载新的软件包列表。
 
-

参数

+

参数

操作命令:用户管理软件包的操作命令。

-

实例

+

实例

以下是我总结的一些常用aptitude命令,仅供参考:

aptitude update            # 更新可用的包列表
 aptitude upgrade           # 升级可用的包
@@ -119,7 +107,7 @@
 
- - + + \ No newline at end of file diff --git a/c/ar.html b/c/ar.html index c2cda45fb0..65c4023b06 100644 --- a/c/ar.html +++ b/c/ar.html @@ -10,7 +10,7 @@ ar 命令,Linux ar 命令详解:建立或修改备存文件,或是从备存文件中抽取文件 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
-

ar

+
+

ar

建立或修改备存文件,或是从备存文件中抽取文件

-

补充说明

+

补充说明

ar命令 是一个建立或修改备存文件,或是从备存文件中抽取文件的工具,ar可让您集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限

-

语法

+

语法

ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...
 Usage: ar [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...
        ar -M [<mri-脚本]
 
-

选项

+

选项

ar 允许你 在第一个 命令行 参数中 以任意 顺序 混合 指定 操作码p 和修饰符mod .
 
 只要你 愿意, 也可以 用破折号 作为 命令行 第一个 参数的 开始.
@@ -158,9 +150,7 @@ V      显示 ar 的版本号。
   
--plugin <p> - load the specified plugin
 

ar:支持的目标: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex

-

实例

+

实例

打包文件

[root@localhost ~]# ls   # 显示当前目录文件   
 a.c	b.c d.c   install.log	  qte
@@ -216,7 +206,7 @@ d.c
 
- - + + \ No newline at end of file diff --git a/c/arch.html b/c/arch.html index 696421b3eb..5f8176a285 100644 --- a/c/arch.html +++ b/c/arch.html @@ -10,7 +10,7 @@ arch 命令,Linux arch 命令详解:显示当前主机的硬件架构类型 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
-

arch

+
+

arch

显示当前主机的硬件架构类型

-

概要

+

概要

arch [OPTION]...
 
-

主要用途

+

主要用途

  • 打印机器架构信息;arch 命令输出结果有:i386、i486、i586、alpha、sparc、arm、m68k、mips、ppc、i686等。
-

选项

+

选项

--help       显示帮助信息并退出。
 --version    显示版本信息并退出。
 
-

例子

+

例子

[root@localhost ~]# arch
 x86_64
 
-

注意

+

注意

  1. 该命令等价于 uname -m

    @@ -114,7 +102,7 @@ x86_64
- - + + \ No newline at end of file diff --git a/c/arj.html b/c/arj.html index be08098d19..6d556de62a 100644 --- a/c/arj.html +++ b/c/arj.html @@ -10,7 +10,7 @@ arj 命令,Linux arj 命令详解:用于创建和管理.arj压缩包 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

arj

+
+

arj

用于创建和管理.arj压缩包

-

补充说明

+

补充说明

arj命令.arj 格式的压缩文件的管理器,用于创建和管理 .arj 压缩包。

-

语法

+

语法

arj(参数)
 
-

参数

+

参数

  • 操作指令:对 .arj 压缩包执行的操作指令;
  • 压缩包名称:指定要操作的arj压缩包名称。
  • @@ -96,7 +88,7 @@
- - + + \ No newline at end of file diff --git a/c/arp.html b/c/arp.html index bf7cb9b1c5..dce232ffbb 100644 --- a/c/arp.html +++ b/c/arp.html @@ -10,7 +10,7 @@ arp 命令,Linux arp 命令详解:arp 命令用于显示和修改 IP 到 MAC 转换表 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
-

arp

+
+

arp

arp 命令用于显示和修改 IP 到 MAC 转换表

-

补充说明

+

补充说明

arp 命令 是 Address Resolution Protocol,地址解析协议,是通过解析网络层地址来找寻数据链路层地址的一个网络协议包中极其重要的网络传输协议。而该命令可以显示和修改 arp 协议解析表中的缓冲数据。

这个核心协议模块实现RFC826中定义的 Address Resolution Protocol [译注:即TCP/IP的第三层到第一层的地址转换协议],用于在直接相连的网络中换第二层硬件地址和 Ipv4 协议地址之间的转换。 用户除非想对其进行配置,否则一般不会直接操作这个模块。

实际上,它提供对核心中其它协议的服务。

@@ -65,14 +61,10 @@

ARP 模块维护一个硬件地址到协议地址映射的缓存。这个缓存有大小限制,所以不常用的和旧的记录(Entry)将被垃圾收集器清除(garbage-collected),垃圾收集器永远不能删除标为永久的记录。我们可以使用ioctls直接操纵缓冲, 并且其性状可以用下面定义的 sysctl 调节。

如果在限定的时间(见下面的sysctl)内,一条现存映射没有肯定反馈时, 则认为相邻层的缓存记录失效。 为了再次向目标发送数据,ARP将首先试着询问本地arp进程 app_solicit 次,获取更新了的 MAC(介质访问控制)地址。 如果失败,并且旧的MAC地址是已知的,则发送 ucast_solicit 次的 unicast probe。如果仍然失败,则将向网络广播一个新的ARP请求,此时要 有待发送数据的队列

如果 Linux 接到一个地址请求,而且该地址指向 Linux 转发的地址,并且接收接口打开了代理 arp 时,Linux 将自动添加一条非永久的代理 arp 记录;如果存在拒绝到目标的路由,则不添加代理 arp 记录。

-

语法

+

语法

arp(选项)(参数)
 
-

选项

+

选项

-a # 主机 :显示 arp 缓冲区的所有条目;
 -H # 地址类型 :指定 arp 指令使用的地址类型;
 -d # 主机 :从 arp 缓冲区中删除指定主机的 arp 条目;
@@ -84,13 +76,9 @@
 -v # 显示详细的 arp 缓冲区条目,包括缓冲区条目的统计信息;
 -f # 文件 :设置主机的 IP 地址与 MAC 地址的静态映射。
 
-

参数

+

参数

主机:查询 arp 缓冲区中指定主机的 arp 条目。

-

实例

+

实例

显示arp 缓冲区内容

[root@localhost ~]# arp -v
 Address                  HWtype  HWaddress           Flags Mask            Iface
@@ -130,7 +118,7 @@ arp -s 192.168.1.1 00:b1:b2:b3:b4:b5
 
- - + + \ No newline at end of file diff --git a/c/arpd.html b/c/arpd.html index 82d459fe99..e750b8a160 100644 --- a/c/arpd.html +++ b/c/arpd.html @@ -10,7 +10,7 @@ arpd 命令,Linux arpd 命令详解:收集免费ARP信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

arpd

+
+

arpd

收集免费ARP信息

-

补充说明

+

补充说明

arpd命令 是用来收集免费arp信息的一个守护进程,它将收集到的信息保存在磁盘上或者在需要时,提供给内核用户用于避免多余广播。

-

语法

+

语法

arpd(选项)(参数)
 
-

选项

+

选项

-l:将arp数据库输出到标准输出设备显示并退出;
 -f:指定读取和加载arpd数据库的文本文件,文件的格式与“-l”输出信息类似;
 -b:指定arpd数据库文件,默认的位置为“/var/lib/arpd.db”;
@@ -74,13 +66,9 @@
 -k:禁止通过内核发送广播查询;
 -n:设定缓冲失效时间。
 
-

参数

+

参数

网络接口:指定网络接口。

-

实例

+

实例

启动arpd进程:

arpd -b /var/tmp/arpd.db
 
@@ -112,7 +100,7 @@
- - + + \ No newline at end of file diff --git a/c/arping.html b/c/arping.html index c873f2e3e4..49dd836291 100644 --- a/c/arping.html +++ b/c/arping.html @@ -10,7 +10,7 @@ arping 命令,Linux arping 命令详解:通过发送ARP协议报文测试网络 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

arping

+
+

arping

通过发送ARP协议报文测试网络

-

补充说明

+

补充说明

arping命令 是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包,通过ping命令检查设备上的硬件地址。能够测试一个ip地址是否是在网络上已经被使用,并能够获取更多设备信息。功能类似于ping。

-

语法

+

语法

arping(选项)(参数)
 
-

选项

+

选项

-b:用于发送以太网广播帧(FFFFFFFFFFFF)。arping一开始使用广播地址,在收到响应后就使用unicast地址。
 -q:quiet output不显示任何信息;
 -f:表示在收到第一个响应报文后就退出;
@@ -75,13 +67,9 @@
 -s source:设定arping发送的arp数据包中的SPA字段的值。如果为空,则按下面处理,如果是DAD模式(冲突地址探测),则设置为0.0.0.0,如果是Unsolicited ARP模式(Gratutious ARP)则设置为目标地址,否则从路由表得出;
 -I interface:设置ping使用的网络接口。
 
-

参数

+

参数

目的主机:指定发送ARP报文的目的主机。

-

实例

+

实例

[root@localhost ~]# arping www.baidu.com 
 ARPING 220.181.111.147 from 173.231.43.132 eth0
 Unicast reply from 220.181.111.147 00:D0:03:[bc:48:00]  1.666ms
@@ -120,7 +108,7 @@ Received 8 response
-
-
+
+
 
 
\ No newline at end of file
diff --git a/c/arptables.html b/c/arptables.html
index 11d04b78fe..f7736a06a9 100644
--- a/c/arptables.html
+++ b/c/arptables.html
@@ -10,7 +10,7 @@
     
     arptables 命令,Linux arptables 命令详解:管理ARP包过滤规则表 -  Linux 命令搜索引擎
     
-    
+    
 
 
 
@@ -50,23 +50,15 @@
 
 
 
-
-

arptables

+
+

arptables

管理ARP包过滤规则表

-

补充说明

+

补充说明

arptables命令 用来设置、维护和检查Linux内核中的arp包过滤规则表。

-

语法

+

语法

arptables(选项)
 
-

选项

+

选项

-A:向规则链中追加规则;
 -D:从指定的链中删除规则;
 -l:向规则链中插入一条新的规则;
@@ -106,7 +98,7 @@
 
- - + + \ No newline at end of file diff --git a/c/arpwatch.html b/c/arpwatch.html index 862ddcbd09..41ee28cf69 100644 --- a/c/arpwatch.html +++ b/c/arpwatch.html @@ -10,7 +10,7 @@ arpwatch 命令,Linux arpwatch 命令详解:监听网络上ARP的记录 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

arpwatch

+
+

arpwatch

监听网络上ARP的记录

-

补充说明

+

补充说明

arpwatch命令 用来监听网络上arp的记录。

-

语法

+

语法

arpwatch(选项)
 
-

选项

+

选项

-d:启动排错模式;
 -f<记录文件>:设置存储ARP记录的文件,预设为/var/arpwatch/arp.dat;
 -i<接口>:指定监听ARP的接口,预设的接口为eth0;
@@ -97,7 +89,7 @@
 
- - + + \ No newline at end of file diff --git a/c/as.html b/c/as.html index 62240bb4db..43c730f72b 100644 --- a/c/as.html +++ b/c/as.html @@ -10,7 +10,7 @@ as 命令,Linux as 命令详解:汇编语言编译器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
-

as

+
+

as

汇编语言编译器

-

补充说明

+

补充说明

as命令 GNU组织推出的一款汇编语言编译器,它支持多种不同类型的处理器。

-

语法

+

语法

as(选项)(参数)
 
-

选项

+

选项

-ac:忽略失败条件;
 -ad:忽略调试指令;
 -ah:包括高级源;
@@ -83,9 +75,7 @@
 -o:指定要生成的目标文件;
 --statistics:打印汇编所用的最大空间和总时间。
 
-

参数

+

参数

汇编文件:指定要汇编的源文件。

@@ -112,7 +102,7 @@
- - + + \ No newline at end of file diff --git a/c/at.html b/c/at.html index ddda46bd80..126f6116e8 100644 --- a/c/at.html +++ b/c/at.html @@ -10,7 +10,7 @@ at 命令,Linux at 命令详解:在指定时间执行一个任务 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
-

at

+
+

at

在指定时间执行一个任务

-

补充说明

+

补充说明

at命令 用于在指定时间执行命令。at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。

上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

-

语法

+

语法

at [-V] [-q 队列] [-f 文件] [-mldbv] 时间 at -c 作业 [作业...]
 
-

选项

+

选项

-f:指定包含具体指令的任务文件;
 -q:指定新任务的队列名称;
 -l:显示待执行任务的列表;
 -d:删除指定的待执行任务;
 -m:任务执行完成后向用户发送E-mail。
 
-

参数

+

参数

日期时间:指定任务执行的日期时间。

-

实例

+

实例

三天后的下午 5 点锺执行/bin/ls

[root@localhost ~]# at 5pm+3 days
 at> /bin/ls
@@ -140,7 +128,7 @@ job 8 at 2013
 
-
-
+
+
 
 
\ No newline at end of file
diff --git a/c/atop.html b/c/atop.html
index 21e51869d1..34702f857f 100644
--- a/c/atop.html
+++ b/c/atop.html
@@ -10,7 +10,7 @@
     
     atop 命令,Linux atop 命令详解:监控Linux系统资源与进程的工具 -  Linux 命令搜索引擎
     
-    
+    
 
 
 
@@ -50,23 +50,15 @@
 
 
 
-
-

atop

+
+

atop

监控Linux系统资源与进程的工具

-

补充说明

+

补充说明

[非内部程序,需要安装]它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,我们可获取相应的atop日志文件进行分析。atop是一款开源软件,我们可以从这里获得其源码和rpm安装包。

-

语法

+

语法

atop(选项)(参数)
 
-

说明

+

说明

ATOP列:该列显示了主机名、信息采样日期和时间点

PRC列:该列显示进程整体运行情况

    @@ -116,9 +108,7 @@
  • XXXi 字段指示各层或活动网口收包数目
  • XXXo 字段指示各层或活动网口发包数目
-

atop日志

+

atop日志

每个时间点采样页面组合起来就形成了一个atop日志文件,我们可以使用"atop -r XXX"命令对日志文件进行查看。那以什么形式保存atop日志文件呢?

对于atop日志文件的保存方式,我们可以这样:

    @@ -132,9 +122,7 @@

    最后,我们修改cron文件,每天凌晨执行atop.daily脚本:

    0 0 * * * root /etc/cron.daily/atop.daily
     
    -

    相关资料

    +

    相关资料

    @@ -163,7 +151,7 @@
- - + + \ No newline at end of file diff --git a/c/atq.html b/c/atq.html index df46f3cac4..143c693795 100644 --- a/c/atq.html +++ b/c/atq.html @@ -10,7 +10,7 @@ atq 命令,Linux atq 命令详解:列出当前用户的at任务列表 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
-

atq

+
+

atq

列出当前用户的at任务列表

-

补充说明

+

补充说明

atq命令 显示系统中待执行的任务列表,也就是列出当前用户的at任务列表。

-

语法

+

语法

atq [-V] [-q 队列] [-v]
 
-

选项

+

选项

-V:显示版本号;
 -q:查询指定队列的任务。
 
-

实例

+

实例

at now + 10 minutes
 at> echo 1111
 at> <eot>
@@ -106,7 +96,7 @@ atq
 
- - + + \ No newline at end of file diff --git a/c/atrm.html b/c/atrm.html index 59b7663fd8..91bcf985b9 100644 --- a/c/atrm.html +++ b/c/atrm.html @@ -10,7 +10,7 @@ atrm 命令,Linux atrm 命令详解:删除待执行任务队列中的指定任务 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
-

atrm

+
+

atrm

删除待执行任务队列中的指定任务

-

补充说明

+

补充说明

atrm命令 用于删除待执行任务队列中的指定任务。

-

语法

+

语法

atrm(选项)(参数)
 
-

选项

+

选项

-V:显示版本号。
 
-

参数

+

参数

任务号:指定待执行队列中要删除的任务。

-

实例

+

实例

删除已经排队的任务

atq        # 显示当前已经设置的任务
 2 Mon May 17 08:00:00 2010 a root
@@ -108,7 +96,7 @@ atrm 2     # 删
 
- - + + \ No newline at end of file diff --git a/c/awk.html b/c/awk.html index 7cc618b72b..10254c6dbc 100644 --- a/c/awk.html +++ b/c/awk.html @@ -10,7 +10,7 @@ awk 命令,Linux awk 命令详解:文本和数据进行处理的编程语言 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
-

awk

+
+

awk

文本和数据进行处理的编程语言

-

补充说明

+

补充说明

awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

-

awk命令格式和选项

+

awk命令格式和选项

语法形式

awk [options] 'script' var=value file(s)
 awk [options] -f scriptfile var=value file(s)
@@ -73,13 +67,9 @@
     
  • -f scripfile 从脚本文件中读取awk命令
  • -m[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
  • -

    awk模式和操作

    +

    awk模式和操作

    awk脚本是由模式和操作组成的。

    -

    模式

    +

    模式

    模式可以是以下任意一个:

    • /正则表达式/:使用通配符的扩展集。
    • @@ -87,9 +77,7 @@
    • 模式匹配表达式:用运算符~(匹配)和!~(不匹配)。
    • BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理
    -

    操作

    +

    操作

    操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内,主要部分是:

    • 变量或数组赋值
    • @@ -97,18 +85,14 @@
    • 内置函数
    • 控制流语句
    -

    awk脚本基本结构

    +

    awk脚本基本结构

    awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
     

    一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被 单引号双引号 中,例如:

    awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename
     awk "BEGIN{ i=0 } { i++ } END{ print i }" filename
     
    -

    awk的工作原理

    +

    awk的工作原理

    awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
     
      @@ -135,9 +119,7 @@ v1 v2 v3 v1=v2=v3

    { }类似一个循环体,会对文件中的每一行进行迭代,通常变量初始化语句(如:i=0)以及打印文件头部的语句放入BEGIN语句块中,将打印的结果等语句放在END语句块中。

    -

    awk内置变量(预定义变量)

    +

    awk内置变量(预定义变量)

    说明:[A][N][P][G]表示第一个支持变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk

     **$n**  当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。 
      **$0**  这个变量包含执行过程中当前行的文本内容。
    @@ -205,9 +187,7 @@ f4
     等于
     15
     
    -

    将外部变量值传递给awk

    +

    将外部变量值传递给awk

    借助 -v选项 ,可以将外部值(并非来自stdin)传递给awk:

    VAR=10000
     echo | awk -v VARIABLE=$VAR '{ print VARIABLE }'
    @@ -221,18 +201,12 @@ f4
       
    awk '{ print v1,v2 }' v1=$var1 v2=$var2 filename
     

    以上方法中,变量之间用空格分隔作为awk的命令行参数跟随在BEGIN、{}和END语句块之后。

    -

    查找进程pid

    +

    查找进程pid

    netstat -antup | grep 7770 | awk '{ print $NF NR}' | awk '{ print $1}'
     
    -

    awk运算与判断

    +

    awk运算与判断

    作为一种程序设计语言所应具有的特点之一,awk支持多种运算,这些运算与C语言提供的基本相同。awk还提供了一系列内置的运算函数(如log、sqr、cos、sin等)和一些用于对字符串进行操作(运算)的函数(如length、substr等等)。这些函数的引用大大的提高了awk的运算功能。作为对条件转移指令的一部分,关系判断是每种程序设计语言都具备的功能,awk也不例外,awk中允许进行多种测试,作为样式匹配,还提供了模式匹配表达式~(匹配)和!~(不匹配)。作为对测试的一种扩充,awk也支持用逻辑运算符。

    -

    算术运算符

    +

    算术运算符

    @@ -268,9 +242,7 @@ f4 02

    注意:所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0

    -

    赋值运算符

    +

    赋值运算符

    @@ -288,9 +260,7 @@ f4

    例:

    a+=5; 等价于:a=a+5; 其它同类
     
    -

    逻辑运算符

    +

    逻辑运算符

    @@ -313,9 +283,7 @@ f4
    awk 'BEGIN{a=1;b=2;print (a>5 && b<=2),(a>5 || b<=2);}'
     0 1
     
    -

    正则运算符

    +

    正则运算符

    @@ -352,9 +320,7 @@ $ 行尾
    awk 'BEGIN{a="100testa";if(a ~ /^100*/){print "ok";}}'
     ok
     
    -

    关系运算符

    +

    关系运算符

    @@ -374,9 +340,7 @@ ok ok

    注意:> < 可以作为字符串比较,也可以用作数值比较,关键看操作数如果是字符串就会转换为字符串比较。两个都为数字才转为数值比较。字符串比较:按照ASCII码顺序比较。

    -

    其它运算符

    +

    其它运算符

    @@ -413,16 +377,10 @@ ok
    awk 'BEGIN{a="b";arr[0]="b";arr["b"]="c";print (a in arr);}'
     1
     
    -

    运算级优先级表

    +

    运算级优先级表

    !级别越高越优先
    级别越高越优先

    -

    awk高级输入输出

    -

    读取下一条记录

    +

    awk高级输入输出

    +

    读取下一条记录

    awk中next语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。而进行下一行匹配。next语句一般用于多行合并:

    cat text.txt
     a
    @@ -458,9 +416,7 @@ web02[192.168<
     web03[192.168.2.102]:   mysqld            ok
     web03[192.168.2.102]:   httpd               ok
     
    -

    简单地读取一条记录

    +

    简单地读取一条记录

    awk getline用法:输出重定向需用到getline函数。getline从标准输入、管道或者当前正在处理的文件之外的其他输入文件获得输入。它负责从输入获得下一行的内容,并给NF,NR和FNR等内建变量赋值。如果得到一条记录,getline函数返回1,如果到达文件的末尾就返回0,如果出现错误,例如打开文件失败,就返回-1。

    getline语法:getline var,变量var包含了特定行的内容。

    awk getline从整体上来说,用法说明:

    @@ -478,37 +434,27 @@ web03[192.168<

    命令ls的输出传递给geline作为输入,循环使getline从ls的输出中读取一行,并把它打印到屏幕。这里没有输入文件,因为BEGIN块在打开输入文件前执行,所以可以忽略输入文件。

    awk 'BEGIN{ while( "ls" | getline) print }'
     
    -

    关闭文件

    +

    关闭文件

    awk中允许在程序中关闭一个输入或输出文件,方法是使用awk的close语句。

    close("filename")
     

    filename可以是getline打开的文件,也可以是stdin,包含文件名的变量或者getline使用的确切命令。或一个输出文件,可以是stdout,包含文件名的变量或使用管道的确切命令。

    -

    输出到一个文件

    +

    输出到一个文件

    awk中允许用如下方式将结果输出到一个文件:

    echo | awk '{printf("hello word!n") > "datafile"}'
     # 或
     echo | awk '{printf("hello word!n") >> "datafile"}'
     
    -

    设置字段定界符

    +

    设置字段定界符

    默认的字段定界符是空格,可以使用-F "定界符" 明确指定一个定界符:

    awk -F: '{ print $NF }' /etc/passwd
     # 或
     awk 'BEGIN{ FS=":" } { print $NF }' /etc/passwd
     

    BEGIN语句块中则可以用OFS=“定界符”设置输出字段的定界符。

    -

    流程控制语句

    +

    流程控制语句

    在linux awk的while、do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出。break中断当前正在执行的循环并跳到循环外执行下一条语句。if 是流程选择用法。awk中,流程控制语句,语法结构,与c语言类型。有了这些语句,其实很多shell程序都可以交给awk,而且性能是非常快的。下面是各个语句用法。

    -

    条件判断语句

    +

    条件判断语句

    if(表达式)
       语句1
     else
    @@ -539,12 +485,8 @@ if(test>90){
     very good
     

    每条命令语句后面可以用; 分号 结尾。

    -

    循环语句

    -

    # while语句

    +

    循环语句

    +

    # while语句

    while(表达式)
       {语句}
     
    @@ -560,9 +502,7 @@ print total; }'
    5050 -

    # for循环

    +

    # for循环

    for循环有两种格式:

    格式1:

    for(变量 in 数组)
    @@ -599,9 +539,7 @@ print total;
     }'
     5050
     
    -

    # do循环

    +

    # do循环

    do
     {语句} while(条件)
     
    @@ -614,22 +552,16 @@ do {total+=i;i++;} while(i<=100) }'5050 -

    其他语句

    +

    其他语句

    • break 当 break 语句用于 while 或 for 语句时,导致退出程序循环。
    • continue 当 continue 语句用于 while 或 for 语句时,使程序循环移动到下一个迭代。
    • next 能能够导致读入下一个输入行,并返回到脚本的顶部。这可以避免对当前输入行执行其他的操作过程。
    • exit 语句使主输入循环退出并将控制转移到END,如果END存在的话。如果没有定义END规则,或在END中应用exit语句,则终止脚本的执行。
    -

    数组应用

    +

    数组应用

    数组是awk的灵魂,处理文本中最不能少的就是它的数组处理。因为数组索引(下标)可以是数字和字符串在awk中数组叫做关联数组(associative arrays)。awk 中的数组不必提前声明,也不必声明大小。数组元素用0或空字符串来初始化,这根据上下文而定。

    -

    数组的定义

    +

    数组的定义

    数字做数组索引(下标):

    Array[1]="sun"
     Array[2]="kai"
    @@ -644,9 +576,7 @@ Array["birth"<
       
    { for(item in array) {print array[item]}; }       #输出的顺序是随机的
     { for(i=1;i<=len;i++) {print array[i]}; }         #Len是数组的长度
     
    -

    数组相关函数

    +

    数组相关函数

    得到数组长度:

    awk 'BEGIN{info="it is a test";lens=split(info,tA," ");print length(tA),lens;}'
     4 4
    @@ -691,9 +621,7 @@ b b1
     b b1
     

    delete array[key]可以删除,对应数组key的,序列值。

    -

    二维、多维数组使用

    +

    二维、多维数组使用

    awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4]=1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP(�34)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2�344。

    类似一维数组的成员测试,多维数组可以使用if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。类似一维数组的循环访问,多维数组使用for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。

    awk 'BEGIN{
    @@ -728,13 +656,9 @@ for(m in tarr){
     }
     }'
     
    -

    内置函数

    +

    内置函数

    awk内置函数,主要分以下3种类似:算数函数、字符串函数、其它一般函数、时间函数。

    -

    算术函数

    +

    算术函数

    @@ -795,9 +719,7 @@ for(m in tarr){ awk 'BEGIN{srand();fr=int(100*rand());print fr;}' 41 -

    字符串函数

    +

    字符串函数

    @@ -929,9 +851,7 @@ s is a tes
    awk 'BEGIN{n1=124.113;n2=-1.224;n3=1.2345; printf("%.2f,%.2u,%.2g,%X,%on",n1,n2,n3,n1,n1);}'
     124.11,18446744073709551615,1.2,7C,174
     
    -

    一般函数

    +

    一般函数

    @@ -986,9 +906,7 @@ drwxr-xr-x 14 chengmo chengmo 95 root root 409610-08 14:01 ..

    b返回值,是执行结果。

    -

    时间函数

    +

    时间函数

    @@ -1154,7 +1072,7 @@ drwxr-xr-x 95 root root - - + + \ No newline at end of file diff --git a/c/axel.html b/c/axel.html index 08ce217a65..a4c512820b 100644 --- a/c/axel.html +++ b/c/axel.html @@ -10,7 +10,7 @@ axel 命令,Linux axel 命令详解:多线程下载工具 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    axel

    +
    +

    axel

    多线程下载工具

    -

    补充说明

    +

    补充说明

    axel 是Linux下一个不错的HTTP/ftp高速下载工具。支持多线程下载、断点续传,且可以从多个地址或者从一个地址的多个连接来下载同一个文件。适合网速不给力时多线程下载提高下载速度。比如在国内VPS或服务器上下载lnmp一键安装包用Axel就比wget快。

    -

    安装

    +

    安装

    CentOS安装Axel:

    目前yum源上没有Axel,我们可以到 http://pkgs.repoforge.org/axel/ 下载rpm包安装。

    32位CentOS执行下面命令:

    @@ -75,14 +69,10 @@

    Debian/Ubuntu安装Axel:

    apt-get install axel
     
    -

    语法

    +

    语法

    axel [options] url1 [url2] [url...]
     
    -

    选项

    +

    选项

    --max-speed=x , -s x         # 最高速度x
     --num-connections=x , -n x   # 连接数x
     --output=f , -o f            # 下载为本地文件f
    @@ -96,9 +86,7 @@
     --help ,-h                  # 帮助
     --version ,-V               # 版本信息
     
    -

    实例

    +

    实例

    如下载lnmp安装包指定10个线程,存到 /tmp/

    axel -n 10 -o /tmp/ http://www.jsdig.com/lnmp.tar.gz
     
    @@ -128,7 +116,7 @@
    - - + + \ No newline at end of file diff --git a/c/badblocks.html b/c/badblocks.html index 9c30e2c7a2..07fa0a62f6 100644 --- a/c/badblocks.html +++ b/c/badblocks.html @@ -10,7 +10,7 @@ badblocks 命令,Linux badblocks 命令详解:查找磁盘中损坏的区块 - Linux 命令搜索引擎 - + @@ -50,40 +50,28 @@ -
    -

    badblocks

    +
    +

    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
     
    @@ -102,9 +90,7 @@
    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
    @@ -140,7 +126,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/base64.html b/c/base64.html index 6b951211f9..23998ec0d9 100644 --- a/c/base64.html +++ b/c/base64.html @@ -10,7 +10,7 @@ base64 命令,Linux base64 命令详解:base64 编码/解码文件或标准输入输出 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    base64

    +
    +

    base64

    base64 编码/解码文件或标准输入输出

    -

    描述

    +

    描述

    base64将文件标准输入编码或解码为标准输出;

    -

    语法

    +

    语法

    base64 [OPTION]... [FILE]
     
    -

    参数

    +

    参数

    -d, --decode         # 解码
     -i, --ignore-garbage # 解码时,忽略非字母字符
     -w, --wrap=COLS      # 在指定的字符数后自动换行(默认为76), 0 为禁用自动换行
    @@ -74,9 +66,7 @@
     --help      # 显示此帮助说明并退出
     --version   # 输出版本信息并退出
     
    -

    实例

    +

    实例

    编码字符串

    printf foo|base64
     
    @@ -114,7 +104,7 @@
    - - + + \ No newline at end of file diff --git a/c/basename.html b/c/basename.html index 64f3f1038e..fb0a1882bc 100644 --- a/c/basename.html +++ b/c/basename.html @@ -10,7 +10,7 @@ basename 命令,Linux basename 命令详解:打印目录或者文件的基本名称 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    basename

    +
    +

    basename

    打印目录或者文件的基本名称

    -

    补充说明

    +

    补充说明

    basename命令 用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。

    -

    语法

    +

    语法

    basename(选项)(参数)
     
    -

    选项

    +

    选项

    --help:显示帮助;
     --version:显示版本号。
     
    -

    参数

    +

    参数

    • 文件:带路径信息的文件;
    • 后缀:可选参数,指定要去除的文件后缀字符串。
    -

    实例

    +

    实例

    1、要显示一个shell变量的基本名称,请输入:

    basename $WORKFILE
     
    @@ -113,7 +101,7 @@
    - - + + \ No newline at end of file diff --git a/c/batch.html b/c/batch.html index 6c6649ad19..9bfc0a37ba 100644 --- a/c/batch.html +++ b/c/batch.html @@ -10,7 +10,7 @@ batch 命令,Linux batch 命令详解:在系统不繁忙的时候执行定时任务 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
    -

    batch

    +
    +

    batch

    在系统不繁忙的时候执行定时任务

    -

    补充说明

    +

    补充说明

    batch命令 用于在指定时间,当系统不繁忙时执行任务,用法与at相似。

    -

    语法

    +

    语法

    batch(选项)(参数)
     
    -

    选项

    +

    选项

    -f:指定包含具体指令的任务文件;
     -q:指定新任务的队列名称;
     -m:任务执行完后向用户发送E-mail。
     
    -

    参数

    +

    参数

    日期时间:指定任务执行的日期时间。

    -

    实例

    +

    实例

    batch 
     at> echo 1234
     at> <EOT>
    @@ -108,7 +96,7 @@ job 5 at Sun Apr 28
     
    - - + + \ No newline at end of file diff --git a/c/bc.html b/c/bc.html index fc94e2a635..bc369969c7 100644 --- a/c/bc.html +++ b/c/bc.html @@ -10,7 +10,7 @@ bc 命令,Linux bc 命令详解:算术操作精密运算工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bc

    +
    +

    bc

    算术操作精密运算工具

    -

    补充说明

    +

    补充说明

    bc命令 是一种支持任意精度的交互执行的计算器语言。bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。

    -

    语法

    +

    语法

    bc(选项)(参数)
     
    -

    选项

    +

    选项

    -i:强制进入交互式模式;
     -l:定义使用的标准数学库;
     -w:对POSIX bc的扩展给出警告信息;
    @@ -74,13 +66,9 @@
     -v:显示指令版本信息;
     -h:显示指令的帮助信息。
     
    -

    参数

    +

    参数

    文件:指定包含计算任务的文件。

    -

    实例

    +

    实例

    算术操作高级运算bc命令它可以执行浮点运算和一些高级函数:

    echo "1.212*3" | bc 
     3.636
    @@ -134,7 +122,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/bg.html b/c/bg.html index 40493197d0..31b9b943c0 100644 --- a/c/bg.html +++ b/c/bg.html @@ -10,7 +10,7 @@ bg 命令,Linux bg 命令详解:将前台终端作业移动到后台运行 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    bg

    +
    +

    bg

    将前台终端作业移动到后台运行

    -

    概要

    +

    概要

    bg [job_spec ...]
     
    -

    主要用途

    +

    主要用途

    • 用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。

      @@ -71,17 +65,11 @@

      若后台任务中只有一个,则使用该命令时可以省略任务号。

    -

    参数

    +

    参数

    job_spec(可选):指定要移动到后台执行的作业标识符,可以是一到多个。

    -

    返回值

    +

    返回值

    返回成功除非未开启作业控制或发生了错误。

    -

    例子

    +

    例子

    # 运行sleep命令,然后按下ctrl+z。
     sleep 60
     ^Z
    @@ -93,9 +81,7 @@
     # 返回信息:
     [1]+ sleep 60 &
     
    -

    注意

    +

    注意

    1. bash的作业控制命令包括bg fg kill wait disown suspend
    2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
    3. @@ -126,7 +112,7 @@
    - - + + \ No newline at end of file diff --git a/c/bind.html b/c/bind.html index c3431c1b9c..68c48a1e69 100644 --- a/c/bind.html +++ b/c/bind.html @@ -10,7 +10,7 @@ bind 命令,Linux bind 命令详解:显示或设置键盘按键与其相关的功能 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bind

    +
    +

    bind

    显示或设置键盘按键与其相关的功能

    -

    补充说明

    +

    补充说明

    bind命令 用于显示和设置命令行的键盘序列绑定功能。通过这一命令,可以提高命令行中操作效率。您可以利用bind命令了解有哪些按键组合与其功能,也可以自行指定要用哪些按键组合。

    -

    语法

    +

    语法

    bind(选项)
     
    -

    选项

    +

    选项

    -d:显示按键配置的内容;
     -f<按键配置文件>:载入指定的按键配置文件;
     -l:列出所有的功能;
    @@ -74,9 +66,7 @@
     -q<功能>:显示指定功能的按键;
     -v:列出目前的按键配置与其功能。
     
    -

    实例

    +

    实例

    bind -x '"\C-l":ls -l'    #直接按 CTRL+L 就列出目录
     

    其中keyseq可以使用showkey -a命令来获取:

    @@ -126,7 +116,7 @@ Press any keys - Ctrl-D will terminate this program
    - - + + \ No newline at end of file diff --git a/c/blkid.html b/c/blkid.html index c8c5dd636d..a201d1be37 100644 --- a/c/blkid.html +++ b/c/blkid.html @@ -10,7 +10,7 @@ blkid 命令,Linux blkid 命令详解:查看块设备的文件系统类型、LABEL、UUID等信息 - Linux 命令搜索引擎 - + @@ -50,26 +50,18 @@ -
    -

    blkid

    +
    +

    blkid

    查看块设备的文件系统类型、LABEL、UUID等信息

    -

    补充说明

    +

    补充说明

    在Linux下可以使用 blkid命令 对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。

    -

    语法

    +

    语法

    blkid -L | -U
     blkid [-c ] [-ghlLv] [-o] [-s ][-t ] -[w ] [ ...]
     blkid -p [-s ] [-O ] [-S ][-o] ...
     blkid -i [-s ] [-o] ...
     
    -

    选项

    +

    选项

    -c <file>   # 指定cache文件(default: /etc/blkid.tab, /dev/null = none)
     -d          # don't encode non-printing characters
     -h          # 显示帮助信息
    @@ -92,9 +84,7 @@ Low-level probing options:
     -u <list>   # filter by "usage" (e.g. -u filesystem,raid)
     -n <list>   # filter by filesystem type (e.g. -n vfat,ext3)
     
    -

    实例

    +

    实例

    1、列出当前系统中所有已挂载文件系统的类型:

    sudo blkid
     
    @@ -144,7 +134,7 @@ Low-level probing options:
    - - + + \ No newline at end of file diff --git a/c/blockdev.html b/c/blockdev.html index bb13929751..c2df46140a 100644 --- a/c/blockdev.html +++ b/c/blockdev.html @@ -10,7 +10,7 @@ blockdev 命令,Linux blockdev 命令详解:从命令行调用区块设备控制程序 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    blockdev

    +
    +

    blockdev

    从命令行调用区块设备控制程序

    -

    补充说明

    +

    补充说明

    blockdev命令 在命令调用“ioxtls”函数,以实现对设备的控制。

    -

    语法

    +

    语法

    blockdev(选项)(参数)
     

    选项

    @@ -75,13 +69,9 @@ --flushbufs:刷新缓冲区; --rereadpt:重新读取分区表。
    -

    参数

    +

    参数

    设备文件名:指定要操作的磁盘的设备文件名。

    -

    实例

    +

    实例

    设置设备为只读:

    blockdev --setro /dev/hda4
     
    @@ -116,7 +106,7 @@
    - - + + \ No newline at end of file diff --git a/c/bmodinfo.html b/c/bmodinfo.html index a97b552bfa..c0100fc8cd 100644 --- a/c/bmodinfo.html +++ b/c/bmodinfo.html @@ -10,7 +10,7 @@ bmodinfo 命令,Linux bmodinfo 命令详解:显示给定模块的详细信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bmodinfo

    +
    +

    bmodinfo

    显示给定模块的详细信息

    -

    补充说明

    +

    补充说明

    bmodinfo命令 用于显示给定模块的详细信息。

    -

    语法

    +

    语法

    bmodinfo(选项)(参数)
     
    -

    选项

    +

    选项

    -a:显示模块作者;
     -d:显示模块的描述信息;
     -l:显示模块的许可信息;
    @@ -74,13 +66,9 @@
     -n:显示模块对应的文字信息;
     -0:用ASCII码的0字符分割字段值,而不使用新行。
     
    -

    参数

    +

    参数

    模块名:要显示详细信息的模块名称。

    -

    实例

    +

    实例

    显示sg模块的信息:

    [root@localhost ~]# modinfo sg
     filename:    /lib/modules/2.6.9-42.ELsmp/kernel/drivers/scsi/sg.ko
    @@ -119,7 +107,7 @@ depends:    scsi_mod
     
    - - + + \ No newline at end of file diff --git a/c/break.html b/c/break.html index ed64d2784f..1f49617485 100644 --- a/c/break.html +++ b/c/break.html @@ -10,7 +10,7 @@ break 命令,Linux break 命令详解:结束for,while或until循环。 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    break

    +
    +

    break

    结束for,while或until循环。

    -

    概要

    +

    概要

    break [n]
     
    -

    主要用途

    +

    主要用途

    • 结束for,while或until循环,可指定退出几层循环。
    -

    参数

    +

    参数

    n(可选):大于等于1的整数,用于指定退出几层循环。

    -

    返回值

    +

    返回值

    返回成功除非n小于1。

    -

    例子

    +

    例子

    # break的可选参数n缺省值为1。
     # 从外层for循环继续执行。
     for((i=3;i>0;i--)); do
    @@ -106,9 +94,7 @@
     # 输出结果
     3 3
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -137,7 +123,7 @@
    - - + + \ No newline at end of file diff --git a/c/builtin.html b/c/builtin.html index 503ed452ae..f9f3ef3e74 100644 --- a/c/builtin.html +++ b/c/builtin.html @@ -10,7 +10,7 @@ builtin 命令,Linux builtin 命令详解:执行bash内建命令。 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    builtin

    +
    +

    builtin

    执行bash内建命令。

    -

    概要

    +

    概要

    builtin [shell-builtin [arg ...]]
     
    -

    主要用途

    +

    主要用途

    • 用于执行指定的bash内建命令。
    • builtin命令调用的bash内建命令优先于同名的外部命令及同名的shell函数。
    -

    参数

    +

    参数

    shell-builtin(可选):要调用的bash内建命令。

    arg(可选):传递给bash内建命令的一到多个参数。

    -

    返回值

    +

    返回值

    返回该内建命令执行的返回值,除非传递的不是bash内建命令或该内建命令被禁用。

    -

    例子

    +

    例子

    同名情况下的优先级顺序:

    builtin 内建命令 > 函数 > 内建命令 > 外部命令

    # 关于外部命令优先级最高的情况请参考enable命令。
    @@ -107,9 +95,7 @@
     alias rm='rm -i'
     alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

      @@ -143,7 +129,7 @@
    - - + + \ No newline at end of file diff --git a/c/bunzip2.html b/c/bunzip2.html index f8fefdaa8c..333643591d 100644 --- a/c/bunzip2.html +++ b/c/bunzip2.html @@ -10,7 +10,7 @@ bunzip2 命令,Linux bunzip2 命令详解:创一个bz2文件压缩包 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    bunzip2

    +
    +

    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
     
    @@ -109,7 +97,7 @@
    - - + + \ No newline at end of file diff --git a/c/bye.html b/c/bye.html index 10f9df56a8..33b75d5cf7 100644 --- a/c/bye.html +++ b/c/bye.html @@ -10,7 +10,7 @@ bye 命令,Linux bye 命令详解:命令用于中断FTP连线并结束程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bye

    +
    +

    bye

    命令用于中断FTP连线并结束程序

    -

    补充说明

    +

    补充说明

    bye命令 在ftp模式下,输入bye即可中断目前的连线作业,并结束ftp的执行。

    -

    语法

    +

    语法

    bye
     
    -

    实例

    +

    实例

    bye
     
    @@ -94,7 +86,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzcat.html b/c/bzcat.html index 9493c0168e..751d910294 100644 --- a/c/bzcat.html +++ b/c/bzcat.html @@ -10,7 +10,7 @@ bzcat 命令,Linux bzcat 命令详解:解压缩指定的.bz2文件 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    bzcat

    +
    +

    bzcat

    解压缩指定的.bz2文件

    -

    补充说明

    +

    补充说明

    bzcat命令 解压缩指定的.bz2文件,并显示解压缩后的文件内容。保留原压缩文件,并且不生成解压缩后的文件。

    -

    语法

    +

    语法

    bzcat(参数)
     
    -

    参数

    +

    参数

    .bz2压缩文件:指定要显示内容的.bz2压缩文件。

    -

    实例

    +

    实例

    /tmp/man.config以bzip2格式压缩:

    bzip2 -z man.config
     
    @@ -104,7 +94,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzcmp.html b/c/bzcmp.html index 602ecb1041..b052d1ee50 100644 --- a/c/bzcmp.html +++ b/c/bzcmp.html @@ -10,7 +10,7 @@ bzcmp 命令,Linux bzcmp 命令详解:比较两个压缩包中的文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bzcmp

    +
    +

    bzcmp

    比较两个压缩包中的文件

    -

    补充说明

    +

    补充说明

    bzcmp命令 主要功能是在不真正解压缩.bz2压缩包的情况下,比较两个压缩包中的文件,省去了解压缩后在调用cmp命令的过程。

    -

    语法

    +

    语法

    bzcmp(参数)
     
    -

    参数

    +

    参数

    • 文件1:指定要比较的第一个.bz2压缩包;
    • 文件2:指定要比较的第二个.bz2压缩包。
    • @@ -96,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzdiff.html b/c/bzdiff.html index 05e57d4836..37fe4ce8fd 100644 --- a/c/bzdiff.html +++ b/c/bzdiff.html @@ -10,7 +10,7 @@ bzdiff 命令,Linux bzdiff 命令详解:直接比较两个.bz2压缩包中文件的不同 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bzdiff

    +
    +

    bzdiff

    直接比较两个.bz2压缩包中文件的不同

    -

    补充说明

    +

    补充说明

    bzdiff命令 用于直接比较两个“.bz2”压缩包中文件的不同,省去了解压缩后再调用diff命令的过程。

    -

    语法

    +

    语法

    bzdiff(参数)
     
    -

    参数

    +

    参数

    • 文件1:指定要比较的第一个.bz2压缩包;
    • 文件2:指定要比较的第二个.bz2压缩包。
    • @@ -96,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzgrep.html b/c/bzgrep.html index 1d409af7d3..c8384b0c8f 100644 --- a/c/bzgrep.html +++ b/c/bzgrep.html @@ -10,7 +10,7 @@ bzgrep 命令,Linux bzgrep 命令详解:使用正则表达式搜索.bz2压缩包中文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bzgrep

    +
    +

    bzgrep

    使用正则表达式搜索.bz2压缩包中文件

    -

    补充说明

    +

    补充说明

    bzgrep命令 使用正则表达式搜索“.bz2”压缩包中文件,将匹配的行显示到标注输出。

    -

    语法

    +

    语法

    bzgrep(参数)
     
    -

    参数

    +

    参数

    • 搜索模式:指定要搜索的模式;
    • .bz2文件:指定要搜索的.bz2压缩包。
    • @@ -96,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzip2.html b/c/bzip2.html index f59c6a3519..b19b573fd3 100644 --- a/c/bzip2.html +++ b/c/bzip2.html @@ -10,7 +10,7 @@ bzip2 命令,Linux bzip2 命令详解:将文件压缩成bz2格式 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    bzip2

    +
    +

    bzip2

    将文件压缩成bz2格式

    -

    补充说明

    +

    补充说明

    bzip2命令 用于创建和管理(包括解压缩)“.bz2”格式的压缩包。

    bzip2 采用 Burrows-Wheeler 块排序文本压缩算法和 Huffman 编码方式压缩文件。 压缩率一般比基于 LZ77/LZ78 的压缩软件好得多,其性能接近 PPM 族统计类压缩软件。

    命令行参数有意设计为非常接近 GNU gzip 的形式,但也不完全相同。

    @@ -75,14 +71,10 @@ anyothername 解压成 anyothername.out

    在压缩时,如果不提供文件名,bzip2 将从标准输入读取数据,压缩结果写往标准输出。

    bzip2 采用 32 位 CRC 校验码作自我检查,以确认解压后的文件与原始文件相同。 这可用于检测压缩文件是否损坏,并防止 bzip2 中未知的缺陷(运气好的话这种可能性非常小)。 数据损坏而未检测到的几率非常之小, 对于每个被处理的文件大约是四十亿分之一。 检查是在解压缩时进行的,因此它只能说明某个地方出问题了。 它能帮助恢复原始未压缩的数据。可以用 bzip2recover 来尝试从损坏的文件中恢复数据。

    返回值:正常退出返回 0, 出现环境问题返回 1 (文件未找到,非法的选项,I/O错误等), 返回 2 表明压缩文件损坏,出现导致 bzip2 紧急退出的内部一致性错误(例如缺陷)时返回 3。

    -

    语法

    +

    语法

    bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ...  ]
     
    -

    选项

    +

    选项

    -c --stdout
         # 将数据压缩或解压缩至标准输出。
     
    @@ -126,13 +118,9 @@ anyothername    解压成   anyothername.out
         # 这些选项在 0.9.5 及其以上版本中是多余的。 在较早的版本中,这两个选项对排序算法的行为提供了一些粗糙的控制,有些情况下很有用。 0.9.5
         # 及其以上版本采用了改进的算法而与这些选项无关。
     
    -

    参数

    +

    参数

    文件:指定要压缩的文件。

    -

    实例

    +

    实例

    压缩指定文件filename:

    bzip2 filename
     或
    @@ -205,7 +193,7 @@ bzip2: For help, type: `bzip2 --help'
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/bzip2recover.html b/c/bzip2recover.html
    index 839a1c4cca..cfe6b98993 100644
    --- a/c/bzip2recover.html
    +++ b/c/bzip2recover.html
    @@ -10,7 +10,7 @@
         
         bzip2recover 命令,Linux bzip2recover 命令详解:恢复被破坏的.bz2压缩包中的文件 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,24 +50,16 @@
     
     
     
    -
    -

    bzip2recover

    +
    +

    bzip2recover

    恢复被破坏的.bz2压缩包中的文件

    -

    补充说明

    +

    补充说明

    bzip2recover命令 可用于恢复被破坏的“.bz2”压缩包中的文件。

    bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便解压缩正常的区块。通常只适用在压缩文件很大的情况。

    -

    语法

    +

    语法

    bzip2recover(参数)
     
    -

    参数

    +

    参数

    文件:指定要恢复数据的.bz2压缩包。

    @@ -94,7 +86,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzless.html b/c/bzless.html index 34fd1b14bb..0db6860b6b 100644 --- a/c/bzless.html +++ b/c/bzless.html @@ -10,7 +10,7 @@ bzless 命令,Linux bzless 命令详解:增强.bz2压缩包查看器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bzless

    +
    +

    bzless

    增强.bz2压缩包查看器

    -

    补充说明

    +

    补充说明

    bzless命令 是增强“.bz2”压缩包查看器,bzless比bzmore命令功能更加强大。

    -

    语法

    +

    语法

    bzless(参数)
     
    -

    参数

    +

    参数

    文件:指定要分屏显示的.bz2压缩包。

    @@ -93,7 +85,7 @@
    - - + + \ No newline at end of file diff --git a/c/bzmore.html b/c/bzmore.html index 9e99b643cf..51198a9375 100644 --- a/c/bzmore.html +++ b/c/bzmore.html @@ -10,7 +10,7 @@ bzmore 命令,Linux bzmore 命令详解:查看bzip2压缩过的文本文件的内容 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    bzmore

    +
    +

    bzmore

    查看bzip2压缩过的文本文件的内容

    -

    补充说明

    +

    补充说明

    bzmore命令 用于查看bzip2压缩过的文本文件的内容,当下一屏显示不下时可以实现分屏显示。

    -

    语法

    +

    语法

    bzmore(参数)
     
    -

    参数

    +

    参数

    文件:指定要分屏显示的.bz2压缩包。

    @@ -93,7 +85,7 @@
    - - + + \ No newline at end of file diff --git a/c/cal.html b/c/cal.html index 1b1a13a0df..4944bcbf5a 100644 --- a/c/cal.html +++ b/c/cal.html @@ -10,7 +10,7 @@ cal 命令,Linux cal 命令详解:显示当前日历或指定日期的日历 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    cal

    +
    +

    cal

    显示当前日历或指定日期的日历

    -

    补充说明

    +

    补充说明

    cal命令 用于显示当前日历,或者指定日期的日历,如果没有指定参数,则显示当前月份。

    一个单一的参数指定要显示的年份 (1 - 9999) ; 注意年份必须被完全地指定: cal 89 不会 显示1989年的日历. 两个参数表示月份 (1 - 12) 和年份. 如果没有指定参数, @@ -68,14 +64,10 @@ 格里高利历法改革(Gregorian Reformation)被认为发生于 1752 年 9 月 3 日. 在此之前, 多数国家已经认可这项改革(尽管有一些直到 20 世纪初才认可它). 那天之后的 10 天在这项改革被略去了, 所以那个月的日历有点不太寻常.

    -

    语法

    +

    语法

    cal [ -mjy ] [ 月份 ] [ 年份 ]
     
    -

    选项

    +

    选项

    -l # 显示单月输出;
     -3 # 显示临近三个月的日历;
     -s # 将星期日作为月的第一天;
    @@ -83,15 +75,11 @@
     -j # 显示儒略历的(Julian)日期 (以 1 为基的天数, 从 1 月 1 日开始计数) .
     -y # 显示当前年份的日历..
     
    -

    参数

    +

    参数

    月:指定月份;
     年:指定年份。
     
    -

    实例

    +

    实例

    单独执行cal命令会打印出日历:

    [root@localhost ~]# cal
         十二月 2013     
    @@ -145,7 +133,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/cancel.html b/c/cancel.html index e3bcd77290..10ef93e9ed 100644 --- a/c/cancel.html +++ b/c/cancel.html @@ -10,7 +10,7 @@ cancel 命令,Linux cancel 命令详解:取消已存在的打印任务 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
    -

    cancel

    +
    +

    cancel

    取消已存在的打印任务

    -

    补充说明

    +

    补充说明

    cancel命令 用于取消已存在的打印任务。

    -

    语法

    +

    语法

    cancel(选项)(参数)
     
    -

    选项

    +

    选项

    -a:取消所有打印任务;
     -E:当连接到服务器时强制使用加密;
     -U:指定连接服务器时使用的用户名;
     -u:指定打印任务所属的用户;
     -h:指定连接的服务器名和端口号。
     
    -

    参数

    +

    参数

    打印任务号:指定要取消的打印任务编号。

    @@ -102,7 +92,7 @@
    - - + + \ No newline at end of file diff --git a/c/cat.html b/c/cat.html index 46e8be4693..72f688ab87 100644 --- a/c/cat.html +++ b/c/cat.html @@ -10,7 +10,7 @@ cat 命令,Linux cat 命令详解:连接多个文件并打印到标准输出。 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    cat

    +
    +

    cat

    连接多个文件并打印到标准输出。

    -

    概要

    +

    概要

    cat [OPTION]... [FILE]...
     
    -

    主要用途

    +

    主要用途

    • 显示文件内容,如果没有文件或文件为-则读取标准输入。
    • 将多个文件的内容进行连接并打印到标准输出。
    • 显示文件内容中的不可见字符(控制字符、换行符、制表符等)。
    -

    参数

    +

    参数

    FILE(可选):要处理的文件,可以为一或多个。

    -

    选项

    +

    选项

    长选项与短选项等价
     
     -A, --show-all           等价于"-vET"组合选项。
    @@ -104,8 +94,8 @@
     
    - - + + 字符。 -n, --number 对所有行编号,从1开始编号。 @@ -118,13 +108,9 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h --help 显示帮助信息并退出。 --version 显示版本信息并退出。
    -

    返回值

    +

    返回值

    返回状态为成功除非给出了非法选项或非法参数。

    -

    例子

    +

    例子

    # 合并显示多个文件
     cat ./1.log ./2.log ./3.log
     # 显示文件中的非打印字符、tab、换行符
    @@ -138,17 +124,13 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     # 将标准输入的内容和文件内容一并显示
     echo '######' |cat - test.log
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 catinfo coreutils 'cat invocation'
    2. 当使用cat命令查看体积较大的文件时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容,为了控制滚屏,可以按Ctrl+s键停止滚屏;按Ctrl+q键恢复滚屏;按Ctrl+c(中断)键可以终止该命令的执行,返回Shell提示符状态。
    3. 建议您查看体积较大的文件时使用lessmore命令或emacsvi等文本编辑器。
    -

    参考链接

    +

    参考链接

    1. Question about LFD key
    @@ -177,7 +159,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
    - - + + \ No newline at end of file diff --git a/c/cd.html b/c/cd.html index 09bd253544..f699a91fb2 100644 --- a/c/cd.html +++ b/c/cd.html @@ -10,7 +10,7 @@ cd 命令,Linux cd 命令详解:切换用户当前工作目录。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    cd

    +
    +

    cd

    切换用户当前工作目录。

    -

    概要

    +

    概要

    cd [-L|[-P [-e]]] [dir]
     
    -

    主要用途

    +

    主要用途

    • 切换工作目录至dir。其中dir的表示法可以是绝对路径或相对路径。
    • 若参数dir省略,则默认为使用者的shell变量HOME
    • @@ -70,24 +64,16 @@
    • 环境变量CDPATH是由冒号分割的一到多个目录,你可以将常去的目录的上一级加入到CDPATH以便方便访问它们;如果dir/开头那么CDPATH不会被使用。
    • shopt选项cdable_vars打开时,如果dirCDPATH及当前目录下均不存在,那么会把它当作变量,读取它的值作为要进入的目录。
    -

    参数

    +

    参数

    dir(可选):指定要切换到的目录。

    -

    选项

    +

    选项

    -L (默认值)如果要切换到的目标目录是一个符号连接,那么切换到符号连接的目录。
     -P 如果要切换到的目标目录是一个符号连接,那么切换到它指向的物理位置目录。
     -  当前工作目录将被切换到环境变量OLDPWD所表示的目录,也就是前一个工作目录。
     
    -

    返回值

    +

    返回值

    返回状态为成功除非无法进入指定的目录。

    -

    例子

    +

    例子

    cd    # 进入用户主目录;
     cd /  # 进入根目录
     cd ~  # 进入用户主目录;
    @@ -124,9 +110,7 @@
     # 关闭选项。
     shopt -u cdable_vars
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

      @@ -160,7 +144,7 @@
    - - + + \ No newline at end of file diff --git a/c/cdrecord.html b/c/cdrecord.html index 5dbab9a9b1..a812b50561 100644 --- a/c/cdrecord.html +++ b/c/cdrecord.html @@ -10,7 +10,7 @@ cdrecord 命令,Linux cdrecord 命令详解:Linux系统下光盘刻录功能命令 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    cdrecord

    +
    +

    cdrecord

    Linux系统下光盘刻录功能命令

    -

    补充说明

    +

    补充说明

    cdrecord命令 用于Linux系统下光盘刻录,它支持cd和DVD格式。linux下一般都带有cdrecord软件。

    -

    语法

    +

    语法

    cdrecord(选项)(参数)
     
    -

    选项

    +

    选项

    -v:显示刻录光盘的详细过程;
     -eject:刻录完成后弹出光盘;
     speed=<刻录倍速>:指定光盘刻录的倍速;
     dev=<刻录机设备号>:指定使用“-scanbus”参数扫描到的刻录机的设备号;
     -scanbus:扫描系统中可用的刻录机。
     
    -

    参数

    +

    参数

    ISO文件:指定刻录光盘使用的ISO映像文件。

    -

    实例

    +

    实例

    查看系统所有 CD-R(w) 设备:

    cdrecord -scanbus
     scsibus0:
    @@ -125,7 +113,7 @@ scsibus0:
     
    - - + + \ No newline at end of file diff --git a/c/chage.html b/c/chage.html index 23e6912bca..1f84dcbe8b 100644 --- a/c/chage.html +++ b/c/chage.html @@ -10,7 +10,7 @@ chage 命令,Linux chage 命令详解:修改帐号和密码的有效期限 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    chage

    +
    +

    chage

    修改帐号和密码的有效期限

    -

    补充说明

    +

    补充说明

    chage命令 是用来修改帐号和密码的有效期限。

    -

    语法

    +

    语法

    chage [选项] 用户名
     
    -

    选项

    +

    选项

    -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
     -M:密码保持有效的最大天数。
     -w:用户密码到期前,提前收到警告信息的天数。
    @@ -75,9 +67,7 @@
     -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
     -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
     
    -

    实例

    +

    实例

    可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:

    PASS_MAX_DAYS   99999
     PASS_MIN_DAYS   0
    @@ -153,7 +143,7 @@ PASS_WARN_AGE   7
     
    - - + + \ No newline at end of file diff --git a/c/chattr.html b/c/chattr.html index 8e55353360..e0c4508435 100644 --- a/c/chattr.html +++ b/c/chattr.html @@ -10,7 +10,7 @@ chattr 命令,Linux chattr 命令详解:用来改变文件属性 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    chattr

    +
    +

    chattr

    用来改变文件属性

    -

    补充说明

    +

    补充说明

    chattr命令 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

    -

    语法

    +

    语法

    chattr(选项)
     
    -

    选项

    +

    选项

    a:让文件或目录仅供附加用途;
     b:不更新文件或目录的最后存取时间;
     c:将文件或目录压缩后存放;
    @@ -83,9 +75,7 @@ u:预防意外删除。
     -<属性>:关闭文件或目录的该项属性;
     =<属性>:指定文件或目录的该项属性。
     
    -

    实例

    +

    实例

    用chattr命令防止系统中某个关键文件被修改:

    chattr +i /etc/fstab
     
    @@ -118,7 +108,7 @@ u:预防意外删除。
    - - + + \ No newline at end of file diff --git a/c/chcon.html b/c/chcon.html index 3785ea3851..69cc9d5d97 100644 --- a/c/chcon.html +++ b/c/chcon.html @@ -10,7 +10,7 @@ chcon 命令,Linux chcon 命令详解:修改对象(文件)的安全上下文 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    chcon

    +
    +

    chcon

    修改对象(文件)的安全上下文

    -

    补充说明

    +

    补充说明

    chcon命令 是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。使用--reference选项时,把指定文件的安全环境设置为与参考文件相同。chcon命令位于/usr/bin/chcon

    -

    语法

    +

    语法

    chcon [选项]... 环境 文件...
     chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
     chcon [选项]... --reference=参考文件 文件...
     
    -

    选项

    +

    选项

    -h, --no-dereference:影响符号连接而非引用的文件。
         --reference=参考文件:使用指定参考文件的安全环境,而非指定值。
     -R, --recursive:递归处理所有的文件及子目录。
    @@ -85,9 +77,7 @@ chcon [选项实例
    +  

    实例

    如果你想把这个ftp共享给匿名用户的话,需要开启以下:

    chcon -R -t public_content_t /var/ftp
     
    @@ -129,7 +119,7 @@ chcon -R -t httpd_sys_content_t ~user/public_html
    - - + + \ No newline at end of file diff --git a/c/chfn.html b/c/chfn.html index 0eb5d11bb6..c252fb28bb 100644 --- a/c/chfn.html +++ b/c/chfn.html @@ -10,7 +10,7 @@ chfn 命令,Linux chfn 命令详解:用来改变finger命令显示的信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    chfn

    +
    +

    chfn

    用来改变finger命令显示的信息

    -

    补充说明

    +

    补充说明

    chfn命令 用来改变finger命令显示的信息。这些信息都存放在/etc目录里的passwd文件里。若不指定任何选项,则chfn命令会进入问答式界面。

    -

    语法

    +

    语法

    chfn(选项)(参数)
     
    -

    选项

    +

    选项

    -f<真实姓名>或--full-name<真实姓名>:设置真实姓名;
     -h<家中电话>或--home-phone<家中电话>:设置家中的电话号码;
     -o<办公地址>或--office<办公地址>:设置办公室的地址;
    @@ -74,13 +66,9 @@
     -u或--help:在线帮助;
     -v或-version:显示版本信息。
     
    -

    参数

    +

    参数

    用户名:指定要改变finger信息的用户名。

    -

    实例

    +

    实例

    范例1,改变finger信息:

    [root@localhost Desktop]# chfn
     Changing finger information for root.
    @@ -130,7 +118,7 @@ Home Phone[
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/chgrp.html b/c/chgrp.html
    index 7fe46fa1b5..6c711a1285 100644
    --- a/c/chgrp.html
    +++ b/c/chgrp.html
    @@ -10,7 +10,7 @@
         
         chgrp 命令,Linux chgrp 命令详解:用来变更文件或目录的所属群组 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,24 +50,16 @@
     
     
     
    -
    -

    chgrp

    +
    +

    chgrp

    用来变更文件或目录的所属群组

    -

    补充说明

    +

    补充说明

    chgrp命令 用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。

    在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。

    -

    语法

    +

    语法

    chgrp [选项][组群][文件|目录]
     
    -

    选项

    +

    选项

    -R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
     -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
     -f或--quiet或——silent:不显示错误信息;
    @@ -79,16 +71,12 @@
     -v或——verbose:显示指令执行过程;
     --reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
     
    -

    参数

    +

    参数

    • 组:指定新工作名称;
    • 文件:指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开。
    -

    实例

    +

    实例

    /usr/meng及其子目录下的所有文件的用户组改为mengxin

    chgrp -R mengxin /usr/meng
     
    @@ -120,7 +108,7 @@
    - - + + \ No newline at end of file diff --git a/c/chkconfig.html b/c/chkconfig.html index c33cac54fc..d48f1dacd9 100644 --- a/c/chkconfig.html +++ b/c/chkconfig.html @@ -10,7 +10,7 @@ chkconfig 命令,Linux chkconfig 命令详解:检查或设置系统的各种服务 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    chkconfig

    +
    +

    chkconfig

    检查或设置系统的各种服务

    -

    补充说明

    +

    补充说明

    chkconfig命令 检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

    -

    语法

    +

    语法

    chkconfig(选项)
     
    -

    选项

    +

    选项

    --add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据;
     --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据;
     --level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。
    @@ -99,9 +91,7 @@
     # description: Saves and restores system entropy pool for \
     # higher quality random number generation.
     
    -

    实例

    +

    实例

    chkconfig --list             #列出所有的系统服务。
     chkconfig --add httpd        #增加httpd服务。
     chkconfig --del httpd        #删除httpd服务。
    @@ -144,7 +134,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/chmod.html b/c/chmod.html index 650fd8606e..c87d6d41db 100644 --- a/c/chmod.html +++ b/c/chmod.html @@ -10,7 +10,7 @@ chmod 命令,Linux chmod 命令详解:用来变更文件或目录的权限 - Linux 命令搜索引擎 - + @@ -50,34 +50,24 @@ -
    -

    chmod

    +
    +

    chmod

    用来变更文件或目录的权限

    -

    概要

    +

    概要

    chmod [OPTION]... MODE[,MODE]... FILE...
     chmod [OPTION]... OCTAL-MODE FILE...
     chmod [OPTION]... --reference=RFILE FILE...
     
    -

    主要用途

    +

    主要用途

    • 通过符号组合的方式更改目标文件或目录的权限。
    • 通过八进制数的方式更改目标文件或目录的权限。
    • 通过参考文件的权限来更改目标文件或目录的权限。
    -

    参数

    +

    参数

    mode:八进制数或符号组合。

    file:指定要更改权限的一到多个文件。

    -

    选项

    +

    选项

    -c, --changes:当文件的权限更改时输出操作信息。
     --no-preserve-root:不将'/'特殊化处理,默认选项。
     --preserve-root:不能在根目录下递归操作。
    @@ -88,13 +78,9 @@
     --help:显示帮助信息并退出。
     --version:显示版本信息并退出。
     
    -

    返回值

    +

    返回值

    返回状态为成功除非给出了非法选项或非法参数。

    -

    例子

    +

    例子

    参考man chmod文档的DESCRIPTION段落得知:

      @@ -141,9 +127,7 @@ # 根据其他文件的权限设置文件权限。 chmod --reference=./1.log ./test.log
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man chmodinfo coreutils 'chmod invocation'

      @@ -180,7 +164,7 @@
    - - + + \ No newline at end of file diff --git a/c/chown.html b/c/chown.html index 6fdbaf95aa..457471dbe3 100644 --- a/c/chown.html +++ b/c/chown.html @@ -10,7 +10,7 @@ chown 命令,Linux chown 命令详解:用来变更文件或目录的拥有者或所属群组 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    chown

    +
    +

    chown

    用来变更文件或目录的拥有者或所属群组

    -

    补充说明

    +

    补充说明

    chown命令 改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

    只有文件主和超级用户才可以便用该命令。

    -

    语法

    +

    语法

    chown(选项)(参数)
     
    -

    选项

    +

    选项

    -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
     -f或--quite或——silent:不显示错误信息;
     -h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
    @@ -78,13 +70,9 @@
     --reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    用户:组:指定所有者和所属工作组。当省略“:组”,仅改变文件所有者;
    文件:指定要改变所有者和工作组的文件列表。支持多个文件和目标,支持shell通配符。

    -

    实例

    +

    实例

    将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu:

    chown -R liu /usr/meng
     
    @@ -113,7 +101,7 @@
    - - + + \ No newline at end of file diff --git a/c/chpasswd.html b/c/chpasswd.html index 367aeda0f6..82c95f1821 100644 --- a/c/chpasswd.html +++ b/c/chpasswd.html @@ -10,7 +10,7 @@ chpasswd 命令,Linux chpasswd 命令详解:批量更新用户口令的工具 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    chpasswd

    +
    +

    chpasswd

    批量更新用户口令的工具

    -

    补充说明

    +

    补充说明

    chpasswd命令 是批量更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中。

    -

    语法

    +

    语法

    chpasswd(选项)
     
    -

    选项

    +

    选项

    -e:输入的密码是加密后的密文;
     -h:显示帮助信息并退出;
     -m:当被支持的密码未被加密时,使用MD5加密代替DES加密。
     
    -

    实例

    +

    实例

    先创建用户密码对应文件,格式为username:password,如abc:abc123,必须以这种格式来书写,并且不能有空行,保存成文本文件user.txt,然后执行chpasswd命令:

    chpasswd < user.txt
     
    @@ -103,7 +93,7 @@
    - - + + \ No newline at end of file diff --git a/c/chroot.html b/c/chroot.html index e945941009..d0cc0df6c6 100644 --- a/c/chroot.html +++ b/c/chroot.html @@ -10,7 +10,7 @@ chroot 命令,Linux chroot 命令详解:把根目录换成指定的目的目录 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    chroot

    +
    +

    chroot

    把根目录换成指定的目的目录

    -

    补充说明

    +

    补充说明

    chroot命令 用来在指定的根目录下运行指令。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置。

    在经过 chroot 命令之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:

    增加了系统的安全性,限制了用户的权力:

    @@ -66,27 +62,19 @@

    使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。

    切换系统的根目录位置,引导 Linux 系统启动以及急救系统等:

    chroot 的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM 磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。

    -

    语法

    +

    语法

    chroot(选项)(参数)
     
    -

    选项

    +

    选项

    --help:在线帮助;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    • 目录:指定新的根目录;
    • 指令:指定要执行的指令。
    -

    实例

    +

    实例

    将target作为根目录(运行其中的/bin/sh):

    chroot target /bin/sh
     
    @@ -156,7 +144,7 @@ libc.so.6 = &#x
    - - + + \ No newline at end of file diff --git a/c/chsh.html b/c/chsh.html index 28e28f61a8..4fbe326dc8 100644 --- a/c/chsh.html +++ b/c/chsh.html @@ -10,7 +10,7 @@ chsh 命令,Linux chsh 命令详解:用来更换登录系统时使用的shell - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    chsh

    +
    +

    chsh

    用来更换登录系统时使用的shell

    -

    补充说明

    +

    补充说明

    chsh命令 用来更换登录系统时使用的shell。若不指定任何参数与用户名称,则chsh会以应答的方式进行设置。

    -

    语法

    +

    语法

    chsh(选项)(参数)
     
    -

    选项

    +

    选项

    -s<shell 名称>或--shell<shell 名称>:更改系统预设的shell环境。;
     -l或--list-shells:列出目前系统可用的shell清单;
     -u或--help:在线帮助;
     -v或-version:显示版本信息。
     
    -

    参数

    +

    参数

    用户名:要改变默认shell的用户。

    -

    实例

    +

    实例

    查看系统安装了哪些shell的两种方法:

    第一种:

    [rocrocket@localhost ~]$ chsh -l
    @@ -143,7 +131,7 @@ Shell changed.
     
    - - + + \ No newline at end of file diff --git a/c/cksum.html b/c/cksum.html index 2075cb25ec..cefb278a5a 100644 --- a/c/cksum.html +++ b/c/cksum.html @@ -10,7 +10,7 @@ cksum 命令,Linux cksum 命令详解:检查文件的CRC是否正确 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    cksum

    +
    +

    cksum

    检查文件的CRC是否正确

    -

    补充说明

    +

    补充说明

    cksum命令 是检查文件的CRC是否正确,确保文件从一个系统传输到另一个系统的过程中不被损坏。这种方法要求校验和在源系统中被计算出来,在目的系统中又被计算一次,两个数字进行比较,如果校验和相等,则该文件被认为是正确传输了。

    注意:CRC是指一种排错检查方法,即循环冗余校验法。

    指定文件交由cksum命令进行校验后,会返回校验结果供用户核对文件是否正确无误。若不指定任何文件名称或是所给予的文件名为"-",则cksum命令会从标准输入设备中读取数据。

    -

    语法

    +

    语法

    cksum(选项)(参数)
     
    -

    选项

    +

    选项

    --help:在线帮助;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    文件:指定要计算校验的版本信息。

    -

    实例

    +

    实例

    使用cksum命令计算文件"testfile1"的完整性,输入如下命令:

    cksum testfile1            #对指定文件进行CRC校验
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/clear.html b/c/clear.html index 8193525481..9db6f80136 100644 --- a/c/clear.html +++ b/c/clear.html @@ -10,7 +10,7 @@ clear 命令,Linux clear 命令详解:清除当前屏幕终端上的任何信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    clear

    +
    +

    clear

    清除当前屏幕终端上的任何信息

    -

    补充说明

    +

    补充说明

    clear命令 用于清除当前屏幕终端上的任何信息。

    -

    语法

    +

    语法

    clear
     
    -

    实例

    +

    实例

    直接输入clear命令当前终端上的任何信息就可被清除。

    @@ -93,7 +85,7 @@
    - - + + \ No newline at end of file diff --git a/c/clock.html b/c/clock.html index 91863b655c..08b2a51197 100644 --- a/c/clock.html +++ b/c/clock.html @@ -10,7 +10,7 @@ clock 命令,Linux clock 命令详解:用于调整 RTC 时间 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    clock

    +
    +

    clock

    用于调整 RTC 时间

    -

    补充说明

    +

    补充说明

    clock命令用于调整 RTC 时间。 RTC 是电脑内建的硬件时间,执行这项指令可以显示现在时刻,调整硬件时钟的时间,将系统时间设成与硬件时钟之时间一致,或是把系统时间回存到硬件时钟。

    -

    语法

    +

    语法

    clock [--adjust][--debug][--directisa][--getepoch][--hctosys][--set --date="<日期时间>"]
     [--setepoch --epoch=< >][--show][--systohc][--test][--utc][--version]
     
    -

    选项

    +

    选项

    --adjust  第一次使用"--set""--systohc"参数设置硬件时钟,会在/etc目录下产生一个名称为adjtime的文件。当再次使用这两个参数调整硬件时钟,此文件便会记录两次调整间之差异,日后执行clock指令加上"--adjust"参数时,程序会自动根 据记录文件的数值差异,计算出平均值,自动调整硬件时钟的时间。
     --debug  详细显示指令执行过程,便于排错或了解程序执行的情形。
     --directisa  告诉clock指令不要通过/dev/rtc设备文件,直接对硬件时钟进行存取。这个参数适用于仅有ISA总线结构的老式电脑。
    @@ -81,9 +73,7 @@
     --utc  把硬件时钟上的时间时为CUT,有时也称为UTC或UCT。
     --version  显示版本信息。
     
    -

    实例

    +

    实例

    获取当前的时间

    clock # 获取当前的时间
     
    @@ -115,7 +105,7 @@
    - - + + \ No newline at end of file diff --git a/c/clockdiff.html b/c/clockdiff.html index 729898063e..6cc00f11d9 100644 --- a/c/clockdiff.html +++ b/c/clockdiff.html @@ -10,7 +10,7 @@ clockdiff 命令,Linux clockdiff 命令详解:检测两台linux主机的时间差 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    clockdiff

    +
    +

    clockdiff

    检测两台linux主机的时间差

    -

    补充说明

    +

    补充说明

    在ip报文的首部和ICMP报文的首部都可以放入时间戳数据。 clockdiff 程序正是使用时间戳来测算目的主机和本地主机的系统时间差。

    -

    选项

    +

    选项

    -o:使用IP时间戳选项来测量系统时间差。时间戳只用3个。
     -o1:使用IP时间戳选项来测量系统时间差。用4个时间戳。如果-o和-o1都没有设置,那么就是用ICMP时间戳来测试系统时间差。
     
    -

    实例

    +

    实例

    lixi@lixi-desktop:~$ ping -T tsandaddr www.ustc.edu.cn -c 1
     PING www.ustc.edu.cn (202.38.64.9) 56(124) bytes of data.
     64 bytes from 202.38.64.9: icmp_seq=1 ttl=62 time=0.823 ms
    @@ -121,7 +113,7 @@ rtt min/avg/max/mdev = 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/cmp.html b/c/cmp.html
    index 1c5a02ef9a..b2ffb5376e 100644
    --- a/c/cmp.html
    +++ b/c/cmp.html
    @@ -10,7 +10,7 @@
         
         cmp 命令,Linux cmp 命令详解:比较两个文件是否有差异 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    cmp

    +
    +

    cmp

    比较两个文件是否有差异

    -

    补充说明

    +

    补充说明

    cmp命令 用来比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有差异,预设会标示出第一个不通之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为“-”,则cmp指令会从标准输入设备读取数据。

    -

    语法

    +

    语法

    cmp(选项)(参数)
     
    -

    选项

    +

    选项

    -c或--print-chars:除了标明差异处的十进制字码之外,一并显示该字符所对应字符;
     -i<字符数目>或--ignore-initial=<字符数目>:指定一个数目;
     -l或——verbose:标示出所有不一样的地方;
    @@ -74,13 +66,9 @@
     -v或——version:显示版本信息;
     --help:在线帮助。
     
    -

    参数

    +

    参数

    目录:比较两个文件的差异。

    -

    实例

    +

    实例

    使用cmp命令比较文件"testfile"和文件"testfile1"两个文件,则输入下面的命令:

    cmp testfile testfile1            #比较两个指定的文件
     
    @@ -125,7 +113,7 @@ testfile testfile1 #有差异:第8字节
    - - + + \ No newline at end of file diff --git a/c/col.html b/c/col.html index f50be8d2c0..1648b1dc9f 100644 --- a/c/col.html +++ b/c/col.html @@ -10,7 +10,7 @@ col 命令,Linux col 命令详解:过滤控制字符 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    col

    +
    +

    col

    过滤控制字符

    -

    补充说明

    +

    补充说明

    col命令 是一个标准输入文本过滤器,它从标注输入设备读取文本内容,并把内容显示到标注输出设备。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符>>>,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效滤除这些控制字符。

    -

    语法

    +

    语法

    col(选项)
     
    -

    选项

    +

    选项

    -b:过滤掉所有的控制字符,包括RLF和HRLF;
     -f:滤掉RLF字符,但允许将HRLF字符呈现出来;
     -x:以多个空格字符来表示跳格字符;
    @@ -97,7 +89,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/colrm.html b/c/colrm.html index 16b5b24ce9..e84979b277 100644 --- a/c/colrm.html +++ b/c/colrm.html @@ -10,7 +10,7 @@ colrm 命令,Linux colrm 命令详解:删除文件中的指定列 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    colrm

    +
    +

    colrm

    删除文件中的指定列

    -

    补充说明

    +

    补充说明

    colrm命令 用于删除文件中的指定列。colrm命令从标准输入设备读取书记,转而输出到标准输出设备。如果不加任何参数,则colrm命令不会过滤任何一行。

    -

    语法

    +

    语法

    colrm(参数)
     
    -

    参数

    +

    参数

    • 起始列号:指定要删除的指定列;
    • 结尾列号:指定要删除的结尾列。
    • @@ -96,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/comm.html b/c/comm.html index e1cf5fecef..cc710f3a5d 100644 --- a/c/comm.html +++ b/c/comm.html @@ -10,7 +10,7 @@ comm 命令,Linux comm 命令详解:按行比较两个已排序的文件。 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
    -

    comm

    +
    +

    comm

    按行比较两个已排序的文件。

    -

    概要

    +

    概要

    comm [OPTION]... FILE1 FILE2
     
    -

    主要用途

    +

    主要用途

    • 按行比较两个已排序的文件。
    • FILE1FILE2-时,读取标准输入。
    • 无选项时输出三列,第一列为FILE1独有的行,第二列为FILE2独有的行,第三列为FILE1FILE2共有的行。
    -

    选项

    +

    选项

    -1                        不输出第一列。
     -2                        不输出第二列。
     -3                        不输出第三列。
    @@ -82,13 +74,9 @@
     --help                    显示帮助信息并退出。
     --version                 显示版本信息并退出。
     
    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    文本 aaa.txt 内容

    [root@localhost text]# cat aaa.txt 
     aaa
    @@ -123,9 +111,7 @@ eee
             jjj
     

    输出的第一列只包含在aaa.txt中出现的行,第二列包含在bbb.txt中出现的行,第三列包含在aaa.txt和bbb.txt中相同的行。各列之间以制表符(\t)作为分隔符。

    -

    比较排序过的文档

    +

    比较排序过的文档

    先通过 sort 将文件内容排序:

    [root@localhost ~]# sort aaa.txt > aaa1.txt
     [root@localhost ~]# sort bbb.txt > bbb1.txt
    @@ -143,17 +129,13 @@ eee
     	jjj
     	ttt
     
    -

    交集

    +

    交集

    打印两个文件的交集,需要删除第一列和第二列:

    [root@localhost text]# comm aaa.txt bbb.txt -1 -2
     bbb
     ccc
     
    -

    差集

    +

    差集

    通过删除不需要的列,可以得到aaa.txt和bbb.txt的差集:

    aaa.txt的差集

    [root@localhost text]# comm aaa.txt bbb.txt -2 -3
    @@ -170,9 +152,7 @@ hhh
     ttt
     jjj
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 comminfo coreutils 'comm invocation'
    @@ -201,7 +181,7 @@ jjj
    - - + + \ No newline at end of file diff --git a/c/command.html b/c/command.html index 7c1993eee9..2c894322ff 100644 --- a/c/command.html +++ b/c/command.html @@ -10,7 +10,7 @@ command 命令,Linux command 命令详解:调用并执行指定的命令 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    command

    +
    +

    command

    调用并执行指定的命令

    -

    补充说明

    +

    补充说明

    command命令 调用指定的指令并执行,命令执行时不查询shell函数。command命令只能够执行shell内部的命令。

    -

    语法

    +

    语法

    command(参数)
     
    -

    参数

    +

    参数

    指令:需要调用的指令及参数。

    -

    实例

    +

    实例

    使用command命令调用执行echo Linux,输入如下命令:

    command echo Linux            #调用执行shell内部指令
     
    @@ -102,7 +92,7 @@
    - - + + \ No newline at end of file diff --git a/c/compress.html b/c/compress.html index 54cbbf97ae..73b61f9abe 100644 --- a/c/compress.html +++ b/c/compress.html @@ -10,7 +10,7 @@ compress 命令,Linux compress 命令详解:使用Lempress-Ziv编码压缩数据文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    compress

    +
    +

    compress

    使用Lempress-Ziv编码压缩数据文件

    -

    补充说明

    +

    补充说明

    compress命令 使用“Lempress-Ziv”编码压缩数据文件。compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出".Z"的扩展名。当要解压缩时,可执行uncompress指令。事实上uncompress是指向compress的符号连接,因此不论是压缩或解压缩,都可通过compress指令单独完成。

    -

    语法

    +

    语法

    compress(选项)(参数)
     
    -

    选项

    +

    选项

    -f:不提示用户,强制覆盖掉目标文件;
     -c:将结果送到标准输出,无文件被改变;
     -r:递归的操作方式;
    @@ -75,13 +67,9 @@
     -v:显示指令执行过程;
     -V:显示指令版本及程序预设值。
     
    -

    参数

    +

    参数

    文件:指定要压缩的文件列表。

    -

    实例

    +

    实例

    /etc/man.config复到/tmp ,并加以压缩

    [root@localhost ~]# cd /tmp
     [root@localhost tmp]# cp /etc/man.config .
    @@ -126,7 +114,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/consoletype.html b/c/consoletype.html index cd17fa33bd..86b4471160 100644 --- a/c/consoletype.html +++ b/c/consoletype.html @@ -10,7 +10,7 @@ consoletype 命令,Linux consoletype 命令详解:输出已连接的终端类型 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    consoletype

    +
    +

    consoletype

    输出已连接的终端类型

    -

    补充说明

    +

    补充说明

    consoletype命令 用于打印已连接的终端类型到标准输出,并能够检查已连接的终端是当前终端还是虚拟终端。

    -

    语法

    +

    语法

    consoletype
     
    -

    实例

    +

    实例

    [root@localhost ~]# consoletype
     pty
     
    @@ -95,7 +87,7 @@ pty
    - - + + \ No newline at end of file diff --git a/c/continue.html b/c/continue.html index d0740c2937..cd10e37a7e 100644 --- a/c/continue.html +++ b/c/continue.html @@ -10,7 +10,7 @@ continue 命令,Linux continue 命令详解:结束本次循环,继续执行下一个for,while或until循环。 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    continue

    +
    +

    continue

    结束本次循环,继续执行下一个for,while或until循环。

    -

    概要

    +

    概要

    continue [n]
     
    -

    主要用途

    +

    主要用途

    • 结束本次循环,继续执行下一个for,while或until循环;可指定从第几层循环继续执行。
    -

    参数

    +

    参数

    n(可选):大于等于1的整数,用于指定从第几层循环继续执行。

    -

    返回值

    +

    返回值

    返回状态为成功除非n小于1。

    -

    例子

    +

    例子

    # continue的可选参数n缺省值为1。
     for((i=3;i>0;i--)); do
       # 跳到内层for循环继续执行。
    @@ -111,9 +99,7 @@
     2 3
     1 3
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -142,7 +128,7 @@
    - - + + \ No newline at end of file diff --git a/c/convertquota.html b/c/convertquota.html index a187252840..568da3a41a 100644 --- a/c/convertquota.html +++ b/c/convertquota.html @@ -10,7 +10,7 @@ convertquota 命令,Linux convertquota 命令详解:把老的配额文件转换为新的格式 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    convertquota

    +
    +

    convertquota

    把老的配额文件转换为新的格式

    -

    补充说明

    +

    补充说明

    convertquota命令 用于将老的磁盘额数据文件(“quota.user”和“quota.group”)转换为新格式的文件(“quota.user”和“quota.group”)。

    -

    语法

    +

    语法

    convertquota(选项)(参数)
     
    -

    选项

    +

    选项

    -u:仅转换用户磁盘配额数据文件;
     -g:仅转换组磁盘配额数据文件;
     -f:将老的磁盘配额文件转换为新的格式;
     -e:将新的文件格式从大字节序换为小字节序。
     
    -

    参数

    +

    参数

    文件系统:指定要转换磁盘配额数据文件格式的文件系统(硬盘分区)。

    -

    实例

    +

    实例

    使用convertquota指令转换指定文件系统/data的磁盘配额数据文件。在命令行中输入下面的命令:

    convertquota -u /data     //转换文件系统"/data"上的用户磁盘配额文件
     
    @@ -107,7 +95,7 @@
    - - + + \ No newline at end of file diff --git a/c/cp.html b/c/cp.html index d022f2d03d..3b3fd3733c 100644 --- a/c/cp.html +++ b/c/cp.html @@ -10,7 +10,7 @@ cp 命令,Linux cp 命令详解:将源文件或目录复制到目标文件或目录中 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    cp

    +
    +

    cp

    将源文件或目录复制到目标文件或目录中

    -

    补充说明

    +

    补充说明

    cp命令 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

    -

    语法

    +

    语法

    cp(选项)(参数)
     
    -

    选项

    +

    选项

    -a:此参数的效果和同时指定"-dpR"参数相同;
     -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
     -f:强行复制文件或目录,不论目标文件或目录是否已存在;
    @@ -80,16 +72,12 @@
     -b:覆盖已存在的文件目标前将目标文件备份;
     -v:详细显示命令执行的操作。
     
    -

    参数

    +

    参数

    • 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
    • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
    -

    实例

    +

    实例

    下面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。这样,只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。

    通常来说,参数 -r 也可用更详细的风格 --recursive。但是以简短的方式,也可以这么连用 -ruv

    cp -r -u -v /usr/men/tmp ~/men/tmp
    @@ -165,7 +153,7 @@ test1.py test1.py.~1~ test1.py.~2~
     
    - - + + \ No newline at end of file diff --git a/c/cpio.html b/c/cpio.html index f7774c23f4..6178591366 100644 --- a/c/cpio.html +++ b/c/cpio.html @@ -10,7 +10,7 @@ cpio 命令,Linux cpio 命令详解:用来建立、还原备份档的工具程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    cpio

    +
    +

    cpio

    用来建立、还原备份档的工具程序

    -

    补充说明

    +

    补充说明

    cpio命令 主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。

    -

    语法

    +

    语法

    cpio(选项)
     
    -

    选项

    +

    选项

    -0或--null:接受新增列控制字符,通常配合find指令的“-print0”参数使用;
     -a或--rest-access-time:重新设置文件的存取时间;
     -A或--append:附加到已存在的备份文档中,且这个备份文档必须存放在磁盘上,而不能放置于磁带机里;
    @@ -108,9 +100,7 @@
     --sparse:倘若一个文件内含有大量的连续0字节,则将此文件存在稀疏文件;
     --version:显示版本信息。
     
    -

    实例

    +

    实例

    /etc下的所有普通文件都备份到/opt/etc.cpio,使用以下命令:

    find /etc –type f | cpio –ocvB >/opt/etc.cpio
     
    @@ -152,7 +142,7 @@
    - - + + \ No newline at end of file diff --git a/c/crontab.html b/c/crontab.html index 65cadba6cb..c7d8d11e62 100644 --- a/c/crontab.html +++ b/c/crontab.html @@ -10,7 +10,7 @@ crontab 命令,Linux crontab 命令详解:提交和管理用户的需要周期性执行的任务 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    crontab

    +
    +

    crontab

    提交和管理用户的需要周期性执行的任务

    -

    补充说明

    +

    补充说明

    crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

    -

    语法

    +

    语法

    crontab(选项)(参数)
     
    -

    选项

    +

    选项

    -e:编辑该用户的计时器设置;
     -l:列出该用户的计时器设置;
     -r:删除该用户的计时器设置;
     -u<用户名称>:指定要设定计时器的用户名称。
     
    -

    参数

    +

    参数

    crontab文件:指定包含待执行任务的crontab文件。

    -

    知识扩展

    +

    知识扩展

    Linux下的任务调度分为两类: 系统任务调度用户任务调度

    系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

    /etc/crontab文件包括下面几行:

    @@ -135,9 +123,7 @@

    加入开机自动启动:

    chkconfig –level 35 crond on
     
    -

    实例

    +

    实例

    每1分钟执行一次command

    * * * * * command
     
    @@ -208,7 +194,7 @@
    - - + + \ No newline at end of file diff --git a/c/csplit.html b/c/csplit.html index 40173cc20f..8ec5a7dd9a 100644 --- a/c/csplit.html +++ b/c/csplit.html @@ -10,7 +10,7 @@ csplit 命令,Linux csplit 命令详解:将一个大文件分割成小的碎片文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    csplit

    +
    +

    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:保留文件,就算发生错误或中断执行,与不能删除已经输出保存的文件;
    @@ -74,16 +66,12 @@
     -q或-s或--quiet或——silent:不显示指令执行过程;
     -z或--elide-empty-files:删除长度为0 Byte文件。
     
    -

    参数

    +

    参数

    • 文件:指定要分割的原文件;
    • 模式:指定要分割文件时的匹配模式。
    -

    实例

    +

    实例

    示例测试文件 server.log

    cat server.log
     SERVER-1
    @@ -141,7 +129,7 @@ server01.log  server02.log  server03.log  server.log
     
    - - + + \ No newline at end of file diff --git a/c/cu.html b/c/cu.html index 902c1fa611..b204d3fb12 100644 --- a/c/cu.html +++ b/c/cu.html @@ -10,7 +10,7 @@ cu 命令,Linux cu 命令详解:用于连接另一个系统主机 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    cu

    +
    +

    cu

    用于连接另一个系统主机

    -

    补充说明

    +

    补充说明

    cu命令 用于连接另一个系统主机。cu(call up)指令可连接另一台主机,并采用类似拨号终端机的接口工作,也可执行简易的文件传输作业。

    -

    语法

    +

    语法

    cu [dehnotv][-a<通信端口>][-c<电话号码>][-E<脱离字符>][-I<设置文件>][-l<外围设备代号>]
     [-s<连线速率>][-x<排错模式>][-z<系统主机>][--help][-nostop][--parity=none][<系统主机>/<电话号码>]
     
    -

    选项

    +

    选项

    -a<通信端口>或-p<通信端口>或--port<通信端口> 使用指定的通信端口进行连线。
     -c<电话号码>或--phone<电话号码> 拨打该电话号码。
     -d 进入排错模式。
    @@ -87,9 +79,7 @@
     --nostop 关闭Xon/Xoff软件流量控制。
     --parity=none 不使用同位检查。
     
    -

    实例

    +

    实例

    与远程主机连接

    cu -c 0102377765
     cu -s 38400 9=12015551234
    @@ -119,7 +109,7 @@ cu -s 38400 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/cupsdisable.html b/c/cupsdisable.html
    index b29486b0e2..faeacef488 100644
    --- a/c/cupsdisable.html
    +++ b/c/cupsdisable.html
    @@ -10,7 +10,7 @@
         
         cupsdisable 命令,Linux cupsdisable 命令详解:停止指定的打印机 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    cupsdisable

    +
    +

    cupsdisable

    停止指定的打印机

    -

    补充说明

    +

    补充说明

    cupsdisable命令 用于停止指定的打印机。

    -

    语法

    +

    语法

    cupsdisable(选项)(参数)
     
    -

    选项

    +

    选项

    -E:当连接到服务器时强制使用加密;
     -U:指定连接服务器时使用的用户名;
     -u:指定打印任务所属的用户;
    @@ -74,9 +66,7 @@
     -h:指定连接的服务器名和端口号;
     -r:停止打印机的原因。
     
    -

    参数

    +

    参数

    目标:指定目标打印机。

    @@ -103,7 +93,7 @@
    - - + + \ No newline at end of file diff --git a/c/cupsenable.html b/c/cupsenable.html index f650aee6f5..1c2531cb82 100644 --- a/c/cupsenable.html +++ b/c/cupsenable.html @@ -10,7 +10,7 @@ cupsenable 命令,Linux cupsenable 命令详解:启动指定的打印机 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    cupsenable

    +
    +

    cupsenable

    启动指定的打印机

    -

    补充说明

    +

    补充说明

    cupsenable命令 用于启动指定的打印机。

    -

    语法

    +

    语法

    cupsenable(选项)(参数)
     
    -

    选项

    +

    选项

    -E:当连接到服务器时强制使用加密;
     -U:指定连接服务器时使用的用户名;
     -u:指定打印任务所属的用户;
     -h:指定连接的服务器名和端口号;
     
    -

    参数

    +

    参数

    目标:指定目标打印机。

    @@ -101,7 +91,7 @@
    - - + + \ No newline at end of file diff --git a/c/curl.html b/c/curl.html index 397aba69d0..9fc8f9e78d 100644 --- a/c/curl.html +++ b/c/curl.html @@ -10,7 +10,7 @@ curl 命令,Linux curl 命令详解:利用URL规则在命令行下工作的文件传输工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    curl

    +
    +

    curl

    利用URL规则在命令行下工作的文件传输工具

    -

    补充说明

    +

    补充说明

    curl命令 是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

    -

    语法

    +

    语法

    curl(选项)(参数)
     
    -

    选项

    +

    选项

    @@ -547,9 +539,7 @@
    -

    实例

    +

    实例

    文件下载

    curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。如果系统没有curl可以使用yum install curl安装,也可以下载安装。curl是将下载文件输出到stdout,将进度信息输出到stderr,不显示进度信息使用--silent选项。

    curl URL --silent
    @@ -753,9 +743,7 @@ Start-transfer Time:             0.467691s
     
    -

    要求返回是压缩的状态

    +

    要求返回是压缩的状态

    curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
       % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                      Dload  Upload   Total   Spent    Left  Speed
    @@ -803,7 +791,7 @@ Installing Yarn!
     
    - - + + \ No newline at end of file diff --git a/c/cut.html b/c/cut.html index d24f4c7ec9..bcb924a3c1 100644 --- a/c/cut.html +++ b/c/cut.html @@ -10,7 +10,7 @@ cut 命令,Linux cut 命令详解:连接文件并打印到标准输出设备上 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    cut

    +
    +

    cut

    连接文件并打印到标准输出设备上

    -

    补充说明

    +

    补充说明

    cut 命令 用来显示行中的指定部分,删除文件中指定字段。cut 经常用来显示文件的内容,类似于 type 命令。

    说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数 file 所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件 fl 和 f2 的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件 f3 中。

    当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用 more 等命令分屏显示。为了控制滚屏,可以按 Ctrl+S 键,停止滚屏;按 Ctrl+Q 键可以恢复滚屏。按 Ctrl+C(中断)键可以终止该命令的执行,并且返回 Shell 提示符状态。

    -

    语法

    +

    语法

    cut(选项)(参数)
     
    -

    选项

    +

    选项

    -b:仅显示行中指定直接范围的内容;
     -c:仅显示行中指定范围的字符;
     -d:指定字段的分隔符,默认的字段分隔符为“TAB”;
    @@ -79,13 +71,9 @@
     --help:显示指令的帮助信息;
     --version:显示指令的版本信息。
     
    -

    参数

    +

    参数

    文件:指定要进行内容过滤的文件。

    -

    实例

    +

    实例

    例如有一个学生报表信息,包含 No、Name、Mark、Percent:

    [root@localhost text]# cat test.txt
     No Name Mark Percent
    @@ -129,9 +117,7 @@ jack
     alex
     
     
    -

    指定字段的字符或者字节范围

    +

    指定字段的字符或者字节范围

    cut 命令可以将一串字符作为列来显示,字符字段的记法:

    • N- :从第 N 个字节、字符、字段到结尾;
    • @@ -204,7 +190,7 @@ efghijklmnopqrstuvwxyz
    - - + + \ No newline at end of file diff --git a/c/date.html b/c/date.html index 3351a119e8..50d8210903 100644 --- a/c/date.html +++ b/c/date.html @@ -10,7 +10,7 @@ date 命令,Linux date 命令详解:显示或设置系统时间与日期 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
    -

    date

    +
    +

    date

    显示或设置系统时间与日期

    -

    概要

    +

    概要

    date [OPTION]... [+FORMAT]
     date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
     
    -

    主要用途

    +

    主要用途

    • 转换时间到选定的格式,默认为当前。
    • 设置系统时间。
    -

    参数

    +

    参数

    format:输出的时间格式。

    format可用的转义序列如下:
     
    @@ -133,9 +125,7 @@ _      (下划线选项
    +  

    选项

    长选项与短选项等价
     
     -d, --date=STRING          解析字符串并按照指定格式输出,字符串不能是'now'。
    @@ -152,13 +142,9 @@ _      (下划线返回值
    +  

    返回值

    返回状态为成功除非给出了非法选项或非法参数。

    -

    例子

    +

    例子

    # 格式化输出:
     date +"%Y-%m-%d"
     2009-12-07
    @@ -227,9 +213,7 @@ nmap wangchujiang.com &> /dev/null
     # 注意如果换成单引号就不能替换变量了。
     date +"${suffix} %Y/%m/%d"
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 dateinfo coreutils 'date invocation'
    @@ -258,7 +242,7 @@ nmap wangchujiang.com &> /dev/null
    - - + + \ No newline at end of file diff --git a/c/dd.html b/c/dd.html index ad5e14d200..69e710da12 100644 --- a/c/dd.html +++ b/c/dd.html @@ -10,7 +10,7 @@ dd 命令,Linux dd 命令详解:复制文件并对原文件的内容进行转换和格式化处理 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    dd

    +
    +

    dd

    复制文件并对原文件的内容进行转换和格式化处理

    -

    补充说明

    +

    补充说明

    dd命令 用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。用的比较多的还是用dd来备份裸设备。但是不推荐,如果需要备份oracle裸设备,可以使用rman备份,或使用第三方软件备份,使用dd的话,管理起来不太方便。

    建议在有需要的时候使用dd 对物理磁盘操作,如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。另外,使用dd对磁盘操作时,最好使用块设备文件。

    -

    语法

    +

    语法

    dd(选项)
     
    -

    选项

    +

    选项

    bs=<字节数>:将ibs(输入)与obs(输出)设成指定的字节数;
     cbs=<字节数>:转换时,每次只转换指定的字节数;
     conv=<关键字>:指定文件转换的方式;
    @@ -80,9 +72,7 @@
     --help:帮助;
     --version:显示版本信息。
     
    -

    实例

    +

    实例

    [root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
     1+0 records in
     1+0 records out
    @@ -170,7 +160,7 @@ wFRAnlkXeBXmWs1MyGEs
     
    - - + + \ No newline at end of file diff --git a/c/declare.html b/c/declare.html index d10af68fef..d03c40b95e 100644 --- a/c/declare.html +++ b/c/declare.html @@ -10,7 +10,7 @@ declare 命令,Linux declare 命令详解:声明变量,设置或显示变量的值和属性。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    declare

    +
    +

    declare

    声明变量,设置或显示变量的值和属性。

    -

    语法

    +

    语法

    declare [-aAfFgilnrtux] [-p] [name[=value] ...]
     
    -

    主要用途

    +

    主要用途

    • 显示包含指定属性的全部变量和值
    • 显示包含指定属性的一到多个变量和值
    • @@ -78,9 +72,7 @@
    • 声明变量(可选:赋值、属性)
    • 增加、删除变量的属性(可选:赋值)
    -

    选项

    +

    选项

    -f 将操作或显示限制为函数名及函数定义。
     -F 只显示函数名(调试时附加行号和源文件)。
     -g 在shell函数中使用时创建全局变量;其他情况下忽略。
    @@ -103,19 +95,13 @@
     -x 增加导出属性。
     +x 删除导出属性。
     
    -

    参数

    +

    参数

    name(可选):变量名或函数名。
     value(可选):变量的值。
     
    -

    返回值

    +

    返回值

    declare 返回true除非你提供了非法选项或赋值错误。具体导致异常的情况请查看讨论章节的关于异常情况

    -

    例子

    +

    例子

    # 声明变量,当然也欢迎您在这个网站(感谢本项目发起人 @jaywcjlove)查询linux命令。
     declare reference_website='https://wangchujiang.com/linux-command/'
     
    @@ -207,9 +193,7 @@ test2
     declare -F func_a func_b
     # 最好不要让函数名和变量名相同。
     
    -

    讨论

    +

    讨论

    1. 全局和局部变量

      @@ -251,9 +235,7 @@ test2

    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    2. 导出属性的相关介绍请查看'export'命令。
    3. @@ -285,7 +267,7 @@ test2
    - - + + \ No newline at end of file diff --git a/c/depmod.html b/c/depmod.html index 7dd456c357..c7c8359560 100644 --- a/c/depmod.html +++ b/c/depmod.html @@ -10,7 +10,7 @@ depmod 命令,Linux depmod 命令详解:分析可载入模块的相依性 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    depmod

    +
    +

    depmod

    分析可载入模块的相依性

    -

    补充说明

    +

    补充说明

    depmod命令 可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用。

    -

    语法

    +

    语法

    depmod(选项)
     
    -

    选项

    +

    选项

    -a或--all:分析所有可用的模块;
     -d或debug:执行排错模式;
     -e:输出无法参照的符号;
    @@ -77,9 +69,7 @@
     -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
     
      @@ -129,7 +119,7 @@ depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/
    - - + + \ No newline at end of file diff --git a/c/df.html b/c/df.html index 6c4dc9eb54..349747a5be 100644 --- a/c/df.html +++ b/c/df.html @@ -10,7 +10,7 @@ df 命令,Linux df 命令详解:显示磁盘的相关信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    df

    +
    +

    df

    显示磁盘的相关信息

    -

    补充说明

    +

    补充说明

    df命令 用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    -

    语法

    +

    语法

    df(选项)(参数)
     
    -

    选项

    +

    选项

    -a或--all:包含全部的文件系统;
     --block-size=<区块大小>:以指定的区块大小来显示区块数目;
     -h或--human-readable:以可读性较高的方式来显示信息;
    @@ -84,18 +76,12 @@
     --help:显示帮助;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    文件:指定文件系统上的文件。

    -

    大小格式

    +

    大小格式

    显示值以 --block-sizeDF_BLOCK_SIZEBLOCK_SIZEBLOCKSIZE 环境变量中的第一个可用 SIZE 为单位。 否则,单位默认为 1024 个字节(如果设置 POSIXLY_CORRECT,则为512)。

    SIZE是一个整数和可选单位(例如:10M是10 * 1024 * 1024)。 单位是K,M,G,T,P,E,Z,Y(1024的幂)或KB,MB,...(1000的幂)。

    -

    实例

    +

    实例

    查看系统磁盘设备,默认是KB为单位:

    [root@LinServ-1 ~]# df
     文件系统               1K-块        已用     可用 已用% 挂载点
    @@ -154,7 +140,7 @@ none                         0         
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/dhclient.html b/c/dhclient.html
    index 6ce788714a..49f5baee34 100644
    --- a/c/dhclient.html
    +++ b/c/dhclient.html
    @@ -10,7 +10,7 @@
         
         dhclient 命令,Linux dhclient 命令详解:动态获取或释放IP地址 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,35 +50,23 @@
     
     
     
    -
    -

    dhclient

    +
    +

    dhclient

    动态获取或释放IP地址

    -

    补充说明

    +

    补充说明

    dhclient命令 使用动态主机配置协议动态的配置网络接口的网络参数。

    -

    语法

    +

    语法

    dhclient(选项)(参数)
     
    -

    选项

    +

    选项

    0:指定dhcp客户端监听的端口号;
     -d:总是以前台方式运行程序;
     -q:安静模式,不打印任何错误的提示信息;
     -r:释放ip地址。
     
    -

    参数

    +

    参数

    网络接口:操作的网络接口。

    -

    实例

    +

    实例

    dhclient -r     #释放IP
     dhclient        #获取IP
     
    @@ -107,7 +95,7 @@ dhclient #获取IP
    - - + + \ No newline at end of file diff --git a/c/dhcpd.html b/c/dhcpd.html index c6f87f7c14..42aaa1c808 100644 --- a/c/dhcpd.html +++ b/c/dhcpd.html @@ -10,7 +10,7 @@ dhcpd 命令,Linux dhcpd 命令详解:运行DHCP服务器 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    dhcpd

    +
    +

    dhcpd

    运行DHCP服务器

    -

    语法

    +

    语法

    dhcpd [选项] [网络接口]
     
    -

    选项

    +

    选项

    -p <端口> 指定dhcpd监听的端口
     -f 作为前台进程运行dhcpd
     -d 启用调试模式
    @@ -77,9 +71,7 @@
     -pf <PID文件> 指定PID文件
     -tf <跟踪输出文件> 指定文件记录DHCP服务器的整个启动状态
     
    -

    例子

    +

    例子

    对DHCP服务器进行排错。

    [root@localhost ~]# dhcpd
     InternetSystems Consortium DHCP Server 4.1.1-P1
    @@ -127,7 +119,7 @@ exiting.
     
    - - + + \ No newline at end of file diff --git a/c/dhcrelay.html b/c/dhcrelay.html index badcb4faf7..6e6d7bd36a 100644 --- a/c/dhcrelay.html +++ b/c/dhcrelay.html @@ -10,7 +10,7 @@ dhcrelay 命令,Linux dhcrelay 命令详解:使用dhcrelay命令可以提供中继DHCP和BOOTP请求 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dhcrelay

    +
    +

    dhcrelay

    使用dhcrelay命令可以提供中继DHCP和BOOTP请求

    -

    补充说明

    +

    补充说明

    dhcrelay命令 使用dhcrelay命令可以提供中继DHCP和BOOTP请求,从一个没有DHCP服务器的子网直接连接到其它子网内的一个或多个DHCP服务器。该命令在DHCP中继服务器上使用,同时支持DHCPv4/BOOTP和DHCPv6协议。

    -

    语法

    +

    语法

    dhcrelay [选项] [DHCP服务器]
     
    -

    选项

    +

    选项

    -c <跳数> 当转发数据包时,dhcrelay丢弃已经达到一个最大跳数的数据包。默认值是10,最大值是255
     -4 运行dhcrelay命令作为DHCPv4/BOOTP中继代理。这是默认操作模式
     -6 运行dhcrelay命令作为DHCPv6中继代理
    @@ -75,9 +67,7 @@
     -A <长度> 指定发送到DHCP服务器的最大数据包大小
     -d 强制dhcrelay命令作为前台进程运行
     
    -

    例子

    +

    例子

    指定DHCP服务器的位置。

    [root@localhost ~]# dhcrelay 192.168.0.2
     Internet Systems Consortium DHCP Relay Agent4.1.1-P1
    @@ -115,7 +105,7 @@ Sending on  Socket/fallback
     
    - - + + \ No newline at end of file diff --git a/c/diff.html b/c/diff.html index d9d0a48bb4..f19797456c 100644 --- a/c/diff.html +++ b/c/diff.html @@ -10,7 +10,7 @@ diff 命令,Linux diff 命令详解:比较给定的两个文件的不同 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    diff

    +
    +

    diff

    比较给定的两个文件的不同

    -

    补充说明

    +

    补充说明

    diff命令 在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。

    -

    语法

    +

    语法

    diff(选项)(参数)
     
    -

    选项

    +

    选项

    -<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用;
     -a或——text:diff预设只会逐行比较文本文件;
     -b或--ignore-space-change:不检查空格字符的不同;
    @@ -102,16 +94,12 @@
     --left-column:在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容;
     --suppress-common-lines:在使用-y参数时,仅显示不同之处。
     
    -

    参数

    +

    参数

    • 文件1:指定要比较的第一个文件;
    • 文件2:指定要比较的第二个文件。
    -

    实例

    +

    实例

    将目录/usr/li下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令:

    diff /usr/li test.txt     #使用diff指令对文件进行比较
     
    @@ -147,7 +135,7 @@ n1,n2 c n3,n4
    - - + + \ No newline at end of file diff --git a/c/diff3.html b/c/diff3.html index ba547d0d98..06746d6c6d 100644 --- a/c/diff3.html +++ b/c/diff3.html @@ -10,7 +10,7 @@ diff3 命令,Linux diff3 命令详解:比较3个文件不同的地方 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    diff3

    +
    +

    diff3

    比较3个文件不同的地方

    -

    补充说明

    +

    补充说明

    diff3命令 用于比较3个文件,将3个文件的不同的地方显示到标准输出。

    -

    语法

    +

    语法

    diff3(选项)(参数)
     
    -

    选项

    +

    选项

    -a:把所有的文件都当做文本文件按照行为单位进行比较,即给定的文件不是文本文件;
     -A:合并第2个文件和第3个文件之间的不同到第1个文件中,有冲突内容用括号括起来;
     -B:与选项“-A”功能相同,但是不显示冲突的内容;
    @@ -75,9 +67,7 @@
     -i:为了和system V系统兼容,在“ed”脚本的最后生成“w”和“q”命令。此选项必须和选项“-AeExX3”连用,但是不能和“-m”连用;
     --initial-tab:在正常格式的行的文本前,输出一个TAB字符而非两个空白字符。此选项将导致在行中TAB字符的对齐方式看上去规范。
     
    -

    参数

    +

    参数

    • 文件1:指定要比较的第1个文件;
    • 文件2:指定要比较的第2个文件;
    • @@ -108,7 +98,7 @@
    - - + + \ No newline at end of file diff --git a/c/diffstat.html b/c/diffstat.html index 3cc06b8ffe..f46ae5608a 100644 --- a/c/diffstat.html +++ b/c/diffstat.html @@ -10,7 +10,7 @@ diffstat 命令,Linux diffstat 命令详解:显示diff命令输出信息的柱状图 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    diffstat

    +
    +

    diffstat

    显示diff命令输出信息的柱状图

    -

    补充说明

    +

    补充说明

    diffstat命令 用来显示diff命令输出信息的柱状图,用以显示diff命令比较两个文件的不同统计信息。用户也可以直接使用|将diff命令所输出的结果直接送给diffstat命令进行统计结果的显示。使用该命令时,若所比较的文件或者子目录不在当前目录下,则应该使用其完整路径。

    -

    语法

    +

    语法

    diffstat(选项)(参数)
     
    -

    选项

    +

    选项

    -n<文件名长度>:指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
     -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包括了文件的路径;
     -w:指定要输出时栏位的宽度;
     -v:显示版本信息。
     
    -

    参数

    +

    参数

    文件:指定保存有diff命令的输出信息文件。

    -

    实例

    +

    实例

    将目录"test1"和"test2"下的同名文件"testf.txt"使用diff命令进行比较。然后使用diffstat命令对结果进行统计显示,输入如下命令:

    diff test1 test2 | diffstat    #进行比较结果的统计显示
     
    @@ -130,7 +118,7 @@ mno
    - - + + \ No newline at end of file diff --git a/c/dig.html b/c/dig.html index ae853c05b4..f2ac5e7a8d 100644 --- a/c/dig.html +++ b/c/dig.html @@ -10,7 +10,7 @@ dig 命令,Linux dig 命令详解:域名查询工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dig

    +
    +

    dig

    域名查询工具

    -

    补充说明

    +

    补充说明

    dig命令 是常用的域名查询工具,可以用来测试域名系统工作是否正常。

    -

    语法

    +

    语法

    dig(选项)(参数)
     
    -

    选项

    +

    选项

    @<服务器地址>:指定进行域名解析的域名服务器;
     -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
     -f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
    @@ -77,18 +69,14 @@
     -6:使用IPv6;
     -h:显示指令帮助信息。
     
    -

    参数

    +

    参数

    • 主机:指定要查询域名主机;
    • 查询类型:指定DNS查询的类型;
    • 查询类:指定查询DNS的class;
    • 查询选项:指定查询选项。
    -

    实例

    +

    实例

    [root@localhost ~]# dig www.jsdig.com
     
     ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.1 <<>> www.jsdig.com
    @@ -138,7 +126,7 @@ jsdig.com.            8       IN      NS
     
    - - + + \ No newline at end of file diff --git a/c/dircolors.html b/c/dircolors.html index 066b983434..cfaea12bf1 100644 --- a/c/dircolors.html +++ b/c/dircolors.html @@ -10,7 +10,7 @@ dircolors 命令,Linux dircolors 命令详解:置ls命令在显示目录或文件时所用的色彩 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    dircolors

    +
    +

    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.
    @@ -215,7 +203,7 @@ STICKY 37;
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/dirname.html b/c/dirname.html
    index ab494d089e..23b89b26ed 100644
    --- a/c/dirname.html
    +++ b/c/dirname.html
    @@ -10,7 +10,7 @@
         
         dirname 命令,Linux dirname 命令详解:去除文件名中的非目录部分 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,29 +50,19 @@
     
     
     
    -
    -

    dirname

    +
    +

    dirname

    去除文件名中的非目录部分

    -

    补充说明

    +

    补充说明

    dirname命令 去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname 命令使用倒数第二个/,并忽略其后的所有字符。dirname 和 basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。

    -

    语法

    +

    语法

    dirname(选项)(参数)
     
    -

    选项

    +

    选项

    --help:显示帮助;
     --version:显示版本号。
     
    -

    实例

    +

    实例

    dirname //
     结果为 /
     
    @@ -110,7 +100,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/dirs.html b/c/dirs.html index 1e7a4fbd8f..c2ba918b4c 100644 --- a/c/dirs.html +++ b/c/dirs.html @@ -10,7 +10,7 @@ dirs 命令,Linux dirs 命令详解:显示目录堆栈。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    dirs

    +
    +

    dirs

    显示目录堆栈。

    -

    概要

    +

    概要

    dirs [-clpv] [+N] [-N]
     
    -

    主要用途

    +

    主要用途

    • 显示目录堆栈。

      @@ -71,26 +65,18 @@

      清空目录堆栈。

    -

    选项

    +

    选项

    -c    清空目录堆栈。
     -l    堆栈内以~开头的目录在显示时展开。
     -p    将目录堆栈内的每一个目录按行显示。
     -v    将目录堆栈内的每一个目录按行显示并在每行前加上堆栈内的位置编号。
     
    -

    参数

    +

    参数

    +N(可选):不带参数执行dirs命令显示的列表中,左起的第N个目录将被显示。(从0开始计数)

    -N(可选):不带参数执行dirs命令显示的列表中,右起的第N个目录将被显示。(从0开始计数)

    -

    返回值

    +

    返回值

    返回成功除非提供了非法选项或执行出现错误。

    -

    例子

    +

    例子

    # 添加目录到堆栈。
     [user2@pc ~]$ dirs
     ~
    @@ -122,9 +108,7 @@
     [user2@pc ~]$ dirs
     ~
     
    -

    注意

    +

    注意

    1. bash的目录堆栈命令包括dirs popd pushd
    2. 当前目录始终是目录堆栈的顶部。
    3. @@ -155,7 +139,7 @@
    - - + + \ No newline at end of file diff --git a/c/disown.html b/c/disown.html index a742d651b9..0079653172 100644 --- a/c/disown.html +++ b/c/disown.html @@ -10,7 +10,7 @@ disown 命令,Linux disown 命令详解:从当前的shell中移除作业。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    disown

    +
    +

    disown

    从当前的shell中移除作业。

    -

    概要

    +

    概要

    disown [-h] [-ar] [jobspec ... | pid ...]
     
    -

    主要用途

    +

    主要用途

    • 从当前shell的作业列表中移除全部作业。

      @@ -77,25 +71,17 @@

      标记作业,使得它们在当前shell退出后也不会结束。

    -

    选项

    +

    选项

    -h    标记每个作业标识符,这些作业将不会在shell接收到sighup信号时接收到sighup信号。
     -a    移除所有的作业。
     -r    移除运行的作业。
     
    -

    参数

    +

    参数

    jobspec(可选):要移除的作业标识符,可以是一到多个。

    pid(可选):要移除的作业对应的进程ID,可以是一到多个。

    -

    返回值

    +

    返回值

    返回成功除非未开启作业控制或执行出现错误。

    -

    例子

    +

    例子

    # 演示。
     [user2@pc] ssh 192.168.1.4
     user2@192.168.1.4's password:
    @@ -163,17 +149,13 @@ bash: warning: deleting stopped job 1 with pro
     [user2@pc] pgrep -a -u user2 -f 'sleep 90'
     109080 sleep 90
     
    -

    注意

    +

    注意

    1. bash的作业控制命令包括bg fg kill wait disown suspend
    2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
    3. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    -

    参考链接

    +

    参考链接

    @@ -202,7 +184,7 @@ bash: warning: deleting stopped job 1 with pro
    - - + + \ No newline at end of file diff --git a/c/dmesg.html b/c/dmesg.html index d6fbe629be..214db0180c 100644 --- a/c/dmesg.html +++ b/c/dmesg.html @@ -10,7 +10,7 @@ dmesg 命令,Linux dmesg 命令详解:显示Linux系统启动信息 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    dmesg

    +
    +

    dmesg

    显示Linux系统启动信息

    -

    补充说明

    +

    补充说明

    dmesg命令 被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里。

    -

    语法

    +

    语法

    dmesg(选项)
     
    -

    选项

    +

    选项

    -c:显示信息后,清除ring buffer中的内容;
     -s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小;
     -n:设置记录信息的层级。
     
    -

    实例

    +

    实例

    [root@localhost ~]# dmesg | head
     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:
    @@ -121,7 +111,7 @@ BIOS-provided physical RAM map:
     
    - - + + \ No newline at end of file diff --git a/c/dmidecode.html b/c/dmidecode.html index 0f68c315ef..6d0d25d9ce 100644 --- a/c/dmidecode.html +++ b/c/dmidecode.html @@ -10,7 +10,7 @@ dmidecode 命令,Linux dmidecode 命令详解:在Linux系统下获取有关硬件方面的信息 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    dmidecode

    +
    +

    dmidecode

    在Linux系统下获取有关硬件方面的信息

    -

    补充说明

    +

    补充说明

    dmidecode命令 可以让你在Linux系统下获取有关硬件方面的信息。dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示。由于DMI信息可以人为修改,因此里面的信息不一定是系统准确的信息。dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。

    DMI(Desktop Management Interface,DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。SMBIOS(System Management BIOS)是主板或系统制造者以标准格式显示产品管理信息所需遵循的统一规范。SMBIOS和DMI是由行业指导机构Desktop Management Task Force(DMTF)起草的开放性的技术标准,其中DMI设计适用于任何的平台和操作系统。

    DMI充当了管理工具和系统层之间接口的角色。它建立了标准的可管理系统更加方便了电脑厂商和用户对系统的了解。DMI的主要组成部分是Management Information Format(MIF)数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。

    -

    语法

    +

    语法

    dmidecode [选项]
     
    -

    选项

    +

    选项

    -d:(default:/dev/mem)从设备文件读取信息,输出内容与不加参数标准输出相同。
     -h:显示帮助信息。
     -s:只显示指定DMI字符串的信息。(string)
    @@ -161,9 +153,7 @@
         
  • Additional Information
  • Onboard Device
  • -

    实例

    +

    实例

    dmidecode -t 1  # 查看服务器信息
     dmidecode | grep 'Product Name' # 查看服务器型号 
     dmidecode |grep 'Serial Number' # 查看主板的序列号 
    @@ -352,7 +342,7 @@ dmidecode|grep<
     
    - - + + \ No newline at end of file diff --git a/c/dnf.html b/c/dnf.html index 8d5344941a..d9b25987ee 100644 --- a/c/dnf.html +++ b/c/dnf.html @@ -10,7 +10,7 @@ dnf 命令,Linux dnf 命令详解:新一代的RPM软件包管理器 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
    -

    dnf

    +
    +

    dnf

    新一代的RPM软件包管理器

    -

    补充说明

    +

    补充说明

    DNF 是新一代的rpm软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。

    DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。你可以在这里获得关于 DNF 的更多知识:《 DNF 代替 YUM ,你所不知道的缘由》

    DNF 的最新稳定发行版版本号是 1.0,发行日期是2015年5月11日。 这一版本的额 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Python 编写,发行许可为GPL v2.

    -

    安装 DNF 包管理器

    +

    安装 DNF 包管理器

    DNF 并未默认安装在 RHEL 或 CentOS 7系统中,但是 Fedora 22 已经默认使用 DNF .

    1、为了安装 DNF ,您必须先安装并启用 epel-release 依赖。

    在系统中执行以下命令:

    @@ -192,9 +186,7 @@ No match for available package: acpid-2.0.19- Error: Nothing to do.

    原作者注:在执行这条命令的时候, DNF 并没有按照我期望的那样降级指定的软件(“acpid”)。该问题已经上报。

    -

    总结

    +

    总结

    DNF 包管理器作为 YUM 包管理器的升级替代品,它能自动完成更多的操作。但在我看来,正因如此,所以 DNF 包管理器不会太受那些经验老道的 Linux 系统管理者的欢迎。举例如下:

    1. 在 DNF 中没有 –skip-broken 命令,并且没有替代命令供选择。
    2. @@ -227,7 +219,7 @@ Error: Nothing to do.
    - - + + \ No newline at end of file diff --git a/c/dnsdomainname.html b/c/dnsdomainname.html index 605fe943fb..dc337edde3 100644 --- a/c/dnsdomainname.html +++ b/c/dnsdomainname.html @@ -10,7 +10,7 @@ dnsdomainname 命令,Linux dnsdomainname 命令详解:定义DNS系统中FQDN名称的域名 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    dnsdomainname

    +
    +

    dnsdomainname

    定义DNS系统中FQDN名称的域名

    -

    补充说明

    +

    补充说明

    dnsdomainname命令 用于定义DNS系统中FQDN名称中的域名。

    -

    语法

    +

    语法

    dnsdomainname(选项)
     
    -

    选项

    +

    选项

    -v:详细信息模式,输出指令执行的详细信息。
     
    -

    实例

    +

    实例

    [root@AY1307311912260196fcZ ~]# dnsdomainname -v
     gethostname()=`AY1307311912260196fcZ'
     Resolving `AY1307311912260196fcZ' ...
    @@ -103,7 +93,7 @@ Result: h_addr_list
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/domainname.html b/c/domainname.html
    index 737032e458..43732cc100 100644
    --- a/c/domainname.html
    +++ b/c/domainname.html
    @@ -10,7 +10,7 @@
         
         domainname 命令,Linux domainname 命令详解:显示和设置系统的NIS域名 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,33 +50,21 @@
     
     
     
    -
    -

    domainname

    +
    +

    domainname

    显示和设置系统的NIS域名

    -

    补充说明

    +

    补充说明

    domainname命令 用于显示和设置系统的NIS域名。

    -

    语法

    +

    语法

    domainname(选项)(参数)
     
    -

    选项

    +

    选项

    -v:详细信息模式;
     -F:指定读取域名信息的文件。
     
    -

    参数

    +

    参数

    NIS域名:指定要设置的NIS域名。

    -

    实例

    +

    实例

    [root@AY1307311912260196fcZ ~]# domainname -v
     getdomainname()=`(none)'
     (none)
    @@ -112,7 +100,7 @@ www.jsdig.com
     
    - - + + \ No newline at end of file diff --git a/c/dos2unix.html b/c/dos2unix.html index 99f207f139..7b701943b4 100644 --- a/c/dos2unix.html +++ b/c/dos2unix.html @@ -10,7 +10,7 @@ dos2unix 命令,Linux dos2unix 命令详解:将DOS格式文本文件转换成Unix格式 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dos2unix

    +
    +

    dos2unix

    将DOS格式文本文件转换成Unix格式

    -

    补充说明

    +

    补充说明

    dos2unix命令 用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。

    -

    语法

    +

    语法

    dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
     
    -

    选项

    +

    选项

    -k:保持输出文件的日期不变
     -q:安静模式,不提示任何警告信息。
     -V:查看版本
    @@ -74,13 +66,9 @@
     -o:写入到源文件
     -n:写入到新文件
     
    -

    参数

    +

    参数

    参数:需要转换到文件。

    -

    实例

    +

    实例

    最简单的用法就是dos2unix直接跟上文件名:

    dos2unix file
     
    @@ -125,7 +113,7 @@ dos2unix -k -n oldfile newfile
    - - + + \ No newline at end of file diff --git a/c/dpkg-deb.html b/c/dpkg-deb.html index bdb765fb50..351ac55df6 100644 --- a/c/dpkg-deb.html +++ b/c/dpkg-deb.html @@ -10,7 +10,7 @@ dpkg-deb 命令,Linux dpkg-deb 命令详解:Debian Linux下的软件包管理工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dpkg-deb

    +
    +

    dpkg-deb

    Debian Linux下的软件包管理工具

    -

    补充说明

    +

    补充说明

    dpkg-deb命令 是Debian Linux下的软件包管理工具,它可以对软件包执行打包和解包操作以及提供软件包信息。

    -

    语法

    +

    语法

    dpkg-deb(选项)(参数)
     
    -

    选项

    +

    选项

    -c:显示软件包中的文件列表;
     -e:将主控信息解压;
     -f:把字段内容打印到标准输出;
    @@ -77,13 +69,9 @@
     -R:提取控制信息和存档的清单文件;
     -b:创建debian软件包。
     
    -

    参数

    +

    参数

    文件:指定要操作的“.deb”软件包的全名或软件名。

    -

    实例

    +

    实例

    解压程序文件:

    dpkg-deb -x drcom-pum_1.0-0ubuntu1~ppa1~jaunty1_i386.deb drcom
     
    @@ -121,7 +109,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-divert.html b/c/dpkg-divert.html index ece32905d4..d775185181 100644 --- a/c/dpkg-divert.html +++ b/c/dpkg-divert.html @@ -10,7 +10,7 @@ dpkg-divert 命令,Linux dpkg-divert 命令详解:Debian Linux中创建并管理一个转向列表 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    dpkg-divert

    +
    +

    dpkg-divert

    Debian Linux中创建并管理一个转向列表

    -

    补充说明

    +

    补充说明

    dpkg-divert命令 是Debian Linux中创建并管理一个转向(diversion)列表,其使得安装文件的默认位置失效的工具。

    -

    语法

    +

    语法

    dpkg-divert(选项)(参数)
     
    -

    选项

    +

    选项

    --add:添加一个转移文件;
     --remove:删除一个转移文件;
     --list:列出匹配的转移;
     --truename:对应转移文件真实文件名;
     --quidet:安静模式。
     
    -

    参数

    +

    参数

    文件:指定转移文件名。

    -

    实例

    +

    实例

    指定软件包wibble安装时,写入/usr/bin/example.foo,而不是/usr/bin/example

    dpkg-divert --package wibble --divert /usr/bin/example.foo --rename /usr/bin/example
     
    @@ -117,7 +105,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-preconfigure.html b/c/dpkg-preconfigure.html index 37d64d3ef9..03c1e15f26 100644 --- a/c/dpkg-preconfigure.html +++ b/c/dpkg-preconfigure.html @@ -10,7 +10,7 @@ dpkg-preconfigure 命令,Linux dpkg-preconfigure 命令详解:Debian Linux中软件包安装之前询问问题 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
    -

    dpkg-preconfigure

    +
    +

    dpkg-preconfigure

    Debian Linux中软件包安装之前询问问题

    -

    补充说明

    +

    补充说明

    dpkg-preconfigure命令 用于在Debian Linux中软件包安装之前询问问题。

    -

    语法

    +

    语法

    dpkg-preconfigure(选项)(参数)
     
    -

    选项

    +

    选项

    -f:选择使用的前端;
     -p:感兴趣的最低的优先级问题;
     --apt:在apt模式下运行。
     
    -

    参数

    +

    参数

    软件包:指定“.deb”软件包。

    -

    实例

    +

    实例

    导入debconf模板:

    dpkg-preconfigure /var/cache/apt/archives/mysql-server-5.5*.deb
     
    @@ -106,7 +94,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-query.html b/c/dpkg-query.html index 408e7a253a..efc9bc0608 100644 --- a/c/dpkg-query.html +++ b/c/dpkg-query.html @@ -10,7 +10,7 @@ dpkg-query 命令,Linux dpkg-query 命令详解:Debian Linux中软件包的查询工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dpkg-query

    +
    +

    dpkg-query

    Debian Linux中软件包的查询工具

    -

    补充说明

    +

    补充说明

    dpkg-query命令 是Debian Linux中软件包的查询工具,它从dpkg软件包数据库中查询并辨识软件包的信息。

    -

    语法

    +

    语法

    dpkg-query(选项)(参数)
     
    -

    选项

    +

    选项

    -l:列出符合匹配模式的软件包;
     -s:查询软件包的状态信息;
     -L:显示软件包所安装的文件列表;
    @@ -75,13 +67,9 @@
     -c:显示软件包的控制文件路径;
     -p:显示软件包的细节。
     
    -

    参数

    +

    参数

    软件包名称:指定需要查询的软件包。

    -

    实例

    +

    实例

    查找文件file1在哪个包里安装:

    dpkg-query -S file1
     
    @@ -125,7 +113,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-reconfigure.html b/c/dpkg-reconfigure.html index 402dc1d2ce..34bf77c93d 100644 --- a/c/dpkg-reconfigure.html +++ b/c/dpkg-reconfigure.html @@ -10,7 +10,7 @@ dpkg-reconfigure 命令,Linux dpkg-reconfigure 命令详解:Debian Linux中重新配制一个已经安装的软件包 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    dpkg-reconfigure

    +
    +

    dpkg-reconfigure

    Debian Linux中重新配制一个已经安装的软件包

    -

    补充说明

    +

    补充说明

    dpkg-reconfigure命令 是Debian Linux中重新配置已经安装过的软件包,可以将一个或者多个已安装的软件包传递给此指令,它将询问软件初次安装后的配置问题。

    当用户需要再次对软件包配置的时候,可以使用dpkg-reconfigure命令来对指定的软件包进行配置。

    -

    语法

    +

    语法

    dpkg-reconfigure(选项)(参数)
     
    -

    选项

    +

    选项

    -a:重新配置所有的软件包;
     -u或--unseen-only:仅显示未提过的问题;
     --default-priority:使用默认优先级,而非“低”级;
    @@ -77,13 +69,9 @@
     -p或--priority:指定要显示的问题的最优先级;
     --terse:开启简要模式。
     
    -

    参数

    +

    参数

    软件包名:需要重新配置的已安装的软件包。

    -

    实例

    +

    实例

    用于配置语言:

    sudo dpkg-reconfigure locales
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-split.html b/c/dpkg-split.html index da95c82532..b76de0f1d2 100644 --- a/c/dpkg-split.html +++ b/c/dpkg-split.html @@ -10,7 +10,7 @@ dpkg-split 命令,Linux dpkg-split 命令详解:Debian Linux中将大软件包分割成小包 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dpkg-split

    +
    +

    dpkg-split

    Debian Linux中将大软件包分割成小包

    -

    补充说明

    +

    补充说明

    dpkg-split命令 用来将Debian Linux中的大软件包分割成小软件包,它还能够将已分割的文件进行合并。

    -

    语法

    +

    语法

    dpkg-split(选项)(参数)
     
    -

    选项

    +

    选项

    -S:设置分割后的每个小文件最大尺寸(以字节为单位);
     -s:分割软件包;
     -j<分块文件><分块文件>:把各个分块合并到一起;
    @@ -74,13 +66,9 @@
     -l:列出不匹配的部分;
     -dscard<文件名>:忽略不匹配的部分。
     
    -

    参数

    +

    参数

    软件包:指定需要分割的“.deb”软件包。

    -

    实例

    +

    实例

    把foo.deb分割出N个大小为460KB的文件:

    dpkg-split -s foo.deb
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-statoverride.html b/c/dpkg-statoverride.html index cf0754e16e..30abe71f84 100644 --- a/c/dpkg-statoverride.html +++ b/c/dpkg-statoverride.html @@ -10,7 +10,7 @@ dpkg-statoverride 命令,Linux dpkg-statoverride 命令详解:Debian Linux中覆盖文件的所有权和模式 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    dpkg-statoverride

    +
    +

    dpkg-statoverride

    Debian Linux中覆盖文件的所有权和模式

    -

    补充说明

    +

    补充说明

    dpkg-statoverride命令 用于Debian Linux中覆盖文件的所有权和模式,让dpkg于包安装时使得文件所有权与模式失效。

    -

    语法

    +

    语法

    dpkg-statoverride(选项)
     
    -

    选项

    +

    选项

    -add:为文件添加一个改写;
     --remove:为文件删除一个改写;
     --list:显示所有改写列表;
     --update:如果文件存在,则立刻执行改写操作。
     
    -

    实例

    +

    实例

    修改文件夹的权限属性:

    sudo dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
     
    @@ -109,7 +99,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg-trigger.html b/c/dpkg-trigger.html index ccb4af8783..5dfadf0624 100644 --- a/c/dpkg-trigger.html +++ b/c/dpkg-trigger.html @@ -10,7 +10,7 @@ dpkg-trigger 命令,Linux dpkg-trigger 命令详解:Debian Linux下的软件包触发器 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
    -

    dpkg-trigger

    +
    +

    dpkg-trigger

    Debian Linux下的软件包触发器

    -

    补充说明

    +

    补充说明

    dpkg-trigger命令 是Debian Linux下的软件包触发器。

    -

    语法

    +

    语法

    dpkg-trigger(选项)(参数)
     
    -

    选项

    +

    选项

    --check-supported:检查运行的dpkg是否支持触发器,返回值为0,则支持触发器。
     --help:显示帮助信息;
     --admindir=<目录>:设置dpkg数据库所在的目录;
     --no-act:仅用于测试,不执行任何操作;
     --by-package=<软件包>:覆盖触发器等待者。
     
    -

    参数

    +

    参数

    触发器名:指定触发器名称。

    @@ -102,7 +92,7 @@
    - - + + \ No newline at end of file diff --git a/c/dpkg.html b/c/dpkg.html index 39550f01cc..2b851a8e8e 100644 --- a/c/dpkg.html +++ b/c/dpkg.html @@ -10,7 +10,7 @@ dpkg 命令,Linux dpkg 命令详解:Debian Linux系统上安装、创建和管理软件包 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dpkg

    +
    +

    dpkg

    Debian Linux系统上安装、创建和管理软件包

    -

    补充说明

    +

    补充说明

    dpkg命令 是Debian Linux系统用来安装、创建和管理软件包的实用工具。

    -

    语法

    +

    语法

    dpkg(选项)(参数)
     
    -

    选项

    +

    选项

    -i:安装软件包;
     -r:删除软件包;
     -P:删除软件包的同时删除其配置文件;
    @@ -76,13 +68,9 @@
     -c:显示软件包内文件列表;
     --confiugre:配置软件包。
     
    -

    参数

    +

    参数

    Deb软件包:指定要操作的.deb软件包。

    -

    实例

    +

    实例

    dpkg -i package.deb     # 安装包
     dpkg -r package         # 删除包
     dpkg -P package         # 删除包(包括配置文件)
    @@ -119,7 +107,7 @@ dpkg --configure package   # 配置包
     
    - - + + \ No newline at end of file diff --git a/c/dris.html b/c/dris.html index f7dde70ae4..78b21d8384 100644 --- a/c/dris.html +++ b/c/dris.html @@ -10,7 +10,7 @@ dris 命令,Linux dris 命令详解:显示和清空目录堆栈中的内容 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dris

    +
    +

    dris

    显示和清空目录堆栈中的内容

    -

    补充说明

    +

    补充说明

    dris命令 用于显示和清空目录堆栈中的内容。

    -

    语法

    +

    语法

    dris(选项)
     
    -

    选项

    +

    选项

    +n:显示从左边算起第n笔的目录;
     -n:显示从右边算起第n笔的目录;
     -l:显示目录完整的记录。
    @@ -96,7 +88,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/dstat.html b/c/dstat.html index 2158555591..885c69fd85 100644 --- a/c/dstat.html +++ b/c/dstat.html @@ -10,7 +10,7 @@ dstat 命令,Linux dstat 命令详解:通用的系统资源统计工具 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    dstat

    +
    +

    dstat

    通用的系统资源统计工具

    -

    补充说明

    +

    补充说明

    dstat命令 是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具。与sysstat相比,dstat拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,譬如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。和sysstat相同的是,dstat也可以收集指定的性能资源,譬如dstat -c即显示CPU的使用情况。

    -

    下载安装

    +

    下载安装

    方法一

    yum install -y dstat
     
    @@ -70,9 +64,7 @@
    wget http://dag.wieers.com/rpm/packages/dstat/dstat-0.6.7-1.rh7.rf.noarch.rpm
     rpm -ivh dstat-0.6.7-1.rh7.rf.noarch.rpm
     
    -

    使用说明

    +

    使用说明

    安装完后就可以使用了,dstat非常强大,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况。

    直接使用dstat,默认使用的是-cdngy参数,分别显示cpu、disk、net、page、system信息,默认是1s显示一条信息。可以在最后指定显示一条信息的时间间隔,如dstat 5是没5s显示一条,dstat 5 10表示没5s显示一条,一共显示10条。

    [root@iZ23uulau1tZ ~]# dstat
    @@ -91,14 +83,10 @@ usr sys idl wai hiq siq| 语法
    +  

    语法

    dstat [-afv] [options..] [delay [count]]
     
    -

    常用选项

    +

    常用选项

    -c:显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息。
     -C:当有多个CPU时候,此参数可按需分别显示cpu状态,例:-C 0,1 是显示cpu0和cpu1的信息。
     -d:显示磁盘读写数据大小。
    @@ -120,9 +108,7 @@ usr sys idl wai hiq siq| & 此时让程序默默的在后台运行并把结果输出到/root/dstat.csv文件中。
     

    当然dstat还有很多更高级的用法,常用的基本这些选项,更高级的用法可以结合man文档。

    -

    实例

    +

    实例

    如想监控swap,process,sockets,filesystem并显示监控的时间:

    [root@iZ23uulau1tZ ~]# dstat -tsp --socket --fs
     ----system---- ----swap--- ---procs--- ------sockets------ --filesystem-
    @@ -182,7 +168,7 @@ internal:
     
    - - + + \ No newline at end of file diff --git a/c/du.html b/c/du.html index 4c632e3a8f..ccce270e9a 100644 --- a/c/du.html +++ b/c/du.html @@ -10,7 +10,7 @@ du 命令,Linux du 命令详解:显示每个文件和目录的磁盘使用空间 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    du

    +
    +

    du

    显示每个文件和目录的磁盘使用空间

    -

    补充说明

    +

    补充说明

    du命令 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

    -

    语法

    +

    语法

    du [选项][文件]
     
    -

    选项

    +

    选项

    -a, --all                              显示目录中个别文件的大小。
     -B, --block-size=大小                  使用指定字节数的块
     -b, --bytes                            显示目录或文件大小时,以byte为单位。
    @@ -95,9 +87,7 @@
     --help                                 显示此帮助信息并退出
     --version                              显示版本信息并退出
     
    -

    实例

    +

    实例

    文件从大到小排序

    ubuntu@VM-0-14-ubuntu:~/git-work/linux-command$ du -sh * |sort -rh
     2.9M    command
    @@ -160,7 +150,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/dump.html b/c/dump.html index 67681fa889..e2766d2e93 100644 --- a/c/dump.html +++ b/c/dump.html @@ -10,7 +10,7 @@ dump 命令,Linux dump 命令详解:用于备份ext2或者ext3文件系统 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    dump

    +
    +

    dump

    用于备份ext2或者ext3文件系统

    -

    补充说明

    +

    补充说明

    dump命令 用于备份ext2或者ext3文件系统。可将目录或整个文件系统备份至指定的设备,或备份成一个大文件。

    -

    语法

    +

    语法

    dump(选项)(参数)
     
    -

    选项

    +

    选项

    -0123456789:备份的层级;
     -b<区块大小>:指定区块的大小,单位为KB;
     -B<区块数目>:指定备份卷册的区块数目;
    @@ -81,13 +73,9 @@
     -w:与-W类似,但仅显示需要备份的文件;
     -W:显示需要备份的文件及其最后一次备份的层级、时间与日期。
     
    -

    参数

    +

    参数

    备份源:指定要备份的文件、目录或者文件系统。

    -

    实例

    +

    实例

    /home目录所有内容备份到/tmp/homeback.bak文件中,备份层级为0并在/etc/dumpdates中记录相关信息:

    ‍dump -0u -f /tmp/homeback.bak /home
     
    @@ -120,7 +108,7 @@
    - - + + \ No newline at end of file diff --git a/c/e2fsck.html b/c/e2fsck.html index baf5f0441f..11bfa44d98 100644 --- a/c/e2fsck.html +++ b/c/e2fsck.html @@ -10,7 +10,7 @@ e2fsck 命令,Linux e2fsck 命令详解:用于检查第二扩展文件系统的完整性 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    e2fsck

    +
    +

    e2fsck

    用于检查第二扩展文件系统的完整性

    -

    补充说明

    +

    补充说明

    e2fsck命令 用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误。

    e2fsck执行后的传回值及代表意义如下:

      @@ -69,14 +65,10 @@
    • 16 使用的语法发生错误。
    • 128 共享的函数库发生错误。
    -

    语法

    +

    语法

    e2fsck(选项)(参数)
     
    -

    选项

    +

    选项

    -a:不询问使用者意见,便自动修复文件系统;
     -b<superblock>:指定superblock,而不使用预设的superblock;
     -B<区块大小>:指定区块的大小,单位为字节;
    @@ -97,13 +89,9 @@
     -V:显示版本信息;
     -y:采取非互动方式执行,所有的问题均设置以"yes"回答。
     
    -

    参数

    +

    参数

    文件系统或者分区:指定文件系统或者分区所对应的设备文件名。

    -

    实例

    +

    实例

    检查/dev/sda1是否有问题,如发现问题便自动修复:

    e2fsck -a -y /dev/sda1
     
    @@ -133,7 +121,7 @@
    - - + + \ No newline at end of file diff --git a/c/e2label.html b/c/e2label.html index 4a4552cf86..b42fb322bc 100644 --- a/c/e2label.html +++ b/c/e2label.html @@ -10,7 +10,7 @@ e2label 命令,Linux e2label 命令详解:设置第二扩展文件系统的卷标 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    e2label

    +
    +

    e2label

    设置第二扩展文件系统的卷标

    -

    补充说明

    +

    补充说明

    e2label命令 用来设置第二扩展文件系统的卷标。

    -

    语法

    +

    语法

    e2label(参数)
     
    -

    参数

    +

    参数

    • 文件系统:指定文件系统所对应的设备文件名;
    • 新卷标:为文件系统指定新卷标。
    -

    实例

    +

    实例

    许多用了多年Linux的人可能也没有用过e2label命令。但是这个命令相当有效。在介绍它之前,我们先看看/etc/fstab文件:

    label=//ext3 defaults 1 1
     /dev/hda7 /usr ext3 defaults 1 1
    @@ -111,7 +101,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/echo.html b/c/echo.html index 689f1ea796..e912bdfe6e 100644 --- a/c/echo.html +++ b/c/echo.html @@ -10,7 +10,7 @@ echo 命令,Linux echo 命令详解:输出指定的字符串或者变量 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    echo

    +
    +

    echo

    输出指定的字符串或者变量

    -

    补充说明

    +

    补充说明

    echo命令 用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

    -

    语法

    +

    语法

    echo(选项)(参数)
     
    -

    选项

    +

    选项

    -e:激活转义字符。
     

    使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

    @@ -82,13 +74,9 @@
  • \\ 插入\字符;
  • \nnn 插入 nnn(八进制)所代表的ASCII字符;
  • -

    参数

    +

    参数

    变量:指定要打印的变量。

    -

    实例

    +

    实例

    用echo命令打印带有色彩的文字:

    文字色:

    echo -e "\e[1;31mThis is red text\e[0m"
    @@ -133,7 +121,7 @@ Greed Background
     
    - - + + \ No newline at end of file diff --git a/c/ed.html b/c/ed.html index 2ca42d75bc..5b707aa703 100644 --- a/c/ed.html +++ b/c/ed.html @@ -10,7 +10,7 @@ ed 命令,Linux ed 命令详解:单行纯文本编辑器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ed

    +
    +

    ed

    单行纯文本编辑器

    -

    补充说明

    +

    补充说明

    ed命令 是单行纯文本编辑器,它有命令模式(command mode)和输入模式(input mode)两种工作模式。ed命令支持多个内置命令,常见内置命令如下:

    -

    语法

    +

    语法

    ed(选项)(参数)
     
    -

    选项

    +

    选项

    A # 切换到输入模式,在文件的最后一行之后输入新的内容;
     C # 切换到输入模式,用输入的内容替换掉最后一行的内容;
     i # 切换到输入模式,在当前行之前加入一个新的空行来输入内容;
    @@ -81,9 +73,7 @@ q # 退出ed编辑器。
     --help:显示帮助;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    文件:待编辑的文件。

    @@ -110,7 +100,7 @@ q # 退出ed编辑器。
    - - + + \ No newline at end of file diff --git a/c/edquota.html b/c/edquota.html index 6e6be41b5b..5604ece21a 100644 --- a/c/edquota.html +++ b/c/edquota.html @@ -10,7 +10,7 @@ edquota 命令,Linux edquota 命令详解:用于编辑指定用户或工作组磁盘配额 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    edquota

    +
    +

    edquota

    用于编辑指定用户或工作组磁盘配额

    -

    补充说明

    +

    补充说明

    edquota命令 用于编辑指定用户或工作组磁盘配额。edquota预设会使用vi来编辑使用者或群组的quota设置。

    -

    语法

    +

    语法

    edquota(选项)(参数)
     
    -

    选项

    +

    选项

    -u:设置用户的quota,这是预设的参数;
     -g:设置群组的quota;
     -p<源用户名称>:将源用户的quota设置套用至其他用户或群组;
     -t:设置宽限期限。
     
    -

    参数

    +

    参数

    用户:指定要编辑磁盘配额限制的用户名或者工作组。

    -

    实例

    +

    实例

    配置系统的磁盘配额支持

    首先,磁盘配额是区域性的,我们可以决定哪块分区进行磁盘配额,哪块分区不用(自然也就不用配置了)。一般而言,作为一台web虚拟主机服务器,/home/www(或者类似的)是供用户存放资源的分区,所以可以对这两个分区进行磁盘配额。假定我们需要对/home分区实现用户级的限制,而对/www进行每个组的用户配额。

    第一步:

    @@ -205,7 +193,7 @@ Filesystem blocks quota limit grace - - + + \ No newline at end of file diff --git a/c/egrep.html b/c/egrep.html index b1facd81b9..38f504a23b 100644 --- a/c/egrep.html +++ b/c/egrep.html @@ -10,7 +10,7 @@ egrep 命令,Linux egrep 命令详解:在文件内查找指定的字符串 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    egrep

    +
    +

    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 *
     
    @@ -111,7 +103,7 @@ testfile_2:Linux test
    - - + + \ No newline at end of file diff --git a/c/eject.html b/c/eject.html index 1d1287e248..858b526c12 100644 --- a/c/eject.html +++ b/c/eject.html @@ -10,7 +10,7 @@ eject 命令,Linux eject 命令详解:用来退出抽取式设备 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    eject

    +
    +

    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:显示预设的设备,而不是实际执行动作;
    @@ -81,9 +73,7 @@
     -t或--trayclose:关闭光盘的托盘;
     -v或--verbose:执行时,显示详细的说明。
     
    -

    参数

    +

    参数

    设备名:指定弹出的设备名称。

    @@ -110,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/elinks.html b/c/elinks.html index 4ec566fab6..e995fa8ce3 100644 --- a/c/elinks.html +++ b/c/elinks.html @@ -10,7 +10,7 @@ elinks 命令,Linux elinks 命令详解:纯文本界面的WWW浏览器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    elinks

    +
    +

    elinks

    纯文本界面的WWW浏览器

    -

    补充说明

    +

    补充说明

    elinks命令 能实现一个纯文本界面的WWW浏览器,操作方式与“lynx”类似。

    -

    语法

    +

    语法

    elinks(选项)(参数)
     
    -

    选项

    +

    选项

    -anonymous:是否使用匿名帐号方式;
     -auto-submit:对于偶然遇到的第一个表单是否自动提交;
     -config-dir:指定elinks指令运行时读取和写入自身的配置和运行状态的存放目录;
    @@ -74,9 +66,7 @@
     -version:显示指令的版本信息;
     -h:显示帮助信息。
     
    -

    参数

    +

    参数

    URL:指定要访问的URL地址。

    @@ -103,7 +93,7 @@
    - - + + \ No newline at end of file diff --git a/c/elm.html b/c/elm.html index d47ac4bc8c..162b9bd422 100644 --- a/c/elm.html +++ b/c/elm.html @@ -10,7 +10,7 @@ elm 命令,Linux elm 命令详解:纯文本邮件客户端程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    elm

    +
    +

    elm

    纯文本邮件客户端程序

    -

    补充说明

    +

    补充说明

    elm命令 是一个E-mail客户端管理程序,它提供了纯文本交互式全屏幕界面。

    -

    语法

    +

    语法

    elm(选项)
     
    -

    选项

    +

    选项

    -s<邮件主题>:指定新邮件的邮件主题;
     -f<目录>:开启程序时,读取指定的目录;
     -h:显示帮助;
    @@ -100,7 +92,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/emacs.html b/c/emacs.html index 4217d15c26..bf196392b6 100644 --- a/c/emacs.html +++ b/c/emacs.html @@ -10,7 +10,7 @@ emacs 命令,Linux emacs 命令详解:功能强大的全屏文本编辑器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    emacs

    +
    +

    emacs

    功能强大的全屏文本编辑器

    -

    补充说明

    +

    补充说明

    emacs命令 是由GNU组织的创始人Richard Stallman开发的一个功能强大的全屏文本编辑器,它支持多种编程语言,具有很多优良的特性。有众多的系统管理员和软件开发者使用emacs。

    -

    语法

    +

    语法

    emacs(选项)(参数)
     
    -

    选项

    +

    选项

    +<行号>:启动emacs编辑器,并将光标移动到制定行号的行;
     -q:启动emacs编辑器,而不加载初始化文件;
     -u<用户>:启动emacs编辑器时,加载指定用户的初始化文件;
    @@ -75,13 +67,9 @@
     -l<lisp代码文件>:加载指定的lisp代码文件;
     -batch:以批处理模式运行emacs编辑器。
     
    -

    参数

    +

    参数

    文件:指定要编辑的文本文件。

    -

    emacs命令操作大全

    +

    emacs命令操作大全

    基本命令

    C-x C-c : 退出Emacs
     C-x C-f : 打开一个文件,如果文件不存在,则创建一个文件
    @@ -201,7 +189,7 @@ C-x C-q : 修改buffer的只读属
     
    - - + + \ No newline at end of file diff --git a/c/enable.html b/c/enable.html index 882d62516f..1abb0b1389 100644 --- a/c/enable.html +++ b/c/enable.html @@ -10,7 +10,7 @@ enable 命令,Linux enable 命令详解:启动或禁用shell内建命令 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    enable

    +
    +

    enable

    启动或禁用shell内建命令

    -

    概要

    +

    概要

    enable [-a] [-dnps] [-f filename] [name ...]

    -

    主要用途

    +

    主要用途

    • 禁用一到多个内建命令。

      @@ -97,9 +91,7 @@

      移除从动态库中加载的内建命令。

    -

    选项

    +

    选项

    -a 打印所有内建命令,无论是否禁用。
     -d 移除从动态库中加载的内建命令。
     -n 禁用内建命令或显示已禁用的内建命令。
    @@ -109,18 +101,12 @@
     -ns 打印处于禁用状态的posix标准内建命令。
     -as 打印posix标准内建命令,无论是否禁用。
     
    -

    参数

    +

    参数

    filename:动态库文件名。

    name(可选):内建命令,可以为多个。

    -

    返回值

    +

    返回值

    enable返回成功,除非name不是内建命令或有错误发生。

    -

    例子(以下内容限于篇幅不再列出返回值部分)

    +

    例子(以下内容限于篇幅不再列出返回值部分)

    # posix special builtin
     # 假设没有任何内建命令被禁用
     # 禁用两个posix标准内建命令
    @@ -144,9 +130,7 @@
     # 启用一到多个内建命令
     enable pwd
     
    -

    Q&A

    +

    Q&A

    Q:请问-f-d-p的演示呢?

    A:说明一下,-f-d限于个人能力没有找到合适的例子,如果您有更好的例子欢迎提pr; @@ -154,9 +138,7 @@

    Q:是否可以禁用enable自己?之后还能禁用或启用内建命令吗?

    A:可以;不能。

    -

    注意

    +

    注意

    linux shell命令执行时,shell总是先在自己的shell builtin中查找该命令,如果找到则执行该命令;如果找不到该命令,则会从环境变量$PATH指定的路径中依次去查找待执行的命令。看起来好像没有办法编写用户自己的命令来替代shell builtin命令。幸运的是,有了enable命令我们就能做到了。

    @@ -195,7 +177,7 @@
    - - + + \ No newline at end of file diff --git a/c/env.html b/c/env.html index a546efe271..9c63234f30 100644 --- a/c/env.html +++ b/c/env.html @@ -10,7 +10,7 @@ env 命令,Linux env 命令详解:显示系统中已存在的环境变量 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
    -

    env

    +
    +

    env

    显示系统中已存在的环境变量

    -

    补充说明

    +

    补充说明

    env命令 用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用"-"作为参数选项时,隐藏了选项"-i"的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。

    如果使用env命令在新环境中执行指令时,会因为没有定义环境变量"PATH"而提示错误信息"such file or directory"。此时,用户可以重新定义一个新的"PATH"或者使用绝对路径。

    -

    语法

    +

    语法

    env(选项)(参数)
     
    -

    选项

    +

    选项

    -i:开始一个新的空的环境;
     -u<变量名>:从当前环境中删除指定的变量。
     
    -

    参数

    +

    参数

    • 变量定义:定义在新的环境中变量,定义多个变量定义用空格隔开。格式为“变量名=值”;
    • 指定:指定要执行的指令和参数。
    -

    实例

    +

    实例

    [root@localhost ~]# env
     hostname=LinServ-1
     TERM=linux
    @@ -128,7 +116,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/ethtool.html b/c/ethtool.html index 886222b401..e6494dcd38 100644 --- a/c/ethtool.html +++ b/c/ethtool.html @@ -10,7 +10,7 @@ ethtool 命令,Linux ethtool 命令详解:显示或修改以太网卡的配置信息 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    ethtool

    +
    +

    ethtool

    显示或修改以太网卡的配置信息

    -

    补充说明

    +

    补充说明

    ethtool命令用于获取以太网卡的配置信息,或者修改这些配置。这个命令比较复杂,功能特别多。

    -

    语法

    +

    语法

    ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX
     ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
     ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N][pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-lowN] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
    @@ -74,9 +68,7 @@
     ethtool [-s] ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
     [wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
     
    -

    选项

    +

    选项

    -a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
     -A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
     -c display the Coalesce information of the specified ethernet card。
    @@ -95,9 +87,7 @@
     -t 让网卡执行自我检测,有两种模式:offline or online。
     -s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。
     
    -

    数据来源

    +

    数据来源

    Ethtool命令显示的信息来源于网卡驱动层,即TCP/ip协议的链路层。该命令在Linux内核中实现的逻辑层次为:

    最重要的结构体struct ethtool_ops,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。

    网卡驱动负责实现(部分)这些函数,并将其封装入ethtool_ops结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。Ethtool命令选项struct ethtool_ops成员函数Ethtool命令显示参数的来源,三者间的对应关系如下表所示:

    @@ -176,9 +166,7 @@

    由上可见,ethtool命令用于显示/配置网卡硬件(寄存器)。  

    -

    实例

    +

    实例

    查看机器上网卡的速度:百兆还是千兆,请输入:

    ethool eth0
     
    @@ -225,7 +213,7 @@
    - - + + \ No newline at end of file diff --git a/c/ex.html b/c/ex.html index 045ef4bbf0..34ecd3a836 100644 --- a/c/ex.html +++ b/c/ex.html @@ -10,7 +10,7 @@ ex 命令,Linux ex 命令详解:启动vim编辑器的ex编辑模式 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ex

    +
    +

    ex

    启动vim编辑器的ex编辑模式

    -

    补充说明

    +

    补充说明

    ex 模式下启动vim文本编辑器。ex执行效果如同vi -E,适用于法及参数可参照vi指令,如要从Ex模式回到普通模式,则在vim中输入:vi:visual即可。

    -

    语法

    +

    语法

    ex(参数)
     
    -

    参数

    +

    参数

    文件:指定待编辑的文件。

    @@ -93,7 +85,7 @@
    - - + + \ No newline at end of file diff --git a/c/exec.html b/c/exec.html index bbb7deb11b..32d304e1c6 100644 --- a/c/exec.html +++ b/c/exec.html @@ -10,7 +10,7 @@ exec 命令,Linux exec 命令详解:调用并执行指定的命令 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
    -

    exec

    +
    +

    exec

    调用并执行指定的命令

    -

    补充说明

    +

    补充说明

    exec命令 用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。

    -

    语法

    +

    语法

    exec(选项)(参数)
     
    -

    选项

    +

    选项

    -c:在空环境中执行指定的命令。
     
    -

    参数

    +

    参数

    指令:要执行的指令和相应的参数。

    -

    实例

    +

    实例

    首先使用echo命令将文本“Linux C++”进行输出,输入如下命令:

    echo Linux C++           # 输出指定信息
     
    @@ -114,7 +102,7 @@
    - - + + \ No newline at end of file diff --git a/c/exit.html b/c/exit.html index afa70b8320..ea12956fb0 100644 --- a/c/exit.html +++ b/c/exit.html @@ -10,7 +10,7 @@ exit 命令,Linux exit 命令详解:退出当前的shell。 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    exit

    +
    +

    exit

    退出当前的shell。

    -

    概要

    +

    概要

    exit [n]
     
    -

    主要用途

    +

    主要用途

    • 执行exit可使shell以指定的状态值退出。若不设置参数,则以最后一条命令的返回值作为exit的返回值退出。
    -

    参数

    +

    参数

    n(可选):指定的shell返回值(整数)。

    -

    返回值

    +

    返回值

    返回值为你指定的参数n的值,如果你指定的参数大于255或小于0,那么会通过加或减256的方式使得返回值总是处于0到255之间。

    -

    例子

    +

    例子

    退出当前shell:

    [root@localhost ~]# exit
     logout
    @@ -106,9 +94,7 @@
         echo "O.K"
     fi
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -137,7 +123,7 @@
    - - + + \ No newline at end of file diff --git a/c/expand.html b/c/expand.html index f3698ea9cd..0e35a3cb6c 100644 --- a/c/expand.html +++ b/c/expand.html @@ -10,7 +10,7 @@ expand 命令,Linux expand 命令详解:将文件的制表符转换为空白字符 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    expand

    +
    +

    expand

    将文件的制表符转换为空白字符

    -

    补充说明

    +

    补充说明

    expand命令 用于将文件的制表符(TAB)转换为空白字符(space),将结果显示到标准输出设备。

    -

    语法

    +

    语法

    expand(选项)(参数)
     
    -

    选项

    +

    选项

    -t<数字>:指定制表符所代表的空白字符的个数,而不使用默认的8。
     
    -

    参数

    +

    参数

    文件:指定要转换制表符为空白的文件。

    @@ -98,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/export.html b/c/export.html index 6f84a4e84a..c8273cace8 100644 --- a/c/export.html +++ b/c/export.html @@ -10,7 +10,7 @@ export 命令,Linux export 命令详解:为shell变量或函数设置导出属性。 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
    -

    export

    +
    +

    export

    为shell变量或函数设置导出属性。

    -

    概要

    +

    概要

    export [-fn] [name[=word]]...
     export -p
     
    -

    主要用途

    +

    主要用途

    • 定义一到多个变量并设置导出属性。
    • 修改一到多个变量的值并设置导出属性。
    • @@ -73,9 +67,7 @@ export -p
    • 删除一到多个函数的导出属性。
    • 显示全部拥有导出属性的函数。
    -

    选项

    +

    选项

    -f:指向函数。
     -n:删除变量的导出属性。
     -p:显示全部拥有导出属性的变量。
    @@ -83,18 +75,12 @@ export -p
     -nf:删除函数的导出属性。
     --:在它之后的选项无效。
     
    -

    参数

    +

    参数

    name(可选):变量名或已定义函数名。

    value(可选):变量的值。

    -

    返回值

    +

    返回值

    export返回true除非你提供了非法选项或非法名称。

    -

    例子

    +

    例子

    # 显示全部拥有导出属性的变量。
     # export -p
     # export
    @@ -134,49 +120,31 @@ export -p
     # 添加当前位置到动态库环境变量
     export LD_LIBRARY_PATH=$(pwd):${LD_LIBRARY_PATH}
     
    -

    错误用法

    +

    错误用法

    • 对未定义的函数添加导出属性。
    • 对没有导出属性的函数/变量执行删除导出属性操作。
    • -- 后使用选项。
    -

    Q&A

    -

    Q:对变量或函数设置导出属性有什么用?

    +

    Q&A

    +

    Q:对变量或函数设置导出属性有什么用?

    A:它们会成为环境变量,可以在脚本中访问它们,尤其是脚本中调用的子进程需要时。( 参考链接4

    -

    Q:如果我编写的脚本修改了已有的环境变量的值,那么执行它会在当前终端生效吗?会影响之前以及之后打开的终端吗?

    +

    Q:如果我编写的脚本修改了已有的环境变量的值,那么执行它会在当前终端生效吗?会影响之前以及之后打开的终端吗?

    A:只有通过source方式调用的脚本会生效,您可以查看source命令获得更多信息;其他方式只是在子shell中执行。 之前的不会影响,之后的除非是修改了~/.bashrc这种启动终端时加载的脚本。( 参考链接1

    -

    Q:我脚本文件中调用~/.bashrc中定义的函数和变量。为什么在新打开的终端中通过 sh 方式调用该脚本或直接运行

    +

    Q:我脚本文件中调用~/.bashrc中定义的函数和变量。为什么在新打开的终端中通过 sh 方式调用该脚本或直接运行

    这个当前用户有执行权限的脚本却不能使用这些函数和变量?
    A:请在~/.bashrc文件中增加export它们的语句。另请参阅 知识点 段落。

    -

    Q:数组和关联数组也可以设置导出属性吗?

    +

    Q:数组和关联数组也可以设置导出属性吗?

    A:是可以的(如果你的bash支持它们),不过有些问题( 参考链接2 )。

    -

    Q:为什么我在查看变量或函数导出属性的时候显示的开头是declare

    +

    Q:为什么我在查看变量或函数导出属性的时候显示的开头是declare

    A:因为declare也能够设置变量或函数的导出属性,详见declare命令。

    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    -

    知识点

    +

    知识点

    info bashbash在线文档3.7.3节提到了shell执行环境,其中涉及变量和函数的内容如下 @@ -194,18 +162,14 @@ export -p

    变量是有名字的参数。

    那么子shell确实继承了父shell中带有导出属性的变量或函数。

    可参考链接: 执行脚本方式的区别

    -

    参考链接

    +

    参考链接

    1. 关于bashrc profile文件的讨论
    2. 关于export数组的讨论
    3. export -pf用法
    4. 环境变量和shell变量的区别
    -

    扩展阅读

    +

    扩展阅读

    一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。查看已经存在的环境变量:

    [root@localhost ~]# export
     declare -x G_BROKEN_FILENAMES="1"
    @@ -254,7 +218,7 @@ export -p
     
    - - + + \ No newline at end of file diff --git a/c/exportfs.html b/c/exportfs.html index e35c017c77..9105fd42a4 100644 --- a/c/exportfs.html +++ b/c/exportfs.html @@ -10,7 +10,7 @@ exportfs 命令,Linux exportfs 命令详解:管理NFS共享文件系统列表 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    exportfs

    +
    +

    exportfs

    管理NFS共享文件系统列表

    -

    补充说明

    +

    补充说明

    exportfs 命令用来管理当前NFS共享的文件系统列表。

    参数:

    -a 打开或取消所有目录共享。
    @@ -93,7 +89,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/expr.html b/c/expr.html index 87a58b3036..e261c9b4c8 100644 --- a/c/expr.html +++ b/c/expr.html @@ -10,7 +10,7 @@ expr 命令,Linux expr 命令详解:一款表达式计算工具 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    expr

    +
    +

    expr

    一款表达式计算工具

    -

    补充说明

    +

    补充说明

    expr命令 是一款表达式计算工具,使用它完成表达式的求值操作。

    expr的常用运算符:

      @@ -67,24 +63,16 @@
    • 除法运算:/
    • 求摸(取余)运算:%
    -

    语法

    +

    语法

    expr(选项)(参数)
     
    -

    选项

    +

    选项

    --help:显示指令的帮助信息;
     --version:显示指令版本信息。
     
    -

    参数

    +

    参数

    表达式:要求值的表达式。

    -

    实例

    +

    实例

    result=`expr 2 + 3`
     result=$(expr $no1 + 5)
     
    @@ -113,7 +101,7 @@
    - - + + \ No newline at end of file diff --git a/c/false.html b/c/false.html index 22ce5dd243..7f2df0b969 100644 --- a/c/false.html +++ b/c/false.html @@ -10,7 +10,7 @@ false 命令,Linux false 命令详解:返回状态为失败。 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    false

    +
    +

    false

    返回状态为失败。

    -

    概要

    +

    概要

    false
     
    -

    主要用途

    +

    主要用途

    • 用于和其他命令进行逻辑运算。
    -

    返回值

    +

    返回值

    返回状态总是失败;返回值为1。

    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -101,7 +91,7 @@
    - - + + \ No newline at end of file diff --git a/c/fc.html b/c/fc.html index 8fd8a3059a..6c3da1bee8 100644 --- a/c/fc.html +++ b/c/fc.html @@ -10,7 +10,7 @@ fc 命令,Linux fc 命令详解:显示历史列表中的命令或修改指定的历史命令并执行。 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
    -

    fc

    +
    +

    fc

    显示历史列表中的命令或修改指定的历史命令并执行。

    -

    概要

    +

    概要

    fc [-e ename] [-lnr] [first] [last]
     fc -s [pat=rep] [command]
     
    -

    主要用途

    +

    主要用途

    • 显示历史列表中的命令。

      @@ -72,27 +66,19 @@ fc -s [pat=<

      编辑并重新执行历史列表的命令。

    -

    选项

    +

    选项

    -e ename                  选择使用的编辑器,默认调用次序为环境变量`FCEDIT`、环境变量`EDITOR``vi`。
     -l                        列出而不是编辑。
     -n                        列出时不输出行号(需配合-l选项)。
     -r                        倒序列出命令,最近执行的先列出(需配合-l选项)。
     -s [pat=rep] [command]    command(未指定时为最后执行的命令)将在pat替换为rep后重新执行。
     
    -

    参数

    +

    参数

    first:可选;可以是字符串(以该字符串开头的最新命令)、数字(历史列表索引,负数代表当前命令号的偏移);未指定时设置为前一个命令并且偏移量为-16(最近的16条命令)。

    last:可选;可以是字符串(以该字符串开头的最新命令)、数字(历史列表索引,负数代表当前命令号的偏移);未指定时设置为参数first。

    -

    返回值

    +

    返回值

    返回成功或执行命令的状态,当错误出现时返回非0值。

    -

    例子

    +

    例子

    替换命令参数:

    # 列出 ~ 目录
     ls ~
    @@ -115,9 +101,7 @@ fc -s ~=/
       

    编辑第1040条历史命令:

    [root@localhost ~]# fc 1040
     
    -

    注意

    +

    注意

    1. 关闭终端后,历史列表将被写入历史文件~/.bash_history
    2. 环境变量FCEDIT的值为fc默认的编辑器。
    3. @@ -148,7 +132,7 @@ fc -s ~=/
    - - + + \ No newline at end of file diff --git a/c/fdisk.html b/c/fdisk.html index 70cc895e9c..b65b13427c 100644 --- a/c/fdisk.html +++ b/c/fdisk.html @@ -10,7 +10,7 @@ fdisk 命令,Linux fdisk 命令详解:查看磁盘使用情况和磁盘分区 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    fdisk

    +
    +

    fdisk

    查看磁盘使用情况和磁盘分区

    -

    补充说明

    +

    补充说明

    fdisk命令 用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。

    -

    语法

    +

    语法

    fdisk(选项)(参数)
     
    -

    选项

    +

    选项

     -b <大小>             扇区大小(512、1024、2048或4096)
      -c[=<模式>]           兼容模式:“dos”或“nondos”(默认)
      -h                    打印此帮助文本
    @@ -76,13 +68,9 @@
      -H <数字>             指定磁头数
      -S <数字>             指定每个磁道的扇区数
     
    -

    参数

    +

    参数

    设备文件:指定要进行分区或者显示分区的硬盘设备文件。

    -

    实例

    +

    实例

    首先选择要进行操作的磁盘:

    [root@localhost ~]# fdisk /dev/sdb
     
    @@ -339,7 +327,7 @@ proc /proc proc defaults - - + + \ No newline at end of file diff --git a/c/fg.html b/c/fg.html index 33436e1874..51032c59f1 100644 --- a/c/fg.html +++ b/c/fg.html @@ -10,7 +10,7 @@ fg 命令,Linux fg 命令详解:将后台作业移动到前台终端运行 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    fg

    +
    +

    fg

    将后台作业移动到前台终端运行

    -

    概要

    +

    概要

    fg [job_spec ...]
     
    -

    主要用途

    +

    主要用途

    • 用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。

      @@ -71,17 +65,11 @@

      若后台任务中只有一个,则使用该命令时可以省略任务号。

    -

    参数

    +

    参数

    job_spec(可选):指定要移动到前台执行的作业标识符,可以是一到多个。

    -

    返回值

    +

    返回值

    返回作业的执行状态,如果发生了错误返回失败。

    -

    例子

    +

    例子

    # 运行sleep命令,然后按下ctrl+z。
     sleep 60
     ^Z
    @@ -93,9 +81,7 @@
     # 返回信息:
     sleep 60
     
    -

    注意

    +

    注意

    1. bash的作业控制命令包括bg fg kill wait disown suspend
    2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
    3. @@ -126,7 +112,7 @@
    - - + + \ No newline at end of file diff --git a/c/fgrep.html b/c/fgrep.html index 4357dd179c..41b8b1f3a4 100644 --- a/c/fgrep.html +++ b/c/fgrep.html @@ -10,7 +10,7 @@ fgrep 命令,Linux fgrep 命令详解:为文件搜索文字字符串 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    fgrep

    +
    +

    fgrep

    为文件搜索文字字符串

    -

    补充说明

    +

    补充说明

    fgrep命令 是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的文件 fgrep 命令将显示包含匹配行的文件。

    fgrep 命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。fgrep 命令使用快速的压缩算法。$, *, &#91;, |, (, )\等字符串被 fgrep 命令按字面意思解释。这些字符并不解释为正则表达式,但它们在 grep 和 egrep 命令中解释为正则表达式。因为这些字符对于 shell 有特定的含义,完整的字符串应该加上单引号‘ ... ’。. 如果没有指定文件, fgrep 命令假定标准输入。一般,找到的每行都复制到标准输出中去。如果不止一个输入文件,则在找到的每行前打印文件名。

      @@ -69,14 +65,10 @@
    1. 输入文件应该以换行字符结尾。
    2. 虽然可以同时指定很多标志,但某些标志会覆盖其余的标志。例如,如果同时指定 -l 和 -n ,只有文件名写入到标准输出中去。
    -

    语法

    +

    语法

    fgrep(选项)(参数)
     
    -

    选项

    +

    选项

    -b:在找到的每行之前添加行所在的块编号。使用此标志有助于按照上下文查找磁盘块号码。-b 标志不能用于标准输入或者管道输入。
     -c:仅显示匹配行的计数。
     -e 模式:指定模式。这个工作模式很简单,但当此模式以 a-(减号) 开头时却是很有用的。
    @@ -98,9 +90,7 @@ n:将文件中每行的相对行号置于行前。
     1    未找到匹配项。
     >1   发现语法错误,或者文件不可访问(即使找到了匹配项)。
     
    -

    实例

    +

    实例

    搜索几个文件中的一个简单字符串:

    fgrep strcpy *.c
     
    @@ -141,7 +131,7 @@ n:将文件中每行的相对行号置于行前。
    - - + + \ No newline at end of file diff --git a/c/file.html b/c/file.html index a12af08489..3035c2df06 100644 --- a/c/file.html +++ b/c/file.html @@ -10,7 +10,7 @@ file 命令,Linux file 命令详解:用来探测给定文件的类型 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    file

    +
    +

    file

    用来探测给定文件的类型

    -

    补充说明

    +

    补充说明

    file命令 用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

    -

    语法

    +

    语法

    file(选项)(参数)
     
    -

    选项

    +

    选项

    -b:列出辨识结果时,不显示文件名称;
     -c:详细显示指令执行过程,便于排错或分析程序执行的情形;
     -f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
    @@ -75,13 +67,9 @@
     -v:显示版本信息;
     -z:尝试去解读压缩文件的内容。
     
    -

    参数

    +

    参数

    文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

    -

    实例

    +

    实例

    显示文件类型

    [root@localhost ~]# file install.log
     install.log: UTF-8 Unicode text
    @@ -136,7 +124,7 @@ lrwxrwxrwx 1 root root 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/find.html b/c/find.html
    index 1c79937546..4f0fcc26c0 100644
    --- a/c/find.html
    +++ b/c/find.html
    @@ -10,7 +10,7 @@
         
         find 命令,Linux find 命令详解:在指定目录下查找文件 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    find

    +
    +

    find

    在指定目录下查找文件

    -

    补充说明

    +

    补充说明

    find命令 用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

    -

    语法

    +

    语法

    find(选项)(参数)
     
    -

    选项

    +

    选项

    -amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
     -anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
     -atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
    @@ -123,19 +115,13 @@
     -xdev:将范围局限在先行的文件系统中;
     -xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
     
    -

    参数

    +

    参数

    起始目录:查找文件的起始目录。

    -

    实例

    +

    实例

    # 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容
     find . -type f -name "*" | xargs grep "140.206.111.111"
     
    -

    根据文件或者正则表达式进行匹配

    +

    根据文件或者正则表达式进行匹配

    列出当前目录及子目录下所有文件和文件夹

    find .
     
    @@ -161,15 +147,11 @@

    同上,但忽略大小写

    find . -iregex ".*\(\.txt\|\.pdf\)$"
     
    -

    否定参数

    +

    否定参数

    找出/home下不是以.txt结尾的文件

    find /home ! -name "*.txt"
     
    -

    根据文件类型进行搜索

    +

    根据文件类型进行搜索

    find . -type 类型参数
     

    类型参数列表:

    @@ -182,18 +164,14 @@
  • s 套接字
  • p Fifo
  • -

    基于目录深度搜索

    +

    基于目录深度搜索

    向下最大深度限制为3

    find . -maxdepth 3 -type f
     

    搜索出深度距离当前目录至少2个子目录的所有文件

    find . -mindepth 2 -type f
     
    -

    根据文件时间戳进行搜索

    +

    根据文件时间戳进行搜索

    find . -type f 时间戳
     

    UNIX/Linux文件系统每个文件都有三种时间戳:

    @@ -217,9 +195,7 @@

    找出比file.log修改时间更长的所有文件

    find . -type f -newer file.log
     
    -

    根据文件大小进行匹配

    +

    根据文件大小进行匹配

    find . -type f -size 文件大小单元
     

    文件大小单元:

    @@ -240,15 +216,11 @@

    搜索等于10KB的文件

    find . -type f -size 10k
     
    -

    删除匹配文件

    +

    删除匹配文件

    删除当前目录下所有.txt文件

    find . -type f -name "*.txt" -delete
     
    -

    根据文件权限/所有权进行匹配

    +

    根据文件权限/所有权进行匹配

    当前目录下搜索出权限为777的文件

    find . -type f -perm 777
     
    @@ -261,9 +233,7 @@

    找出当前目录用户组sunk拥有的所有文件

    find . -type f -group sunk
     
    -

    借助-exec选项与其他命令结合使用

    +

    借助-exec选项与其他命令结合使用

    找出当前目录下所有root的文件,并把所有权更改为用户tom

    find .-type f -user root -exec chown tom {} \;
     
    @@ -284,9 +254,7 @@

    因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令

    -exec ./text.sh {} \;
     
    -

    搜索但跳过指定的目录

    +

    搜索但跳过指定的目录

    查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk

    find . -path "./sk" -prune -o -name "*.txt" -print
     
    @@ -299,15 +267,11 @@

    ⚠️ 如果写相对路径必须加上./

    -

    find其他技巧收集

    +

    find其他技巧收集

    要列出所有长度为零的文件

    find . -empty
     
    -

    其它实例

    +

    其它实例

    find ~ -name '*jpg' # 主目录中找到所有的 jpg 文件。 -name 参数允许你将结果限制为与给定模式匹配的文件。
     find ~ -iname '*jpg' # -iname 就像 -name,但是不区分大小写
     find ~ ( -iname 'jpeg' -o -iname 'jpg' ) # 一些图片可能是 .jpeg 扩展名。幸运的是,我们可以将模式用“或”(表示为 -o)来组合。
    @@ -358,7 +322,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/findfs.html b/c/findfs.html index dfeea3980a..f273aba05f 100644 --- a/c/findfs.html +++ b/c/findfs.html @@ -10,7 +10,7 @@ findfs 命令,Linux findfs 命令详解:标签或UUID查找文件系统 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    findfs

    +
    +

    findfs

    标签或UUID查找文件系统

    -

    补充说明

    +

    补充说明

    findfs命令 依据卷标(Label)和UUID查找文件系统所对应的设备文件。findfs命令会搜索整个磁盘,看是否有匹配的标签或者UUID没有,如果有则打印到标注输出上。findfs命令也是e2fsprogs项目的一部分。

    -

    语法

    +

    语法

    findfs(参数)
     
    -

    参数

    +

    参数

    LABEL=<卷标>或者UUID=<UUID>:按照卷标或者UUID查询文件系统。

    -

    实例

    +

    实例

    通过卷标名查找对应的文件系统:

    findfs LABEL=/boot
     /dev/hda1
    @@ -100,7 +90,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/finger.html b/c/finger.html index db2cb4845b..5528fdefd2 100644 --- a/c/finger.html +++ b/c/finger.html @@ -10,7 +10,7 @@ finger 命令,Linux finger 命令详解:用于查找并显示用户信息 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    finger

    +
    +

    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
    @@ -113,7 +101,7 @@ root root *pts/1 Dec 18 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/firewall-cmd.html b/c/firewall-cmd.html
    index c20ba96d7c..a8f81f248f 100644
    --- a/c/firewall-cmd.html
    +++ b/c/firewall-cmd.html
    @@ -10,7 +10,7 @@
         
         firewall-cmd 命令,Linux firewall-cmd 命令详解:Linux上新用的防火墙软件,跟iptables差不多的工具 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,14 +50,10 @@
     
     
     
    -
    -

    firewall-cmd

    +
    +

    firewall-cmd

    Linux上新用的防火墙软件,跟iptables差不多的工具

    -

    补充说明

    +

    补充说明

    firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。

    firewalld跟iptables比起来至少有两大好处:

      @@ -68,9 +64,7 @@

      命令格式

      firewall-cmd [选项 ... ]
       
      -

      选项

      +

      选项

      通用选项

      -h, --help    # 显示帮助信息;
       -V, --version # 显示版本信息. (这个选项不能与其他选项组合);
      @@ -87,9 +81,7 @@
         
      --get-log-denied         # 获取记录被拒绝的日志;
       --set-log-denied=<value> # 设置记录被拒绝的日志,只能为 'all','unicast','broadcast','multicast','off' 其中的一个;
       
      -

      实例

      +

      实例

      # 安装firewalld
       yum install firewalld firewall-config
       
      @@ -344,7 +336,7 @@ firewall-cmd --add-forward-port=port
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/fishshell.html b/c/fishshell.html
      index 51cff6379a..852a948aae 100644
      --- a/c/fishshell.html
      +++ b/c/fishshell.html
      @@ -10,7 +10,7 @@
           
           fishshell 命令,Linux fishshell 命令详解:比 bash 更好用的 shell -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,31 +50,23 @@
       
       
       
      -
      -

      fishshell

      +
      +

      fishshell

      比 bash 更好用的 shell

      -

      安装

      +

      安装

      # Ubuntu 和 Debian 的安装方法。
       sudo apt-get install fish
       # Mac 的安装方法。
       brew install fish
       
      -

      启动与帮助

      +

      启动与帮助

      由于 Fish 的语法与 Bash 有很大差异,Bash 脚本一般不兼容。因此,建议不要将 Fish 设为默认 Shell,而是每次手动启动它。

      # 安装完成后,就可以启动 Fish。
       $ fish
       # 使用过程中,如果需要帮助,可以输入 help 命令
       $ help
       
      -

      彩色显示

      +

      彩色显示

      # 无效命令为红色
       $ mkd
       # 有效命令为蓝色
      @@ -82,25 +74,17 @@ $ mkdir
       # 有效路径会有下划线。如果没有下划线,你就知道这个路径不存在。
       $ cat ~/somefi 
       
      -

      自动建议

      +

      自动建议

      Fish 会自动在光标后面给出建议,表示可能的选项,颜色为灰色。如果采纳建议,可以按下 Control + F 。如果只采纳一部分,可以按下 Alt + →

      $ /bin/hostname # 命令建议
       $ grep --ignore-case # 参数建议
       $ ls node_modules # 路径建议
       
      -

      自动补全

      +

      自动补全

      输入命令时,Fish 会自动显示匹配的上一条历史记录。如果没有匹配的历史记录,Fish 会猜测可能的结果,自动补全各种输入。比如,输入 pyt 再按下 Tab ,就会自动补全为 python 命令。

      Fish 还可以自动补全 Git 分支。

      -

      脚本语法

      -

      if 语句

      +

      脚本语法

      +

      if 语句

      if grep fish /etc/shells
           echo Found fish
       else if grep bash /etc/shells
      @@ -109,9 +93,7 @@ $ ls node_modules echo Got nothing
       end
       
      -

      switch 语句

      +

      switch 语句

      switch (uname)
       case Linux
           echo Hi Tux!
      @@ -123,23 +105,17 @@ end
           echo Hi, stranger!
       end
       
      -

      while 循环

      +

      while 循环

      while true
           echo "Loop forever"
       end
       
      -

      for 循环

      +

      for 循环

      for file in *.txt
           cp $file $file.bak
       end
       
      -

      函数

      +

      函数

      Fish 的函数用来封装命令,或者为现有的命令起别名。

      function ll
           ls -lhG $argv
      @@ -151,9 +127,7 @@ end
       end
       

      上面的代码重新定义 ls 命令。注意,函数体内的 ls 之前,要加上 command,否则会因为无限循环而报错。

      -

      提示符

      +

      提示符

      fish_prompt 函数用于定义命令行提示符(prompt)。

      function fish_prompt
         set_color purple
      @@ -167,9 +141,7 @@ end
         
      02/06/13
       /home/tutorial > 
       
      -

      配置

      +

      配置

      Fish 的配置文件是 ~/.config/fish/config.fish,每次 Fish 启动,就会自动加载这个文件。Fish 还提供 Web 界面配置该文件。

      $ fish_config # 浏览器打开 Web 界面配置
       
      @@ -186,9 +158,7 @@ end cp file.txt file.txt.bak; and echo 'back success'; or echo 'back fail' # combiner functions # 列出 fish 下定义的函数
      -

      参考资料

      +

      参考资料

      @@ -217,7 +187,7 @@ functions # 列出 fish 下定义的函数
      - - + + \ No newline at end of file diff --git a/c/fmt.html b/c/fmt.html index 9ec767a274..73dcaeef65 100644 --- a/c/fmt.html +++ b/c/fmt.html @@ -10,7 +10,7 @@ fmt 命令,Linux fmt 命令详解:读取文件后优化处理并输出 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      fmt

      +
      +

      fmt

      读取文件后优化处理并输出

      -

      补充说明

      +

      补充说明

      fmt命令 读取文件的内容,根据选项的设置对文件格式进行简单的优化处理,并将结果送到标准输出设备。

      -

      语法

      +

      语法

      fmt(选项)(参数)
       
      -

      选项

      +

      选项

      -c或--crown-margin:每段前两列缩排;
       -p<列起始字符串>或-prefix=<列起始字符串>:仅合并含有指定字符串的列,通常运用在程序语言的注解方面;
       -s或--split-only:只拆开字数超出每列字符数的列,但不合并字数不足每列字符数的列;
      @@ -74,9 +66,7 @@
       -u或--uniform-spacing:每列字符之间都以一个空格字符间隔,每个句子之间则两个空格字符分隔;
       -w<每列字符数>或--width=<每列字符数>或-<每列字符数>:设置每列的最大字符数。
       
      -

      参数

      +

      参数

      指定要优化格式的文件。

      @@ -103,7 +93,7 @@
      - - + + \ No newline at end of file diff --git a/c/fold.html b/c/fold.html index d9ff57337b..1f15154f70 100644 --- a/c/fold.html +++ b/c/fold.html @@ -10,7 +10,7 @@ fold 命令,Linux fold 命令详解:控制文件内容输出时所占用的屏幕宽度 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      fold

      +
      +

      fold

      控制文件内容输出时所占用的屏幕宽度

      -

      补充说明

      +

      补充说明

      fold命令 用于控制文件内容输出时所占用的屏幕宽度。fold命令会从指定的文件里读取内容,将超过限定列宽的列加入增列字符后,输出到标准输出设备。若不指定任何文件名称,或是所给予的文件名为“-”,则fold指令会从标准输入设备读取数据。

      -

      语法

      +

      语法

      fold(选项)(参数)
       
      -

      选项

      +

      选项

      -b或——bytes:以Byte为单位计算列宽,而非采用行数编号为单位;
       -s或——spaces:以空格字符作为换列点;
       -w<每列行数>或--width<每列行数>:设置每列的最大行数。
       
      -

      参数

      +

      参数

      文件:指定要显示内容的文件。

      @@ -100,7 +90,7 @@
      - - + + \ No newline at end of file diff --git a/c/fping.html b/c/fping.html index 9f88fc5661..fdc861f1e6 100644 --- a/c/fping.html +++ b/c/fping.html @@ -10,7 +10,7 @@ fping 命令,Linux fping 命令详解:fping检测主机是否存在 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      fping

      +
      +

      fping

      fping检测主机是否存在

      -

      补充说明

      +

      补充说明

      fping命令 fping类似于ping,但比ping强大。与ping要等待某一主机连接超时或发回反馈信息不同,fping给一个主机发送完数据包后,马上给下一个主机发送数据包,实现多主机同时ping,fping还可以在命令行中指定要ping的主机数量范围。

      -

      语法

      +

      语法

      fping(选项)(参数)
       
      -

      选项

      +

      选项

      -a  # 显示存活的主机
       -b  # ping 数据包的大小。(默认为56)
       -c  # ping每个目标的次数 (默认为1)
      @@ -75,9 +67,7 @@
       -g  # 通过指定开始和结束地址来生成目标列表,可以使网段
       -u  # 显示不可到达的目标
       
      -

      实例

      +

      实例

      安装fping命令:

      # 先安装epel源:
       yum install epel* -y
      @@ -136,7 +126,7 @@ yum install fping -y
       
      - - + + \ No newline at end of file diff --git a/c/free.html b/c/free.html index e0ffa5bc2e..945e785829 100644 --- a/c/free.html +++ b/c/free.html @@ -10,7 +10,7 @@ free 命令,Linux free 命令详解:显示内存的使用情况 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      free

      +
      +

      free

      显示内存的使用情况

      -

      补充说明

      +

      补充说明

      free命令 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

      -

      语法

      +

      语法

      free(选项)
       
      -

      选项

      +

      选项

      -b # 以Byte为单位显示内存使用情况;
       -k # 以KB为单位显示内存使用情况;
       -m # 以MB为单位显示内存使用情况;
      @@ -76,9 +68,7 @@
       -t # 显示内存总和列;
       -V # 显示版本信息。
       
      -

      实例

      +

      实例

      free -t    # 以总和的形式显示内存的使用信息
       free -s 10 # 周期性的查询内存使用信息,每10s 执行一次命令
       
      @@ -206,7 +196,7 @@ DirectMap1G: 5242880 kB
      - - + + \ No newline at end of file diff --git a/c/fsck.html b/c/fsck.html index fa3e07e92d..31436bb4e2 100644 --- a/c/fsck.html +++ b/c/fsck.html @@ -10,7 +10,7 @@ fsck 命令,Linux fsck 命令详解:检查并且试图修复文件系统中的错误 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      fsck

      +
      +

      fsck

      检查并且试图修复文件系统中的错误

      -

      补充说明

      +

      补充说明

      fsck命令 被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。

      -

      语法

      +

      语法

      fsck(选项)(参数)
       
      -

      选项

      +

      选项

      -a:自动修复文件系统,不询问任何问题;
       -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
       -N:不执行指令,仅列出实际执行会进行的动作;
      @@ -78,13 +70,9 @@
       -T:执行fsck指令时,不显示标题信息;
       -V:显示指令执行过程。
       
      -

      参数

      +

      参数

      文件系统:指定要查看信息的文件系统。

      -

      实例

      +

      实例

      linux的文件系统损坏会导致linux不正常关机,出错的时候如果系统告诉你是哪一块硬盘的分区有问题,比如是/dev/hda2,接着用如下的命令去对付它:

      fsck -y /dev/hda2
       
      @@ -119,7 +107,7 @@
      - - + + \ No newline at end of file diff --git a/c/ftp.html b/c/ftp.html index 47e1ee776b..e9f035bbf6 100644 --- a/c/ftp.html +++ b/c/ftp.html @@ -10,7 +10,7 @@ ftp 命令,Linux ftp 命令详解:用来设置文件系统相关功能 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
      -

      ftp

      +
      +

      ftp

      用来设置文件系统相关功能

      -

      补充说明

      +

      补充说明

      ftp命令 用来设置文件系统相关功能。ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux进行ftp操作将会非常容易。

      -

      语法

      +

      语法

      ftp(选项)(参数)
       
      -

      选项

      +

      选项

      -d:详细显示指令执行过程,便于排错或分析程序执行的情况;
       -i:关闭互动模式,不询问任何问题;
       -g:关闭本地主机文件名称支持特殊字符的扩充特性;
       -n:不使用自动登录;
       -v:显示指令执行过程。
       
      -

      参数

      +

      参数

      主机:指定要连接的FTP服务器的主机名或ip地址。

      -

      实例

      +

      实例

      ftp> ascii  # 设定以ASCII方式传送文件(缺省值) 
       ftp> bell   # 每完成一次文件传送,报警提示. 
       ftp> binary # 设定以二进制方式传送文件. 
      @@ -157,7 +145,7 @@ ftp> mput *.txt           
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/ftpcount.html b/c/ftpcount.html
      index aa67edc662..5719c6264c 100644
      --- a/c/ftpcount.html
      +++ b/c/ftpcount.html
      @@ -10,7 +10,7 @@
           
           ftpcount 命令,Linux ftpcount 命令详解:显示目前已FTP登入的用户人数 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,14 +50,10 @@
       
       
       
      -
      -

      ftpcount

      +
      +

      ftpcount

      显示目前已FTP登入的用户人数

      -

      补充说明

      +

      补充说明

      显示目前已ftp登入的用户人数。执行这项指令可得知目前用FTP登入系统的人数以及FTP登入人数的上限。

      语法:

      ftpcount
      @@ -87,7 +83,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/ftpshut.html b/c/ftpshut.html index 97b388a1e2..c28f3f2a51 100644 --- a/c/ftpshut.html +++ b/c/ftpshut.html @@ -10,7 +10,7 @@ ftpshut 命令,Linux ftpshut 命令详解:在指定的时间关闭FTP服务器 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      ftpshut

      +
      +

      ftpshut

      在指定的时间关闭FTP服务器

      -

      补充说明

      +

      补充说明

      功能说明:在指定的时间关闭ftp服务器。本指令提供系统管理者在设置的时间关闭FTP服务器,且能在关闭之前发出警告信息通知用户。关闭时间若设置后为"none",则会马上关闭服务器。如果采 用"+30"的方式来设置表示服务器在30分钟之后关闭。依次类推,假设使用"1130"的格式则代表服务器会在每日的11时30分关闭,时间格式为24 小时制。FTP服务器关闭后,在/etc目录下会产生一个名称为shutmsg的文件,把它删除后即可再度启动FTP服务器的功能。

      语法:

      ftpshut [-d<分钟>][-l<分钟>][关闭时间]["警告信息"]
      @@ -91,7 +87,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/ftptop.html b/c/ftptop.html index 81276f1a50..dc8f504e89 100644 --- a/c/ftptop.html +++ b/c/ftptop.html @@ -10,7 +10,7 @@ ftptop 命令,Linux ftptop 命令详解:proftpd服务器的连接状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ftptop

      +
      +

      ftptop

      proftpd服务器的连接状态

      -

      补充说明

      +

      补充说明

      ftptop命令 类似于top命令的显示风格显示proftpd服务器的连接状态。

      -

      语法

      +

      语法

      ftptop(选项)
       
      -

      选项

      +

      选项

      -D:过滤正在下载的会话;
       -S:仅显示指定虚拟主机的连接状态;
       -d:指定屏幕刷新时间,默认
      @@ -96,7 +88,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/ftpwho.html b/c/ftpwho.html index 462814d25f..48fa4d68c8 100644 --- a/c/ftpwho.html +++ b/c/ftpwho.html @@ -10,7 +10,7 @@ ftpwho 命令,Linux ftpwho 命令详解:显示当前每个ftp会话信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ftpwho

      +
      +

      ftpwho

      显示当前每个ftp会话信息

      -

      补充说明

      +

      补充说明

      ftpwho命令 ftp服务器套件proftpd的工作指令,用于显示当前每个ftp会话信息。

      -

      语法

      +

      语法

      ftpwho(选项)
       
      -

      选项

      +

      选项

      -h:显示帮助信息;
       -v:详细模式,输出更多信息。
       
      @@ -95,7 +87,7 @@
      - - + + \ No newline at end of file diff --git a/c/fuser.html b/c/fuser.html index 4b761b5366..ce0f245fb8 100644 --- a/c/fuser.html +++ b/c/fuser.html @@ -10,7 +10,7 @@ fuser 命令,Linux fuser 命令详解:使用文件或文件结构识别进程 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      fuser

      +
      +

      fuser

      使用文件或文件结构识别进程

      -

      补充说明

      +

      补充说明

      fuser命令 用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号,那些本地进程使用file,参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

      每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。

        @@ -68,14 +64,10 @@
      • r :指示该目录为进程的根目录。
      • m :指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存。
      -

      语法

      +

      语法

      fuser(选项)(参数)
       
      -

      选项

      +

      选项

      -a:显示命令行中指定的所有文件;
       -k:杀死访问指定文件的所有进程;
       -i:杀死进程前需要用户进行确认;
      @@ -84,13 +76,9 @@
       -n:选择不同的名称空间;
       -u:在每个进程后显示所属的用户名。
       
      -

      参数

      +

      参数

      文件:可以是文件名或者TCP、UDP端口号。

      -

      实例

      +

      实例

      要列出使用/etc/passwd文件的本地进程的进程号,请输入:

      fuser /etc/passwd
       
      @@ -130,7 +118,7 @@
      - - + + \ No newline at end of file diff --git a/c/gcc.html b/c/gcc.html index b17a0d89bd..d3b827014d 100644 --- a/c/gcc.html +++ b/c/gcc.html @@ -10,7 +10,7 @@ gcc 命令,Linux gcc 命令详解:基于C/C++的编译器 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
      -

      gcc

      +
      +

      gcc

      基于C/C++的编译器

      -

      补充说明

      +

      补充说明

      gcc命令 使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。

      -

      语法

      +

      语法

      gcc(选项)(参数)
       
      -

      选项

      +

      选项

      -o:指定生成的输出文件;
       -E:仅执行编译预处理;
       -S:将C代码转换为汇编代码;
       -wall:显示警告信息;
       -c:仅执行编译操作,不进行连接操作。
       
      -

      参数

      +

      参数

      C源文件:指定C语言源代码文件。

      -

      实例

      +

      实例

      常用编译命令选项

      假设源程序文件名为test.c

      无选项编译链接

      @@ -148,7 +136,7 @@ gcc -o testfun.o test.o -o test
      - - + + \ No newline at end of file diff --git a/c/gcov.html b/c/gcov.html index 4e2c70b67f..5a524483c4 100644 --- a/c/gcov.html +++ b/c/gcov.html @@ -10,7 +10,7 @@ gcov 命令,Linux gcov 命令详解:测试程序的代码覆盖率的工具 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
      -

      gcov

      +
      +

      gcov

      测试程序的代码覆盖率的工具

      -

      补充说明

      +

      补充说明

      gcov命令 是一款测试程序的代码覆盖率的工具。

      -

      语法

      +

      语法

      gcov(选项)(参数)
       
      -

      选项

      +

      选项

      -h:显示帮助信息;
       -v:显示版本信息;
       -a:输出所有的基本块的执行计数;
       -n:并创建输出文件。
       
      -

      参数

      +

      参数

      V语言文件:C语言源代码文件。

      @@ -101,7 +91,7 @@
      - - + + \ No newline at end of file diff --git a/c/gdb.html b/c/gdb.html index c0bb382554..afd9416573 100644 --- a/c/gdb.html +++ b/c/gdb.html @@ -10,7 +10,7 @@ gdb 命令,Linux gdb 命令详解:功能强大的程序调试器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      gdb

      +
      +

      gdb

      功能强大的程序调试器

      -

      补充说明

      +

      补充说明

      gdb命令 包含在GNU的gcc开发套件中,是功能强大的程序调试器。GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。

      -

      语法

      +

      语法

      gdb(选项)(参数)
       
      -

      选项

      +

      选项

      -cd:设置工作目录;
       -q:安静模式,不打印介绍信息和版本信息;
       -d:添加文件查找路径;
      @@ -139,13 +131,9 @@
             
           
         
      -  

      参数

      +

      参数

      文件:二进制可执行程序。

      -

      实例

      +

      实例

      以下是linux下dgb调试的一个实例,先给出一个示例用的小程序,C语言代码:

      #include <stdio.h>
       int nGlobalVar = 0;
      @@ -355,9 +343,7 @@ eax 0xbffff6a4 -1073744220
         
      (gdb) q
       The program is running. exit anyway? (y or n)
       
      -

      补充内容

      +

      补充内容

      gdb 教程:慕课网-Linux C语言指针与内存-第三章

      @@ -423,7 +409,7 @@ q 退出调试
      - - + + \ No newline at end of file diff --git a/c/get_module.html b/c/get_module.html index 35da56384a..cdba508d5a 100644 --- a/c/get_module.html +++ b/c/get_module.html @@ -10,7 +10,7 @@ get_module 命令,Linux get_module 命令详解:获取Linux内核模块的详细信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      get_module

      +
      +

      get_module

      获取Linux内核模块的详细信息

      -

      补充说明

      +

      补充说明

      get_module命令 用于获取Linux内核模块的详细信息。

      -

      语法

      +

      语法

      get_module 模块名
       
      -

      实例

      +

      实例

      使用lsmod命令查看内核模块:

      lsmod | head -5
       Module                  Size  Used by
      @@ -134,7 +126,7 @@ Sections:
       
      - - + + \ No newline at end of file diff --git a/c/getenforce.html b/c/getenforce.html index 41443b8463..d916acd7ad 100644 --- a/c/getenforce.html +++ b/c/getenforce.html @@ -10,7 +10,7 @@ getenforce 命令,Linux getenforce 命令详解:显示当前SELinux的应用模式,是强制、执行还是停用 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      getenforce

      +
      +

      getenforce

      显示当前SELinux的应用模式,是强制、执行还是停用

      -

      补充说明

      +

      补充说明

      grename命令 可以重命名卷组的名称。

      -

      语法

      +

      语法

      getenforce
       
      -

      例子

      +

      例子

      查看当前SELinux的应用模式。

      [root@localhost ~]# getenforce
       Enforcing
      @@ -96,7 +88,7 @@ Enforcing
       
      - - + + \ No newline at end of file diff --git a/c/getsebool.html b/c/getsebool.html index 48bff9d26e..e2ee709fab 100644 --- a/c/getsebool.html +++ b/c/getsebool.html @@ -10,7 +10,7 @@ getsebool 命令,Linux getsebool 命令详解:查询SElinux策略内各项规则的布尔值 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
      -

      getsebool

      +
      +

      getsebool

      查询SElinux策略内各项规则的布尔值

      -

      补充说明

      +

      补充说明

      getsebool命令 是用来查询SElinux策略内各项规则的布尔值。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

      -

      语法

      +

      语法

      getsebool [-a] [布尔值条款]
       
      -

      选项

      +

      选项

      -a:列出目前系统上面的所有布尔值条款设置为开启或关闭值。
       
      -

      实例

      +

      实例

      查询本系统内所有的布尔值设置状况:

      getsebool -a
       NetworkManager_disable_trans --> off
      @@ -109,7 +99,7 @@ setsebool -P httpd_enable_homedirs
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/git.html b/c/git.html
      index f4209fa11b..b4793b6ed2 100644
      --- a/c/git.html
      +++ b/c/git.html
      @@ -10,7 +10,7 @@
           
           git 命令,Linux git 命令详解:是目前世界上最先进的分布式版本控制系统 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,14 +50,10 @@
       
       
       
      -
      -

      git

      +
      +

      git

      是目前世界上最先进的分布式版本控制系统

      -

      补充说明

      +

      补充说明

      git命令 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

      Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

      事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

      @@ -69,18 +65,14 @@

      Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

      历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

      Git常用命令清单

      -

      语法

      +

      语法

      git [--version] [--help] [-C <path>] [-c name=value]
          [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
          [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
          [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
          <command> [<args>]
       
      -

      选项

      +

      选项

      add              将文件内容添加到索引
       bisect           通过二进制查找引入错误的更改
       branch           列出,创建或删除分支
      @@ -103,9 +95,7 @@ show             显示各种类型的对象
       status           显示工作树状态
       tag              创建,列出,删除或验证使用GPG签名的标签对象
       
      -

      例子

      +

      例子

      init

      git init #初始化

      status

      @@ -132,38 +122,26 @@ $ git clone file:///opt/git/project.git $ git clone ftp[s]://example.com/path/to/repo.git/ $ git clone rsync://example.com/path/to/repo.git/
      -

      配置

      +

      配置

      首先是配置帐号信息 ssh -T git@github.com 测试。

      -

      修改项目中的个人信息

      +

      修改项目中的个人信息

      git help config # 获取帮助信息,查看修改个人信息的参数  
       git config --global user.name "小弟调调"           # 修改全局名字
       git config --global user.email "wowohoo@qq.com"  # 修改全局邮箱
       git config --list         # 查看配置的信息  
       
      -

      配置自动换行

      +

      配置自动换行

      自动转换坑太大,提交到git是自动将换行符转换为lf

      git config --global core.autocrlf input
       
      -

      常见使用场景

      -

      创建SSH密钥

      +

      常见使用场景

      +

      创建SSH密钥

      这个密钥用来跟 github 通信,在本地终端里生成然后上传到 github

      ssh-keygen -t rsa -C 'wowohoo@qq.com' # 生成密钥  
       ssh-keygen -t rsa -C "wowohoo@qq.com" -f ~/.ssh/ww_rsa # 指定生成目录文件名字
       ssh -T git@github.com # 测试是否成功  
       
      -

      多账号ssh配置

      +

      多账号ssh配置

      1.生成指定名字的密钥

      ssh-keygen -t rsa -C "邮箱地址" -f ~/.ssh/jslite_rsa
      会生成 jslite_rsajslite_rsa.pub 这两个文件

      2.密钥复制到托管平台上

      @@ -208,9 +186,7 @@ ssh-add -l # 查看所有的key ssh-add -D # 删除所有的key ssh-add -d ~/.ssh/jslite_rsa # 删除指定的key
      -

      免密码登录远程服务器

      +

      免密码登录远程服务器

      $ ssh-keygen -t rsa -P '' -f ~/.ssh/aliyunserver.key
       $ ssh-copy-id -i ~/.ssh/aliyunserver.key.pub root@192.168.182.112 # 这里需要输入密码一次
       
      @@ -222,9 +198,7 @@ $ ssh-copy-id -i ~/.ssh/aliyunserver.key.pub root@192.168.182.112 https协议下提交代码免密码 +

      https协议下提交代码免密码

      git clone https://github.com/username/rep.git
       

      通过上面方式克隆可能需要密码,解决办法:进入当前克隆的项目 vi rep/.git/config 编辑 config, 按照下面方式修改,你就可以提交代码不用输入密码了。

      @@ -243,9 +217,7 @@ $ ssh-copy-id -i ~/.ssh/aliyunserver.key.pub root@192.168.182.112 = origin merge = refs/heads/master
      -

      文件推向3个git库

      +

      文件推向3个git库

      1. 增加3个远程库地址

      git remote add origin https://github.com/JSLite/JSLite.git  
       git remote set-url --add origin https://gitlab.com/wang/JSLite.js.git  
      @@ -280,21 +252,15 @@ $ git fetch -p
       

      5.更改pull

      只需要更改config文件里,那三个url的顺序即可,fetch-url会直接对应排行第一的那个utl连接。

      -

      修改远程仓库地址

      +

      修改远程仓库地址

      git remote remove origin  # 删除该远程路径  
       git remote add origin git@jslite.github.com:JSLite/JSLite.git  # 添加远程路径 
       
      -

      撤销远程记录

      +

      撤销远程记录

      git reset --hard HEAD~1 # 撤销一条记录   
       git push -f origin HEAD:master # 同步到远程仓库  
       
      -

      放弃本地的文件修改

      +

      放弃本地的文件修改

      git reset --hard FETCH_HEAD # FETCH_HEAD表示上一次成功git pull之后形成的commit点。然后git pull
       

      git reset --hard FETCH_HEAD 出现错误

      @@ -309,9 +275,7 @@ See git-pull(1
      git checkout -b temp # 新建+切换到temp分支 
       git checkout master
       
      -

      最简单放弃本地修改内容

      +

      最简单放弃本地修改内容

      # 如果有的修改以及加入暂存区的话
       git reset --hard 
       # 还原所有修改,不会删除新增的文件
      @@ -322,29 +286,21 @@ See git-pull(1
         

      通过存储暂存区stash,在删除暂存区的方法放弃本地修改。

      git stash && git stash drop 
       
      -

      回滚到某个commit提交

      +

      回滚到某个commit提交

      git revert HEAD~1 # 撤销一条记录 会弹出 commit 编辑
       git push # 提交回滚
       
      -

      回退到某一个版本

      +

      回退到某一个版本

      git reset --hard <hash>
       # 例如 git reset --hard a3hd73r
       # --hard代表丢弃工作区的修改,让工作区与版本代码一模一样,与之对应,
       # --soft参数代表保留工作区的修改。
       
      -

      去掉某个commit

      +

      去掉某个commit

      # 实质是新建了一个与原来完全相反的commit,抵消了原来commit的效果
       git revert <commit-hash> 
       
      -

      新建一个空分支

      +

      新建一个空分支

      # 这种方式新建的分支(gh-pages)是没有 commit 记录的
       git checkout --orphan gh-pages
       # 删除新建的gh-pages分支原本的内容,如果不删除,提交将作为当前分支的第一个commit
      @@ -352,9 +308,7 @@ See git-pull(1
       # 查看一下状态 有可能上面一条命令,没有删除还没有提交的的文件
       git state 
       
      -

      合并多个commit

      +

      合并多个commit

      # 这个命令,将最近4个commit合并为1个,HEAD代表当前版本。
       # 将进入VIM界面,你可以修改提交信息。
       git rebase -i HEAD~4 
      @@ -373,9 +327,7 @@ See git-pull(1
       # 将修改强制推送到前端
       git push -f origin master
       
      -

      修改远程Commit记录

      +

      修改远程Commit记录

      git commit --amend
       # amend只能修改没有提交到线上的,最后一次commit记录
       git rebase -i HEAD~3
      @@ -413,19 +365,13 @@ pick 6293516 feat# 最后,确保别人没有提交进行push,最好不要加 -f 强制推送
       git push -f origin master
       
      -

      添加忽略文件

      +

      添加忽略文件

      echo node_modules/ >> .gitignore
       
      -

      利用commit关闭一个issue

      +

      利用commit关闭一个issue

      这个功能在Github上可以玩儿,Gitlab上特别老的版本不能玩儿哦,那么如何跟随着commit关闭一个issue呢? 在confirm merge的时候可以使用一下命令来关闭相关issue:

      fixes #xxxfixed #xxxfix #xxxcloses #xxxclose #xxxclosed #xxx

      -

      同步fork的上游仓库

      +

      同步fork的上游仓库

      Github教程同步fork教程在Github上同步一个分支(fork)

      设置添加多个远程仓库地址。

      在同步之前,需要创建一个远程点指向上游仓库(repo).如果你已经派生了一个原始仓库,可以按照如下方法做。

      @@ -466,9 +412,7 @@ $ git remote -v # delete mode 100644 README # create mode 100644 README.md
      -

      批量修改历史commit中的名字和邮箱

      +

      批量修改历史commit中的名字和邮箱

      1.克隆仓库

      注意参数,这个不是普通的clone,clone下来的仓库并不能参与开发

      git clone --bare https://github.com/user/repo.git
      @@ -510,18 +454,14 @@ Ref 'refs/heads/master' was rewritten
       # 或者指定分枝
       git pull origin master --allow-unrelated-histories
       
      -

      查看某个文件历史

      +

      查看某个文件历史

      git log --pretty=oneline 文件名  # 列出文件的所有改动历史  
       git show c178bf49   # 某次的改动的修改记录  
       git log -p c178bf49 # 某次的改动的修改记录  
       git blame 文件名     # 显示文件的每一行是在那个版本最后修改。  
       git whatchanged 文件名  # 显示某个文件的每个版本提交信息:提交日期,提交人员,版本号,提交备注(没有修改细节)  
       
      -

      打造自己的git命令

      +

      打造自己的git命令

      git config --global alias.st status
       git config --global alias.br branch
       git config --global alias.co checkout
      @@ -530,44 +470,26 @@ Ref 'refs/heads/master' was rewritten
         

      配置好后再输入git命令的时候就不用再输入一大段了,例如我们要查看状态,只需:

      git st
       
      -

      中文乱码的解决方案

      +

      中文乱码的解决方案

      git config --global core.quotepath false
       
      -

      新建仓库

      -

      init

      +

      新建仓库

      +

      init

      git init #初始化

      -

      status

      +

      status

      git status #获取状态

      -

      add

      +

      add

      git add file # .或*代表全部添加
      git rm --cached <added_file_to_undo> # 在commit之前撤销git add操作
      git reset head # 好像比上面git rm --cached更方便

      -

      commit

      +

      commit

      git commit -m "message" #此处注意乱码

      -

      remote

      +

      remote

      git remote add origin git@github.com:JSLite/test.git #添加源

      -

      push

      +

      push

      git push -u origin master # push同事设置默认跟踪分支  
       git push origin master  
       git push -f origin master # 强制推送文件,缩写 -f(全写--force)
       
      -

      clone

      +

      clone

      git clone git://github.com/JSLite/JSLite.js.git
      git clone git://github.com/JSLite/JSLite.js.git mypro #克隆到自定义文件夹
      git clone [user@]example.com:path/to/repo.git/ #SSH协议还有另一种写法。

      git clone支持多种协议,除了HTTP(s)以外,还支持SSH、Git、本地文件协议等,下面是一些例子。git clone <版本库的网址> <本地目录名>

      $ git clone http[s]://example.com/path/to/repo.git/
      @@ -578,32 +500,22 @@ $ git clone file:///opt/git/project.git
       $ git clone ftp[s]://example.com/path/to/repo.git/
       $ git clone rsync://example.com/path/to/repo.git/
       
      -

      本地

      -

      help

      +

      本地

      +

      help

      git help config # 获取帮助信息  
       
      -

      add

      +

      add

      git add *   # 跟踪新文件   
       git add -u [path]   # 添加[指定路径下]已跟踪文件   
       
      -

      rm

      +

      rm

      rm *&git rm *          # 移除文件  
       git rm -f *            # 移除文件  
       git rm --cached *      # 取消跟踪  
       git mv file_from file_to  # 重命名跟踪文件  
       git log   # 查看提交记录  
       
      -

      commit

      +

      commit

      git commit #提交更新   
       git commit -m 'message' #提交说明   
       git commit -a #跳过使用暂存区域,把所有已经跟踪过的文件暂存起来一并提交   
      @@ -635,8 +547,8 @@ $ git clone rsync://example.com/path/to/repo
       
    - - + + \n\n''1.详细描述'
    @@ -662,39 +574,31 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
    - - + + \n''2.详细描述' #提交简要描述和详细描述
    -

    reset

    +

    reset

    git reset HEAD *  # 取消已经暂存的文件   
     git reset --mixed HEAD * # 同上   
     git reset --soft HEAD *  # 重置到指定状态,不会修改索引区和工作树   
     git reset --hard HEAD *  # 重置到指定状态,会修改索引区和工作树   
     git reset -- files *     # 重置index区文件   
     
    -

    revert

    +

    revert

    git revert HEAD   # 撤销前一次操作   
     git revert HEAD~  # 撤销前前一次操作   
     git revert commit # 撤销指定操作   
     
    -

    checkout

    +

    checkout

    git checkout -- file  # 取消对文件的修改(从暂存区——覆盖worktree file)  
     git checkout branch|tag|commit -- file_name  # 从仓库取出file覆盖当前分支   
     git checkout HEAD~1 [文件]  # 将会更新 working directory 去匹配某次 commit   
     git checkout -- .          # 从暂存区取出文件覆盖工作区   
     git checkout -b gh-pages  0c304c9  # 这个表示 从当前分支 commit 哈希值为 0c304c9 的节点,分一个新的分支gh-pages出来,并切换到 gh-pages   
     
    -

    diff

    +

    diff

    git diff file     # 查看指定文件的差异   
     git diff --stat   # 查看简单的diff结果   
     git diff  # 比较Worktree和Index之间的差异   
    @@ -706,9 +610,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git diff master..test   # 上面这条命令只显示两个分支间的差异  
     git diff master...test    # 你想找出‘master’,‘test’的共有 父分支和'test'分支之间的差异,你用3个‘.'来取代前面的两个'.'  
     
    -

    stash

    +

    stash

    git stash # 将工作区现场(已跟踪文件)储藏起来,等以后恢复后继续工作。   
     git stash list  # 查看保存的工作现场   
     git stash apply # 恢复工作现场   
    @@ -716,20 +618,14 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git stash pop   # 恢复的同时直接删除stash内容   
     git stash apply stash@{0} # 恢复指定的工作现场,当你保存了不只一份工作现场时。   
     
    -

    merge

    +

    merge

    git merge --squash test # 合并压缩,将test上的commit压缩为一条   
     
    -

    cherry-pick

    +

    cherry-pick

    git cherry-pick commit    # 拣选合并,将commit合并到当前分支   
     git cherry-pick -n commit # 拣选多个提交,合并完后可以继续拣选下一个提交   
     
    -

    rebase

    +

    rebase

    git rebase master   # 将master分之上超前的提交,变基到当前分支  
     git rebase --onto master 169a6  # 限制回滚范围,rebase当前分支从169a6以后的提交  
     git rebase --interactive # 交互模式,修改commit   
    @@ -737,12 +633,8 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git rebase --skip        # 跳过   
     git rebase --abort       # 取消合并    
     
    -

    分支branch

    -

    删除

    +

    分支branch

    +

    删除

    git push origin :branchName  # 删除远程分支  
     git push origin --delete new # 删除远程分支new   
     git branch -d branchName     # 删除本地分支,强制删除用-D  
    @@ -750,30 +642,20 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git branch -D test      # 强制删除本地test分支   
     git remote prune origin # 远程删除了,本地还能看到远程存在,这条命令删除远程不存在的分支
     
    -

    提交

    +

    提交

    git push -u origin branchName # 提交分支到远程origin主机中  
     
    -

    拉取

    +

    拉取

    git fetch -p #拉取远程分支时,自动清理 远程分支已删除,本地还存在的对应同名分支。

    -

    分支合并

    +

    分支合并

    git merge branchName      # 合并分支 - 将分支branchName和当前所在分支合并   
     git merge origin/master   # 在本地分支上合并远程分支。   
     git rebase origin/master  # 在本地分支上合并远程分支。   
     git merge test            # 将test分支合并到当前分支   
     
    -

    重命名

    +

    重命名

    git branch -m old new #重命名分支

    -

    查看

    +

    查看

    git branch      # 列出本地分支   
     git branch -r   # 列出远端分支   
     git branch -a   # 列出所有分支   
    @@ -782,30 +664,22 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git branch --no-merge   # 查看为合并到当前分支的分支   
     git remote show origin  # 可以查看remote地址,远程分支
     
    -

    新建

    +

    新建

    git branch test # 新建test分支  
     git branch newBrach 3defc69 # 指定哈希3defc69,新建分支名字为newBrach
     git checkout -b newBrach origin/master # 取回远程主机的更新以后,在它的基础上创建一个新的分支  
     git checkout -b newBrach 3defc69 # 以哈希值3defc69,新建 newBrach 分支,并切换到该分支
     
    -

    连接

    +

    连接

    git branch --set-upstream dev origin/dev     # 将本地dev分支与远程dev分支之间建立链接  
     git branch --set-upstream master origin/next # 手动建立追踪关系  
     
    -

    分支切换

    +

    分支切换

    git checkout test     # 切换到test分支   
     git checkout -b test  # 新建+切换到test分支   
     git checkout -b test dev # 基于dev新建test分支,并切换   
     
    -

    远端

    +

    远端

    git fetch <远程主机名> <分支名>   # fetch取回所有分支(branch)的更新  
     git fetch origin remotebranch[:localbranch]   #  从远端拉去分支[到本地指定分支]   
     git merge origin/branch   # 合并远端上指定分支   
    @@ -815,9 +689,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git push origin :remotebranch   # 删除远端指定分支   
     git checkout -b [--track] test origin/dev # 基于远端dev分支,新建本地test分支[同时设置跟踪]  
     
    -

    submodule

    +

    submodule

    克隆项目同时克隆submodule

    git clone https://github.com/jaywcjlove/handbook.git --depth=1 --recurse-submodules
     
    @@ -836,14 +708,10 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h git submodule foreach --recursive git submodule init git submodule foreach --recursive git submodule update
    -

    删除文件

    +

    删除文件

    git rm -rf node_modules/
     
    -

    remote

    +

    remote

    git是一个分布式代码管理工具,所以可以支持多个仓库,在git里,服务器上的仓库在本地称之为remote。个人开发时,多源用的可能不多,但多源其实非常有用。

    git remote add origin1 git@github.com:yanhaijing/data.js.git  
     git remote    # 显示全部源  
    @@ -852,9 +720,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git remote rm origin    # 删除  
     git remote show origin  # 查看指定源的全部信息  
     
    -

    标签tag

    +

    标签tag

    当开发到一定阶段时,给程序打标签是非常棒的功能。

    git tag -a v0.1 -m 'my version 1.4' # 新建带注释标签   
     git push origin --tags              # 一次性推送所有分支 
    @@ -870,9 +736,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
     git pull --all # 获取远程所有内容包括tag  
     git --git-dir='<绝对地址>/.git' describe --tags HEAD # 查看本地版本信息  
     
    -

    日志log

    +

    日志log

    git config format.pretty oneline  #显示历史记录时,每个提交的信息只显示一行   
     git config color.ui true #彩色的 git 输出   
     git log #查看最近的提交日志   
    @@ -951,9 +815,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
         
       
       

    Pretty Formats

    -

    重写历史

    +

    重写历史

    git commit --amend    # 改变最近一次提交  
     git rebase -i HEAD~3  # 修改最近三次的提交说明,或者其中任意一次  
     git commit --amend    # 保存好了,这些指示很明确地告诉了你该干什么  
    @@ -967,22 +829,16 @@ pick a5f4a0d added cat-file
       
    pick 310154e updated README formatting and added blame
     pick f7f3f6d changed my name a bit
     
    -

    删除仓库

    +

    删除仓库

    cd ..
     rm -rf repo.git
     

    Github官方教程

    -

    其它

    +

    其它

    git help *  # 获取命令的帮助信息  
     git status  # 获取当前的状态,非常有用,因为git会提示接下来的能做的操作  
     
    -

    报错问题解决

    +

    报错问题解决

    1. git fatal: protocol error: bad line length character: No s

    解决办法:更换remote地址为 http/https

    2. The requested URL returned error: 403 Forbidden while accessing

    @@ -1005,9 +861,7 @@ rm -rf repo.git

    解决这个问题方法是:

    git config --global core.quotepath false
     
    -

    参考资料

    +

    参考资料

    - - + + \ No newline at end of file diff --git a/c/gpasswd.html b/c/gpasswd.html index 709d6100fa..3fac7c0165 100644 --- a/c/gpasswd.html +++ b/c/gpasswd.html @@ -10,7 +10,7 @@ gpasswd 命令,Linux gpasswd 命令详解:Linux下工作组文件的管理工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    gpasswd

    +
    +

    gpasswd

    Linux下工作组文件的管理工具

    -

    补充说明

    +

    补充说明

    gpasswd命令 是Linux下工作组文件/etc/group/etc/gshadow管理工具。

    -

    语法

    +

    语法

    gpasswd(选项)(参数)
     
    -

    选项

    +

    选项

    -a:添加用户到组;
     -d:从组删除用户;
     -A:指定管理员;
    @@ -74,13 +66,9 @@
     -r:删除密码;
     -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
     
    -

    参数

    +

    参数

    组:指定要管理的工作组。

    -

    实例

    +

    实例

    如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可。

    gpasswd groupname
     
    @@ -121,7 +109,7 @@ gpasswd -a allen users
    - - + + \ No newline at end of file diff --git a/c/gpm.html b/c/gpm.html index 1dedc91f3e..8a1870dfeb 100644 --- a/c/gpm.html +++ b/c/gpm.html @@ -10,7 +10,7 @@ gpm 命令,Linux gpm 命令详解:提供文字模式下的滑鼠事件处理 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    gpm

    +
    +

    gpm

    提供文字模式下的滑鼠事件处理

    -

    补充说明

    +

    补充说明

    gpm命令 是Linux的虚拟控制台下的鼠标服务器,用于在虚拟控制台下实现鼠标复制和粘贴文本的功能。

    -

    语法

    +

    语法

    gpm(选项)
     
    -

    选项

    +

    选项

    -a:设置加速值;
     -b:设置波特率;
     -B:设置鼠标按键次序;
    @@ -98,7 +90,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/grep.html b/c/grep.html index ba84f014b1..b34a130041 100644 --- a/c/grep.html +++ b/c/grep.html @@ -10,7 +10,7 @@ grep 命令,Linux grep 命令详解:强大的文本搜索工具 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    grep

    +
    +

    grep

    强大的文本搜索工具

    -

    补充说明

    +

    补充说明

    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。

    -

    选项

    +

    选项

    -a --text  # 不要忽略二进制数据。
     -A <显示行数>   --after-context=<显示行数>   # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
     -b --byte-offset                           # 在显示符合范本样式的那一行之外,并显示该行之前的内容。
    @@ -92,9 +86,7 @@
     -o # 只输出文件中匹配到的部分。
     -m <num> --max-count=<num> # 找到num行结果后停止查找,用来限制匹配行数
     
    -

    规则表达式

    +

    规则表达式

    ^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
     $    # 锚定行的结束 如:'grep
     
    @@ -120,8 +112,8 @@ $ # 锚定行的结束 如:'grep
    - - + + 匹配所有以grep结尾的行。 . # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。 @@ -139,9 +131,7 @@ x\{\W # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b # 单词锁定符,如: '\bgrep\b'只匹配grep。
    -

    grep命令常见用法

    +

    grep命令常见用法

    在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:

    grep match_pattern file_name
     grep "match_pattern" file_name
    @@ -189,9 +179,7 @@ line.
       

    搜索多个文件并查找匹配文本在哪些文件中:

    grep -l "text" file1 file2 file3...
     
    -

    grep递归搜索文件

    +

    grep递归搜索文件

    在多级目录中对文本进行递归搜索:

    grep "text" . -r -n
     # .表示当前目录。
    @@ -295,7 +283,7 @@ b
     
    - - + + \ No newline at end of file diff --git a/c/groupadd.html b/c/groupadd.html index ca04f1b913..5a0a763109 100644 --- a/c/groupadd.html +++ b/c/groupadd.html @@ -10,7 +10,7 @@ groupadd 命令,Linux groupadd 命令详解:用于创建一个新的工作组 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    groupadd

    +
    +

    groupadd

    用于创建一个新的工作组

    -

    补充说明

    +

    补充说明

    groupadd命令 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

    -

    语法

    +

    语法

    groupadd(选项)(参数)
     
    -

    选项

    +

    选项

    -g:指定新建工作组的id;
     -r:创建系统工作组,系统工作组的组ID小于500;
     -K:覆盖配置文件“/ect/login.defs”;
     -o:允许添加组ID号不唯一的工作组。
     
    -

    参数

    +

    参数

    组名:指定新建工作组的组名。

    -

    实例

    +

    实例

    建立一个新组,并设置组ID加入系统:

    groupadd -g 344 jsdigname
     
    @@ -108,7 +96,7 @@
    - - + + \ No newline at end of file diff --git a/c/groupdel.html b/c/groupdel.html index 3911a57f50..83426e668d 100644 --- a/c/groupdel.html +++ b/c/groupdel.html @@ -10,7 +10,7 @@ groupdel 命令,Linux groupdel 命令详解:用于删除指定的工作组 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    groupdel

    +
    +

    groupdel

    用于删除指定的工作组

    -

    补充说明

    +

    补充说明

    groupdel命令 用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

    -

    语法

    +

    语法

    groupdel(参数)
     
    -

    参数

    +

    参数

    组:要删除的工作组名。

    -

    实例

    +

    实例

    groupadd damon  //创建damon工作组
     groupdel damon  //删除这个工作组
     
    @@ -99,7 +89,7 @@
    - - + + \ No newline at end of file diff --git a/c/groupmod.html b/c/groupmod.html index dd13a66def..cfee7b77d4 100644 --- a/c/groupmod.html +++ b/c/groupmod.html @@ -10,7 +10,7 @@ groupmod 命令,Linux groupmod 命令详解:更改群组识别码或名称 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    groupmod

    +
    +

    groupmod

    更改群组识别码或名称

    -

    补充说明

    +

    补充说明

    groupmod命令 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

    -

    语法

    +

    语法

    groupmod(选项)(参数)
     
    -

    选项

    +

    选项

    -g<群组识别码>:设置欲使用的群组识别码;
     -o:重复使用群组识别码;
     -n<新群组名称>:设置欲使用的群组名称。
     
    -

    参数

    +

    参数

    组名:指定要修改的工作的组名。

    @@ -100,7 +90,7 @@
    - - + + \ No newline at end of file diff --git a/c/groups.html b/c/groups.html index 1143af468c..9182958640 100644 --- a/c/groups.html +++ b/c/groups.html @@ -10,7 +10,7 @@ groups 命令,Linux groups 命令详解:打印指定用户所在组的名称。 - Linux 命令搜索引擎 - + @@ -50,46 +50,30 @@ -
    -

    groups

    +
    +

    groups

    打印指定用户所在组的名称。

    -

    概要

    +

    概要

    groups [OPTION]... [username]...
     
    -

    主要用途

    +

    主要用途

    • 打印指定用户所在组的名称。
    -

    选项

    +

    选项

    --help       显示帮助信息并退出。
     --version    显示版本信息并退出。
     
    -

    参数

    +

    参数

    username(可选):可以是一到多个,不提供时默认为当前用户。

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    显示linux用户所属的组

    [root@localhost ~]# groups linux
     linux : linux adm dialout cdrom plugdev lpadmin admin sambashare
     
    -

    注意

    +

    注意

    1. 该命令等价于 id -Gn
    2. 每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组。
    3. @@ -120,7 +104,7 @@ linux : linux adm dialout cdrom pl
    - - + + \ No newline at end of file diff --git a/c/grpck.html b/c/grpck.html index d3c6d09ca7..18b51bd475 100644 --- a/c/grpck.html +++ b/c/grpck.html @@ -10,7 +10,7 @@ grpck 命令,Linux grpck 命令详解:用于验证组文件的完整性 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    grpck

    +
    +

    grpck

    用于验证组文件的完整性

    -

    补充说明

    +

    补充说明

    grpck命令 用于验证组文件的完整性,在验证之前,需要先锁定(lock)组文件/etc/group/etc/shadow

    grpck命令检查数据是否正确存放,每条记录是否都包含足够的信息,是否有一个唯一的组名,是否包含正确的用户,是否正确设置了组的管理员等。grpck检查发现错误以后,在命令行提示用户是否删除错误的记录。如果用户没有明确回答删除记录,grpck终止运行。

    -

    语法

    +

    语法

    grpck(选项)
     
    -

    选项

    +

    选项

    -r:只读模式;
     -s:排序组id。
     
    -

    实例

    +

    实例

    对组账号和影子文件进行验证:

    grpck   # 必须以管理员身份运行
     grpck /etc/group /etc/gshadow   # 后面两句一样,如果没有输出信息,则表示没有错误。
    @@ -115,7 +105,7 @@ grpck: the files have been updated  # 这时已经
     
    - - + + \ No newline at end of file diff --git a/c/grpconv.html b/c/grpconv.html index 911b44f3e5..460d3e0622 100644 --- a/c/grpconv.html +++ b/c/grpconv.html @@ -10,7 +10,7 @@ grpconv 命令,Linux grpconv 命令详解:用来开启群组的投影密码 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    grpconv

    +
    +

    grpconv

    用来开启群组的投影密码

    -

    补充说明

    +

    补充说明

    grpconv命令 用来开启群组的投影密码。Linux系统里的用户和群组密码,分别存放在/etc目录下的passwd和group文件中。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符。投影密码的功能可随时开启或关闭,您只需执行grpconv指令就能开启群组投影密码。

    -

    语法

    +

    语法

    grpconv
     
    -

    实例

    +

    实例

    设置cdy组密码

    groupmod --password 123456 cdy
     cat /etc/group | grep cdy
    @@ -106,7 +98,7 @@ cdy:123456::      # 已经移到影子文件了
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/grpunconv.html b/c/grpunconv.html
    index 9da6fbe453..9f22019337 100644
    --- a/c/grpunconv.html
    +++ b/c/grpunconv.html
    @@ -10,7 +10,7 @@
         
         grpunconv 命令,Linux grpunconv 命令详解:用来关闭群组的投影密码 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    grpunconv

    +
    +

    grpunconv

    用来关闭群组的投影密码

    -

    补充说明

    +

    补充说明

    grpunconv命令 用来关闭群组的投影密码。它会把密码从gshadow文件内,回存到group文件里。

    -

    语法

    +

    语法

    grpunconv
     
    -

    实例

    +

    实例

    未关闭的情况

    cat /etc/gshadow | grep cdy
     cdy:123456::
    @@ -104,7 +96,7 @@ cdy:123456:1000:
     
    - - + + \ No newline at end of file diff --git a/c/grub.html b/c/grub.html index ca88dcef54..4b0cf726bb 100644 --- a/c/grub.html +++ b/c/grub.html @@ -10,7 +10,7 @@ grub 命令,Linux grub 命令详解:多重引导程序grub的命令行shell工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    grub

    +
    +

    grub

    多重引导程序grub的命令行shell工具

    -

    补充说明

    +

    补充说明

    grub命令 是多重引导程序grub的命令行shell工具。

    -

    语法

    +

    语法

    grub(选项)
     
    -

    选项

    +

    选项

    --batch:打开批处理模式;
     --boot-drive=<驱动器>:指定stage2的引导驱动器;
     --config-file<配置文件>:指定stage2的配置文件;
    @@ -79,9 +71,7 @@
     --probe-second-floppy:检测第二个软盘驱动器;
     --read-only:只读模式。
     
    -

    实例

    +

    实例

    利用grub命令来启动损坏的Linux系统,可能你的电脑因为某些原因损坏不能自动启动了。当然原因很多,可能的现象也很多。

    这里说一下这种情况下的处理方法,即:屏幕上提示grub>,但你的硬盘上数据没有丢失,各分区都是好的。这种情况是你的grub信息损坏了,但比较严重的是系统启动不了。

    当然,在正常启动情况下,屏幕上出现grub的启动项选择菜单时按c键也是可以进入grub>状态的。这时候我们需要用grub的命令来手工启动系统。

    @@ -127,7 +117,7 @@ boot
    - - + + \ No newline at end of file diff --git a/c/gunzip.html b/c/gunzip.html index f57b54761d..1a1f3e0fb6 100644 --- a/c/gunzip.html +++ b/c/gunzip.html @@ -10,7 +10,7 @@ gunzip 命令,Linux gunzip 命令详解:用来解压缩文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    gunzip

    +
    +

    gunzip

    用来解压缩文件

    -

    补充说明

    +

    补充说明

    gunzip命令 用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

    -

    语法

    +

    语法

    gunzip(选项)(参数)
     
    -

    选项

    +

    选项

    -a或——ascii:使用ASCII文字模式;
     -c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备;
     -f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
    @@ -82,13 +74,9 @@
     -v或——verbose:显示指令执行过程;
     -V或——version:显示版本信息;
     
    -

    参数

    +

    参数

    文件列表:指定要解压缩的压缩包。

    -

    实例

    +

    实例

    首先将/etc目录下的所有文件以及子目录进行压缩,备份压缩包etc.zip到/opt目录,然后对etc.zip文件进行gzip压缩,设置gzip的压缩级别为9。

    zip –r /opt/etc.zip /etc
     gzip -9v /opt/etc.zip
    @@ -129,7 +117,7 @@ compressed        uncompressed ratio uncompressed_name
     
    - - + + \ No newline at end of file diff --git a/c/gzexe.html b/c/gzexe.html index 70d2618b90..34f6468c1b 100644 --- a/c/gzexe.html +++ b/c/gzexe.html @@ -10,7 +10,7 @@ gzexe 命令,Linux gzexe 命令详解:用来压缩可执行文件 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    gzexe

    +
    +

    gzexe

    用来压缩可执行文件

    -

    补充说明

    +

    补充说明

    gzexe命令 用来压缩可执行文件,压缩后的文件仍然为可执行文件,在执行时进行自动解压缩。当您去执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。这个命令也可以看成是gunzip命令的一个扩展。

    -

    语法

    +

    语法

    gzexe(选项)(参数)
     
    -

    选项

    +

    选项

    -d:解压缩被gzexe压缩过的可执行文件。
     
    -

    参数

    +

    参数

    文件:指定需要压缩的可执行文件。

    @@ -98,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/gzip.html b/c/gzip.html index f66c211768..e38dfc36e9 100644 --- a/c/gzip.html +++ b/c/gzip.html @@ -10,7 +10,7 @@ gzip 命令,Linux gzip 命令详解:用来压缩文件 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    gzip

    +
    +

    gzip

    用来压缩文件

    -

    补充说明

    +

    补充说明

    gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。

    gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

    -

    语法

    +

    语法

    gzip(选项)(参数)
     
    -

    选项

    +

    选项

    -a或——ascii:使用ASCII文字模式;
     -d或--decompress或----uncompress:解开压缩文件;
     -f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
    @@ -88,13 +80,9 @@
     -num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。
     -c或--stdout或--to-stdout:保留原始文件,生成标准输出流(结合重定向使用)。
     
    -

    参数

    +

    参数

    文件列表:指定要压缩的文件列表。

    -

    实例

    +

    实例

    把test6目录下的每个文件压缩成.gz文件

    gzip *
     
    @@ -143,7 +131,7 @@
    - - + + \ No newline at end of file diff --git a/c/halt.html b/c/halt.html index 5aae3374da..44697e4e07 100644 --- a/c/halt.html +++ b/c/halt.html @@ -10,7 +10,7 @@ halt 命令,Linux halt 命令详解:关闭正在运行的Linux操作系统 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    halt

    +
    +

    halt

    关闭正在运行的Linux操作系统

    -

    补充说明

    +

    补充说明

    halt命令 用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。

    -

    语法

    +

    语法

    halt(选项)
     
    -

    选项

    +

    选项

    -d:不要在wtmp中记录;
     -f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;
     -i:在halt之前,关闭全部的网络界面;
    @@ -74,9 +66,7 @@
     -p:halt之后,执行poweroff;
     -w:仅在wtmp中记录,而不实际结束系统。
     
    -

    实例

    +

    实例

    halt -p     # 关闭系统后关闭电源。
     halt -d     # 关闭系统,但不留下纪录。
     
    @@ -105,7 +95,7 @@
    - - + + \ No newline at end of file diff --git a/c/hdparm.html b/c/hdparm.html index 8bd14a36fe..f35b4b124c 100644 --- a/c/hdparm.html +++ b/c/hdparm.html @@ -10,7 +10,7 @@ hdparm 命令,Linux hdparm 命令详解:显示与设定硬盘的参数 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    hdparm

    +
    +

    hdparm

    显示与设定硬盘的参数

    -

    补充说明

    +

    补充说明

    hdparm命令 提供了一个命令行的接口用于读取和设置IDE或SCSI硬盘参数。

    -

    语法

    +

    语法

    hdparm(选项)(参数)
     
    -

    选项

    +

    选项

    -a<快取分区>:设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定;
     -A<01>:启动或关闭读取文件时的快取功能;
     -c<I/O模式>:设定IDE32位I/O模式;
    @@ -96,13 +88,9 @@
     -Y:使IDE硬盘进入睡眠模式;
     -Z:关闭某些Seagate硬盘的自动省电功能。
     
    -

    参数

    +

    参数

    设备文件:指定id驱动对应的设备文件名。

    -

    实例

    +

    实例

    显示硬盘的相关设置:

    hdparm /dev/sda
     /dev/sda:
    @@ -169,7 +157,7 @@ hdparm -m    #参数值为整数值如8 /dev/sda
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/head.html b/c/head.html
    index 6338de49b2..83d1ad4a8f 100644
    --- a/c/head.html
    +++ b/c/head.html
    @@ -10,7 +10,7 @@
         
         head 命令,Linux head 命令详解:显示文件的开头部分。 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,27 +50,19 @@
     
     
     
    -
    -

    head

    +
    +

    head

    显示文件的开头部分。

    -

    概要

    +

    概要

    head [OPTION]... [FILE]...
     
    -

    主要用途

    +

    主要用途

    • 在未指定行数时默认显示前10行。
    • 处理多个文件时会在各个文件之前附加含有文件名的行。
    • 当没有文件或文件为-时,读取标准输入。
    -

    选项

    +

    选项

    -c, --bytes=[-]NUM       显示前NUM字节;如果NUM前有"-",那么会打印除了文件末尾的NUM字节以外的其他内容。
     -n, --lines=[-]NUM       显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行。
     -q, --quiet, --silent    不打印文件名行。
    @@ -94,17 +86,11 @@ T、P、E、Z、Y等以此类推。
     MiB=M
     以此类推。
     
    -

    参数

    +

    参数

    FILE(可选):要处理的文件,可以为一或多个。

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    # 查看历史文件的前6行:
     [user2@pc ~]$ head -n 6 ~/.bash_history
     #1575425555
    @@ -140,9 +126,7 @@ T、P、E、Z、Y等以此类推。
     fi
     
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 headinfo coreutils 'head invocation'
    @@ -171,7 +155,7 @@ T、P、E、Z、Y等以此类推。
    - - + + \ No newline at end of file diff --git a/c/help.html b/c/help.html index 4771b79dab..f760e3cc94 100644 --- a/c/help.html +++ b/c/help.html @@ -10,7 +10,7 @@ help 命令,Linux help 命令详解:该命令是bash内建命令,用于显示bash内建命令的帮助信息。 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    help

    +
    +

    help

    该命令是bash内建命令,用于显示bash内建命令的帮助信息。

    -

    补充说明

    +

    补充说明

    help命令 help命令只能显示bash内建命令的帮助信息,而对于外部命令的帮助信息只能使用man或者info命令查看。

    -

    语法

    +

    语法

    help(选项)(参数)
     
    -

    选项

    +

    选项

    -d:显示内建命令的简要描述。
     -m:按照man手册的格式输出内建命令的帮助信息。
     -s:仅输出内建命令的命令格式。
     不指定选项时:输出的帮助信息类似于-m选项,但是缺少段落名称和'SEE ALSO''IMPLEMENTATION'部分。
     
    -

    参数

    +

    参数

    bash内建命令(可以为多个,请用空格分隔开)。

    -

    常见问题

    +

    常见问题

    Q:有哪些命令是bash内建命令?我如何判断一个命令是否为bash内建命令?

    A:您可以在终端使用 'man builtin' 或 'man builtins' 来获取;您可以查看bash内建命令 'type' 的帮助信息。

    Q:那么help命令本身的帮助信息如何获取?

    @@ -89,9 +77,7 @@

    请参考 'builtin' 命令

    Q:我需要获得更多的bash的相关帮助信息

    A:限于篇幅和主题,您可以在终端执行 'man bash' , 'info bash' ,访问bash官方网站,以及搜索引擎等。

    -

    实例

    +

    实例

    使用help命令显示shell内部shopt命令的帮助信息,输入如下命令:

    help shopt                #获取shopt命令的帮助信息
     shopt: shopt [-pqsu] [-o long-option] optname [optname...]
    @@ -129,7 +115,7 @@ shopt: shopt 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/hexdump.html b/c/hexdump.html
    index b97b1d166c..bc875fbd0d 100644
    --- a/c/hexdump.html
    +++ b/c/hexdump.html
    @@ -10,7 +10,7 @@
         
         hexdump 命令,Linux hexdump 命令详解:显示文件十六进制格式 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    hexdump

    +
    +

    hexdump

    显示文件十六进制格式

    -

    补充说明

    +

    补充说明

    hexdump命令 一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。

    -

    语法

    +

    语法

    hexdump [选项] [文件]...
     
    -

    选项

    +

    选项

    -n length 只格式化输入文件的前length个字节。
     -C 输出规范的十六进制和ASCII码。
     -b 单字节八进制显示。
    @@ -90,9 +82,7 @@
     %_p:对不能以常规字符显示的用 . 代替。
     

    同一行如果要显示多个格式字符串,则可以跟多个-e选项。

    -

    实例

    +

    实例

    hexdump -e '16/1 "%02X " "  |  "' -e '16/1 "%_p" "\n"' test
     00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  |  ................  
     10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F  |  ................  
    @@ -123,7 +113,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/history.html b/c/history.html index 2d934513bc..f9dad67283 100644 --- a/c/history.html +++ b/c/history.html @@ -10,7 +10,7 @@ history 命令,Linux history 命令详解:显示或操作历史列表。 - Linux 命令搜索引擎 - + @@ -50,21 +50,15 @@ -
    -

    history

    +
    +

    history

    显示或操作历史列表。

    -

    概要

    +

    概要

    history [-c] [-d offset] [n]
     history -anrw [filename]
     history -ps arg [arg...]
     
    -

    主要用途

    +

    主要用途

    • 显示历史列表。

      @@ -73,9 +67,7 @@

      操作历史列表。

    -

    选项

    +

    选项

    -c           清空历史列表。
     -d offset    根据offset删除记录。如果是正数则表示offset位置的记录,如果为负数则表示从结尾向前offset位置的记录。
     -a           将当前终端的历史记录行添加到历史记录文件。
    @@ -85,18 +77,12 @@
     -p           在每个arg上执行历史记录扩展并在标准输出上显示结果,而不将结果存储在历史记录列表中。
     -s           将每个arg作为单个条目附加到历史记录列表。
     
    -

    参数

    +

    参数

    n:可选,只列出最近的n条记录。

    filename:可选,表示历史文件;默认调用顺序为filename、环境变量HISTFILE~/.bash_history

    -

    返回值

    +

    返回值

    返回成功,除非提供了非法选项或出现了错误。

    -

    例子

    +

    例子

    使用history命令显示最近使用的10条历史命令

    [root@localhost ~]# history 10
        92  ls
    @@ -120,9 +106,7 @@
     # 执行最后一条 xxx 开头的命令
     [root@localhost ~]# !xxx
     
    -

    注意

    +

    注意

    1. 在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2
    2. 关闭终端后,历史列表将被写入历史文件~/.bash_history
    3. @@ -155,7 +139,7 @@
    - - + + \ No newline at end of file diff --git a/c/host.html b/c/host.html index 2199b0ab28..60041a622d 100644 --- a/c/host.html +++ b/c/host.html @@ -10,7 +10,7 @@ host 命令,Linux host 命令详解:常用的分析域名查询工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    host

    +
    +

    host

    常用的分析域名查询工具

    -

    补充说明

    +

    补充说明

    host命令 是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。

    -

    语法

    +

    语法

    host(选项)(参数)
     
    -

    选项

    +

    选项

    -a:显示详细的DNS信息;
     -c<类型>:指定查询类型,默认值为“IN“;
     -C:查询指定主机的完整的SOA记录;
    @@ -78,13 +70,9 @@
     -4:使用IPv4;
     -6:使用IPv6.
     
    -

    参数

    +

    参数

    主机:指定要查询信息的主机信息。

    -

    实例

    +

    实例

    [root@localhost ~]# host www.jsdig.com 
     www.jsdig.com is an alias for host.1.jsdig.com.
     host.1.jsdig.com has address 100.42.212.8
    @@ -127,7 +115,7 @@ Received 54 bytes from 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/hostid.html b/c/hostid.html
    index 122fd02167..1b0958ef73 100644
    --- a/c/hostid.html
    +++ b/c/hostid.html
    @@ -10,7 +10,7 @@
         
         hostid 命令,Linux hostid 命令详解:显示当前主机的十六进制数字标识。 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,38 +50,26 @@
     
     
     
    -
    -

    hostid

    +
    +

    hostid

    显示当前主机的十六进制数字标识。

    -

    概要

    +

    概要

    hostid [OPTION]...
     
    -

    主要用途

    +

    主要用途

    • 显示当前主机的十六进制标识符。
    • 用来限制软件的使用权限,不可改变。
    -

    选项

    +

    选项

    --help       显示帮助信息并退出。
     --version    显示版本信息并退出。
     
    -

    例子

    +

    例子

    [root@localhost ~]# hostid
     007f0100
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 hostidinfo coreutils 'hostid invocation'
    @@ -110,7 +98,7 @@
    - - + + \ No newline at end of file diff --git a/c/hostname.html b/c/hostname.html index c82340e7ae..2a0a91568b 100644 --- a/c/hostname.html +++ b/c/hostname.html @@ -10,7 +10,7 @@ hostname 命令,Linux hostname 命令详解:显示和设置系统的主机名 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    hostname

    +
    +

    hostname

    显示和设置系统的主机名

    -

    补充说明

    +

    补充说明

    hostname命令 用于显示和设置系统的主机名称。 @@ -66,9 +62,7 @@

  • 环境变量 HOSTNAME 也保存了当前的主机名。
  • 在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重启之后还是原来的主机名。如果需要永久修改主机名,需要修改 /etc/hosts/etc/sysconfig/network 的相关内容并进行重启;也可以使用 hostnamectl 命令进行永久修改。
  • -

    语法

    +

    语法

    hostname [-b] {hostname|-F file}           设置主机名称(或从文件获取)
     hostname [-a|-A|-d|-f|-i|-I|-s|-y]         显示格式化的名称
     hostname                                   显示主机名称
    @@ -80,9 +74,7 @@ dnsdomainname                              显示 DNS 主机名称
     
     hostname -V|--version|-h|--help            打印信息并退出
     
    -

    选项

    +

    选项

    -a, --alias               显示主机别名
     -A, --all-fqdns           显示所有FQDN名称
     -b, --boot                如果没有可用的主机名,则设置默认主机名
    @@ -94,9 +86,7 @@ dnsdomainname                              显示 DNS 主机名称
     -s, --short               显示短主机名称,在第一个点处截断
     -y, --yp, --nis           显示NIS域名
     
    -

    实例

    +

    实例

    显示主机名

    [root@AY1307311912260196fcZ ~]# hostname
     AY1307311912260196fcZ
    @@ -133,7 +123,7 @@ AY1307311912260196fcZ
     
    - - + + \ No newline at end of file diff --git a/c/hostnamectl.html b/c/hostnamectl.html index c202039e5f..4c11fc701b 100644 --- a/c/hostnamectl.html +++ b/c/hostnamectl.html @@ -10,7 +10,7 @@ hostnamectl 命令,Linux hostnamectl 命令详解:查询或更改系统主机名 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    hostnamectl

    +
    +

    hostnamectl

    查询或更改系统主机名

    -

    补充说明

    +

    补充说明

    hostnamectl可用于查询和更改系统主机名和相关设置。

    -

    语法

    +

    语法

    hostnamectl [选项...] 指令 ...
     
    -

    指令

    +

    指令

    status                 显示当前主机名设置
     set-hostname NAME      设置系统主机名
     set-icon-name NAME     设置主机的图标名称
    @@ -74,9 +66,7 @@ set-chassis NAME       设置主机的机箱类型
     set-deployment NAME    设置主机的部署环境 
     set-location NAME      设置主机位置
     
    -

    选项

    +

    选项

    -h --help               显示此帮助
         --version           显示包的版本
         --no-ask-password   不提示输入密码
    @@ -85,9 +75,7 @@ set-location NAME      设置主机位置
     --transient, --static, --pretty  
                             如果调用了status(或者没有给出显式命令)并且指定了其中一个开关,hostnamectl将只打印出这个选定的主机名。
     
    -

    实例

    +

    实例

    显示主机名设置

    $ hostnamectl status
     
    @@ -119,7 +107,7 @@ set-location NAME 设置主机位置
    - - + + \ No newline at end of file diff --git a/c/hping3.html b/c/hping3.html index 1ff7ced302..8c27725681 100644 --- a/c/hping3.html +++ b/c/hping3.html @@ -10,7 +10,7 @@ hping3 命令,Linux hping3 命令详解:测试网络及主机的安全 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    hping3

    +
    +

    hping3

    测试网络及主机的安全

    -

    补充说明

    +

    补充说明

    hping 是用于生成和解析TCPIP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

    -

    安装

    +

    安装

    yum install libpcap-devel tc-devel
     ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
     wget http://www.hping.org/hping3-20051105.tar.gz
    @@ -71,9 +65,7 @@
     make
     make install
     
    -

    选项

    +

    选项

    -H --help 显示帮助。
     -v -VERSION 版本信息。
     -c --count count 发送数据包的次数 关于countreached_timeout 可以在hping2.h里编辑。
    @@ -119,40 +111,28 @@
     -l --tcpck 设置TCP ack。
     -Q --seqnum 搜集序列号的,这对于你分析TCP序列号有很大作用。
     
    -

    Hping3功能

    +

    Hping3功能

    Hping3主要有以下典型功能应用:

    -

    #  防火墙测试

    +

    #  防火墙测试

    使用Hping3指定各种数据包字段,依次对防火墙进行详细测试。请参考:http://0daysecurity.com/articles/hping3_examples.html

    测试防火墙对ICMP包的反应、是否支持traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)。

    hping3 -S  -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10
     
    -

    # 端口扫描

    +

    # 端口扫描

    Hping3也可以对目标端口进行扫描。Hping3支持指定TCP各个标志位、长度等信息。以下示例可用于探测目标机的80端口是否开放:

    hping3 -I eth0  -S 192.168.10.1 -p 80
     

    其中-I eth0指定使用eth0端口,-S指定TCP包的标志位SYN,-p 80指定探测的目的端口。

    hping3支持非常丰富的端口探测方式,nmap拥有的扫描方式hping3几乎都支持(除开connect方式,因为Hping3仅发送与接收包,不会维护连接,所以不支持connect方式探测)。而且Hping3能够对发送的探测进行更加精细的控制,方便用户微调探测结果。当然,Hping3的端口扫描性能及综合处理能力,无法与Nmap相比。一般使用它仅对少量主机的少量端口进行扫描。

    -

    # Idle扫描

    +

    # Idle扫描

    Idle扫描(Idle Scanning)是一种匿名扫描远程主机的方式,该方式也是有Hping3的作者Salvatore Sanfilippo发明的,目前Idle扫描在Nmap中也有实现。

    该扫描原理是:寻找一台idle主机(该主机没有任何的网络流量,并且IPID是逐个增长的),攻击端主机先向idle主机发送探测包,从回复包中获取其IPID。冒充idle主机的IP地址向远程主机的端口发送SYN包(此处假设为SYN包),此时如果远程主机的目的端口开放,那么会回复SYN/ACK,此时idle主机收到SYN/ACK后回复RST包。然后攻击端主机再向idle主机发送探测包,获取其IPID。那么对比两次的IPID值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。

    -

    # 拒绝服务攻击

    +

    # 拒绝服务攻击

    使用Hping3可以很方便构建拒绝服务攻击。比如对目标机发起大量SYN连接,伪造源地址为192.168.10.99,并使用1000微秒的间隔发送各个SYN包。

    hping3 -I eth0 -a192.168.10.99 -S 192.168.10.33 -p 80 -i u1000
     

    其他攻击如smurf、teardrop、land attack等也很容易构建出来。

    -

    # 文件传输

    +

    # 文件传输

    Hping3支持通过TCP/UDP/ICMP等包来进行文件传输。相当于借助TCP/UDP/ICMP包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名(签名为用户指定的字符串)的内容进行相应的解析。在接收端开启服务:

    hping3 192.168.1.159--listen signature --safe  --icmp
     
    @@ -161,9 +141,7 @@
    hping3 192.168.1.108--icmp ?d 100 --sign signature --file /etc/passwd
     

    /etc/passwd密码文件通过ICMP包传给192.168.10.44主机。发送包大小为100字节(-d 100),发送签名为signature(-sign signature)。

    -

    # 木马功能

    +

    # 木马功能

    如果Hping3能够在远程主机上启动,那么可以作为木马程序启动监听端口,并在建立连接后打开shell通信。与netcat的后门功能类似。

    示例:本地打开53号UDP端口(DNS解析服务)监听来自192.168.10.66主机的包含签名为signature的数据包,并将收到的数据调用/bin/sh执行。

    在木马启动端:

    @@ -200,7 +178,7 @@ hping3 192.168.10.44 -p53 -d - - + + \ No newline at end of file diff --git a/c/htdigest.html b/c/htdigest.html index e8ec96e341..501b016b7c 100644 --- a/c/htdigest.html +++ b/c/htdigest.html @@ -10,7 +10,7 @@ htdigest 命令,Linux htdigest 命令详解:Apache服务器内置工具 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    htdigest

    +
    +

    htdigest

    Apache服务器内置工具

    -

    补充说明

    +

    补充说明

    htdigest命令 是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用于摘要认证的密码文件。

    -

    语法

    +

    语法

    htdigest(选项)(参数)
     
    -

    选项

    +

    选项

    -c:创建密码文件。
     
    -

    参数

    +

    参数

    • 密码文件:指定要创建或更新的密码文件;
    • 域:指定用户名所属的域;
    • @@ -102,7 +92,7 @@
    - - + + \ No newline at end of file diff --git a/c/htop.html b/c/htop.html index 7ea201dab3..c9169ed07b 100644 --- a/c/htop.html +++ b/c/htop.html @@ -10,7 +10,7 @@ htop 命令,Linux htop 命令详解:[非内部命令]一个互动的进程查看器,可以动态观察系统进程状况 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    htop

    +
    +

    htop

    [非内部命令]一个互动的进程查看器,可以动态观察系统进程状况

    -

    补充说明

    +

    补充说明

    htop命令 是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses。

    与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。

    与top相比,htop有以下优点:

    @@ -74,14 +70,10 @@
  • 显示也单调。
  • htop 官网:http://htop.sourceforge.net/

    -

    语法

    +

    语法

    htop
     
    -

    参数

    +

    参数

    -C --no-color               使用单色配色方案
     -d --delay=DELAY            设置更新之间的延迟,在十秒
     -s --sort-key=COLUMN        纵列排序(try --sort-key=help for a list)
    @@ -90,9 +82,7 @@
     -h --help                   打印此命令帮助
     -v --version                打印版本信息
     
    -

    选项

    +

    选项

    h,?     F1:查看htop使用说明
     S       F2:设置
     /       F3:搜索进程
    @@ -200,7 +190,7 @@ F7表示减小nice值(增大优先级
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/htpasswd.html b/c/htpasswd.html
    index 3695998652..c99713af9e 100644
    --- a/c/htpasswd.html
    +++ b/c/htpasswd.html
    @@ -10,7 +10,7 @@
         
         htpasswd 命令,Linux htpasswd 命令详解:apache服务器创建密码认证文件 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,24 +50,14 @@
     
     
     
    -
    -

    htpasswd

    +
    +

    htpasswd

    apache服务器创建密码认证文件

    -

    补充说明

    +

    补充说明

    htpasswd命令 是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

    -

    语法

    -

    htpasswd(选项)(参数)

    -

    选项

    +

    语法

    +

    htpasswd(选项)(参数)

    +

    选项

    -c:创建一个加密文件;
     -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
     -m:默认采用MD5算法对密码进行加密;
    @@ -77,16 +67,12 @@
     -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
     -D:删除指定的用户。
     
    -

    参数

    +

    参数

    • 用户:要创建或者更新密码的用户名;
    • 密码:用户的新密码。
    -

    实例

    +

    实例

    利用htpasswd命令添加用户

    htpasswd -bc .passwd www.jsdig.com php
     
    @@ -132,7 +118,7 @@ htpasswd -b .passwd Jack 123456
    - - + + \ No newline at end of file diff --git a/c/hwclock.html b/c/hwclock.html index f337f381c2..b240cb0200 100644 --- a/c/hwclock.html +++ b/c/hwclock.html @@ -10,7 +10,7 @@ hwclock 命令,Linux hwclock 命令详解:显示与设定硬件时钟 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    hwclock

    +
    +

    hwclock

    显示与设定硬件时钟

    -

    补充说明

    +

    补充说明

    hwclock命令 是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。

    在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

    -

    语法

    +

    语法

    hwclock(选项)
     
    -

    选项

    +

    选项

    --adjust:hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟;
     --debug:显示hwclock执行时详细的信息;
     --directisa:hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟;
    @@ -79,9 +71,7 @@
     --utc:若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作;
     --version:显示版本信息。
     
    -

    实例

    +

    实例

    设置硬件时间要依赖于操作系统时间,具体方法如下:

    hwclock –systohc
     hwclock --systohc –-utc
    @@ -124,7 +114,7 @@ hwclock --systohc –-utc
     
    - - + + \ No newline at end of file diff --git a/c/iconv.html b/c/iconv.html index 782ea5a8be..a8798ac58f 100644 --- a/c/iconv.html +++ b/c/iconv.html @@ -10,7 +10,7 @@ iconv 命令,Linux iconv 命令详解:转换文件的编码方式 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    iconv

    +
    +

    iconv

    转换文件的编码方式

    -

    补充说明

    +

    补充说明

    iconv命令 是用来转换文件的编码方式的,比如它可以将UTF8编码的转换成GB18030的编码,反过来也行。JDK中也提供了类似的工具native2ascii。Linux下的iconv开发库包括iconv_open,iconv_close,iconv等C函数,可以用来在C/C++程序中很方便的转换字符编码,这在抓取网页的程序中很有用处,而iconv命令在调试此类程序时用得着。

    -

    语法

    +

    语法

    iconv -f encoding [-t encoding] [inputfile]... 
     
    -

    选项

    +

    选项

    -f encoding :把字符从encoding编码开始转换。 
     -t encoding :把字符转换到encoding编码。 
     -l :列出已知的编码字符集合 
    @@ -76,9 +68,7 @@
     --verbose :显示进度信息 
     -f和-t所能指定的合法字符在-l选项的命令里面都列出来了。 
     
    -

    实例

    +

    实例

    列出当前支持的字符编码: 

    iconv -l 
     
    @@ -111,7 +101,7 @@
    - - + + \ No newline at end of file diff --git a/c/id.html b/c/id.html index fba286de14..c69f4afdcc 100644 --- a/c/id.html +++ b/c/id.html @@ -10,7 +10,7 @@ id 命令,Linux id 命令详解:打印真实以及有效的用户和所在组的信息 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    id

    +
    +

    id

    打印真实以及有效的用户和所在组的信息

    -

    概要

    +

    概要

    id [OPTION]... [USER]...
     
    -

    主要用途

    +

    主要用途

    • 没有选项时,打印指定用户ID信息。
    -

    选项

    +

    选项

    -a               兼容性选项,没有实际作用。
     -Z, --context    只打印进程的安全上下文。
     -g, --group      只打印有效的组ID。
    @@ -82,17 +74,11 @@
       
    -n, --name    打印名称而不是数字。
     -r, --real    打印真实ID而不是有效ID。
     
    -

    参数

    +

    参数

    user(可选):可以为一到多个,默认为当前用户。

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    [root@localhost ~]# id
     uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
     
    @@ -123,9 +109,7 @@
    [root@localhost ~]# id www
     uid=500(www) gid=500(www) groups=500(www)
     
    -

    注意

    +

    注意

    1. 该命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID;一些程序可能需要UID/GID来运行。id 使我们更加容易地找出用户的UID以及GID,而不必在 /etc/group 文件中搜寻。

      @@ -159,7 +143,7 @@
    - - + + \ No newline at end of file diff --git a/c/ifcfg.html b/c/ifcfg.html index aec9dae09c..a90d07938d 100644 --- a/c/ifcfg.html +++ b/c/ifcfg.html @@ -10,7 +10,7 @@ ifcfg 命令,Linux ifcfg 命令详解:置Linux中的网络接口参数 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ifcfg

    +
    +

    ifcfg

    置Linux中的网络接口参数

    -

    补充说明

    +

    补充说明

    ifcfg命令 是一个Bash脚本程序,用来设置Linux中的网络接口参数。

    -

    语法

    +

    语法

    ifcfg(参数)
     
    -

    参数

    +

    参数

    网络接口:指定要操作的网络接口;
     add/del:添加或删除网络接口上的地址;
     ip地址:指定IP地址和子网掩码;
    @@ -97,7 +89,7 @@ Stop:停用指定的网络接口的IP地址。
     
    - - + + \ No newline at end of file diff --git a/c/ifconfig.html b/c/ifconfig.html index 83581ed424..6539e2230b 100644 --- a/c/ifconfig.html +++ b/c/ifconfig.html @@ -10,7 +10,7 @@ ifconfig 命令,Linux ifconfig 命令详解:配置和显示Linux系统网卡的网络参数 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ifconfig

    +
    +

    ifconfig

    配置和显示Linux系统网卡的网络参数

    -

    补充说明

    +

    补充说明

    ifconfig命令 被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

    -

    语法

    +

    语法

    ifconfig(参数)
     
    -

    参数

    +

    参数

    add<地址>:设置网络设备IPv6的ip地址;
     del<地址>:删除网络设备IPv6的IP地址;
     down:关闭指定的网络设备;
    @@ -86,9 +78,7 @@ up:启动指定的网络设备;
     IP地址:指定网络设备的IP地址;
     网络设备:指定网络设备的名称。
     
    -

    实例

    +

    实例

    显示网络设备信息(激活状态的):

    [root@localhost ~]# ifconfig
     eth0      Link encap:Ethernet  HWaddr 00:16:3E:00:1E:51  
    @@ -172,7 +162,7 @@ lo        Link encap:Local Loopback
     
    - - + + \ No newline at end of file diff --git a/c/ifdown.html b/c/ifdown.html index 45071f25c8..d513d85a48 100644 --- a/c/ifdown.html +++ b/c/ifdown.html @@ -10,7 +10,7 @@ ifdown 命令,Linux ifdown 命令详解:禁用指定的网络接口 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    ifdown

    +
    +

    ifdown

    禁用指定的网络接口

    -

    补充说明

    +

    补充说明

    ifdown命令 用于禁用指定的网络接口。

    -

    语法

    +

    语法

    ifdown(参数)
     
    -

    参数

    +

    参数

    网络接口:要禁用的网络接口。

    -

    实例

    +

    实例

    ifdown eth0  #禁用eth0
     
    @@ -98,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/ifstat.html b/c/ifstat.html index c27eef3cc6..8bde335baa 100644 --- a/c/ifstat.html +++ b/c/ifstat.html @@ -10,7 +10,7 @@ ifstat 命令,Linux ifstat 命令详解:统计网络接口流量状态 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    ifstat

    +
    +

    ifstat

    统计网络接口流量状态

    -

    补充说明

    +

    补充说明

    ifstat命令 就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具。ifstat工具系统中并不默认安装,需要自己下载源码包,重新编译安装,使用过程相对比较简单。

    -

    下载

    +

    下载

    http://gael.roualland.free.fr/ifstat/  (官网)
     wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
     
    -

    编译安装

    +

    编译安装

    tar -zxvf ifstat-1.1.tar.gz
     cd ifstat-1.1
     ./configure            
    @@ -75,9 +67,7 @@
     make install # 默认会安装到/usr/local/bin/目录中
     

    注释:执行which ifstat输出/usr/local/bin/ifstat

    -

    选项

    +

    选项

    -l 监测环路网络接口(lo)。缺省情况下,ifstat监测活动的所有非环路网络接口。经使用发现,加上-l参数能监测所有的网络接口的信息,而不是只监测 lo的接口信息,也就是说,加上-l参数比不加-l参数会多一个lo接口的状态信息。
     -a 监测能检测到的所有网络接口的状态信息。使用发现,比加上-l参数还多一个plip0的接口信息,搜索一下发现这是并口(网络设备中有一 个叫PLIP (Parallel Line Internet Protocol). 它提供了并口...)
     -z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的
    @@ -95,9 +85,7 @@
     -v 显示版本信息
     -d 指定一个驱动来收集状态信息
     
    -

    实例

    +

    实例

    默认使用

    [root@localhost ifstat-1.1] #ifstat
            eth0                eth1       
    @@ -148,7 +136,7 @@ HH:MM:ss   KB/s in  KB/s out   KB/s 
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/iftop.html b/c/iftop.html
    index 1dcf7e938a..c8d7d377f3 100644
    --- a/c/iftop.html
    +++ b/c/iftop.html
    @@ -10,7 +10,7 @@
         
         iftop 命令,Linux iftop 命令详解:一款实时流量监控工具 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    iftop

    +
    +

    iftop

    一款实时流量监控工具

    -

    补充说明

    +

    补充说明

    iftop命令 是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。

    -

    语法

    +

    语法

    iftop(选项)
     
    -

    选项

    +

    选项

    iftop: display bandwidth usage on an interface by host
     
     Synopsis: iftop -h | [-npblNBP] [-i interface] [-f filter code]
    @@ -101,9 +93,7 @@ Synopsis: iftop -h | then quit
        -L num              number of lines to print
     
    -

    界面说明

    +

    界面说明

    第一行为带宽,这里为1Mbit,不是字节哦. @@ -113,9 +103,7 @@ Synopsis: iftop -h | 实例 +

    实例

    iftop           # 默认是监控第一块网卡的流量
     iftop -i eth1   # 监控eth1
     iftop -n        # 直接显示IP, 不进行DNS反解析
    @@ -147,7 +135,7 @@ iftop -F 192.168.1.0/24 or 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/ifup.html b/c/ifup.html
    index bd846a8c89..2536872695 100644
    --- a/c/ifup.html
    +++ b/c/ifup.html
    @@ -10,7 +10,7 @@
         
         ifup 命令,Linux ifup 命令详解:激活指定的网络接口 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,27 +50,17 @@
     
     
     
    -
    -

    ifup

    +
    +

    ifup

    激活指定的网络接口

    -

    补充说明

    +

    补充说明

    ifup命令 用于激活指定的网络接口。

    -

    语法

    +

    语法

    ifup(参数)
     
    -

    参数

    +

    参数

    网络接口:要激活的网络接口。

    -

    实例

    +

    实例

    ifup eth0   #激活eth0
     
    @@ -98,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/indent.html b/c/indent.html index 17368fac8b..737454ebc4 100644 --- a/c/indent.html +++ b/c/indent.html @@ -10,7 +10,7 @@ indent 命令,Linux indent 命令详解:格式化C语言的源文件 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    indent

    +
    +

    indent

    格式化C语言的源文件

    -

    补充说明

    +

    补充说明

    indent命令 可辨识C的原始代码文件,并加以格式化,以方便程序员阅读、修改等操作。

    -

    语法

    +

    语法

    indent(选项)(源文件)
     或
     indent(选项)(源文件)(-o 目标文件)
     
    -

    选项

    +

    选项

    -bad:在声明区加上空白行;
     -bap:添加空白行;
     -bbb:在注释后面添加空白行;
    @@ -123,9 +115,7 @@ indent(选项)实例
    +  

    实例

    使用indent命令将C语言源文件"test.c"中所有的sizeof后面添加一个空格,输入如下命令:

    indent -bs /home/rootlocal/桌面/test.c
     
    @@ -155,7 +145,7 @@ indent(选项) - - + + \ No newline at end of file diff --git a/c/info.html b/c/info.html index 5d3595d0b1..3919363fa4 100644 --- a/c/info.html +++ b/c/info.html @@ -10,7 +10,7 @@ info 命令,Linux info 命令详解:Linux下info格式的帮助指令 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    info

    +
    +

    info

    Linux下info格式的帮助指令

    -

    补充说明

    +

    补充说明

    info命令 是Linux下info格式的帮助指令。

    就内容来说,info页面比man page编写得要更好、更容易理解,也更友好,但man page使用起来确实要更容易得多。一个man page只有一页,而info页面几乎总是将它们的内容组织成多个区段(称为节点),每个区段也可能包含子区段(称为子节点)。理解这个命令的窍门就是不仅要学习如何在单独的Info页面中浏览导航,还要学习如何在节点和子节点之间切换。可能刚开始会一时很难在info页面的节点之间移动和找到你要的东西,真是具有讽刺意味:原本以为对于新手来说,某个东西比man命令会更好些,但实际上学习和使用起来更困难。

    -

    语法

    +

    语法

    info(选项)(参数)
     
    -

    选项

    +

    选项

    -d:添加包含info格式帮助文档的目录;
     -f:指定要读取的info格式的帮助文档;
     -n:指定首先访问的info帮助文件的节点;
     -o:输出被选择的节点内容到指定文件。
     
    -

    参数

    +

    参数

    帮助主题:指定需要获得帮助的主题,可以是指令、函数以及配置文件。

    -

    实例

    +

    实例

    在info后面输入命令的名称就可以查看该命令的info帮助文档了:

    info info
     
    @@ -144,7 +132,7 @@
    - - + + \ No newline at end of file diff --git a/c/init.html b/c/init.html index 28c5b5823e..8b9266b141 100644 --- a/c/init.html +++ b/c/init.html @@ -10,7 +10,7 @@ init 命令,Linux init 命令详解:init进程是所有Linux进程的父进程 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    init

    +
    +

    init

    init进程是所有Linux进程的父进程

    -

    补充说明

    +

    补充说明

    init命令 是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1。init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。

    -

    语法

    +

    语法

    init(选项)(参数)
     
    -

    选项

    +

    选项

    -b:不执行相关脚本而直接进入单用户模式;
     -s:切换到单用户模式。
     
    -

    参数

    +

    参数

    运行等级:指定Linux系统要切换到的运行等级。

    -

    实例

    +

    实例

    几个常用的命令

    查看系统进程命令:ps -ef | head
    查看init的配置文件:more /etc/inittab
    查看系统当前运行的级别:runlevel

    运行级别

    @@ -114,7 +102,7 @@
    - - + + \ No newline at end of file diff --git a/c/inotifywait.html b/c/inotifywait.html index 5dd4ed6612..cf75be7b0a 100644 --- a/c/inotifywait.html +++ b/c/inotifywait.html @@ -10,7 +10,7 @@ inotifywait 命令,Linux inotifywait 命令详解:异步文件系统监控机制 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    inotifywait

    +
    +

    inotifywait

    异步文件系统监控机制

    -

    补充说明

    +

    补充说明

    Inotify 一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。。

    inotify-tools 是一个C库和一组命令行的工作提供Linux下inotify的简单接口。inotify-tools安装后会得到inotifywaitinotifywatch这两条命令:

      @@ -73,9 +69,7 @@ total 0 -rw-r--r-- 1 root root 0 Jan 4 15:41 max_user_instances -rw-r--r-- 1 root root 0 Jan 4 15:41 max_user_watches
    -

    安装inotify-tools

    +

    安装inotify-tools

    其他Linux发行版安装方法可以参见:https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting

    -

    inotify相关参数

    +

    inotify相关参数

    inotify定义了下列的接口参数,可以用来限制inotify消耗kernel memory的大小。由于这些参数都是内存参数,因此,可以根据应用需求,实时的调节其大小:

    • /proc/sys/fs/inotify/max_queued_evnets表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。
    • @@ -108,9 +100,7 @@ total 0 32位系统:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0 64位系统:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
    -

    inotifywait命令使用

    +

    inotifywait命令使用

    #!/bin/bash
     #filename watchdir.sh
     path=$1
    @@ -135,9 +125,7 @@ total 0
     04/01/13/16:35 /data/wsdata/tools/ j.jsp~
     04/01/13/16:35 /data/wsdata/tools/ .j.jsp.swp
     
    -

    inotifywait命令参数

    +

    inotifywait命令参数

    • -m是要持续监视变化。
    • -r使用递归形式监视目录。
    • @@ -146,9 +134,7 @@ total 0
    • --timefmt是指定时间的输出格式。
    • --format指定文件变化的详细信息。
    -

    可监听的事件

    +

    可监听的事件

    @@ -216,7 +202,7 @@ total 0 - - + + \ No newline at end of file diff --git a/c/insmod.html b/c/insmod.html index 5a929b25bc..7dc42eec1e 100644 --- a/c/insmod.html +++ b/c/insmod.html @@ -10,7 +10,7 @@ insmod 命令,Linux insmod 命令详解:将给定的模块加载到内核中 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    insmod

    +
    +

    insmod

    将给定的模块加载到内核中

    -

    补充说明

    +

    补充说明

    insmod命令 用于将给定的模块加载到内核中。Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。

    -

    语法

    +

    语法

    insmod(选项)(参数)
     
    -

    选项

    +

    选项

    -f:不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入;
     -k:将模块设置为自动卸除;
     -m:输出模块的载入信息;
    @@ -77,13 +69,9 @@
     -x:不要汇出模块的外部符号;
     -X:汇出模块所有的外部符号,此为预设置。
     
    -

    参数

    +

    参数

    内核模块:指定要加载的内核模块文件。

    -

    实例

    +

    实例

    加载RAID1阵列级别模块,如下所示:

    [root@localhost boot]# insmod /lib/modules/2.6.
     18-8.el5/kernel/drivers/md/raid1.ko  
    @@ -117,7 +105,7 @@ raid1                  25153  
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/install.html b/c/install.html
    index b967234a53..05cf93b60b 100644
    --- a/c/install.html
    +++ b/c/install.html
    @@ -10,7 +10,7 @@
         
         install 命令,Linux install 命令详解:安装或升级软件或备份数据 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,27 +50,19 @@
     
     
     
    -
    -

    install

    +
    +

    install

    安装或升级软件或备份数据

    -

    补充说明

    +

    补充说明

    install命令 的作用是安装或升级软件或备份数据,它的使用权限是所有用户。install命令和cp命令类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile,使用它来将程序拷贝到目标(安装)目录。

    -

    语法

    +

    语法

    install [OPTION]... [-T] SOURCE DEST
     install [OPTION]... SOURCE... DIRECTORY
     install [OPTION]... -t DIRECTORY SOURCE...
     install [OPTION]... -d DIRECTORY...
     

    在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也是必须的。

    -

    选项

    +

    选项

    --backup[=CONTROL]:为每个已存在的目的地文件进行备份。
     -b:类似 --backup,但不接受任何参数。
     -c:(此选项不作处理)。
    @@ -86,9 +78,7 @@
     --help:显示此帮助信息并离开。
     --version:显示版本信息并离开。
     
    -

    实例

    +

    实例

    install -d [option] DIRECTORY [DIRECTORY...]
     

    支持多个,类似mkdir -p支持递归。例如:install -d a/b/c e/f结果和mkdir -p a/b/c e/f一样。

    @@ -135,7 +125,7 @@
    - - + + \ No newline at end of file diff --git a/c/iostat.html b/c/iostat.html index e01a6190ff..b853996a86 100644 --- a/c/iostat.html +++ b/c/iostat.html @@ -10,7 +10,7 @@ iostat 命令,Linux iostat 命令详解:监视系统输入输出设备和CPU的使用情况 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    iostat

    +
    +

    iostat

    监视系统输入输出设备和CPU的使用情况

    -

    补充说明

    +

    补充说明

    iostat命令 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

    -

    语法

    +

    语法

    iostat(选项)(参数)
     
    -

    选项

    +

    选项

    -c:仅显示CPU使用情况;
     -d:仅显示设备利用率;
     -k:显示状态以千字节每秒为单位,而不使用块每秒;
    @@ -76,16 +68,12 @@
     -V:显示版号并退出;
     -x:显示扩展状态。
     
    -

    参数

    +

    参数

    • 间隔时间:每次报告的间隔时间(秒);
    • 次数:显示报告的次数。
    -

    实例

    +

    实例

    iostat -x /dev/sda1来观看磁盘I/O的详细情况:

    iostat -x /dev/sda1 
     Linux 2.6.18-164.el5xen (localhost.localdomain)
    @@ -193,7 +181,7 @@ sda1                0.02          
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/iotop.html b/c/iotop.html
    index 098b7f6b93..a4c2621a3f 100644
    --- a/c/iotop.html
    +++ b/c/iotop.html
    @@ -10,7 +10,7 @@
         
         iotop 命令,Linux iotop 命令详解:用来监视磁盘I/O使用状况的工具 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,19 +50,13 @@
     
     
     
    -
    -

    iotop

    +
    +

    iotop

    用来监视磁盘I/O使用状况的工具

    -

    补充说明

    +

    补充说明

    iotop命令 是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

    iotop使用Python语言编写而成,要求Python2.5(及以上版本)和Linux kernel2.6.20(及以上版本)。iotop提供有源代码及rpm包,可从其官方主页下载。

    -

    安装

    +

    安装

    Ubuntu

    apt-get install iotop
     
    @@ -75,14 +69,10 @@ python setup.py build python setup.py install
    -

    语法

    +

    语法

    iotop(选项)
     
    -

    选项

    +

    选项

    -o:只显示有io操作的进程
     -b:批量显示,无交互,主要用作记录到文件。
     -n NUM:显示NUM次,主要用于非交互式模式。
    @@ -99,9 +89,7 @@ python setup.py install
         
  • a:显示累积使用量。
  • q:退出。
  • -

    实例

    +

    实例

    直接执行iotop就可以看到效果了:

    Total DISK read:       0.00 B/s | Total DISK write:       0.00 B/s
       TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    command
    @@ -143,7 +131,7 @@ python setup.py install
     
    - - + + \ No newline at end of file diff --git a/c/ip.html b/c/ip.html index 07a434bef3..9ddc756deb 100644 --- a/c/ip.html +++ b/c/ip.html @@ -10,7 +10,7 @@ ip 命令,Linux ip 命令详解:网络配置工具 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    ip

    +
    +

    ip

    网络配置工具

    -

    补充说明

    +

    补充说明

    ip命令 用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新的功能强大的网络配置工具。

    -

    语法

    +

    语法

    ip(选项)(参数)
     Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
            ip [ -force ] -batch filename
     
    -

    选项

    +

    选项

    OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
            tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
            netns | l2tp | macsec | tcp_metrics | token }
    @@ -81,9 +73,7 @@ Usage: ip [<
     -0:输出信息每条记录输出一行,即使内容较多也不换行显示;
     -r:显示主机时,不使用IP地址,而使用主机的域名。
     
    -

    参数

    +

    参数

    OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
             -h[uman-readable] | -iec |
             -f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
    @@ -96,9 +86,7 @@ Usage: ip [<
     具体操作:对指定的网络对象完成具体操作;
     help:显示网络对象支持的操作命令的帮助信息。
     
    -

    实例

    +

    实例

    ip link show                     # 显示网络接口信息
     ip link set eth0 up             # 开启网卡
     ip link set eth0 down            # 关闭网卡
    @@ -191,7 +179,7 @@ default via 112.124.15.247 dev eth1
     
    - - + + \ No newline at end of file diff --git a/c/ip6tables-restore.html b/c/ip6tables-restore.html index e5d72ac4eb..f552527e73 100644 --- a/c/ip6tables-restore.html +++ b/c/ip6tables-restore.html @@ -10,7 +10,7 @@ ip6tables-restore 命令,Linux ip6tables-restore 命令详解:还原ip6tables表 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ip6tables-restore

    +
    +

    ip6tables-restore

    还原ip6tables表

    -

    补充说明

    +

    补充说明

    ip6tables-restore命令 用来还原ip6tables表。

    -

    语法

    +

    语法

    ip6tables-restore(选项)
     
    -

    选项

    +

    选项

    -c:指定在还原iptables表时,还原当前的数据包计数器和字节计数器值;
     -t:指定要还原的表的名称。
     
    @@ -95,7 +87,7 @@
    - - + + \ No newline at end of file diff --git a/c/ip6tables-save.html b/c/ip6tables-save.html index 2e8271ec0b..b43b218a4f 100644 --- a/c/ip6tables-save.html +++ b/c/ip6tables-save.html @@ -10,7 +10,7 @@ ip6tables-save 命令,Linux ip6tables-save 命令详解:保存ip6tables表配置 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ip6tables-save

    +
    +

    ip6tables-save

    保存ip6tables表配置

    -

    补充说明

    +

    补充说明

    ip6tables-save命令 将Linux内核中ip6tables表导出到标准输出设备上。

    -

    语法

    +

    语法

    ip6tables-save(选项)
     
    -

    选项

    +

    选项

    -c:指定在保存iptables表时,保存当前的数据包计数器和字节计数器值;
     -t:指定要保存的表的名称。
     
    @@ -95,7 +87,7 @@
    - - + + \ No newline at end of file diff --git a/c/ip6tables.html b/c/ip6tables.html index fab9f09ad3..690f00a573 100644 --- a/c/ip6tables.html +++ b/c/ip6tables.html @@ -10,7 +10,7 @@ ip6tables 命令,Linux ip6tables 命令详解:linux中防火墙软件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ip6tables

    +
    +

    ip6tables

    linux中防火墙软件

    -

    补充说明

    +

    补充说明

    ip6tables命令 和iptables一样,都是linux中防火墙软件,不同的是ip6tables采用的TCP/ip协议为IPv6。

    -

    语法

    +

    语法

    ip6tables(选项)
     
    -

    选项

    +

    选项

    -t<>:指定要操纵的表;
     -A:向规则链中添加条目;
     -D:从规则链中删除条目;
    @@ -85,9 +77,7 @@
     -o<网络接口>:指定数据包要离开本机所使用的网络接口。
     -c<计数器>:在执行插入操作(insert),追加操作(append),替换操作(replace)时初始化包计数器和字节计数器。
     
    -

    实例

    +

    实例

    在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:

    ip6tables -nl --line-numbers
     
    @@ -231,7 +221,7 @@ num pkts bytes target prot opt in o
    - - + + \ No newline at end of file diff --git a/c/ipcalc.html b/c/ipcalc.html index 4f304a6333..ec2699b5c9 100644 --- a/c/ipcalc.html +++ b/c/ipcalc.html @@ -10,7 +10,7 @@ ipcalc 命令,Linux ipcalc 命令详解:简单的IP地址计算器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ipcalc

    +
    +

    ipcalc

    简单的IP地址计算器

    -

    补充说明

    +

    补充说明

    ipcalc命令 是一个简单的ip地址计算器,可以完成简单的IP地址计算任务。

    -

    语法

    +

    语法

    ipcalc(选项)
     
    -

    选项

    +

    选项

    -b:由给定的IP地址和网络掩码计算出广播地址;
     -h:显示给定UP地址所对应的主机名;
     -m:由给定的IP地址计算器网络掩码;
    @@ -75,9 +67,7 @@
     -s:安静模式;
     --help:显示帮助信息。
     
    -

    实例

    +

    实例

    [root@localhost ~]# ipcalc -p 192.168.2.1 255.255.255.0
     PREFIX=24
     
    @@ -121,7 +111,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/ipcrm.html b/c/ipcrm.html index 82f4460160..16beef06f3 100644 --- a/c/ipcrm.html +++ b/c/ipcrm.html @@ -10,7 +10,7 @@ ipcrm 命令,Linux ipcrm 命令详解:删除消息队列、信号集、或者共享内存标识 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ipcrm

    +
    +

    ipcrm

    删除消息队列、信号集、或者共享内存标识

    -

    补充说明

    +

    补充说明

    ipcrm命令 用来删除一个或更多的消息队列、信号量集或者共享内存标识。

    -

    语法

    +

    语法

    ipcrm [ -m SharedMemoryID ] [ -M SharedMemoryKey ] [ -q MessageID ] [ -Q MessageKey ] [ -s SemaphoreID ] [ -S SemaphoreKey ]
     
    -

    选项

    +

    选项

    -m SharedMemory id 删除共享内存标识 SharedMemoryID。与 SharedMemoryID 有关联的共享内存段以及数据结构都会在最后一次拆离操作后删除。
     -M SharedMemoryKey 删除用关键字 SharedMemoryKey 创建的共享内存标识。与其相关的共享内存段和数据结构段都将在最后一次拆离操作后删除。
     -q MessageID 删除消息队列标识 MessageID 和与其相关的消息队列和数据结构。
    @@ -75,9 +67,7 @@
     -S SemaphoreKey 删除由关键字 SemaphoreKey 创建的信号标识和与其相关的信号量集和数据结构。
     

    msgctl、shmctl 和 semctl 子例程提供了删除操作的细节。标识和关键字可以用 ipcs 命令找到。

    -

    示例

    +

    示例

    如果要删除和 SharedMemoryID 18602 相关的共享内存段,请输入:

    ipcrm -m 18602
     
    @@ -106,7 +96,7 @@
    - - + + \ No newline at end of file diff --git a/c/ipcs.html b/c/ipcs.html index 99ce077d54..2c3434fd11 100644 --- a/c/ipcs.html +++ b/c/ipcs.html @@ -10,7 +10,7 @@ ipcs 命令,Linux ipcs 命令详解:分析消息队列共享内存和信号量 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    ipcs

    +
    +

    ipcs

    分析消息队列共享内存和信号量

    -

    补充说明

    +

    补充说明

    ipcs命令 用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。

    -

    语法

    +

    语法

    ipcs(选项)
     
    -

    选项

    +

    选项

    -a:显示全部可显示的信息;
     -q:显示活动的消息队列信息;
     -m:显示活动的共享内存信息;
     -s:显示活动的信号量信息。
     
    -

    实例

    +

    实例

    ipcs -a
     ------ Shared Memory Segments --------
     key        shmid      owner      perms      bytes      nattch     status      
    @@ -108,7 +98,7 @@ key        shmid      owner      perms      bytes      nattch     status
     
    - - + + \ No newline at end of file diff --git a/c/iperf.html b/c/iperf.html index 9f675f94af..5d1dbdddfe 100644 --- a/c/iperf.html +++ b/c/iperf.html @@ -10,7 +10,7 @@ iperf 命令,Linux iperf 命令详解:网络性能测试工具 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
    -

    iperf

    +
    +

    iperf

    网络性能测试工具

    -

    补充说明

    +

    补充说明

    iperf命令 是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。

    iperf分为两种版本,Unix/Linux版和Windows版,Unix/Linux版更新比较快,版本最新。Windows版更新慢。Windows版的iperf叫jperf,或者xjperf。jperf是在iperf基础上开发了更好的UI和新的功能。

    Linux版本下载地址:http://code.google.com/p/iperf/downloads/list

    -

    安装iperf

    +

    安装iperf

    对于windows版的iperf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可,对于linux版的iperf,请使用如下命令安装:

    gunzip -c iperf-<version>.tar.gz | tar -xvf -
     cd iperf-<version>
    @@ -71,9 +65,7 @@
     make
     make install
     
    -

    选项

    +

    选项

    @@ -251,9 +243,7 @@
    -

    实例

    +

    实例

    带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。

    UDP模式

    服务器端:

    @@ -308,7 +298,7 @@
    - - + + \ No newline at end of file diff --git a/c/iptables-restore.html b/c/iptables-restore.html index 74aed375b1..1b6dffef2b 100644 --- a/c/iptables-restore.html +++ b/c/iptables-restore.html @@ -10,7 +10,7 @@ iptables-restore 命令,Linux iptables-restore 命令详解:还原iptables表的配置 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    iptables-restore

    +
    +

    iptables-restore

    还原iptables表的配置

    -

    补充说明

    +

    补充说明

    iptables-restore命令 用来还原iptables-save命令所备份的iptables配置。

    -

    语法

    +

    语法

    iptables-restore(选项)
     
    -

    选项

    +

    选项

    -c:指定在还原iptables表时候,还原当前的数据包计数器和字节计数器的值;
     -t:指定要还原表的名称。
     
    -

    实例

    +

    实例

    iptables-restore < iptables.bak
     

    iptables.bak是iptables-save命令所备份的文件。

    @@ -101,7 +91,7 @@
    - - + + \ No newline at end of file diff --git a/c/iptables-save.html b/c/iptables-save.html index 0704680d95..1d4ab3c01a 100644 --- a/c/iptables-save.html +++ b/c/iptables-save.html @@ -10,7 +10,7 @@ iptables-save 命令,Linux iptables-save 命令详解:备份iptables的表配置 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    iptables-save

    +
    +

    iptables-save

    备份iptables的表配置

    -

    补充说明

    +

    补充说明

    iptables-save命令 用于将linux内核中的iptables表导出到标准输出设备商,通常,使用shell中I/O重定向功能将其输出保存到指定文件中。

    -

    语法

    +

    语法

    iptables-save(选项)
     
    -

    选项

    +

    选项

    -c:指定要保存的iptables表时,保存当权的数据包计算器和字节计数器的值;
     -t:指定要保存的表的名称。
     
    -

    实例

    +

    实例

    [root@localhost ~]# iptables-save -t filter > iptables.bak
     [root@localhost ~]# cat iptables.bak
     # Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
    @@ -113,7 +103,7 @@ COMMIT
     
    - - + + \ No newline at end of file diff --git a/c/iptables.html b/c/iptables.html index 3aad7b204d..3483950f45 100644 --- a/c/iptables.html +++ b/c/iptables.html @@ -10,7 +10,7 @@ iptables 命令,Linux iptables 命令详解:Linux上常用的防火墙软件 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    iptables

    +
    +

    iptables

    Linux上常用的防火墙软件

    -

    补充说明

    +

    补充说明

    iptables命令 是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

    -

    语法

    +

    语法

    iptables(选项)(参数)
     
    -

    选项

    +

    选项

    -t, --table table 对指定的表 table 进行操作, table 必须是 raw, nat,filter,mangle 中的一个。如果不指定此选项,默认的是 filter 表。
     
     # 通用匹配:源地址目标地址的匹配
    @@ -135,9 +127,7 @@
     -j, --jump target <指定目标> :即满足某条件时该执行什么样的动作。target 可以是内置的目标,比如 ACCEPT,也可以是用户自定义的链。
     -h:显示帮助信息;
     
    -

    基本参数

    +

    基本参数

    @@ -200,14 +190,10 @@
    -

    命令选项输入顺序

    +

    命令选项输入顺序

    iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
     
    -

    工作机制

    +

    工作机制

    规则链名包括(也被称为五个钩子函数(hook functions)):

    • INPUT链 :处理输入数据包。
    • @@ -216,9 +202,7 @@
    • PREROUTING链 :用于目标地址转换(DNAT)。
    • POSTOUTING链 :用于源地址转换(SNAT)。
    -

    防火墙的策略

    +

    防火墙的策略

    防火墙策略一般分为两种,一种叫策略,一种叫策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。

    我们现在用的比较多个功能有3个:

      @@ -285,60 +269,42 @@ ┃ Network ┃ ┗━━━━━━━━━━━━━━━┛
    -

    实例

    -

    清空当前的所有规则和计数

    +

    实例

    +

    清空当前的所有规则和计数

    iptables -F  # 清空所有的防火墙规则
     iptables -X  # 删除用户自定义的空链
     iptables -Z  # 清空计数
     
    -

    配置允许ssh端口连接

    +

    配置允许ssh端口连接

    iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
     # 22为你的ssh端口, -s 192.168.1.0/24表示允许这个网段的机器来连接,其它网段的ip地址是登陆不了你的机器的。 -j ACCEPT表示接受这样的请求
     
    -

    允许本地回环地址可以正常使用

    +

    允许本地回环地址可以正常使用

    iptables -A INPUT -i lo -j ACCEPT
     #本地圆环地址就是那个127.0.0.1,是本机上使用的,它进与出都设置为允许
     iptables -A OUTPUT -o lo -j ACCEPT
     
    -

    设置默认的规则

    +

    设置默认的规则

    iptables -P INPUT DROP # 配置默认的不让进
     iptables -P FORWARD DROP # 默认的不允许转发
     iptables -P OUTPUT ACCEPT # 默认的可以出去
     
    -

    配置白名单

    +

    配置白名单

    iptables -A INPUT -p all -s 192.168.1.0/24 -j ACCEPT  # 允许机房内网机器可以访问
     iptables -A INPUT -p all -s 192.168.140.0/24 -j ACCEPT  # 允许机房内网机器可以访问
     iptables -A INPUT -p tcp -s 183.121.3.7 --dport 3380 -j ACCEPT # 允许183.121.3.7访问本机的3380端口
     
    -

    开启相应的服务端口

    +

    开启相应的服务端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 开启80端口,因为web对外都是这个端口
     iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping
     iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 已经建立的连接得让它进来
     
    -

    保存规则到配置文件中

    +

    保存规则到配置文件中

    cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak # 任何改动之前先备份,请保持这一优秀的习惯
     iptables-save > /etc/sysconfig/iptables
     cat /etc/sysconfig/iptables
     
    -

    列出已设置的规则

    +

    列出已设置的规则

    iptables -L [-t 表名] [链名]

    @@ -354,17 +320,13 @@ iptables -L INPUT iptables -L -nv # 查看,这个列表看起来更详细
    -

    清除已有规则

    +

    清除已有规则

    iptables -F INPUT  # 清空指定链 INPUT 上面的所有规则
     iptables -X INPUT  # 删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。
                        # 如果没有指定链名,则会删除该表中所有非内置的链。
     iptables -Z INPUT  # 把指定链,或者表中的所有链上的所有计数器清零。
     
    -

    删除已添加的规则

    +

    删除已添加的规则

    # 添加一条规则
     iptables -A INPUT -s 192.168.1.5 -j DROP
     
    @@ -374,9 +336,7 @@ iptables -A INPUT -s 192.168.1.5 -j DROP

    比如要删除INPUT里序号为8的规则,执行:

    iptables -D INPUT 8
     
    -

    开放指定的端口

    +

    开放指定的端口

    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT               #允许本地回环接口(即运行本机访问本机)
     iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    #允许已建立的或相关连的通行
     iptables -A OUTPUT -j ACCEPT         #允许所有本机向外的访问
    @@ -387,24 +347,18 @@ iptables -A INPUT -p tcp --dport 20 -j ACCEPT
     iptables -A INPUT -j reject       #禁止其他未允许的规则访问
     iptables -A FORWARD -j REJECT     #禁止其他未允许的规则访问
     
    -

    屏蔽IP

    +

    屏蔽IP

    iptables -A INPUT -p tcp -m tcp -s 192.168.0.8 -j DROP  # 屏蔽恶意主机(比如,192.168.0.8
     iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
     iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令
     iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的命令
     iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的命令是
     
    -

    指定数据包出去的网络接口

    +

    指定数据包出去的网络接口

    只对 OUTPUT,FORWARD,POSTROUTING 三个链起作用。

    iptables -A FORWARD -o eth0
     
    -

    查看已添加的规则

    +

    查看已添加的规则

    iptables -L -n -v
     Chain INPUT (policy DROP 48106 packets, 2690K bytes)
      pkts bytes target     prot opt in     out     source               destination
    @@ -421,21 +375,15 @@ Chain OUTPUT (policy ACCEPT 3382K packets
      pkts bytes target     prot opt in     out     source               destination
      5075  589K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
     
    -

    启动网络转发规则

    +

    启动网络转发规则

    公网210.14.67.7让内网192.168.188.0/24上网

    iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j SNAT --to-source 210.14.67.127
     
    -

    端口映射

    +

    端口映射

    本机的 2222 端口映射到内网 虚拟机的22 端口

    iptables -t nat -A PREROUTING -d 210.14.67.127 -p tcp --dport 2222  -j DNAT --to-dest 192.168.188.115:22
     
    -

    字符串匹配

    +

    字符串匹配

    比如,我们要过滤所有TCP连接中的字符串test,一旦出现它我们就终止这个连接,我们可以这么做:

    iptables -A INPUT -p tcp -m string --algo kmp --string "test" -j REJECT --reject-with tcp-reset
     iptables -L
    @@ -450,25 +398,17 @@ iptables -L
     # Chain OUTPUT (policy ACCEPT)
     # target     prot opt source               destination
     
    -

    阻止Windows蠕虫的攻击

    +

    阻止Windows蠕虫的攻击

    iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
     
    -

    防止SYN洪水攻击

    +

    防止SYN洪水攻击

    iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT
     
    -

    添加SECMARK记录

    +

    添加SECMARK记录

    iptables -t mangle -A INPUT -p tcp --src 192.168.1.2 --dport 443 -j SECMARK --selctx system_u:object_r:myauth_packet_t
     # 向从 192.168.1.2:443 以TCP方式发出到本机的包添加MAC安全上下文 system_u:object_r:myauth_packet_t
     
    -

    更多实例

    +

    更多实例

    用iptables搭建一套强大的安全防护盾 http://www.imooc.com/learn/389

    @@ -509,9 +449,7 @@ iptables -L 数据包改写(nat -> 地址转换): snat / dnat 信息记录: log

    -

    使用场景实例

    +

    使用场景实例

    • 场景一
    @@ -632,7 +570,7 @@ iptables -I INPUT -m limit --limit 3/hour --li
    - - + + \ No newline at end of file diff --git a/c/iptraf.html b/c/iptraf.html index 2b85768203..c20f5c0b81 100644 --- a/c/iptraf.html +++ b/c/iptraf.html @@ -10,7 +10,7 @@ iptraf 命令,Linux iptraf 命令详解:实时地监视网卡流量 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    iptraf

    +
    +

    iptraf

    实时地监视网卡流量

    -

    补充说明

    +

    补充说明

    iptraf命令 可以实时地监视网卡流量,可以生成网络协议数据包信息、以太网信息、网络节点状态和ip校验和错误等信息。

    -

    语法

    +

    语法

    iptraf(选项)
     
    -

    选项

    +

    选项

    -i网络接口:立即在指定网络接口上开启IP流量监视;
     -g:立即开始生成网络接口的概要状态信息;
     -d网络接口:在指定网络接口上立即开始监视明细的网络流量信息;
    @@ -103,7 +95,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/iptstate.html b/c/iptstate.html index d8a6534172..648fa73e36 100644 --- a/c/iptstate.html +++ b/c/iptstate.html @@ -10,7 +10,7 @@ iptstate 命令,Linux iptstate 命令详解:显示iptables的工作状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    iptstate

    +
    +

    iptstate

    显示iptables的工作状态

    -

    补充说明

    +

    补充说明

    iptstate命令 以top指令类似的风格时显示Linux内核中iptables的工作状态。

    -

    语法

    +

    语法

    iptstate(选项)
     
    -

    选项

    +

    选项

    -b:指定输出信息的排序规则;
     -d:不动态地改变窗口大小;
     -f:过滤本地回送信息;
    @@ -102,7 +94,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/ispell.html b/c/ispell.html index 24f7b7c017..94a1aadd45 100644 --- a/c/ispell.html +++ b/c/ispell.html @@ -10,7 +10,7 @@ ispell 命令,Linux ispell 命令详解:检查文件中出现的拼写错误 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ispell

    +
    +

    ispell

    检查文件中出现的拼写错误

    -

    补充说明

    +

    补充说明

    ispell命令 用于检查文件中出现的拼写错误。

    -

    语法

    +

    语法

    ispell(参数)
     
    -

    参数

    +

    参数

    文件:指定要进行拼写检查的文件。

    @@ -93,7 +85,7 @@
    - - + + \ No newline at end of file diff --git a/c/jed.html b/c/jed.html index c3a4424c89..d0f79eab2f 100644 --- a/c/jed.html +++ b/c/jed.html @@ -10,7 +10,7 @@ jed 命令,Linux jed 命令详解:主要用于编辑代码的编辑器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    jed

    +
    +

    jed

    主要用于编辑代码的编辑器

    -

    补充说明

    +

    补充说明

    jed命令 是由Slang所开发,其主要用用途是编辑程序的源代码。它支持彩色语法加亮显示,可以模拟emacs,EDT,wordstar和Brief编辑器。

    -

    语法

    +

    语法

    jed(选项)(参数)
     
    -

    选项

    +

    选项

    -2:显示上下两个编辑区;
     -batch:以批处理模式来执行;
     -f<函数>:执行Slang函数;
    @@ -75,13 +67,9 @@
     -n:不要载入jed.rc配置文件;
     -s<字符串>:查找并移到指定的字符串。
     
    -

    参数

    +

    参数

    文件:指定待编辑的文件列表。

    -

    实例

    +

    实例

    以上下两个编辑区的方式,开启 mysource.c 原始代码文件。若要切换编辑区,可利用稍后介绍的命令,开启操作命令,开启功能表后,按 3 ,再按 2 ,即可切换编辑区:

    jed -2 mysource.c
     
    @@ -130,7 +118,7 @@ unset_setkey (
    - - + + \ No newline at end of file diff --git a/c/jobs.html b/c/jobs.html index 74378cedc2..12aa8ab928 100644 --- a/c/jobs.html +++ b/c/jobs.html @@ -10,7 +10,7 @@ jobs 命令,Linux jobs 命令详解:显示作业的状态。 - Linux 命令搜索引擎 - + @@ -50,42 +50,30 @@ -
    -

    jobs

    +
    +

    jobs

    显示作业的状态。

    -

    概要

    +

    概要

    jobs [-lnprs] [jobspec ...]
     jobs -x command [args]
     
    -

    主要用途

    +

    主要用途

    • 显示作业的状态。
    • 列出活动的作业。
    • 列出停止的作业。
    -

    选项

    +

    选项

    -l	在作业信息中额外的列出PID。
     -n	只列出最近一次通知以来状态变更的作业。
     -p	只列出PID。
     -r	只输出处于运行状态的作业。
     -s	只输出处于停止状态的作业。
     
    -

    返回值

    +

    返回值

    返回状态为成功除非给出了非法选项、执行出现错误。

    如果使用jobs -x command [args]形式执行,那么返回值为command的退出状态。

    -

    例子

    +

    例子

    [user2@pc] ssh 192.168.1.4
     pc@192.168.1.4's password:
     # 此时按下ctrl+z使得交互停止。
    @@ -120,9 +108,7 @@ pc@192.168.1.4's password:
     
     [user2@pc] jobs -n -l
     
    -

    注意

    +

    注意

    1. bash的作业控制命令包括bg fg kill wait disown suspend
    2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
    3. @@ -153,7 +139,7 @@ pc@192.168.1.4's password:
    - - + + \ No newline at end of file diff --git a/c/joe.html b/c/joe.html index 56c1e2df32..3df1685a20 100644 --- a/c/joe.html +++ b/c/joe.html @@ -10,7 +10,7 @@ joe 命令,Linux joe 命令详解:强大的纯文本编辑器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    joe

    +
    +

    joe

    强大的纯文本编辑器

    -

    补充说明

    +

    补充说明

    joe命令 是一款功能强大的纯文本编辑器,拥有众多编写程序和文本的优良特性。

    -

    语法

    +

    语法

    joe(选项)(参数)
     
    -

    选项

    +

    选项

    -force:强制在最后一行的结尾处加上换行符号;
     -lines<行数>:设置行数;
     -lightoff:选取的区块在执行完区块命令后,就会恢复成原来的状态;
    @@ -90,9 +82,7 @@
     -pg<行数>:按“PageUp”或“PageDown”换页时,所要保留前一页的行数;
     -skiptop<行数>:不使用屏幕上方指定的行数。
     
    -

    参数

    +

    参数

    文件:指定要编辑的文件。

    @@ -119,7 +109,7 @@
    - - + + \ No newline at end of file diff --git a/c/join.html b/c/join.html index ade2c4cb2f..1a26437ce0 100644 --- a/c/join.html +++ b/c/join.html @@ -10,7 +10,7 @@ join 命令,Linux join 命令详解:两个文件中指定栏位内容相同的行连接起来 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    join

    +
    +

    join

    两个文件中指定栏位内容相同的行连接起来

    -

    补充说明

    +

    补充说明

    join命令 用来将两个文件中,制定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。

    -

    语法

    +

    语法

    join(选项)(参数)
     
    -

    选项

    +

    选项

    -a<12>:除了显示原来的输出内容之外,还显示指令文件中没有相同栏位的行;
     -e<字符串>:若[文件1][文件2]中找不到指定的栏位,则在输出中填入选项中的字符串;
     -i或--ignore-case:比较栏位内容时,忽略大小写的差异;
    @@ -76,9 +68,7 @@
     -1<栏位>:连接[文件1]指定的栏位;
     -2<栏位>:连接[文件2]指定的栏位。
     
    -

    参数

    +

    参数

    • 文件1:要进行合并操作的第1个文件参数;
    • 文件2:要进行合并操作的第2个文件参数。
    • @@ -108,7 +98,7 @@
    - - + + \ No newline at end of file diff --git a/c/jq.html b/c/jq.html index eaefe303ba..6d31afe3eb 100644 --- a/c/jq.html +++ b/c/jq.html @@ -10,7 +10,7 @@ jq 命令,Linux jq 命令详解:一个灵活的轻量级命令行JSON处理器 - Linux 命令搜索引擎 - + @@ -50,37 +50,27 @@ -
    -

    jq

    +
    +

    jq

    一个灵活的轻量级命令行JSON处理器

    -

    补充说明

    +

    补充说明

    jq 是 stedolan 开发的一个轻量级的和灵活的命令行JSON处理器,源码请参考 jq 项目主页

    jq 用于处理JSON输入,将给定过滤器应用于其JSON文本输入并在标准输出上将过滤器的结果生成为JSON。

    最简单的过滤器是.,它将jq的输入未经修改地复制到其输出中(格式设置除外)。

    请注意,jq 当前仅支持64位双精度浮点数(IEEE754)。

    -

    安装

    +

    安装

    # Debian系,如 Ubuntu
     sudo apt-get install jq
     
     # RedHat系, 如 CentOS
     yum install jq
     
    -

    语法

    +

    语法

    jq [options] <jq filter> [file...]
     jq [options] --args <jq filter> [strings...]
     jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
     
    -

    选项

    +

    选项

    -c               紧凑而不是漂亮的输出;
     -n               使用`null`作为单个输入值;
     -e               根据输出设置退出状态代码;
    @@ -99,9 +89,7 @@ jq [options;
     --               终止参数处理;
     
    -

    例子

    +

    例子

    .: 以漂亮的方式输出

    $ echo '{ "foo": { "bar": { "baz": 123 } } }' | jq '.'
     {
    @@ -222,7 +210,7 @@ jq [options
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/jwhois.html b/c/jwhois.html
    index 29c73914d2..d0f7e69ae7 100644
    --- a/c/jwhois.html
    +++ b/c/jwhois.html
    @@ -10,7 +10,7 @@
         
         jwhois 命令,Linux jwhois 命令详解:whois 客户端服务 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,23 +50,15 @@
     
     
     
    -
    -

    jwhois

    +
    +

    jwhois

    whois 客户端服务

    -

    补充说明

    +

    补充说明

    jwhois searches Whois servers for the object on the command line.The host to query is taken from a global configuration file, a configuration file specified on the command line, or selected directly on the command line.

    -

    语法

    +

    语法

    jwhois [选项]
     
    -

    选项

    +

    选项

    --version                  display version number and patch level
     --help                     display this help
     -v, --verbose              verbose debug output
    @@ -84,9 +76,7 @@
       

    注:以上英文部分寻求网友协助翻译,翻译结果可发送至 sa(at)linuxde.net,谢谢!

    -

    实例

    +

    实例

    显示指定用户信息:

     jwhois root
     
    @@ -129,7 +119,7 @@ Registrar WHOIS Server: whois.west263.com
     
    - - + + \ No newline at end of file diff --git a/c/kernelversion.html b/c/kernelversion.html index 2f7fe99361..9e652c211d 100644 --- a/c/kernelversion.html +++ b/c/kernelversion.html @@ -10,7 +10,7 @@ kernelversion 命令,Linux kernelversion 命令详解:打印当前内核的主版本号 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    kernelversion

    +
    +

    kernelversion

    打印当前内核的主版本号

    -

    补充说明

    +

    补充说明

    kernelversion命令 用于打印当前内核的主版本号。

    -

    语法

    +

    语法

    kernelversion
     
    @@ -89,7 +83,7 @@
    - - + + \ No newline at end of file diff --git a/c/kexec.html b/c/kexec.html index 78ec9e6013..d5b4f5456c 100644 --- a/c/kexec.html +++ b/c/kexec.html @@ -10,7 +10,7 @@ kexec 命令,Linux kexec 命令详解:从当前正在运行的内核引导到一个新内核 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    kexec

    +
    +

    kexec

    从当前正在运行的内核引导到一个新内核

    -

    补充说明

    +

    补充说明

    kexec命令 是Linux内核的一个补丁,让您可以从当前正在运行的内核直接引导到一个新内核。在上面描述的引导序列中,kexec跳过了整个引导装载程序阶段(第一部分)并直接跳转到我们希望引导到的内核。不再有硬件的重启,不再有固件操作,不再涉及引导装载程序。完全避开了引导序列中最弱的一环 -- 固件。这一功能部件带来的最大益处在于,系统现在可以极其快速地重新启动。

    kexec的好处: 要求高可用性的系统,以及需要不断重新启动系统的内核开发人员,都将受益于kexec。因为 kexec跳过了系统重新启动过程中最耗时的部分(也就是固件初始化硬件设备的阶段),所以重新启动变得非常快,可用性得到了提高。

    -

    语法

    +

    语法

    kexec(选项)
     
    -

    选项

    +

    选项

    -l:指定内核映像文件;
     -e:允许当前被加载的内核;
     -f:强制立即调用系统调用“kexec”,而不调用“shutdown”;
    @@ -99,7 +91,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/kill.html b/c/kill.html index 7fee78437d..077970ee27 100644 --- a/c/kill.html +++ b/c/kill.html @@ -10,7 +10,7 @@ kill 命令,Linux kill 命令详解:发送信号到进程。 - Linux 命令搜索引擎 - + @@ -50,54 +50,36 @@ -
    -

    kill

    +
    +

    kill

    发送信号到进程。

    -

    目录

    +

    目录

    -

    内建命令

    -

    概要

    +

    内建命令

    +

    概要

    kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
     kill -l [sigspec]
     
    -

    主要用途

    +

    主要用途

    • 发送信号到作业或进程(可以为多个)。
    • 列出信号。
    -

    选项

    +

    选项

    -s sig    信号名称。
     -n sig    信号名称对应的数字。
     -l        列出信号名称。如果在该选项后提供了数字那么假设它是信号名称对应的数字。
     -L        等价于-l选项。
     
    -

    参数

    +

    参数

    pid:进程ID

    jobspec:作业标识符

    -

    返回值

    +

    返回值

    返回状态为成功除非给出了非法选项、执行出现错误。

    -

    例子

    +

    例子

    [user2@pc] kill -l 9
     KILL
     
    @@ -161,25 +143,17 @@ STOP   19    暂停(同 Ctrl + Z)
     [user2@pc] jobs -l
     [1]+ 181537 Running                 sleep 90 &
     
    -

    注意

    +

    注意

    1. bash的作业控制命令包括bg fg kill wait disown suspend
    2. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    -

    外部命令

    -

    概要

    +

    外部命令

    +

    概要

    kill [-signal|-s signal|-p] [-q value] [-a] [--] pid|name...
     kill -l [number] | -L
     
    -

    主要用途

    +

    主要用途

    • 发送信号到进程(可以为多个)。

      @@ -188,9 +162,7 @@ STOP 19 暂停(同 Ctrl + Z)

      列出信号。

    -

    选项

    +

    选项

    -s, --signal signal    要发送的信号,可能是信号名称或信号对应的数字。
     -l, --list [number]    打印信号名称或转换给定数字到信号名称。信号名称可参考文件(/usr/include/linux/signal.h)。
     -L, --table            和'-l'选项类似,但是输出信号名称以及信号对应的数字。
    @@ -203,9 +175,7 @@ STOP   19    暂停(同 Ctrl + Z)
     --help                 显示帮助信息并退出。
     --version              显示版本信息并退出。
     
    -

    参数

    +

    参数

    接收信号的进程列表可以是PID以及name的混合组成。

    PID:每一个PID可以是以下四种情况之一:

    @@ -235,34 +205,26 @@ STOP 19 暂停(同 Ctrl + Z)

    name:使用此名称调用的所有进程将接收信号。

    -

    例子

    +

    例子

    > sleep 20 &
     
     # 列出对应的PID。
     > kill -p sleep
     23021
     
    -

    返回值

    +

    返回值

    • 0 成功。
    • 1 失败。
    • 64 部分成功(当指定了多个进程时)。
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 killinfo coreutils 'kill invocation'
    2. 启动或关闭内建命令请查看enable命令,关于同名优先级的问题请查看builtin命令的例子部分的相关讨论。
    3. kill命令类似的有xkillpkill,killall等,用于不同的目的和场景。
    -

    参考链接

    +

    参考链接

    发送信号到进程

    @@ -289,7 +251,7 @@ STOP 19 暂停(同 Ctrl + Z)
    - - + + \ No newline at end of file diff --git a/c/killall.html b/c/killall.html index 03a5d54fd3..43ecf8a643 100644 --- a/c/killall.html +++ b/c/killall.html @@ -10,7 +10,7 @@ killall 命令,Linux killall 命令详解:使用进程的名称来杀死一组进程 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    killall

    +
    +

    killall

    使用进程的名称来杀死一组进程

    -

    补充说明

    +

    补充说明

    killall命令 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

    -

    语法

    +

    语法

    killall(选项)(参数)
     
    -

    选项

    +

    选项

    -e:对长名称进行精确匹配;
     -l:忽略大小写的不同;
     -p:杀死进程所属的进程组;
    @@ -77,13 +69,9 @@
     -s:用指定的进程号代替默认信号“SIGTERM”;
     -u:杀死指定用户的进程。
     
    -

    参数

    +

    参数

    进程名称:指定要杀死的进程名称。

    -

    实例

    +

    实例

    杀死所有同名进程

    killall vi
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/last.html b/c/last.html index 91cf41d069..d7341383c1 100644 --- a/c/last.html +++ b/c/last.html @@ -10,7 +10,7 @@ last 命令,Linux last 命令详解:列出目前与过去登入系统的用户相关信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    last

    +
    +

    last

    列出目前与过去登入系统的用户相关信息

    -

    补充说明

    +

    补充说明

    last命令 用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

    -

    语法

    +

    语法

    last(选项)(参数)
     
    -

    选项

    +

    选项

    -a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
     -d:将IP地址转换成主机名称;
     -f <记录文件>:指定记录文件。
    @@ -74,16 +66,12 @@
     -R:不显示登入系统的主机名称或IP地址;
     -x:显示系统关机,重新开机,以及执行等级的改变等信息。
     
    -

    参数

    +

    参数

    • 用户名:显示用户登录列表;
    • 终端:显示从指定终端的登录列表。
    -

    实例

    +

    实例

    last命令用了显示用户登录情况,以下是直接显示固定行数的记录:

    last -10
     root     pts/0        221.6.45.34      Tue Dec 17 09:40   still logged in
    @@ -122,7 +110,7 @@ root     pts/0        221.6.45.34      Mon Dec
     
    - - + + \ No newline at end of file diff --git a/c/lastb.html b/c/lastb.html index a83b90c0c0..49d674c164 100644 --- a/c/lastb.html +++ b/c/lastb.html @@ -10,7 +10,7 @@ lastb 命令,Linux lastb 命令详解:列出登入系统失败的用户相关信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lastb

    +
    +

    lastb

    列出登入系统失败的用户相关信息

    -

    补充说明

    +

    补充说明

    lastb命令 用于显示用户错误的登录列表,此指令可以发现系统的登录异常。单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显示出来。

    -

    语法

    +

    语法

    lastb(选项)(参数)
     
    -

    选项

    +

    选项

    -a:把从何处登入系统的主机名称或ip地址显示在最后一行;
     -d:将IP地址转换成主机名称;
     -f<记录文件>:指定记录文件;
    @@ -74,16 +66,12 @@
     -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.
    @@ -129,7 +117,7 @@ admin    ssh:notty    129.171.193.99   Mon Dec
     
    - - + + \ No newline at end of file diff --git a/c/lastlog.html b/c/lastlog.html index 5adbd4a91d..fba99852e2 100644 --- a/c/lastlog.html +++ b/c/lastlog.html @@ -10,7 +10,7 @@ lastlog 命令,Linux lastlog 命令详解:显示系统中所有用户最近一次登录信息 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
    -

    lastlog

    +
    +

    lastlog

    显示系统中所有用户最近一次登录信息

    -

    补充说明

    +

    补充说明

    lastlog命令 用于显示系统中所有用户最近一次登录信息。

    lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示**Never logged**。注意需要以root身份运行该命令。

    -

    语法

    +

    语法

    lastlog(选项)
     
    -

    选项

    +

    选项

    -b<天数>:显示指定天数前的登录信息;
     -h:显示召集令的帮助信息;
     -t<天数>:显示指定天数以来的登录信息;
     -u<用户名>:显示指定用户的最近登录信息。
     
    -

    实例

    +

    实例

    lastlog
     Username         Port     From             Latest
     root             pts/0    221.6.45.34      Tue Dec 17 09:40:48 +0800 2013
    @@ -128,7 +118,7 @@ mysql                                       **Never logged in**
     
    - - + + \ No newline at end of file diff --git a/c/ld.html b/c/ld.html index a0ea0a1b46..a55cdbdc36 100644 --- a/c/ld.html +++ b/c/ld.html @@ -10,7 +10,7 @@ ld 命令,Linux ld 命令详解:将目标文件连接为可执行程序 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
    -

    ld

    +
    +

    ld

    将目标文件连接为可执行程序

    -

    补充说明

    +

    补充说明

    ld命令 是GNU的连接器,将目标文件连接为可执行程序。

    -

    语法

    +

    语法

    ld(选项)(参数)
     ld [options] objfile ...
     
    -

    选项

    +

    选项

    -o:指定输出文件名;
     -e:指定程序的入口符号。
     
    -

    参数

    +

    参数

    目标文件:指定需要连接的目标文件。

    -

    实例

    +

    实例

    这告诉ld通过将文件 /lib/crt0.ohello.o 和库 libc.a 链接起来,生成一个名为 output 的文件,该文件将来自标准搜索目录。

    ld -o <output> /lib/crt0.o hello.o -lc
     ld -o output /lib/crt0.o hello.o -lc
    @@ -107,7 +95,7 @@ ld -o output /lib/crt0.o hello.o -lc
     
    - - + + \ No newline at end of file diff --git a/c/ldconfig.html b/c/ldconfig.html index 85a0bd6f85..ccd277c143 100644 --- a/c/ldconfig.html +++ b/c/ldconfig.html @@ -10,7 +10,7 @@ ldconfig 命令,Linux ldconfig 命令详解:动态链接库管理命令 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    ldconfig

    +
    +

    ldconfig

    动态链接库管理命令

    -

    补充说明

    +

    补充说明

    ldconfig命令 的用途主要是在默认搜寻目录/lib/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin目录下。

    ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。

    -

    语法

    +

    语法

    ldconfig [-v|--verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|--print-cache] [-c FORMAT] [--format=FORMAT] [-V] -?|--[help|--usage] path... 
     
    -

    选项

    +

    选项

    -v或--verbose:用此选项时,ldconfig将显示正在扫描的目录及搜索到的动态链接库,还有它所创建的连接的名字。
     -n:用此选项时,ldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib、/usr/lib),也不扫描配置文件/etc/ld.so.conf所列的目录。
     -N:此选项指示ldconfig不重建缓存文件(/etc/ld.so.cache),若未用-X选项,ldconfig照常更新文件的连接。
    @@ -116,7 +108,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/ldd.html b/c/ldd.html index 523c788982..b1f19cb8f4 100644 --- a/c/ldd.html +++ b/c/ldd.html @@ -10,7 +10,7 @@ ldd 命令,Linux ldd 命令详解:打印程序或者库文件所依赖的共享库列表 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ldd

    +
    +

    ldd

    打印程序或者库文件所依赖的共享库列表

    -

    补充说明

    +

    补充说明

    ldd命令 用于打印程序或者库文件所依赖的共享库列表。

    -

    语法

    +

    语法

    ldd(选项)(参数)
     
    -

    选项

    +

    选项

    --version:打印指令版本号;
     -v:详细信息模式,打印所有相关信息;
     -u:打印未使用的直接依赖;
    @@ -74,13 +66,9 @@
     -r:执行数据对象和函数的重定位,并且报告任何丢失的对象和函数;
     --help:显示帮助信息。
     
    -

    参数

    +

    参数

    文件:指定可执行程序或者文库。

    -

    其他介绍

    +

    其他介绍

    首先ldd不是一个可执行程序,而只是一个shell脚本

    ldd能够显示可执行模块的dependency,其原理是通过设置一系列的环境变量,如下:LD_TRACE_LOADED_OBJECTS、LD_WARN、LD_BIND_NOW、LD_LIBRARY_VERSION、LD_VERBOSE等。当LD_TRACE_LOADED_OBJECTS环境变量不为空时,任何可执行程序在运行时,它都会只显示模块的dependency,而程序并不真正执行。要不你可以在shell终端测试一下,如下:

    export LD_TRACE_LOADED_OBJECTS=1
    @@ -113,7 +101,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/less.html b/c/less.html index ae7c86fb6f..934085e77f 100644 --- a/c/less.html +++ b/c/less.html @@ -10,7 +10,7 @@ less 命令,Linux less 命令详解:分屏上下翻页浏览文件内容 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    less

    +
    +

    less

    分屏上下翻页浏览文件内容

    -

    补充说明

    +

    补充说明

    less命令 的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

    -

    语法

    +

    语法

    less(选项)(参数)
     
    -

    选项

    +

    选项

    -e:文件内容显示完毕后,自动退出;
     -f:强制显示文件;
     -g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
    @@ -76,13 +68,9 @@
     -S:在单行显示较长的内容,而不换行显示;
     -x<数字>:将TAB字符显示为指定个数的空格字符。
     
    -

    参数

    +

    参数

    文件:指定要分屏显示内容的文件。

    -

    实例

    +

    实例

    sudo less /var/log/shadowsocks.log
     
    @@ -110,7 +98,7 @@
    - - + + \ No newline at end of file diff --git a/c/let.html b/c/let.html index 498d44e993..0073adcd98 100644 --- a/c/let.html +++ b/c/let.html @@ -10,7 +10,7 @@ let 命令,Linux let 命令详解:简单的计算器,执行算术表达式。 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    let

    +
    +

    let

    简单的计算器,执行算术表达式。

    -

    概要

    +

    概要

    let arg [arg ...]
     
    -

    主要用途

    +

    主要用途

    • 执行一个或多个算术表达式。
    -

    参数

    +

    参数

    arg:算术表达式

    -

    返回值

    +

    返回值

    let最后一个执行的表达式的计算结果为0时返回1,否则返回0。 当let执行的表达式的除数为0时,返回1并报错。

    -

    运算符优先级递减表

    +

    运算符优先级递减表

    @@ -158,9 +146,7 @@
    -

    例子

    +

    例子

    # 尝试直接在终端中执行算术表达式(就像在python的IDLE)。
     3+4
     bash:3+4:command not found...
    @@ -217,9 +203,7 @@ bash:3:command not found...
     echo ${a}
     # 显示6。
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

      @@ -253,7 +237,7 @@ bash:3:command not found...
    - - + + \ No newline at end of file diff --git a/c/lftp.html b/c/lftp.html index 04b77d4eb4..74c58d20bc 100644 --- a/c/lftp.html +++ b/c/lftp.html @@ -10,7 +10,7 @@ lftp 命令,Linux lftp 命令详解:优秀的文件客户端程序 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    lftp

    +
    +

    lftp

    优秀的文件客户端程序

    -

    补充说明

    +

    补充说明

    lftp命令 是一款优秀的文件客户端程序,它支持ftp、SETP、HTTP和FTPs等多种文件传输协议。lftp支持tab自动补全,记不得命令双击tab键,就可以看到可能的选项了。

    -

    语法

    +

    语法

    lftp(选项)(参数)
     
    -

    选项

    +

    选项

    -f:指定lftp指令要执行的脚本文件;
     -c:执行指定的命令后退出;
     --help:显示帮助信息;
     --version:显示指令的版本号。
     
    -

    参数

    +

    参数

    站点:要访问的站点的ip地址或者域名。

    -

    实例

    +

    实例

    登录ftp

    lftp 用户名:密码@ftp地址:传送端口(默认21)
     
    @@ -150,7 +138,7 @@ pget -c -n 10 file.dat - - + + \ No newline at end of file diff --git a/c/lftpget.html b/c/lftpget.html index 9d8304b728..ac3ca5a3d0 100644 --- a/c/lftpget.html +++ b/c/lftpget.html @@ -10,7 +10,7 @@ lftpget 命令,Linux lftpget 命令详解:调用lftp指令下载指定的文件 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    lftpget

    +
    +

    lftpget

    调用lftp指令下载指定的文件

    -

    补充说明

    +

    补充说明

    lftpget命令 通过调用lftp指令下载指定的文件。

    -

    语法

    +

    语法

    lftpget(选项)(参数)
     
    -

    选项

    +

    选项

    -c:继续先前的下载;
     -d:输出调试信息;
     -v:输出详细信息。
     
    -

    参数

    +

    参数

    文件:指定要下载的文件,文件必须是合法的URL路径。

    @@ -100,7 +90,7 @@
    - - + + \ No newline at end of file diff --git a/c/lha.html b/c/lha.html index 81427a6571..ddcb47a956 100644 --- a/c/lha.html +++ b/c/lha.html @@ -10,7 +10,7 @@ lha 命令,Linux lha 命令详解:压缩或解压缩lzh格式文件 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    lha

    +
    +

    lha

    压缩或解压缩lzh格式文件

    -

    补充说明

    +

    补充说明

    lha命令 是从lharc演变而来的压缩程序,文件经它压缩后,会另外产生具有.lzh扩展名的压缩文件。

    -

    选项

    +

    选项

    -a或a:压缩文件,并加入到压缩文件内。
     -a<0/1/2>/u</0/1/2>   压缩文件时,采用不同的文件头。
     -c或c:压缩文件,重新建构新的压缩文件后,再将其加入。
    @@ -85,9 +79,7 @@
     -x或x:解开压缩文件。
     -<a/u>z或<a/u>z:不压缩文件,直接把它加入,更新压缩文件。
     
    -

    实例

    +

    实例

    lha -a abc.lhz a.b         #压缩a.b文件,压缩后生成 abc.lhz 文件
     lha -a abc2 /home/hnlinux  #压缩目录
     lha -xiw=agis abc          #解压文件abc,到当前目录
    @@ -117,7 +109,7 @@ lha -xiw=agis abc          
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/lilo.html b/c/lilo.html
    index 8a00f161dc..4a6036863a 100644
    --- a/c/lilo.html
    +++ b/c/lilo.html
    @@ -10,7 +10,7 @@
         
         lilo 命令,Linux lilo 命令详解:安装核心载入开机管理程序 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,25 +50,17 @@
     
     
     
    -
    -

    lilo

    +
    +

    lilo

    安装核心载入开机管理程序

    -

    补充说明

    +

    补充说明

    lilo命令 用于安装核心载入,开机管理程序。lilo是个Linux系统核心载入程序,同时具备管理开机的功能。单独执行lilo指令,它会读取/etc/lilo.conf配置文件,然后根据其内容安装lilo。

    Linux lilo已经成为所有 Linux 发行版的标准组成部分。作为一个 较老的/最老的 Linux 引导加载程序,它那不断壮大的 Linux 社区支持使它能够随时间的推移而发展,并始终能够充当一个可用的现代引导加载程序。有一些新的功能,比如增强的用户界面,以及对能够突破原来 1024-柱面限制的新 BIOS 功能的利用。

    虽然 LILO 仍在不断地发展,但 LILO 工作原理的基本概念保持不变。

    -

    语法

    +

    语法

    lilo(选项)
     
    -

    选项

    +

    选项

    -b<外围设备代号>:指定安装lilo之处的外围设备代号;
     -c:使用紧致映射模式;
     -C<配置文件>:指定lilo的配置文件;
    @@ -91,9 +83,7 @@
     -v:显示指令执行过程;
     -V:显示版本信息。
     
    -

    实例

    +

    实例

    使用 LILO 作为引导加载程序

    要使用 LILO 作为引导加载程序,需要做的事情取决于是要进行全新安装还是要让已经安装的 Linux 改为使用 LILO。如果是要进行全新安装,那么直接跳转到 配置 LILO 那一节。如果已经安装了某个 Linux 发行版,那么通常可以选择安装并配置 LILO(并可以将机器引导到新的 Linux 安装)。

    要将现有的 Linux 迁移到 LILO,首先必须获得最新版本的 LILO(见 参考资料)。在做任何其他事情之前,建议您确保在手边拥有一张 Linux 引导盘 —— 如果偶而弄错了某些地方,它可以提供很大的帮助,能够恢复到初始的 Linux 配置!将 LILO 安装到系统中之后,让它接管 MBR 非常简单。以 root 用户身份输入:

    @@ -178,7 +168,7 @@ compact
    - - + + \ No newline at end of file diff --git a/c/ln.html b/c/ln.html index efbd9ce16e..4306c7cccc 100644 --- a/c/ln.html +++ b/c/ln.html @@ -10,7 +10,7 @@ ln 命令,Linux ln 命令详解:用来为文件创建链接 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
    -

    ln

    +
    +

    ln

    用来为文件创建链接

    -

    补充说明

    +

    补充说明

    ln命令 用来为文件创建链接,链接类型分为硬链接和符号链接两种,默认的链接类型是硬链接。如果要创建符号链接必须使用"-s"选项。

    注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

    -

    语法

    +

    语法

    ln [选项]... [-T] 目标 链接名	(第一种格式)
      或:ln [选项]... 目标		(第二种格式)
      或:ln [选项]... 目标... 目录	(第三种格式)
      或:ln [选项]... -t 目录 目标...	(第四种格式)
     
    -

    选项

    +

    选项

        --backup[=CONTROL]  为每个已存在的目标文件创建备份文件
     -b        类似--backup,但不接受任何参数
     -d, -F, --directory   创建指向目录的硬链接(只适用于超级用户)
    @@ -88,9 +80,7 @@
         --help    显示此帮助信息并退出
         --version   显示版本信息并退出
     
    -

    参数

    +

    参数

    • 源文件:指定链接的源文件。如果使用-s选项创建符号链接,则“源文件”可以是文件或者目录。创建硬链接时,则“源文件”参数只能是文件。
    • 目标文件:指定源文件的目标链接文件。
    • @@ -100,9 +90,7 @@ numbered, t # 备份文件加上数字进行排 existing, nil # 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份 simple, never # 永远使用普通方式备份
    -

    实例

    +

    实例

    将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/liu下的文件a2.c

    cd /usr/mengqc
     ln /mub1/m2.c /usr/liu/a2.c
    @@ -112,18 +100,14 @@ simple, never   # 永远使用普通方式备份ln -s /usr/mengqc/mub1 /usr/liu/abc
     

    执行该命令后,/usr/mengqc/mub1代表的路径将存放在名为/usr/liu/abc的文件中。

    -

    扩展知识

    +

    扩展知识

    Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。另外,被链接的文件也可以有相同的文件名,但是存放在不同的目录下,这样只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。对于某个文件的各链接文件,我们可以给它们指定不同的存取权限,以控制对信息的共享和增强安全性。

    文件链接有两种形式,即硬链接和符号链接。

    ln功能说明:是为某一个文件在另外一个位置建立一个同步的链接,当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

    ⚠️ ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。

    -

    硬链接

    +

    硬链接

    建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。如下所示的m2.c文件就在目录mub1和liu中都建立了目录项。

    ls -ailR
     .:
    @@ -153,9 +137,7 @@ total 8
         
  • 不能对目录文件做硬链接。
  • 不能在不同的文件系统之间做硬链接。就是说,链接文件和被链接文件必须位于同一个文件系统中。
  • -

    符号链接

    +

    符号链接

    符号链接也称为软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。事实上,它只是一个文本文件(如下所示的abc文件),其中包含它提供链接的另一个文件的路径名,如虚线箭头所示。另一个文件是实际包含所有数据的文件。所有读、写文件内容的命令被用于符号链接时,将沿着链接方向前进来访问实际的文件。

    $ ls -il
     total 0
    @@ -197,7 +179,7 @@ total 0
     
    - - + + \ No newline at end of file diff --git a/c/lnstat.html b/c/lnstat.html index 9d77d2af26..cfb0eb061a 100644 --- a/c/lnstat.html +++ b/c/lnstat.html @@ -10,7 +10,7 @@ lnstat 命令,Linux lnstat 命令详解:显示Linux系统的网路状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lnstat

    +
    +

    lnstat

    显示Linux系统的网路状态

    -

    补充说明

    +

    补充说明

    lnstat命令 用来显示Linux系统的网路状态。

    -

    语法

    +

    语法

    lnstat(选项)
     
    -

    选项

    +

    选项

    -h:显示帮助信息;
     -V:显示指令版本信息;
     -c:指定显示网络状态的次数,每隔一定时间显示一次网络状态;
    @@ -101,7 +93,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/local.html b/c/local.html index 42c0d290df..76998c6d65 100644 --- a/c/local.html +++ b/c/local.html @@ -10,7 +10,7 @@ local 命令,Linux local 命令详解:在函数内定义局部变量。 - Linux 命令搜索引擎 - + @@ -50,52 +50,34 @@ -
    -

    local

    +
    +

    local

    在函数内定义局部变量。

    -

    概要

    +

    概要

    local [-aAfFgilnrtux] [-p] [name[=value] ...]
     
    -

    主要用途

    +

    主要用途

    • 在函数内定义局部变量
    • 显示局部变量
    • 在函数内定义全局变量
    -

    选项

    +

    选项

    local命令的选项与declare命令的相同,请参考declare命令的选项。
     
    -

    参数

    +

    参数

    name(可选):变量名或已定义函数名。

    value(可选):变量的值。

    -

    返回值

    +

    返回值

    local返回true除非你提供了非法选项、赋值错误或是在函数外使用local命令。

    -

    例子

    +

    例子

    相关例子请参考declare命令
     
    -

    错误用法

    +

    错误用法

    • 在函数外使用该命令。
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令以及man bashinfo bash的相应部分。
    @@ -124,7 +106,7 @@
    - - + + \ No newline at end of file diff --git a/c/locate.html b/c/locate.html index e87effed64..f858a43457 100644 --- a/c/locate.html +++ b/c/locate.html @@ -10,7 +10,7 @@ locate 命令,Linux locate 命令详解:比 find 好用的文件查找工具 - Linux 命令搜索引擎 - + @@ -50,26 +50,18 @@ -
    -

    locate

    +
    +

    locate

    比 find 好用的文件查找工具

    -

    补充说明

    +

    补充说明

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。

    locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)

    locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如”” 或”?”等)来指定范本样式,如指定范本为kcpaner, locate 会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。

    locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。

    -

    语法

    +

    语法

    locate [选择参数] [样式]
     
    -

    选项

    +

    选项

    -b, --basename  # 仅匹配路径名的基本名称
     -c, --count     # 只输出找到的数量
     -d, --database DBPATH # 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
    @@ -91,9 +83,7 @@
     -i, --ignore-case     # 忽略大小写
     -V, --version         # 显示版本信息
     
    -

    实例

    +

    实例

    实例1:查找和pwd相关的所有文件

    root ~ # locate pwd
     /bin/pwd
    @@ -152,7 +142,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/logger.html b/c/logger.html index b562dd73b1..a68fe5e83c 100644 --- a/c/logger.html +++ b/c/logger.html @@ -10,7 +10,7 @@ logger 命令,Linux logger 命令详解:在系统日志中记录相应条目 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    logger

    +
    +

    logger

    在系统日志中记录相应条目

    -

    补充说明

    +

    补充说明

    logger命令 是用于往系统中写入日志,他提供一个shell命令接口到syslog系统模块

    -

    语法

    +

    语法

    logger [options] [message]
     
    -

    选项

    +

    选项

     -T, --tcp             使用流连接(TCP)
      -d, --udp             使用数据报(UDP)
      -i, --id              逐行记录每一次logger的进程ID
    @@ -82,9 +74,7 @@
      -u, --socket <socket> 写入指定的socket,而不是到内置系统日志例程。
      -V, --version         输出版本信息并退出
     
    -

    例子

    +

    例子

    logger -p syslog.info "backup.sh is starting"
     
    @@ -112,7 +102,7 @@
    - - + + \ No newline at end of file diff --git a/c/login.html b/c/login.html index dc2eb6f058..bd5bbace99 100644 --- a/c/login.html +++ b/c/login.html @@ -10,7 +10,7 @@ login 命令,Linux login 命令详解:登录系统或切换用户身份 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    login

    +
    +

    login

    登录系统或切换用户身份

    -

    补充说明

    +

    补充说明

    login命令 用于给出登录界面,可用于重新登录或者切换用户身份,也可通过它的功能随时更换登入身份。在Slackware发行版中 ,您可在命令后面附加欲登入的用户名称,它会直接询问密码,等待用户输入。当/etc/nologin文件存在时,系统只root帐号登入系统,其他用户一律不准登入。

    -

    语法

    +

    语法

    login(选项)(参数)
     
    -

    选项

    +

    选项

    -p:告诉login指令不销毁环境变量;
     -h:指定远程服务器的主机名。
     
    -

    参数

    +

    参数

    用户名:指定登录使用的用户名。

    @@ -99,7 +89,7 @@
    - - + + \ No newline at end of file diff --git a/c/logname.html b/c/logname.html index 16c94e2fd2..f65723b8a5 100644 --- a/c/logname.html +++ b/c/logname.html @@ -10,7 +10,7 @@ logname 命令,Linux logname 命令详解:打印当前终端登录用户的名称。 - Linux 命令搜索引擎 - + @@ -50,41 +50,27 @@ -
    -

    logname

    +
    +

    logname

    打印当前终端登录用户的名称。

    -

    概要

    +

    概要

    logname [OPTION]...
     
    -

    主要用途

    +

    主要用途

    • 打印当前终端登录用户的名称。
    -

    选项

    +

    选项

    --help       显示帮助信息并退出。
     --version    显示版本信息并退出。
     
    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    [root@localhost ~]# logname
     root
     
    -

    注意

    +

    注意

    1. 注意区分 whoamilogname 这两个命令;比如我们以用户 root 打开的终端,然后切换到了用户 user2。此时, whoami返回的是当前用户 user2, logname 返回的是 root,大家可以自行实践验证一下。

      @@ -118,7 +104,7 @@ root
    - - + + \ No newline at end of file diff --git a/c/logout.html b/c/logout.html index 49d61d2bc9..d3c7c96eaa 100644 --- a/c/logout.html +++ b/c/logout.html @@ -10,7 +10,7 @@ logout 命令,Linux logout 命令详解:退出当前登录的Shell - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    logout

    +
    +

    logout

    退出当前登录的Shell

    -

    补充说明

    +

    补充说明

    logout命令 用于退出当前登录的Shell,logout指令让用户退出系统,其功能和login指令相互对应。

    -

    语法

    +

    语法

    logout
     
    @@ -89,7 +83,7 @@
    - - + + \ No newline at end of file diff --git a/c/logrotate.html b/c/logrotate.html index 40b4c19ef6..0f4af16214 100644 --- a/c/logrotate.html +++ b/c/logrotate.html @@ -10,7 +10,7 @@ logrotate 命令,Linux logrotate 命令详解:系统日志进行轮转、压缩和删除 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    logrotate

    +
    +

    logrotate

    系统日志进行轮转、压缩和删除

    -

    补充说明

    +

    补充说明

    logrotate命令 用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱。使用logrotate指令,可让你轻松管理系统所产生的记录文件。每个记录文件都可被设置成每日,每周或每月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,预设的配置文件存放在/etc/logrotate.conf文件中。

    -

    语法

    +

    语法

    logrotate(选项)(参数)
     
    -

    选项

    +

    选项

    -?或--help:在线帮助;
     -d或--debug:详细显示指令执行过程,便于排错或了解程序执行的情况;
     -f或--force :强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然;
    @@ -74,13 +66,9 @@
     -v或--version:显示指令执行过程;
     -usage:显示指令基本用法。
     
    -

    参数

    +

    参数

    配置文件:指定lograote指令的配置文件。

    -

    实例

    +

    实例

    crontab 会定时调用logrotate命令 在 /etc/cron.daily/logrotate 文件中配置使用

    logrotate的配置文件/etc/logrotate.conf 定义引用/etc/logrotate.d目录下的一些自定义的log配置

    /etc/logrotate.d目录下创建任意后缀名的文件,即可使用对日志进行轮转

    @@ -123,9 +111,7 @@ dateext 使用当期日期作为命名格式 dateformat .%s 配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数 size(或minsize) log-size 当日志文件到达指定的大小时才转储
    -

    注意事项

    +

    注意事项

    /etc/logrotate.d目录下创建任意后缀名的文件

    /tmp/log/log*
     {
    @@ -164,7 +150,7 @@ size(或minsize) log-size 当日志文件到达指定的大小时才转储
     
    - - + + \ No newline at end of file diff --git a/c/logsave.html b/c/logsave.html index ff835c30ee..24cb3d8f42 100644 --- a/c/logsave.html +++ b/c/logsave.html @@ -10,7 +10,7 @@ logsave 命令,Linux logsave 命令详解:将命令的输出信息保存到指定的日志文件 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    logsave

    +
    +

    logsave

    将命令的输出信息保存到指定的日志文件

    -

    补充说明

    +

    补充说明

    logsave命令 运行给定的命令,并将命令的输出信息保存到指定的日志文件中。

    -

    语法

    +

    语法

    logsave(选项)(参数)
     
    -

    选项

    +

    选项

    -a:追加信息到指定的日志文件中。
     
    -

    参数

    +

    参数

    • 日志文件:指定记录运行信息的日志文件;
    • 指令:需要执行的指令。
    • @@ -101,7 +91,7 @@
    - - + + \ No newline at end of file diff --git a/c/logwatch.html b/c/logwatch.html index 366232ac45..3a84af448b 100644 --- a/c/logwatch.html +++ b/c/logwatch.html @@ -10,7 +10,7 @@ logwatch 命令,Linux logwatch 命令详解:可定制和可插入式的日志监视系统 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    logwatch

    +
    +

    logwatch

    可定制和可插入式的日志监视系统

    -

    补充说明

    +

    补充说明

    logwatch命令 是一个可定制和可插入式的日志监视系统,它通过遍历给定时间范围内的系统日志文件而产生日志报告。logwatch默认每天执行一次,可以从/etc/cron.daily里看到。

    -

    语法

    +

    语法

    logwatch(选项)
     
    -

    选项

    +

    选项

    --detail<报告详细程度>:指定日志报告的详细程度;
     --logfile<日志文件>:仅处理指定的日志文件;
     --service<服务名>:仅处理指定服务的日志文件;
    @@ -81,9 +73,7 @@
     --numeric:在报告中显示ip地址而不是主机名;
     --help:显示指令的帮助信息。
     
    -

    实例

    +

    实例

    检查你的主机上是否已经存在Logwatch(Redhat默认已经安装了Logwatch,不过版本比较旧):

    rpm -qa logwatch
     
    @@ -129,7 +119,7 @@ logwatch --service sshd --detail High 只看sshd的日志
    - - + + \ No newline at end of file diff --git a/c/look.html b/c/look.html index 07b4a27fcc..c85e8ac453 100644 --- a/c/look.html +++ b/c/look.html @@ -10,7 +10,7 @@ look 命令,Linux look 命令详解:显示文件中以指定字符串开头的任意行 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    look

    +
    +

    look

    显示文件中以指定字符串开头的任意行

    -

    补充说明

    +

    补充说明

    look命令 用于显示文件中以指定字符串开头的任意行。

    -

    语法

    +

    语法

    look(选项)(参数)
     
    -

    选项

    +

    选项

    -a:使用另一个字典文件web2,该文件也位于/usr/dict目录下;
     -d:只对比英文字母和数字,其余一概忽略不予比对;
     -f:忽略字符大小写差别;
     -t<字尾字符串>:设置字尾字符串。
     
    -

    参数

    +

    参数

    • 字符串:指定要查找的字符串;
    • 文件:指定要查找的目标文件。
    • @@ -104,7 +94,7 @@
    - - + + \ No newline at end of file diff --git a/c/losetup.html b/c/losetup.html index e7d11cf0af..0ede989add 100644 --- a/c/losetup.html +++ b/c/losetup.html @@ -10,7 +10,7 @@ losetup 命令,Linux losetup 命令详解:设定与控制循环(loop)设备 - Linux 命令搜索引擎 - + @@ -50,46 +50,32 @@ -
    -

    losetup

    +
    +

    losetup

    设定与控制循环(loop)设备

    -

    补充说明

    +

    补充说明

    losetup命令 用来设置循环设备。循环设备可把文件虚拟成块设备,籍此来模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。

    -

    语法

    +

    语法

    losetup [ -e encryption ] [ -o offset ] loop_device file
     losetup [ -d ] loop_device
     
    -

    选项

    +

    选项

    -a 显示所有循环设备的状态。
     -d 卸除设备。
     -e <加密选项> 启动加密编码 。
     -f 寻找第一个未使用的循环设备。
     -o <偏移量>设置数据偏移量,单位是字节。
     
    -

    参数

    +

    参数

    • loop_device:循环设备可以是/dev/loop0, /dev/loop1 ... /dev/loop7。
    • file:要与循环设备相关联的文件名,这个往往是一个磁盘镜象文件,如 *.img
    -

    loop设备介绍

    +

    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
     
    @@ -129,7 +115,7 @@ losetup -d /dev/loop1
    - - + + \ No newline at end of file diff --git a/c/lp.html b/c/lp.html index 6b37b46ad3..87f639294f 100644 --- a/c/lp.html +++ b/c/lp.html @@ -10,7 +10,7 @@ lp 命令,Linux lp 命令详解:打印文件或修改排队的打印任务 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lp

    +
    +

    lp

    打印文件或修改排队的打印任务

    -

    补充说明

    +

    补充说明

    lp命令 用于打印文件,或者修改排队的打印任务。与lpr命令类似,lp命令既支持文件输入也支持标准输入。它与lpr的不同之处在于它有一个不同(稍微复杂点)的参数选项设置。

    -

    语法

    +

    语法

    lp(选项)(参数)
     
    -

    选项

    +

    选项

    -E:与打印服务器连接时强制使用加密;
     -U:指定连接打印服务器时使用的用户名;
     -d:指定接收打印任务的目标打印机;
    @@ -77,13 +69,9 @@
     -H:指定打印任务开始的时间;
     -P:指定需要打印的页码。
     
    -

    参数

    +

    参数

    文件:需打印的文件。

    -

    实例

    +

    实例

    要在连接在设备dlp0上的打印机lp0上打印文件/etc/motd,请输入:

    lp /etc/motd
     
    @@ -134,7 +122,7 @@
    - - + + \ No newline at end of file diff --git a/c/lpadmin.html b/c/lpadmin.html index c48fccc4b9..e21c42ba9d 100644 --- a/c/lpadmin.html +++ b/c/lpadmin.html @@ -10,7 +10,7 @@ lpadmin 命令,Linux lpadmin 命令详解:配置CUPS套件中的打印机和类 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lpadmin

    +
    +

    lpadmin

    配置CUPS套件中的打印机和类

    -

    补充说明

    +

    补充说明

    lpadmin命令 用于配置CUPS套件中的打印机和类,也被用来设置打印服务器默认打印机。

    -

    语法

    +

    语法

    lpadmin(选项)(参数)
     
    -

    选项

    +

    选项

    -c:将打印机加入类;
     -i:为打印机设置“system V”风格的接口脚本;
     -m:从mode目录设置一个标准的“system V”接口脚本或“PPD”文件;
    @@ -80,9 +72,7 @@
     -p:指定要配置的打印机名称;
     -d:设置默认打印机。
     
    -

    参数

    +

    参数

    打印机:指定要配置的打印机的名称。

    @@ -109,7 +99,7 @@
    - - + + \ No newline at end of file diff --git a/c/lpc.html b/c/lpc.html index cdf60e9e05..72c2b6f087 100644 --- a/c/lpc.html +++ b/c/lpc.html @@ -10,7 +10,7 @@ lpc 命令,Linux lpc 命令详解:命令行方式打印机控制程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lpc

    +
    +

    lpc

    命令行方式打印机控制程序

    -

    补充说明

    +

    补充说明

    lpc命令 式命令行方式打印机控制程序,有5个内置命令。

    -

    语法

    +

    语法

    lpc
     
    -

    实例

    +

    实例

    [root@localhost ~]# lpc
     lpc> ?         
     命令可能是缩写。命令是:
    @@ -99,7 +91,7 @@ lpc> 
     
    - - + + \ No newline at end of file diff --git a/c/lpq.html b/c/lpq.html index 5596f6ba4f..6384956561 100644 --- a/c/lpq.html +++ b/c/lpq.html @@ -10,7 +10,7 @@ lpq 命令,Linux lpq 命令详解:显示打印队列中的打印任务的状态信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lpq

    +
    +

    lpq

    显示打印队列中的打印任务的状态信息

    -

    补充说明

    +

    补充说明

    lpq命令 用于显示打印队列中的打印任务的状态信息。

    -

    语法

    +

    语法

    lpq(选项)
     
    -

    选项

    +

    选项

    -E:强制使用加密方式与服务器连接;
     -P:显示中的打印机上的打印队列状态;;
     -U:自动可选的用户名;
    @@ -100,7 +92,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/lpr.html b/c/lpr.html index 971c966df0..92ba564339 100644 --- a/c/lpr.html +++ b/c/lpr.html @@ -10,7 +10,7 @@ lpr 命令,Linux lpr 命令详解:将文件发送给指定打印机进行打印 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lpr

    +
    +

    lpr

    将文件发送给指定打印机进行打印

    -

    补充说明

    +

    补充说明

    lpr命令 用于将文件发送给指定打印机进行打印,如果不指定目标打印机,则使用默认打印机。

    -

    语法

    +

    语法

    lpr(选项)(参数)
     
    -

    选项

    +

    选项

    -E:与打印服务器连接时强制使用加密;
     -H:指定可选的打印服务器;
     -C:指定打印任务的名称;
    @@ -77,13 +69,9 @@
     -m:打印完成后发送E-mail;
     -r:打印完成后删除文件。
     
    -

    参数

    +

    参数

    文件:需打印的文件。

    -

    实例

    +

    实例

    将man1和man2送到打印机lp进行打印:

    lpr -P lp man1 man2
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/lprm.html b/c/lprm.html index 12fe7cee7a..1ba80c8a7b 100644 --- a/c/lprm.html +++ b/c/lprm.html @@ -10,7 +10,7 @@ lprm 命令,Linux lprm 命令详解:删除打印队列中的打印任务 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
    -

    lprm

    +
    +

    lprm

    删除打印队列中的打印任务

    -

    补充说明

    +

    补充说明

    lprm命令 用于删除打印队列中的打印任务。尚未完成的打印机任务会被放在打印机贮列之中,这个命令可用来将常未送到打印机的任务取消。

    -

    语法

    +

    语法

    lprm(选项)(参数)
     
    -

    选项

    +

    选项

    -E:与打印服务器连接时强制使用加密;
     -P:指定接受打印任务的目标打印机;
     -U:指定可选的用户名。
     
    -

    参数

    +

    参数

    打印任务:指定需删除的打印任务号。

    -

    实例

    +

    实例

    将打印机hpprint中的第102号任务移除:

    lprm -Phpprint 102
     
    @@ -109,7 +97,7 @@
    - - + + \ No newline at end of file diff --git a/c/lpstat.html b/c/lpstat.html index 7c22435bfd..4ca6bc569b 100644 --- a/c/lpstat.html +++ b/c/lpstat.html @@ -10,7 +10,7 @@ lpstat 命令,Linux lpstat 命令详解:显示CUPS中打印机的状态信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    lpstat

    +
    +

    lpstat

    显示CUPS中打印机的状态信息

    -

    补充说明

    +

    补充说明

    lpstat命令 用于显示CUPS中打印机的状态信息。

    -

    语法

    +

    语法

    lpstat(选项)
     
    -

    选项

    +

    选项

    -E:与打印机连接时加密;
     -R:显示打印任务的等级;
     -U:指定可选用户名;
    @@ -104,7 +96,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/ls.html b/c/ls.html index f6ca160ebf..8cb110347b 100644 --- a/c/ls.html +++ b/c/ls.html @@ -10,7 +10,7 @@ ls 命令,Linux ls 命令详解:显示目录内容列表 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
    -

    ls

    +
    +

    ls

    显示目录内容列表

    -

    补充说明

    +

    补充说明

    ls命令 就是list的缩写,用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

    -

    语法

    +

    语法

    ls [选项] [文件名...]
        [-1abcdfgiklmnopqrstuxABCDFGLNQRSUX] [-w cols] [-T cols] [-I pattern] [--full-time] 
        [--format={long,verbose,commas,across,vertical,single-col‐umn}] 
        [--sort={none,time,size,extension}] [--time={atime,access,use,ctime,status}] 
        [--color[={none,auto,always}]] [--help] [--version] [--]
     
    -

    选项

    +

    选项

    -C     # 多列输出,纵向排序。
     -F     # 每个目录名加 "/" 后缀,每个 FIFO 名加 "|" 后缀, 每个可运行名加“ * ”后缀。
     -R     # 递归列出遇到的子目录。
    @@ -221,13 +213,9 @@ none # 不使用颜色,这是缺省项。
            # 因此这个选项已经给出了系统所知的全部信息。)例如,当你有一个         Makefile          文件
            # 不能恰当地生成文件时,这个选项会提供帮助。
     
    -

    参数

    +

    参数

    目录:指定要显示列表的目录,也可以是具体的文件。

    -

    实例

    +

    实例

    $ ls       # 仅列出当前目录可见文件
     $ ls -l    # 列出当前目录可见文件详细信息
     $ ls -hl   # 列出详细信息并以可读大小显示文件大小
    @@ -418,12 +406,8 @@ auto/  CHANGES  CHANGES.ru  conf/  configure*  contrib/  html/  LICENSE  Makefil
     
     auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
     
    -

    扩展知识

    -

    不同颜色代表的文件类型

    +

    扩展知识

    +

    不同颜色代表的文件类型

    • 蓝色:目录
    • 绿色:可执行文件
    • @@ -459,7 +443,7 @@ auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile - - + + \ No newline at end of file diff --git a/c/lsattr.html b/c/lsattr.html index 2b95eec473..92c3a1320b 100644 --- a/c/lsattr.html +++ b/c/lsattr.html @@ -10,7 +10,7 @@ lsattr 命令,Linux lsattr 命令详解:查看文件的第二扩展文件系统属性 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      lsattr

      +
      +

      lsattr

      查看文件的第二扩展文件系统属性

      -

      补充说明

      +

      补充说明

      lsattr命令 用于查看文件的第二扩展文件系统属性。

      -

      语法

      +

      语法

      lsattr(选项)(参数)
       
      -

      选项

      +

      选项

      -E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。
       -D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。
       -R:递归的操作方式;
      @@ -74,13 +66,9 @@
       -a:列出目录中的所有文件,包括隐藏文件。
       

      lsattr经常使用的几个选项-D,-E,-R这三个选项不可以一起使用,它们是互斥的,经常使用的还有-l,-H,使用lsattr时,必须指出具体的设备名,用-l选项指出要显示设备的逻辑名称,否则要用-c,-s,-t等选项唯一的确定某个已存在的设备。

      -

      参数

      +

      参数

      文件:指定显示文件系统属性的文件名。

      -

      实例

      +

      实例

      lsattr -E -l rmt0 -H
       lsattr -EO -l rmt0
       
      @@ -109,7 +97,7 @@ lsattr -EO -l rmt0
      - - + + \ No newline at end of file diff --git a/c/lsb_release.html b/c/lsb_release.html index 312de6739b..31d49d9464 100644 --- a/c/lsb_release.html +++ b/c/lsb_release.html @@ -10,7 +10,7 @@ lsb_release 命令,Linux lsb_release 命令详解:显示发行版本信息 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      lsb_release

      +
      +

      lsb_release

      显示发行版本信息

      -

      补充说明

      +

      补充说明

      LSB是Linux Standard Base的缩写, lsb_release命令 用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。

      -v 显示版本信息。
       -i 显示发行版的id。
      @@ -98,7 +94,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/lsblk.html b/c/lsblk.html index 7a89ef7c56..d5db306df8 100644 --- a/c/lsblk.html +++ b/c/lsblk.html @@ -10,7 +10,7 @@ lsblk 命令,Linux lsblk 命令详解:列出块设备信息 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
      -

      lsblk

      +
      +

      lsblk

      列出块设备信息

      -

      补充说明

      +

      补充说明

      lsblk命令 用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,cd-ROM等等。lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。这个包带了几个其它工具,如dmesg。要安装lsblk,请在此处下载util-linux包。Fedora用户可以通过命令sudo yum install util-linux-ng来安装该包。

      -

      选项

      +

      选项

      -a, --all            # 显示所有设备。
       -b, --bytes          # 以bytes方式显示设备大小。
       -d, --nodeps         # 不显示 slaves 或 holders。
      @@ -78,9 +72,7 @@
       -r, --raw            # 使用原始格式显示。
       -t, --topology       # 显示拓扑结构信息。
       
      -

      实例

      +

      实例

      lsblk命令默认情况下将以树状列出所有块设备。打开终端,并输入以下命令:

      lsblk
       
      @@ -151,7 +143,7 @@ lsblk --bytes /dev/sda
       
      - - + + \ No newline at end of file diff --git a/c/lscpu.html b/c/lscpu.html index 9a09508449..e708b6eb8c 100644 --- a/c/lscpu.html +++ b/c/lscpu.html @@ -10,7 +10,7 @@ lscpu 命令,Linux lscpu 命令详解:显示有关CPU架构的信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      lscpu

      +
      +

      lscpu

      显示有关CPU架构的信息

      -

      补充说明

      +

      补充说明

      lscpu命令 是显示有关CPU架构的信息。

      -

      语法

      +

      语法

      lscpu [选项]
       
      -

      选项

      +

      选项

       -a, --all               # 打印在线和离线CPU(默认为-e)
        -b, --online            # 仅打印在线CPU(-p的默认值)
        -c, --offline           # 打印离线CPU
      @@ -78,9 +70,7 @@
        -h, --help     # 显示此帮助并退出
        -V, --version  # 输出版本信息并退出
       
      -

      参数

      +

      参数

      可用列:
                  CPU  逻辑CPU编号
                 CORE  逻辑核心号码
      @@ -93,9 +83,7 @@
           CONFIGURED  显示管理程序是否分配了CPU
               ONLINE  显示Linux是否正在使用CPU
       
      -

      例子

      +

      例子

      [root@localhost ~]# lscpu
       Architecture:          x86_64
       CPU op-mode(s):        32-bit, 64-bit
      @@ -145,7 +133,7 @@ NUMA node0 CPU(s
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/lsmod.html b/c/lsmod.html
      index 5e8bfebcfb..e3b95c031b 100644
      --- a/c/lsmod.html
      +++ b/c/lsmod.html
      @@ -10,7 +10,7 @@
           
           lsmod 命令,Linux lsmod 命令详解:显示已载入系统的模块 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      lsmod

      +
      +

      lsmod

      显示已载入系统的模块

      -

      补充说明

      +

      补充说明

      lsmod命令 用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块,待需要时再分别载入。

      -

      语法

      +

      语法

      lsmod
       
      -

      实例

      +

      实例

      [root@LinServ-1 ~]# lsmod
       Module                  Size  Used by
       ipv6                  272801  15
      @@ -174,7 +166,7 @@ ehci_hcd               34509  
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/lsof.html b/c/lsof.html
      index 2f656b00af..a3ed59f568 100644
      --- a/c/lsof.html
      +++ b/c/lsof.html
      @@ -10,7 +10,7 @@
           
           lsof 命令,Linux lsof 命令详解:显示Linux系统当前已打开的所有文件列表 `lsof -p pid` -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,24 +50,16 @@
       
       
       
      -
      -

      lsof

      +
      +

      lsof

      显示Linux系统当前已打开的所有文件列表 lsof -p pid

      -

      补充说明

      +

      补充说明

      lsof命令 用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。

      在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

      -

      语法

      +

      语法

      lsof (选项)
       
      -

      选项

      +

      选项

      -a:列出打开文件存在的进程;
       -c<进程名>:列出指定进程所打开的文件;
       -g:列出GID号进程详情;
      @@ -81,9 +73,7 @@
       -h:显示帮助信息;
       -v:显示版本信息
       
      -

      实例

      +

      实例

      lsof
       command     PID USER   FD      type             DEVICE     SIZE       NODE NAME
       init          1 root  cwd       DIR                8,2     4096          2 /
      @@ -210,7 +200,7 @@ events/1      7 root  cwd       DIR
       
      - - + + \ No newline at end of file diff --git a/c/lspci.html b/c/lspci.html index 4c7693b5c0..d731ac6598 100644 --- a/c/lspci.html +++ b/c/lspci.html @@ -10,7 +10,7 @@ lspci 命令,Linux lspci 命令详解:显示当前主机的所有PCI总线信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      lspci

      +
      +

      lspci

      显示当前主机的所有PCI总线信息

      -

      补充说明

      +

      补充说明

      lspci命令 用于显示当前主机的所有PCI总线信息,以及所有已连接的PCI设备信息。

      -

      语法

      +

      语法

      lspci(选项)
       
      -

      选项

      +

      选项

      -n:以数字方式显示PCI厂商和设备代码;
       -t:以树状结构显示PCI设备的层次关系,包括所有的总线、桥、设备以及它们之间的联接;
       -b:以总线为中心的视图;
      @@ -75,9 +67,7 @@
       -i:指定PCI编号列表文件,而不使用默认的文件;
       -m:以机器可读方式显示PCI设备信息。
       
      -

      实例

      +

      实例

      [root@localhost ~]# lspci
       00:00.0 host bridge: Intel Corporation 5500 I/O Hub to ESI Port (rev 22)
       00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 22)
      @@ -150,7 +140,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/lsusb.html b/c/lsusb.html index c539baf37f..53b17f3c93 100644 --- a/c/lsusb.html +++ b/c/lsusb.html @@ -10,7 +10,7 @@ lsusb 命令,Linux lsusb 命令详解:显示本机的USB设备列表信息 - Linux 命令搜索引擎 - + @@ -50,33 +50,23 @@ -
      -

      lsusb

      +
      +

      lsusb

      显示本机的USB设备列表信息

      -

      补充说明

      +

      补充说明

      lsusb命令 用于显示本机的USB设备列表,以及USB设备的详细信息。

      lsusb命令是一个学习USB驱动开发,认识USB设备的助手,推荐大家使用,如果您的开发板中或者产品中没有lsusb命令可以自己移植一个,放到文件系统里面。

      -

      语法

      +

      语法

      lsusb(选项)
       
      -

      选项

      +

      选项

      -v:显示USB设备的详细信息;
       -s<总线:设备号>仅显示指定的总线和(或)设备号的设备;
       -d<厂商:产品>:仅显示指定厂商和产品编号的设备;
       -t:以树状结构显示无理USB设备的层次;
       -V:显示命令的版本信息。
       
      -

      实例

      +

      实例

      插入usb鼠标后执行lsusb的输出内容如下:

      Bus 005 Device 001: id 0000:0000 
       Bus 001 Device 001: ID 0000:0000 
      @@ -130,7 +120,7 @@ Bus 002 Device 001: ID 0000:0000
       
      - - + + \ No newline at end of file diff --git a/c/ltrace.html b/c/ltrace.html index 26ae14544a..c6b718f3b6 100644 --- a/c/ltrace.html +++ b/c/ltrace.html @@ -10,7 +10,7 @@ ltrace 命令,Linux ltrace 命令详解:用来跟踪进程调用库函数的情况 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ltrace

      +
      +

      ltrace

      用来跟踪进程调用库函数的情况

      -

      补充说明

      +

      补充说明

      ltrace命令 是用来跟踪进程调用库函数的情况。

      -

      语法

      +

      语法

      ltrace [option ...] [command [arg ...]]
       
      -

      选项

      +

      选项

      -a 对齐具体某个列的返回值。
       -c 计算时间和调用,并在程序退出时打印摘要。
       -C 解码低级别名称(内核级)为用户级名称。
      @@ -89,9 +81,7 @@
       -V, --version 打印版本信息,然后退出。
       -x NAME treat the global NAME like a library subroutine.(求翻译)
       
      -

      实例

      +

      实例

      最基本应用,不带任何参数:

      [guest@localhost tmp]$ ltrace ./a.out
       __libc_start_main(0x80484aa, 1, 0xbfc07744, 0x8048550, 0x8048540 <unfinished ...>
      @@ -151,7 +141,7 @@ SYS_mmap2(0x424000, 
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/lvcreate.html b/c/lvcreate.html
      index d6090b209b..6475f0bcf5 100644
      --- a/c/lvcreate.html
      +++ b/c/lvcreate.html
      @@ -10,7 +10,7 @@
           
           lvcreate 命令,Linux lvcreate 命令详解:用于创建LVM的逻辑卷 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,33 +50,21 @@
       
       
       
      -
      -

      lvcreate

      +
      +

      lvcreate

      用于创建LVM的逻辑卷

      -

      补充说明

      +

      补充说明

      lvcreate命令 用于创建LVM的逻辑卷。逻辑卷是创建在卷组之上的。逻辑卷对应的设备文件保存在卷组目录下,例如:在卷组"vg1000"上创建一个逻辑卷"lvol0",则此逻辑卷对应的设备文件为"/dev/vg1000/lvol0"。

      -

      语法

      +

      语法

      lvcreate(选项)(参数)
       
      -

      选项

      +

      选项

      -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
       -l:指定逻辑卷的大小(LE数)。
       
      -

      参数

      +

      参数

      逻辑卷:指定要创建的逻辑卷名称。

      -

      实例

      +

      实例

      使用lvcreate命令在卷组"vg1000"上创建一个200MB的逻辑卷。在命令行中输入下面的命令:

      [root@localhost ~]# lvcreate -L 200M vg1000    #创建大小为200M的逻辑卷
       
      @@ -109,7 +97,7 @@
      - - + + \ No newline at end of file diff --git a/c/lvdisplay.html b/c/lvdisplay.html index 4e71e712bf..a73f1100aa 100644 --- a/c/lvdisplay.html +++ b/c/lvdisplay.html @@ -10,7 +10,7 @@ lvdisplay 命令,Linux lvdisplay 命令详解:显示逻辑卷属性 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
      -

      lvdisplay

      +
      +

      lvdisplay

      显示逻辑卷属性

      -

      补充说明

      +

      补充说明

      lvdisplay命令 用于显示LVM逻辑卷空间大小、读写状态和快照信息等属性。如果省略"逻辑卷"参数,则lvdisplay命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性。

      -

      语法

      +

      语法

      lvdisplay(参数)
       
      -

      参数

      +

      参数

      逻辑卷:指定要显示属性的逻辑卷对应的设备文件。

      -

      实例

      +

      实例

      使用lvdisplay命令显示指定逻辑卷的属性。在命令行中输入下面的命令:

      [root@localhost ~]# lvdisplay /dev/vg1000/lvol0     #显示逻辑卷属性
       
      @@ -105,7 +95,7 @@
      - - + + \ No newline at end of file diff --git a/c/lvextend.html b/c/lvextend.html index 2b50985f11..bb50bbe231 100644 --- a/c/lvextend.html +++ b/c/lvextend.html @@ -10,7 +10,7 @@ lvextend 命令,Linux lvextend 命令详解:扩展逻辑卷空间 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      lvextend

      +
      +

      lvextend

      扩展逻辑卷空间

      -

      补充说明

      +

      补充说明

      lvextend命令 用于在线扩展逻辑卷的空间大小,而不中断应用程序对逻辑卷的访问。使用lvextend命令动态在线扩展磁盘空间,整个空间扩展过程对于应用程序来说是完全透明的。

      -

      语法

      +

      语法

      lvextend(选项)(参数)
       
      -

      选项

      +

      选项

      -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
       -l:指定逻辑卷的大小(LE数)。
       
      -

      参数

      +

      参数

      逻辑卷:指定要扩展空间的逻辑卷。

      -

      实例

      +

      实例

      使用lvextend命令为逻辑卷/dev/vg1000/lvol0增加100M空间。在命令行中输入下面的命令:

      [root@localhost ~]# lvextend -L +100M /dev/vg1000/lvol0    #为了解决增加100M空间
       
      @@ -109,7 +97,7 @@ Logical volume lvol0 successfully resized
      - - + + \ No newline at end of file diff --git a/c/lvreduce.html b/c/lvreduce.html index 2bff46bb34..89846ee353 100644 --- a/c/lvreduce.html +++ b/c/lvreduce.html @@ -10,7 +10,7 @@ lvreduce 命令,Linux lvreduce 命令详解:收缩逻辑卷空间 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      lvreduce

      +
      +

      lvreduce

      收缩逻辑卷空间

      -

      补充说明

      +

      补充说明

      lvreduce命令 用于减少LVM逻辑卷占用的空间大小。使用lvreduce命令收缩逻辑卷的空间大小有可能会删除逻辑卷上已有的数据,所以在操作前必须进行确认。

      -

      语法

      +

      语法

      lvreduce(选项)(参数)
       
      -

      选项

      +

      选项

      -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
       -l:指定逻辑卷的大小(LE数)。
       
      -

      参数

      +

      参数

      逻辑卷:指定要操作的逻辑卷对应的设备文件。

      -

      实例

      +

      实例

      使用lvreduce命令减少指定的逻辑卷的空间大小。在命令行中输入下面的命令:

      [root@localhost ~]# lvreduce -L -50M /dev/vg1000/lvol0     #将逻辑卷的空间大小减少50M
       
      @@ -111,7 +99,7 @@ Do you really want to reduce lvol0? [y/n<
      - - + + \ No newline at end of file diff --git a/c/lvremove.html b/c/lvremove.html index 973162db57..a3f3d9e0d4 100644 --- a/c/lvremove.html +++ b/c/lvremove.html @@ -10,7 +10,7 @@ lvremove 命令,Linux lvremove 命令详解:删除指定LVM逻辑卷 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
      -

      lvremove

      +
      +

      lvremove

      删除指定LVM逻辑卷

      -

      补充说明

      +

      补充说明

      lvremove命令 用于删除指定LVM逻辑卷。如果逻辑卷已经使用mount命令加载,则不能使用lvremove命令删除。必须使用umount命令卸载后,逻辑卷方可被删除。

      -

      语法

      +

      语法

      lvremove(选项)(参数)
       
      -

      选项

      +

      选项

      -f:强制删除。
       
      -

      参数

      +

      参数

      逻辑卷:指定要删除的逻辑卷。

      -

      实例

      +

      实例

      使用lvremove命令删除指定的逻辑卷。在命令行中输入下面的命令:

      [root@localhost ~]# lvremove /dev/vg1000/lvol0    #删除逻辑卷"lvol0"
       
      @@ -109,7 +97,7 @@ volume "lvol0"? - - + + \ No newline at end of file diff --git a/c/lvresize.html b/c/lvresize.html index 1bd64a1008..613f5368c6 100644 --- a/c/lvresize.html +++ b/c/lvresize.html @@ -10,7 +10,7 @@ lvresize 命令,Linux lvresize 命令详解:调整逻辑卷空间大小 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      lvresize

      +
      +

      lvresize

      调整逻辑卷空间大小

      -

      补充说明

      +

      补充说明

      lvresize命令 用于调整LVM逻辑卷的空间大小,可以增大空间和缩小空间。使用lvresize命令调整逻辑卷空间大小和缩小空间时需要谨慎,因为它有可能导致数据丢失。

      -

      语法

      +

      语法

      lvresize(选项)(参数)
       
      -

      选项

      +

      选项

      -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
       -l:指定逻辑卷的大小(LE数)。
       
      -

      参数

      +

      参数

      逻辑卷:指定要删除的逻辑卷。

      -

      实例

      +

      实例

      使用lvresize命令调整最大的逻辑卷大小。在命令行中输入下面的命令:

      [root@localhost ~]# lvresize -L +200M /dev/vg1000/lvol0     #将逻辑卷空间增加200M
       
      @@ -109,7 +97,7 @@ Logical volume lvol0 successfully resized
      - - + + \ No newline at end of file diff --git a/c/lvscan.html b/c/lvscan.html index 3762cac43d..a227de6a10 100644 --- a/c/lvscan.html +++ b/c/lvscan.html @@ -10,7 +10,7 @@ lvscan 命令,Linux lvscan 命令详解:扫描逻辑卷 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
      -

      lvscan

      +
      +

      lvscan

      扫描逻辑卷

      -

      补充说明

      +

      补充说明

      lvscan命令 用于扫描当前系统中存在的所有的LVM逻辑卷。使用lvscan指令可以发现系统中的所有逻辑卷,及其对应的设备文件。

      -

      语法

      +

      语法

      lvscan(选项)
       
      -

      选项

      +

      选项

      -b:显示逻辑卷的主设备和次设备号。
       
      -

      实例

      +

      实例

      使用lvscan命令扫描系统中的所有逻辑卷。在命令行中输入下面的命令:

      [root@localhost ~]# lvscan     #扫描所有的逻辑卷
       
      @@ -103,7 +93,7 @@
      - - + + \ No newline at end of file diff --git a/c/lynx.html b/c/lynx.html index 9b8ab8cc91..29ef1fc414 100644 --- a/c/lynx.html +++ b/c/lynx.html @@ -10,7 +10,7 @@ lynx 命令,Linux lynx 命令详解:纯文本模式的网页浏览器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      lynx

      +
      +

      lynx

      纯文本模式的网页浏览器

      -

      补充说明

      +

      补充说明

      lynx命令 是纯文本模式的网页浏览器,不支持图形、音视频等多媒体信息。

      -

      语法

      +

      语法

      lynx(选项)(参数)
       
      -

      选项

      +

      选项

      -case:在搜索字符串时,区分大小写;
       -ftp:关闭ftp功能;
       -nobrowse:关闭目录浏览功能;
      @@ -76,13 +68,9 @@
       --help:显示指令的帮助信息;
       --versiom:显示指令的版本信息。
       
      -

      参数

      +

      参数

      URL:指定要访问的网站的URL地址。

      -

      内部命令

      +

      内部命令

      移动命令

      下方向键:页面上的下一个链接(用高亮度显示)。
       上方向键:页面上的前一个链接(用高亮度显示)。
      @@ -176,7 +164,7 @@ Ctrl+k:调用 Cookie Jar 页。
       
      - - + + \ No newline at end of file diff --git a/c/mail.html b/c/mail.html index 4a6b91fd5b..352324cc5e 100644 --- a/c/mail.html +++ b/c/mail.html @@ -10,7 +10,7 @@ mail 命令,Linux mail 命令详解:命令行下发送和接收电子邮件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mail

      +
      +

      mail

      命令行下发送和接收电子邮件

      -

      补充说明

      +

      补充说明

      mail命令 是命令行的电子邮件发送和接收工具。操作的界面不像elm或pine那么容易使用,但功能非常完整。

      -

      语法

      +

      语法

      mail(选项)(参数)
       
      -

      选项

      +

      选项

      -b<地址>:指定密件副本的收信人地址;
       -c<地址>:指定副本的收信人地址;
       -f<邮件文件>:读取指定邮件文件中的邮件;
      @@ -78,13 +70,9 @@
       -u<用户帐号>:读取指定用户的邮件;
       -v:执行时,显示详细的信息。
       
      -

      参数

      +

      参数

      邮件地址:收信人的电子邮箱地址。

      -

      实例

      +

      实例

      直接使用shell当编辑器

      mail -s "Hello from jsdig.com by shell" admin@jsdig.com
       hello,this is the content of mail.
      @@ -137,7 +125,7 @@ welcome to www.jsdig.com
       
      - - + + \ No newline at end of file diff --git a/c/mailq.html b/c/mailq.html index b8268aa839..2f4ab7ff15 100644 --- a/c/mailq.html +++ b/c/mailq.html @@ -10,7 +10,7 @@ mailq 命令,Linux mailq 命令详解:显示待发送的邮件队列 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
      -

      mailq

      +
      +

      mailq

      显示待发送的邮件队列

      -

      补充说明

      +

      补充说明

      mailq命令 用户显示待发送的邮件队列,显示的每一个条目包括邮件队列id、邮件大小、加入队列时间、邮件发送者和接受者。如果邮件最后一次尝试后还没有将邮件投递出去,则显示发送失败的原因。

      -

      语法

      +

      语法

      mailq(选项)
       
      -

      选项

      +

      选项

      -v:显示详细的信息。
       
      -

      实例

      +

      实例

      [root@localhost ~]# mailq -v
       /var/spool/mqueue is empty
                       Total requests: 0
      @@ -101,7 +91,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/mailstat.html b/c/mailstat.html index 6ec1a84e93..44be25d07b 100644 --- a/c/mailstat.html +++ b/c/mailstat.html @@ -10,7 +10,7 @@ mailstat 命令,Linux mailstat 命令详解:显示到达的邮件状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mailstat

      +
      +

      mailstat

      显示到达的邮件状态

      -

      补充说明

      +

      补充说明

      mailstat命令 用来显示到达的邮件状态。

      -

      语法

      +

      语法

      mailstat(选项)(参数)
       
      -

      选项

      +

      选项

      -k:保持邮件日志文件的完整性,不清空日志文件;
       -l:使用长格式显示邮件状态;
       -m:合并任何错误信息到一行中显示;
      @@ -74,9 +66,7 @@
       -t:使用简洁的格式显示邮件状态;
       -s:如果没有邮件则不输出任何信息。
       
      -

      参数

      +

      参数

      邮件日志文件:指定要读取邮件日志文件。

      @@ -103,7 +93,7 @@
      - - + + \ No newline at end of file diff --git a/c/make.html b/c/make.html index 9beacac6dc..4b9d0b370a 100644 --- a/c/make.html +++ b/c/make.html @@ -10,7 +10,7 @@ make 命令,Linux make 命令详解:GNU的工程化编译工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      make

      +
      +

      make

      GNU的工程化编译工具

      -

      补充说明

      +

      补充说明

      make命令 是GNU的工程化编译工具,用于编译众多相互关联的源代码文件,以实现工程化的管理,提高开发效率。

      -

      语法

      +

      语法

      make(选项)(参数)
       
      -

      选项

      +

      选项

      -f:指定“makefile”文件;
       -i:忽略命令执行返回的出错信息;
       -s:沉默模式,在执行之前不输出相应的命令行信息;
      @@ -83,13 +75,9 @@
       -h:help文挡,显示所有的make选项;
       -w:在处理 makefile 之前和之后,都显示工作目录。
       
      -

      参数

      +

      参数

      目标:指定编译目标。

      -

      知识扩展

      +

      知识扩展

      无论是在linux 还是在Unix环境 中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。

      而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。

      因此,有效的利用make和 makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。

      @@ -118,7 +106,7 @@
      - - + + \ No newline at end of file diff --git a/c/man.html b/c/man.html index 4fef6f94e1..ad7ebd0da0 100644 --- a/c/man.html +++ b/c/man.html @@ -10,7 +10,7 @@ man 命令,Linux man 命令详解:查看Linux中的指令帮助 - Linux 命令搜索引擎 - + @@ -50,38 +50,26 @@ -
      -

      man

      +
      +

      man

      查看Linux中的指令帮助

      -

      补充说明

      +

      补充说明

      man命令 是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。

      -

      语法

      +

      语法

      man(选项)(参数)
       
      -

      选项

      +

      选项

      -a:在所有的man帮助手册中搜索;
       -f:等价于whatis指令,显示给定关键字的简短描述信息;
       -P:指定内容时使用分页程序;
       -M:指定man手册搜索的路径。
       
      -

      参数

      +

      参数

      • 数字:指定从哪本man手册中搜索帮助;
      • 关键字:指定要搜索帮助的关键字。
      -

      数字代表内容

      +

      数字代表内容

      1:用户在shell环境可操作的命令或执行文件;
       2:系统内核可调用的函数与工具等
       3:一些常用的函数(function)与函数库(library),大部分为C的函数库(libc)
      @@ -92,9 +80,7 @@
       8:系统管理员可用的管理命令
       9:跟kernel有关的文件
       
      -

      实例

      +

      实例

      我们输入man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输man ifconfig它会在最左上角显示“IFCONFIG(8)”。也可以这样输入命令:“man [章节号] 手册名称”。

      man是按照手册的章节号的顺序进行搜索的,比如:

      man sleep
      @@ -127,7 +113,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/mapfile.html b/c/mapfile.html index 755ce87047..43ade77eca 100644 --- a/c/mapfile.html +++ b/c/mapfile.html @@ -10,7 +10,7 @@ mapfile 命令,Linux mapfile 命令详解:从标准输入读取行并赋值到数组。 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
      -

      mapfile

      +
      +

      mapfile

      从标准输入读取行并赋值到数组。

      -

      概要

      +

      概要

      mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]
       
      -

      主要用途

      +

      主要用途

      • 从标准输入或文件描述符读取行并赋值到数组。
      -

      选项

      +

      选项

      -d delim       将delim设为行分隔符,代替默认的换行符。
       -n count       从标准输入中获取最多count行,如果count为零那么获取全部。
       -O origin      从数组下标为origin的位置开始赋值,默认的下标为0。
      @@ -82,17 +74,11 @@
       当callback语句执行时,将数组下一个要赋值的下标以及读取的行作为额外的参数传递给callback语句。
       如果使用-O时没有提供起始位置,那么mapfile会在实际赋值之前清空该数组。
       
      -

      参数

      +

      参数

      array(可选):用于输出的数组名称。如果没有指定数组名称,那么会默认写入到变量名为MAPFILE的数组中。

      -

      返回值

      +

      返回值

      返回成功除非使用了非法选项、指定的数组是只读的、指定的数组不是下标数组。

      -

      例子

      +

      例子

      # 常见的读取形式。
       mapfile < source_file target_array
       cat source_file |mapfile target_array
      @@ -134,8 +120,8 @@
       
      - - + + \t' target_array mapfile < source_file -d ' ' target_array @@ -165,8 +151,8 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
      - - + + \t' -t target_array # 读取时移除行分隔符(换行符)。 @@ -180,9 +166,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h printf "%s" ${target_array[i]} done
      -

      注意

      +

      注意

      1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
      2. bash内建命令readarray是mapfile的同义词。
      3. @@ -212,7 +196,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
      - - + + \ No newline at end of file diff --git a/c/md5sum.html b/c/md5sum.html index b8576aefbb..f309ba6db1 100644 --- a/c/md5sum.html +++ b/c/md5sum.html @@ -10,7 +10,7 @@ md5sum 命令,Linux md5sum 命令详解:计算和校验文件报文摘要的工具程序 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
      -

      md5sum

      +
      +

      md5sum

      计算和校验文件报文摘要的工具程序

      -

      补充说明

      +

      补充说明

      md5sum命令 采用MD5报文摘要算法(128位)计算和检查文件的校验和。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。

      MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。

      -

      语法

      +

      语法

      md5sum(选项)(参数)
       
      -

      选项

      +

      选项

      -b:二进制模式读取文件;
       -t或--text:把输入的文件作为文本文件看待;
       -c:从指定文件中读取MD5校验和,并进行校验;
       --status:验证成功时不输出任何信息;
       -w:当校验不正确时给出警告信息。
       
      -

      参数

      +

      参数

      文件:指定保存着文件名和校验和的文本文件。

      -

      实例

      +

      实例

      使用 md5sum 生成密码

      另一种获取可用作密码的随机字符串的方法是计算 MD5 校验值!校验值看起来确实像是随机字符串组合在一起,我们可以用作密码。确保你的计算源是个变量,这样的话每次运行命令时生成的校验值都不一样。比如 date !date 命令 总会生成不同的输出。

      [root@localhost ~]# date | md5sum
      @@ -140,7 +128,7 @@ md5sum: testfile.md5: no properly formatted MD5 checksum lines found
       
      - - + + \ No newline at end of file diff --git a/c/mesg.html b/c/mesg.html index 6cb8a3519f..f3f18fbb11 100644 --- a/c/mesg.html +++ b/c/mesg.html @@ -10,7 +10,7 @@ mesg 命令,Linux mesg 命令详解:设置当前终端的写权限 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
      -

      mesg

      +
      +

      mesg

      设置当前终端的写权限

      -

      补充说明

      +

      补充说明

      mesg命令 用于设置当前终端的写权限,即是否让其他用户向本终端发信息。将mesg设置y时,其他用户可利用write命令将信息直接显示在您的屏幕上。

      -

      语法

      +

      语法

      mesg(参数)
       
      -

      参数

      +

      参数

      y/n:y表示运行向当前终端写信息,n表示禁止向当前终端写信息。

      -

      实例

      +

      实例

      [root@localhost ~]# mesg y    #允许系统用户将信息直接显示在你的屏幕上。
       [root@localhost ~]# mesg n    #不允许系统用户将信息直接显示在你的屏幕上。
       
      @@ -99,7 +89,7 @@
      - - + + \ No newline at end of file diff --git a/c/mii-tool.html b/c/mii-tool.html index c8ad672123..a8ede161ae 100644 --- a/c/mii-tool.html +++ b/c/mii-tool.html @@ -10,7 +10,7 @@ mii-tool 命令,Linux mii-tool 命令详解:配置网络设备协商方式的工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mii-tool

      +
      +

      mii-tool

      配置网络设备协商方式的工具

      -

      补充说明

      +

      补充说明

      mii-tool命令 是用于查看、管理介质的网络接口的状态,有时网卡需要配置协商方式,比如10/100/1000M的网卡半双工、全双工、自动协商的配置。但大多数的网络设备是不用我们来修改协商,因为大多数网络设置接入的时候,都采用自动协商来解决相互通信的问题。不过自动协商也不是万能的,有时也会出现错误,比如丢包率比较高,这时就要我们来指定网卡的协商方式。mii-tool就是能指定网卡的协商方式。下面我们说一说mii-tool的用法。

      -

      语法

      +

      语法

      usage: mii-tool [-VvRrwl] [-A media,... | -F media] [interface ...]
       
      -

      选项

      +

      选项

      -V 显示版本信息;
       -v 显示网络接口的信息;
       -R 重设MII到开启状态;
      @@ -79,9 +71,7 @@
       media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
               (to advertise both HD and FD) 100baseTx, 10baseT
       
      -

      实例

      +

      实例

      查看网络接口的协商状态:

      [root@localhost ~]# mii-tool -v eth0
       eth0: negotiated 100baseTx-FD, link ok
      @@ -133,7 +123,7 @@ eth0: 100 Mbit, full duplex, 
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/mkbootdisk.html b/c/mkbootdisk.html
      index daeafb0dcf..5f90f54c1a 100644
      --- a/c/mkbootdisk.html
      +++ b/c/mkbootdisk.html
      @@ -10,7 +10,7 @@
           
           mkbootdisk 命令,Linux mkbootdisk 命令详解:可建立目前系统的启动盘 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,36 +50,24 @@
       
       
       
      -
      -

      mkbootdisk

      +
      +

      mkbootdisk

      可建立目前系统的启动盘

      -

      补充说明

      +

      补充说明

      mkbootdisk命令 用来为当前运行的系统创建能够单独使用的系统引导软盘,以便在系统出现故障时能够启动操作进行适当的修复工作。

      -

      语法

      +

      语法

      mkbootdisk(选项)(参数)
       
      -

      选项

      +

      选项

      --device<设备>:指定设备;
       --mkinitrdargs<参数>:设置mkinitrd的参数;
       --noprompt:不会提示用户插入磁盘;
       --verbose:执行时显示详细的信息;
       --version:显示版本信息。
       
      -

      参数

      +

      参数

      内核:指定内核版本。

      -

      实例

      +

      实例

      mkbootdisk --device /dev/fd0 `uname -r`
       

      其中,uname -r是目前Linux 系统所使用的核心版本,如果你有多个核心版本的话,你以可以直接输入核心版本。例如在这个网页中所使用的核心有两个版本,一个是2.2.12-20,另一个是2.2.18,若要以2.2.18设定开机的话,可以使用:

      @@ -110,7 +98,7 @@
      - - + + \ No newline at end of file diff --git a/c/mkdir.html b/c/mkdir.html index 3b6749adfc..dbd0b718b8 100644 --- a/c/mkdir.html +++ b/c/mkdir.html @@ -10,7 +10,7 @@ mkdir 命令,Linux mkdir 命令详解:用来创建目录 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
      -

      mkdir

      +
      +

      mkdir

      用来创建目录

      -

      补充说明

      +

      补充说明

      mkdir命令 用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 

      注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。

      在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。

      -

      语法

      +

      语法

      mkdir (选项)(参数)
       
      -

      选项

      +

      选项

      -Z:设置安全上下文,当使用SELinux时有效;
       -m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
       -p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
       --version 显示版本信息。
       
      -

      参数

      +

      参数

      目录:指定要创建的目录列表,多个目录之间用空格隔开。

      -

      实例

      +

      实例

      在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问

      mkdir -m 700 /usr/meng/test
       
      @@ -112,7 +100,7 @@
      - - + + \ No newline at end of file diff --git a/c/mke2fs.html b/c/mke2fs.html index 0a8fc781c1..f939fc8866 100644 --- a/c/mke2fs.html +++ b/c/mke2fs.html @@ -10,7 +10,7 @@ mke2fs 命令,Linux mke2fs 命令详解:创建磁盘分区上的“etc2/etc3”文件系统 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mke2fs

      +
      +

      mke2fs

      创建磁盘分区上的“etc2/etc3”文件系统

      -

      补充说明

      +

      补充说明

      mke2fs命令 被用于创建磁盘分区上的“etc2/etc3”文件系统。

      -

      语法

      +

      语法

      mke2fs(选项)(参数)
       
      -

      选项

      +

      选项

      -b<区块大小>:指定区块大小,单位为字节;
       -c;检查是否有损坏的区块;
       -f<不连续区段大小>:指定不连续区段的大小,单位为字节;
      @@ -84,16 +76,12 @@
       -v:执行时显示详细信息;
       -V:显示版本信息。
       
      -

      参数

      +

      参数

      • 设备文件:指定要创建的文件系统的分区设备文件名;
      • 块数:指定要创建的文件系统的磁盘块数量。
      -

      实例

      +

      实例

      创建指定的ext2文件系统。

      mke2fs -q /dev/hda1
       
      @@ -122,7 +110,7 @@
      - - + + \ No newline at end of file diff --git a/c/mkfs.html b/c/mkfs.html index 32af03499d..39050ceda6 100644 --- a/c/mkfs.html +++ b/c/mkfs.html @@ -10,7 +10,7 @@ mkfs 命令,Linux mkfs 命令详解:用于在设备上创建Linux文件系统 - Linux 命令搜索引擎 - + @@ -50,39 +50,27 @@ -
      -

      mkfs

      +
      +

      mkfs

      用于在设备上创建Linux文件系统

      -

      补充说明

      +

      补充说明

      mkfs命令 用于在设备上(通常为硬盘)创建Linux文件系统。mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。

      -

      语法

      +

      语法

      mkfs(选项)(参数)
       
      -

      选项

      +

      选项

      fs:指定建立文件系统时的参数;
       -t<文件系统类型>:指定要建立何种文件系统;
       -v:显示版本信息与详细的使用方法;
       -V:显示简要的使用方法;
       -c:在制做档案系统前,检查该partition是否有坏轨。
       
      -

      参数

      +

      参数

      • 文件系统:指定要创建的文件系统对应的设备文件名;
      • 块数:指定文件系统的磁盘块数。
      -

      实例

      +

      实例

      /dev/hda5上建一个msdos的档案系统,同时检查是否有坏轨存在,并且将过程详细列出来:

      mkfs -V -t msdos -c /dev/hda5
       
      @@ -114,7 +102,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/mkinitrd.html b/c/mkinitrd.html index b029d552b2..f2f0d42cfd 100644 --- a/c/mkinitrd.html +++ b/c/mkinitrd.html @@ -10,7 +10,7 @@ mkinitrd 命令,Linux mkinitrd 命令详解:建立要载入ramdisk的映像文件 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
      -

      mkinitrd

      +
      +

      mkinitrd

      建立要载入ramdisk的映像文件

      -

      补充说明

      +

      补充说明

      mkinitrd命令 建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。

      这个是重新封包核心的命令,例如你自己修改了一个设备的驱动,如果这个驱动要加入核心级别的话,就需要对核心进行重新封包,把新加的配置编译到核心内部去!

      -

      语法

      +

      语法

      mkinitrd(选项)(参数)
       
      -

      选项

      +

      选项

      -f:若指定的映像问家名称与现有文件重复,则覆盖现有的文件;
       -v:执行时显示详细的信息;
       --omit-scsi-modules:不要载入SCSI模块;
      @@ -75,16 +67,12 @@
       --with=<模块名称>:指定要载入的模块;
       --version:显示版本信息。
       
      -

      参数

      +

      参数

      • 映像文件:指定要创建的映像文件;
      • 内核版本:指定内核版本。
      -

      实例

      +

      实例

      [root@localhost tmp]# mkinitrd -v -f myinitrd.img $(uname -r)
       Creating initramfs
       WARNING: using /tmp for temporary files
      @@ -134,7 +122,7 @@ myinitrd.img: ASCII cpio archive (SVR4 wi
       
      - - + + \ No newline at end of file diff --git a/c/mkisofs.html b/c/mkisofs.html index 2d545d4de9..949fa8f532 100644 --- a/c/mkisofs.html +++ b/c/mkisofs.html @@ -10,7 +10,7 @@ mkisofs 命令,Linux mkisofs 命令详解:建立ISO 9660映像文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mkisofs

      +
      +

      mkisofs

      建立ISO 9660映像文件

      -

      补充说明

      +

      补充说明

      mkisofs命令 用来将指定的目录与文件做成ISO 9660格式的映像文件,以供刻录光盘。

      -

      语法

      +

      语法

      mkisofs(选项)(参数)
       
      -

      选项

      +

      选项

      -a或--all:mkisofs通常不处理备份文件。使用此参数可以把备份文件加到映像文件中;
       -A<应用程序id>或-appid<应用程序ID>:指定光盘的应用程序ID;
       -abstract<摘要文件>:指定摘要文件的文件名;
      @@ -103,13 +95,9 @@
       -x<目录>:指定的目录将不会放入映像文件中;
       -z:建立通透性压缩文件的SUSP记录,此记录目前只在Alpha机器上的Linux有效。
       
      -

      参数

      +

      参数

      路径:需要添加到映像文件中的路径。

      -

      实例

      +

      实例

      linux中用mkisofs命令把文件制作成ISO步骤:

      把NFS服务器上的目录挂载到本地/mnt/nfs/的目录:

      mount -t nfs 10.0.2.2:/linuxos/rhel4.0_update3/ /mnt/nfs/
      @@ -154,7 +142,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/mknod.html b/c/mknod.html index 2e3b56b3a7..ff22f2d970 100644 --- a/c/mknod.html +++ b/c/mknod.html @@ -10,7 +10,7 @@ mknod 命令,Linux mknod 命令详解:创建字符设备文件和块设备文件 - Linux 命令搜索引擎 - + @@ -50,47 +50,33 @@ -
      -

      mknod

      +
      +

      mknod

      创建字符设备文件和块设备文件

      -

      补充说明

      +

      补充说明

      mknod命令 用于创建Linux中的字符设备文件和块设备文件。

      -

      语法

      +

      语法

      mknod(选项)(参数)
       
      -

      选项

      +

      选项

      -Z:设置安全的上下文;
       -m:设置权限模式;
       -help:显示帮助信息;
       --version:显示版本信息。
       
      -

      参数

      +

      参数

      • 文件名:要创建的设备文件名;
      • 类型:指定要创建的设备文件的类型;
      • 主设备号:指定设备文件的主设备号;
      • 次设备号:指定设备文件的次设备号。
      -

      实例

      +

      实例

      ls -la /dev/ttyUSB*
       crw-rw—- 1 root dialout 188, 0 2008-02-13 18:32 /dev/ttyUSB0
       mknod /dev/ttyUSB32 c 188 32
       
      -

      扩展知识

      +

      扩展知识

      Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录 下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。

      为了管理这些设备,系统为设备编了号,每 个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编 号,如硬盘的主设备号是3。

      Linux为所有的设备文件都提供了统一的操作函数接口,方法是使用数据结构struct file_operations。这个数据结构中包括许多操作函数的指针,如open()、close()、read()和write()等,但由于外设 的种类较多,操作方式各不相同。Struct file_operations结构体中的成员为一系列的接口函数,如用于读/写的read/write函数和用于控制的ioctl等。

      @@ -120,7 +106,7 @@ crw-rw—- 1 root dialout - - + + \ No newline at end of file diff --git a/c/mkswap.html b/c/mkswap.html index 0d933cc293..c7f44b615e 100644 --- a/c/mkswap.html +++ b/c/mkswap.html @@ -10,7 +10,7 @@ mkswap 命令,Linux mkswap 命令详解:建立和设置SWAP交换分区 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
      -

      mkswap

      +
      +

      mkswap

      建立和设置SWAP交换分区

      -

      补充说明

      +

      补充说明

      mkswap命令 用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。

      -

      语法

      +

      语法

      mkswap(选项)(参数)
       
      -

      选项

      +

      选项

      -c:建立交换区前,先检查是否有损坏的区块;
       -f:在SPARC电脑上建立交换区时,要加上此参数;
       -v0:建立旧式交换区,此为预设值;
       -v1:建立新式交换区。
       
      -

      参数

      +

      参数

      设备:指定交换空间对应的设备文件或者交换文件。

      -

      实例

      +

      实例

      查看系统swap space大小:

      free -m
       total used free shared buffers cached
      @@ -149,7 +137,7 @@ Swap: 572 0
       
      - - + + \ No newline at end of file diff --git a/c/mktemp.html b/c/mktemp.html index d18bdaf8da..e014480b7b 100644 --- a/c/mktemp.html +++ b/c/mktemp.html @@ -10,7 +10,7 @@ mktemp 命令,Linux mktemp 命令详解:创建临时文件供shell脚本使用 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      mktemp

      +
      +

      mktemp

      创建临时文件供shell脚本使用

      -

      补充说明

      +

      补充说明

      mktemp命令 被用来创建临时文件供shell脚本使用。

      -

      语法

      +

      语法

      mktemp(选项)(参数)
       
      -

      选项

      +

      选项

      -q:执行时若发生错误,不会显示任何信息;
       -u:暂存文件会在mktemp结束前先行删除;
       -d:创建一个目录而非文件。
       
      -

      参数

      +

      参数

      文件:指定创建的临时文件。

      @@ -100,7 +90,7 @@
      - - + + \ No newline at end of file diff --git a/c/modprobe.html b/c/modprobe.html index ebc9cbcd90..f14f2d08a9 100644 --- a/c/modprobe.html +++ b/c/modprobe.html @@ -10,7 +10,7 @@ modprobe 命令,Linux modprobe 命令详解:自动处理可载入模块 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
      -

      modprobe

      +
      +

      modprobe

      自动处理可载入模块

      -

      补充说明

      +

      补充说明

      modprobe命令 用于智能地向内核中加载模块或者从内核中移除模块。

      modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

      -

      语法

      +

      语法

      modprobe(选项)(参数)
       
      -

      选项

      +

      选项

      -a或--all:载入全部的模块;
       -c或--show-conf:显示所有模块的设置信息;
       -d或--debug:使用排错模式;
      @@ -78,13 +70,9 @@
       -V或--version:显示版本信息;
       -help:显示帮助。
       
      -

      参数

      +

      参数

      模块名:要加载或移除的模块名称。

      -

      实例

      +

      实例

      查看modules的配置文件:

      modprobe -c
       
      @@ -130,7 +118,7 @@
      - - + + \ No newline at end of file diff --git a/c/more.html b/c/more.html index c59c174744..b862acdbab 100644 --- a/c/more.html +++ b/c/more.html @@ -10,7 +10,7 @@ more 命令,Linux more 命令详解:显示文件内容,每次显示一屏 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      more

      +
      +

      more

      显示文件内容,每次显示一屏

      -

      补充说明

      +

      补充说明

      more命令 是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。

      该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比:--More--(XX%)可以用下列不同的方法对提示做出回答:

        @@ -68,14 +64,10 @@
      • 按B键:显示上一屏内容。
      • 按Q键:退出more命令。
      -

      语法

      +

      语法

      more(语法)(参数)
       
      -

      选项

      +

      选项

      -<数字>:指定每屏显示的行数;
       -d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;
       -c:不进行滚屏操作。每次刷新这个屏幕;
      @@ -83,13 +75,9 @@
       -u:禁止下划线;
       +<数字>:从指定数字的行开始显示。
       
      -

      参数

      +

      参数

      文件:指定分页显示内容的文件。

      -

      实例

      +

      实例

      显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完成的百分比。

      more -dc file
       
      @@ -121,7 +109,7 @@
      - - + + \ No newline at end of file diff --git a/c/mount.html b/c/mount.html index 3c6f3675d8..5147432d16 100644 --- a/c/mount.html +++ b/c/mount.html @@ -10,7 +10,7 @@ mount 命令,Linux mount 命令详解:用于挂载Linux系统外的文件 - Linux 命令搜索引擎 - + @@ -50,26 +50,18 @@ -
      -

      mount

      +
      +

      mount

      用于挂载Linux系统外的文件

      -

      补充说明

      +

      补充说明

      mount命令 Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。

      -

      语法

      +

      语法

      mount [-hV]
       mount -a [-fFnrsvw] [-t vfstype]
       mount [-fnrsvw] [-o options [,...]] device | dir
       mount [-fnrsvw] [-t vfstype] [-o options] device dir
       
      -

      选项

      +

      选项

      -V:显示程序版本
       -h:显示辅助讯息
       -v:显示较讯息,通常和 -f 用来除错。
      @@ -96,9 +88,7 @@
       -o rw:用可读写模式挂上。
       -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
       
      -

      实例

      +

      实例

      /dev/hda1 挂在 /mnt 之下。

      #mount /dev/hda1 /mnt
       
      @@ -133,7 +123,7 @@
      - - + + \ No newline at end of file diff --git a/c/mpstat.html b/c/mpstat.html index ebde513345..11ba378f2f 100644 --- a/c/mpstat.html +++ b/c/mpstat.html @@ -10,7 +10,7 @@ mpstat 命令,Linux mpstat 命令详解:显示各个可用CPU的状态 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
      -

      mpstat

      +
      +

      mpstat

      显示各个可用CPU的状态

      -

      补充说明

      +

      补充说明

      mpstat命令 指令主要用于多CPU环境下,它显示各个可用CPU的状态系你想。这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

      -

      语法

      +

      语法

      mpstat(选项)(参数)
       
      -

      选项

      +

      选项

      -P:指定CPU编号。
       
      -

      参数

      +

      参数

      • 间隔时间:每次报告的间隔时间(秒);
      • 次数:显示报告的次数。
      -

      实例

      +

      实例

      当mpstat不带参数时,输出为从系统启动以来的平均值。

      mpstat
       Linux 2.6.9-5.31AXsmp (builder.redflag-linux.com) 12/16/2005
      @@ -150,7 +138,7 @@ Average:     all    9.27    
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/mtools.html b/c/mtools.html
      index 3982895091..40f4324306 100644
      --- a/c/mtools.html
      +++ b/c/mtools.html
      @@ -10,7 +10,7 @@
           
           mtools 命令,Linux mtools 命令详解:显示mtools支持的指令 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      mtools

      +
      +

      mtools

      显示mtools支持的指令

      -

      补充说明

      +

      补充说明

      mtools命令 显示mtools支持的指令,mtools为MS-DOS文件系统的工具程序,可模拟许多MS-DOS的指令。这些指令都是mtools的符号连接,因此会有一些共同的特性。

      -

      语法

      +

      语法

      mtools(选项)
       
      -

      选项

      +

      选项

      -a:长文件名重复时自动更改目标文件的长文件名;
       -A:短文件名重复但长文件名不同时自动更改目标文件的短文件名;
       -o:长文件名重复时,将目标文件覆盖现有的文件;
      @@ -78,9 +70,7 @@
       -v:执行时显示详细的说明;
       -V:显示版本信息。
       
      -

      实例

      +

      实例

      使用mtools命令显示其支持的所有的指令,输入如下命令:

      [root@localhost ~]# mtools     #显示所有支持的指令名称
       Supported commands:
      @@ -115,7 +105,7 @@ mwrite, mzip
       
      - - + + \ No newline at end of file diff --git a/c/mv.html b/c/mv.html index 644dfbd4ce..8e9920836b 100644 --- a/c/mv.html +++ b/c/mv.html @@ -10,7 +10,7 @@ mv 命令,Linux mv 命令详解:用来对文件或目录重新命名 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      mv

      +
      +

      mv

      用来对文件或目录重新命名

      -

      补充说明

      +

      补充说明

      mv命令 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

      mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:

        @@ -65,14 +61,10 @@
      1. 如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。

      注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

      -

      语法

      +

      语法

      mv(选项)(参数)
       
      -

      选项

      +

      选项

      --backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
       -b:当文件存在时,覆盖前,为其创建一个备份;
       -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
      @@ -82,16 +74,12 @@
       --target-directory=<目录>:指定源文件要移动到目标目录;
       -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
       
      -

      参数

      +

      参数

      • 源文件:源文件列表。
      • 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
      -

      实例

      +

      实例

      将目录/usr/men中的所有文件移到当前目录(用.表示)中:

      mv /usr/men/* .
       
      @@ -154,7 +142,7 @@
      - - + + \ No newline at end of file diff --git a/c/mysql.html b/c/mysql.html index 92211310c5..bb61f45c6a 100644 --- a/c/mysql.html +++ b/c/mysql.html @@ -10,7 +10,7 @@ mysql 命令,Linux mysql 命令详解:MySQL服务器客户端工具 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
      -

      mysql

      +
      +

      mysql

      MySQL服务器客户端工具

      -

      补充说明

      +

      补充说明

      mysql命令 是MySQL数据库服务器的客户端工具,它工作在命令行终端中,完成对远程MySQL数据库服务器的操作。

      -

      语法

      +

      语法

      mysql(选项)(参数)
       
      -

      选项

      +

      选项

      -h:MySQL服务器的ip地址或主机名;
       -u:连接MySQL服务器的用户名;
       -e:执行mysql内部命令;
       -p:连接MySQL服务器的密码。
       
      -

      参数

      +

      参数

      数据库:指定连接服务器后自动打开的数据库。

      @@ -101,7 +91,7 @@
      - - + + \ No newline at end of file diff --git a/c/mysqladmin.html b/c/mysqladmin.html index 834f7ea70e..5ef3c267db 100644 --- a/c/mysqladmin.html +++ b/c/mysqladmin.html @@ -10,7 +10,7 @@ mysqladmin 命令,Linux mysqladmin 命令详解:MySQL服务器管理客户端 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
      -

      mysqladmin

      +
      +

      mysqladmin

      MySQL服务器管理客户端

      -

      补充说明

      +

      补充说明

      mysqladmin命令 是mysql服务器管理任务的客户端工具,它可以检查mytsql服务器的配置和当前工作状态,创建和删除数据库,创建用户和修改用户密码等操作。

      -

      语法

      +

      语法

      mysqladmin(选项)(参数)
       
      -

      选项

      +

      选项

      -h:MySQL服务器主机名或ip地址;
       -u:连接MySQL服务器的用户名;
       -p:连接MySQL服务器的密码;
       --help:显示帮助信息。
       
      -

      参数

      +

      参数

      管理命令:需要在MySQL服务器上执行的管理命令。

      mysqladmin支持下列命令:

      create databasename:创建一个新数据库;
      @@ -120,7 +110,7 @@ version:得到服务器的版本信息。
       
      - - + + \ No newline at end of file diff --git a/c/mysqldump.html b/c/mysqldump.html index 94eee8278d..bcc754dd1a 100644 --- a/c/mysqldump.html +++ b/c/mysqldump.html @@ -10,7 +10,7 @@ mysqldump 命令,Linux mysqldump 命令详解:MySQL数据库中备份工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mysqldump

      +
      +

      mysqldump

      MySQL数据库中备份工具

      -

      补充说明

      +

      补充说明

      mysqldump命令 是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中。

      -

      语法

      +

      语法

      mysqldump(选项)
       
      -

      选项

      +

      选项

      --add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句;
       --add-locks:备份数据库表时锁定数据库表;
       --all-databases:备份MySQL服务器上的所有数据库;
      @@ -84,9 +76,7 @@
       --port:MySQL服务器的端口号;
       --user:连接MySQL服务器的用户名。
       
      -

      实例

      +

      实例

      导出整个数据库

      mysqldump -u 用户名 -p 数据库名 > 导出的文件名
       mysqldump -u linuxde -p smgp_apps_linuxde > linuxde.sql
      @@ -124,7 +114,7 @@ mysqldump -u linuxde -p smgp_apps_linuxde users
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/mysqlimport.html b/c/mysqlimport.html
      index f6bb66f7df..bfde41f762 100644
      --- a/c/mysqlimport.html
      +++ b/c/mysqlimport.html
      @@ -10,7 +10,7 @@
           
           mysqlimport 命令,Linux mysqlimport 命令详解:为MySQL服务器用命令行方式导入数据 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,32 +50,22 @@
       
       
       
      -
      -

      mysqlimport

      +
      +

      mysqlimport

      为MySQL服务器用命令行方式导入数据

      -

      补充说明

      +

      补充说明

      mysqlimport命令 为mysql数据库服务器提供了一种命令行方式导入数据工具,它从特定格式的文本文件中读取数据插入MySQL数据库表中。

      -

      语法

      +

      语法

      mysqlimport(选项)(参数)
       
      -

      选项

      +

      选项

      -D:导入数据前清空表;
       -f:出现错误时继续处理剩余的操作;
       -h:MySQL服务器的ip地址或主机名;
       -u:连接MySQL服务器的用户名;
       -p:连接MySQL服务器的密码。
       
      -

      参数

      +

      参数

      • 数据库名:指定要导入的数据库名称;
      • 文本文件:包含特定格式文本文件。
      • @@ -105,7 +95,7 @@
      - - + + \ No newline at end of file diff --git a/c/mysqlshow.html b/c/mysqlshow.html index 4c071ba351..9f3de77635 100644 --- a/c/mysqlshow.html +++ b/c/mysqlshow.html @@ -10,7 +10,7 @@ mysqlshow 命令,Linux mysqlshow 命令详解:显示MySQL中数据库相关信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      mysqlshow

      +
      +

      mysqlshow

      显示MySQL中数据库相关信息

      -

      补充说明

      +

      补充说明

      mysqlshow命令 用于显示mysql服务器中数据库、表和列表信息。

      -

      语法

      +

      语法

      mysqlshow(选项)(参数)
       
      -

      选项

      +

      选项

      -h:MySQL服务器的ip地址或主机名;
       -u:连接MySQL服务器的用户名;
       -p:连接MySQL服务器的密码;
      @@ -75,9 +67,7 @@
       -t:显示数据表的类型;
       -i:显示数据表的额外信息。
       
      -

      参数

      +

      参数

      数据库信息:指定要显示的数据库信息,可以是一个数据库名,或者是数据库名和表名,或者是数据库名、表名和列名。

      @@ -104,7 +94,7 @@
      - - + + \ No newline at end of file diff --git a/c/named-checkzone.html b/c/named-checkzone.html index 0cf3502d7e..cb5e20608e 100644 --- a/c/named-checkzone.html +++ b/c/named-checkzone.html @@ -10,7 +10,7 @@ named-checkzone 命令,Linux named-checkzone 命令详解:使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      named-checkzone

      +
      +

      named-checkzone

      使用named-checkzone命令可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称

      -

      补充说明

      +

      补充说明

      named-checkzone命令 可以进行区域文件有效性检查和转换,必须指定区域名称和区域文件名称。

      -

      语法

      +

      语法

      named-checkzone [选项] [区域名] [区域文件名]
       
      -

      选项

      +

      选项

      -q 安静模式
       -d 启用调试
       -c <类别> 指定区域的类别。如果没指定就使用IN
       
      -

      例子

      +

      例子

      对区域文件/var/named/192.168.0.rev进行有效性检查和转换。

      [root@localhost ~]# named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.rev
       zone0.168.192.in-addr.arpa/IN: loaded serial 1268360612
      @@ -110,7 +100,7 @@ OK
       
      - - + + \ No newline at end of file diff --git a/c/nano.html b/c/nano.html index 4fb1592172..034b624d5b 100644 --- a/c/nano.html +++ b/c/nano.html @@ -10,7 +10,7 @@ nano 命令,Linux nano 命令详解:字符终端文本编辑器 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
      -

      nano

      +
      +

      nano

      字符终端文本编辑器

      -

      补充说明

      +

      补充说明

      nano 是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。

      nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方式来处理某些文件可能会带来问题,比如Linux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成系统不灵了。因此,如果你想避免这种情况出现,就加上-w选项吧。

      -

      语法

      +

      语法

      nano [选项] [[+行,列] 文件名]...
       
      -

      选项

      +

      选项

       -h, -?         --help                  显示此信息
        +行,列                                 从所指列数与行数开始
        -A             --smarthome             启用智能 HOME 键
      @@ -111,9 +103,7 @@
        -a, -b, -e,
        -f, -g, -j                             (忽略,为与pico 相容)
       
      -

      用法

      +

      用法

      光标控制

      • 移动光标:使用用方向键移动。
      • @@ -163,7 +153,7 @@
      - - + + \ No newline at end of file diff --git a/c/nc.html b/c/nc.html index 7da7c88b18..1b692ffd7c 100644 --- a/c/nc.html +++ b/c/nc.html @@ -10,7 +10,7 @@ nc 命令,Linux nc 命令详解:用于设置路由器,是网络工具中的瑞士军刀。 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
      -

      nc

      +
      +

      nc

      用于设置路由器,是网络工具中的瑞士军刀。

      -

      补充说明

      +

      补充说明

      nc命令 全称netcat,用于设置路由器。它能通过 TCP 和 UDP 在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用 netcat 命令所能完成的事情令人惊讶。

      -

      语法

      +

      语法

      nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>]
       [-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
       
      -

      选项

      +

      选项

      -g <网关> # 设置路由器跃程通信网关,最多可设置8个。
       -G<指向器数目> # 设置来源路由指向器,其数值为4的倍数。
       -h 在线帮助。
      @@ -83,9 +75,7 @@
       -w<超时秒数> # 设置等待连线的时间。
       -z 使用0输入/输出模式,只在扫描通信端口时使用。
       
      -

      实例

      +

      实例

      TCP端口扫描

      [root@localhost ~]# nc -v -z -w2 192.168.0.3 1-100 
       192.168.0.3: inverse host lookup failed: Unknown host
      @@ -135,7 +125,7 @@ y  //用户输入
       
      - - + + \ No newline at end of file diff --git a/c/ncftp.html b/c/ncftp.html index b5d16f5465..a570cfaecb 100644 --- a/c/ncftp.html +++ b/c/ncftp.html @@ -10,7 +10,7 @@ ncftp 命令,Linux ncftp 命令详解:是增强的的FTP工具 - Linux 命令搜索引擎 - + @@ -50,45 +50,31 @@ -
      -

      ncftp

      +
      +

      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/*
       
      @@ -130,7 +116,7 @@
      - - + + \ No newline at end of file diff --git a/c/nethogs.html b/c/nethogs.html index 640ae65565..b369bdb613 100644 --- a/c/nethogs.html +++ b/c/nethogs.html @@ -10,7 +10,7 @@ nethogs 命令,Linux nethogs 命令详解:终端下的网络流量监控工具 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      nethogs

      +
      +

      nethogs

      终端下的网络流量监控工具

      -

      补充说明

      +

      补充说明

      有很多适用于Linux系统的开源网络监视工具。比如说,你可以用命令iftop来检查带宽使用情况。netstat用来查看接口统计报告,还有top监控系统当前运行进程。但是如果你想要找一个能够按进程实时统计网络带宽利用率的工具,那么NetHogs值得一看。

      NetHogs 是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使用率。

      来自NetHogs项目网站:

      @@ -65,14 +61,10 @@

      NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组。NetHogs不需要依赖载入某个特殊的内核模块。如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况。这样就很容易找出哪个程序跑飞了然后突然占用你的带宽。

      本文为你介绍如何在Unix/Linux操作系统下如何安装和使用NetHogs按进程监控网络带宽使用率。

      -

      语法

      +

      语法

      nethogs(选项)(参数)
       
      -

      选项

      +

      选项

      usage: nethogs [-V] [-h] [-b] [-d seconds] [-v mode] [-c count] [-t] [-p] [-s] [device [device [device ...]]]
         -V : 打印版本。
         -h : 打印此帮助。
      @@ -107,9 +99,7 @@
           
    • s : 按发送流量排序
    • q : 退出命令提示符
    -

    安装

    +

    安装

    在RHEL、CentOS和Fedora下安装NetHogs

    要安装NetHogs,你必须要启用你所用Linux下的EPEL源。然后运行下面的yum命令下载安装NetHogs包。

    yum install nethogs
    @@ -118,9 +108,7 @@
       

    键入apt-get命令安装NetHogs包:

    $ sudo apt-get install nethogs
     
    -

    NetHogs用法

    +

    NetHogs用法

    在基于RedHat系统下键入如下命令启动NetHogs工具。

    nethogs
     
    @@ -130,9 +118,7 @@

    !nethogs

    Ubuntu 12.10 下的NetHogs预览

    正如上图所示,send列和received列显示的是按照每个进程的流量统计。总的收发数据带宽在最下方,而且可以用交互命令控制排序,下面将要讨论这些交互命令。

    -

    NetHogs 命令行参数

    +

    NetHogs 命令行参数

    以下就是NetHogs命令行的参数,用-d来添加刷新频率参数,device name 用来检测给定的某个或者某些设备的带宽(默认是eth0)。例如:设置5秒钟的刷新频率,键入如下命令即可:

    nethogs -d 5
     
    @@ -175,7 +161,7 @@
    - - + + \ No newline at end of file diff --git a/c/netstat.html b/c/netstat.html index 1704f7a227..6eaa2ec708 100644 --- a/c/netstat.html +++ b/c/netstat.html @@ -10,7 +10,7 @@ netstat 命令,Linux netstat 命令详解:查看Linux中网络系统状态信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    netstat

    +
    +

    netstat

    查看Linux中网络系统状态信息

    -

    补充说明

    +

    补充说明

    netstat命令 用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

    -

    语法

    +

    语法

    netstat(选项)
     
    -

    选项

    +

    选项

    -a或--all:显示所有连线中的Socket;
     -A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
     -c或--continuous:持续列出网络状态;
    @@ -92,9 +84,7 @@
     -x或--unix:此参数的效果和指定"-A unix"参数相同;
     --ip或--inet:此参数的效果和指定"-A inet"参数相同。
     
    -

    实例

    +

    实例

    列出所有端口 (包括监听和未监听的)

    netstat -a     #列出所有端口
     netstat -at    #列出所有tcp端口
    @@ -168,12 +158,8 @@ netstat: no support for `AF NETROM' on this s
       

    查看phpcgi进程数,如果接近预设值,说明不够用,需要增加:

    netstat -anpo | grep "php-cgi" | wc -l
     
    -

    扩展知识

    -

    网络连接状态详解

    +

    扩展知识

    +

    网络连接状态详解

    共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的:

    1. @@ -250,7 +236,7 @@ netstat: no support for `AF NETROM' on this s
    - - + + \ No newline at end of file diff --git a/c/newusers.html b/c/newusers.html index bdc350a787..bfebf27e34 100644 --- a/c/newusers.html +++ b/c/newusers.html @@ -10,7 +10,7 @@ newusers 命令,Linux newusers 命令详解:用于批处理的方式一次创建多个命令 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    newusers

    +
    +

    newusers

    用于批处理的方式一次创建多个命令

    -

    补充说明

    +

    补充说明

    newusers命令 用于批处理的方式一次创建多个命令。

    -

    语法

    +

    语法

    newusers(参数)
     
    -

    参数

    +

    参数

    用户文件:指定包含用户信息的文本文件,文件的格式要与/etc/passwd相同。

    -

    实例

    +

    实例

    实用newusers命令批量添加用户:

    用法很简单,newusers后面直接跟一个文件,文件格式和/etc/passwd的格式相同。

    用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL
    @@ -117,7 +107,7 @@ jingang1:x:521:521::/home/jingang1:/sbin/nologin
     
    - - + + \ No newline at end of file diff --git a/c/nfsstat.html b/c/nfsstat.html index 4b9abe131b..170b811c0d 100644 --- a/c/nfsstat.html +++ b/c/nfsstat.html @@ -10,7 +10,7 @@ nfsstat 命令,Linux nfsstat 命令详解:列出NFS客户端和服务器的工作状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    nfsstat

    +
    +

    nfsstat

    列出NFS客户端和服务器的工作状态

    -

    补充说明

    +

    补充说明

    nfsstat命令 用于列出NFS客户端和服务器的工作状态。

    -

    语法

    +

    语法

    nfsstat(选项)
     
    -

    选项

    +

    选项

    -s:仅列出NFS服务器端状态;
     -c:仅列出NFS客户端状态;
     -n:仅列出NFS状态,默认显示nfs客户端和服务器的状态;
    @@ -76,9 +68,7 @@
     -m:打印以加载的nfs文件系统状态;
     -r:仅打印rpc状态。
     
    -

    实例

    +

    实例

    要显示关于客户机发送和拒绝的RPC和NFS调用数目的信息,输入:

    nfsstat -c
     
    @@ -116,7 +106,7 @@
    - - + + \ No newline at end of file diff --git a/c/ngrep.html b/c/ngrep.html index 3a437384a1..b7e77f13bf 100644 --- a/c/ngrep.html +++ b/c/ngrep.html @@ -10,7 +10,7 @@ ngrep 命令,Linux ngrep 命令详解:方便的数据包匹配和显示工具 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    ngrep

    +
    +

    ngrep

    方便的数据包匹配和显示工具

    -

    补充说明

    +

    补充说明

    ngrep命令 是grep命令的网络版,他力求更多的grep特征,用于搜寻指定的数据包。正由于安装ngrep需用到libpcap库, 所以支持大量的操作系统和网络协议。能识别TCP、UDP和ICMP包,理解bpf的过滤机制。

    -

    安装

    +

    安装

    ngrep命令的下载地址:http://ngrep.sourceforge.net/,libpcap下载地址:http://www.tcpdump.org/。先用`yum install libpcap`完全安装libpcap,注意有时候用libpcap安装包安装的不完整会影响ngrep的使用。

    如果yum无法安装就用以下步骤安装libpcap:

    wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
    @@ -75,16 +69,12 @@
       
    ./configure --with-pcap-includes=/usr/local/include/pcap
     

    在安装后输入ngrep来验证下安装是否成功。

    -

    语法

    +

    语法

    ngrep <-LhNXViwqpevxlDtTRM> <-IO pcap_dump> <-n num> <-d dev> <-A num>
     <-s snaplen> <-S limitlen> <-w normal|byline|single|none> <-c cols>
     <-P char> <-F file> <match expression> <bpf filter>
     
    -

    选项

    +

    选项

    -e # 显示空数据包
     -i # 忽略大小写
     -v # 反转匹配
    @@ -112,9 +102,7 @@
     -d # 使用哪个网卡,可以用-L选项查询
     -L # 查询网卡接口
     
    -

    实例

    +

    实例

    捕捉cloudian:18080端口的request和response,-W byline用来解析包中的换行符,否则包里的所有数据都是连续的,可读性差。-d lo是监听本地网卡:

    ngrep -W byline -d lo port 18080
     
    @@ -184,7 +172,7 @@ yi7E53UBOcv4V.
    - - + + \ No newline at end of file diff --git a/c/nice.html b/c/nice.html index e68c348305..f91dc57c37 100644 --- a/c/nice.html +++ b/c/nice.html @@ -10,7 +10,7 @@ nice 命令,Linux nice 命令详解:改变程序执行的优先权等级 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
    -

    nice

    +
    +

    nice

    改变程序执行的优先权等级

    -

    补充说明

    +

    补充说明

    nice命令 用于以指定的进程调度优先级启动其他的程序。

    -

    语法

    +

    语法

    nice(选项)(参数)
     
    -

    选项

    +

    选项

    -n:指定进程的优先级(整数)。
     
    -

    参数

    +

    参数

    指令及选项:需要运行的指令及其他选项。

    -

    实例

    +

    实例

    新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU:

    nice -19 tar zcf pack.tar.gz documents
     
    @@ -107,7 +95,7 @@
    - - + + \ No newline at end of file diff --git a/c/nisdomainname.html b/c/nisdomainname.html index e2053deb26..0273a49a97 100644 --- a/c/nisdomainname.html +++ b/c/nisdomainname.html @@ -10,7 +10,7 @@ nisdomainname 命令,Linux nisdomainname 命令详解:显示主机NIS的域名 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    nisdomainname

    +
    +

    nisdomainname

    显示主机NIS的域名

    -

    补充说明

    +

    补充说明

    nisdomainname命令 用于显示主机NIS的域名。

    -

    语法

    +

    语法

    nisdomainname(选项)
     
    -

    选项

    +

    选项

    -v:详细信息模式。
     
    @@ -94,7 +86,7 @@
    - - + + \ No newline at end of file diff --git a/c/nl.html b/c/nl.html index 6c16facff2..e0b4b0008b 100644 --- a/c/nl.html +++ b/c/nl.html @@ -10,7 +10,7 @@ nl 命令,Linux nl 命令详解:为每一个文件添加行号。 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
    -

    nl

    +
    +

    nl

    为每一个文件添加行号。

    -

    概要

    +

    概要

    nl [OPTION]... [FILE]...
     
    -

    主要用途

    +

    主要用途

    • 将每一个输入的文件添加行号后发送到标准输出。
    • 当没有文件或文件为-时,读取标准输入
    • 处理逻辑页(logical page)。
    -

    选项

    +

    选项

    -b, --body-numbering=STYLE           使用STYLE 为body部分的行附加行号。
     -d, --section-delimiter=CC           使用CC作为logical page的分隔符。
     -f, --footer-numbering=STYLE         使用STYLE 为footer部分的行附加行号。
    @@ -107,17 +99,11 @@ logical page
     三部分组成(header, body, footer)
     起始标记(header \:\:\:, body \:\:, footer \:)
     
    -

    参数

    +

    参数

    FILE(可选):要处理的文件,可以为一或多个。

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    nl_logicalpage.txt:该文件用于说明nl命令处理逻辑页,内容如下:
     \:\:\:
     header_1
    @@ -208,8 +194,8 @@ ZhuangZhu-74
     
    - - + + nl_normal.txt ZhuangZhu-74 @@ -221,9 +207,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h 2019-11-21 127.0.0.1
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 nlinfo coreutils 'nl invocation'
    @@ -252,7 +236,7 @@ var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); h
    - - + + \ No newline at end of file diff --git a/c/nm.html b/c/nm.html index 72e0e0d841..854fe1409c 100644 --- a/c/nm.html +++ b/c/nm.html @@ -10,7 +10,7 @@ nm 命令,Linux nm 命令详解:显示二进制目标文件的符号表 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    nm

    +
    +

    nm

    显示二进制目标文件的符号表

    -

    补充说明

    +

    补充说明

    nm命令 被用于显示二进制目标文件的符号表。

    -

    语法

    +

    语法

    nm(选项)(参数)
     
    -

    选项

    +

    选项

    -A:每个符号前显示文件名;
     -D:显示动态符号;
     -g:仅显示外部符号;
     -r:反序显示符号表。
     
    -

    参数

    +

    参数

    目标文件:二进制目标文件,通常是库文件和可执行文件。

    @@ -101,7 +91,7 @@
    - - + + \ No newline at end of file diff --git a/c/nmap.html b/c/nmap.html index b75d4545ea..c29fd169ce 100644 --- a/c/nmap.html +++ b/c/nmap.html @@ -10,7 +10,7 @@ nmap 命令,Linux nmap 命令详解:网络探测和安全审核 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    nmap

    +
    +

    nmap

    网络探测和安全审核

    -

    补充说明

    +

    补充说明

    nmap命令 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

    -

    语法

    +

    语法

    nmap(选项)(参数)
     
    -

    选项

    +

    选项

    -O:激活操作探测;
     -P0:值进行扫描,不ping主机;
     -PT:是同TCP的ping;
    @@ -92,13 +84,9 @@
     --scanflags:设置在扫描报文中的TCP标志。
     --send-eth/--send-ip 使用原始以太网发送/构造指定IP发送
     
    -

    参数

    +

    参数

    ip地址:指定待扫描报文中的TCP地址。

    -

    实例

    +

    实例

    安装nmap

    yum install nmap
     
    @@ -139,7 +127,7 @@ Nmap finished: 1 IP address - - + + \ No newline at end of file diff --git a/c/nmcli.html b/c/nmcli.html index 907d13631d..021cdb7dcf 100644 --- a/c/nmcli.html +++ b/c/nmcli.html @@ -10,7 +10,7 @@ nmcli 命令,Linux nmcli 命令详解:地址配置工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    nmcli

    +
    +

    nmcli

    地址配置工具

    -

    补充说明

    +

    补充说明

    nmcli命令 是 NetworkManager client 网络管理客户端。

    -

    语法

    +

    语法

    nmcli [OPTIONS] OBJECT { COMMAND | help }
     
    -

    选项

    +

    选项

    OPTIONS
       -t[erse]                                  # terse output 简洁的输出
       -p[retty]                                 # pretty output 漂亮的输出
    @@ -87,9 +79,7 @@ OBJECT
       d[evice]        由NetworkManager管理的设备
       a[gent]         NetworkManager秘密代理或polkit代理
     
    -

    实例

    +

    实例

    nmcli connection show           # 查看当前连接状态
     nmcli connection reload         # 重启服务
     nmcli connection show -active   # 显示活动的连接
    @@ -127,7 +117,7 @@ nmcli con add 
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/nohup.html b/c/nohup.html
    index bc258e1a5a..212c4aa22a 100644
    --- a/c/nohup.html
    +++ b/c/nohup.html
    @@ -10,7 +10,7 @@
         
         nohup 命令,Linux nohup 命令详解:将程序以忽略挂起信号的方式运行起来 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,33 +50,21 @@
     
     
     
    -
    -

    nohup

    +
    +

    nohup

    将程序以忽略挂起信号的方式运行起来

    -

    补充说明

    +

    补充说明

    nohup命令 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

    无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

    -

    语法

    +

    语法

    nohup(选项)(参数)

    -

    选项

    +

    选项

    --help:在线帮助;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    程序及选项:要运行的程序及选项。

    -

    实例

    +

    实例

    使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

    nohup command > myout.file 2>&1 &
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/nologin.html b/c/nologin.html index e350a14850..4f43f82a68 100644 --- a/c/nologin.html +++ b/c/nologin.html @@ -10,7 +10,7 @@ nologin 命令,Linux nologin 命令详解:拒绝用户登录系统 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    nologin

    +
    +

    nologin

    拒绝用户登录系统

    -

    补充说明

    +

    补充说明

    nologin命令 可以实现礼貌地拒绝用户登录系统,同时给出信息。如果尝试以这类用户登录,就在log里添加记录,然后在终端输出This account is currently not available信息,就是这样。一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。

    -

    语法

    +

    语法

    nologin
     
    -

    实例

    +

    实例

    Linux禁止用户登录:

    禁止用户登录后,用户不能登录系统,但可以登录ftp、SAMBA等。我们在Linux下做系统维护的时候,希望个别用户或者所有用户不能登录系统,保证系统在维护期间正常运行。这个时候我们就要禁止用户登录。  

    1、禁止个别用户登录,比如禁止lynn用户登录。

    @@ -112,7 +104,7 @@
    - - + + \ No newline at end of file diff --git a/c/nproc.html b/c/nproc.html index 505fa9fb1e..8e9989422e 100644 --- a/c/nproc.html +++ b/c/nproc.html @@ -10,7 +10,7 @@ nproc 命令,Linux nproc 命令详解:打印可用的处理器单元数量。 - Linux 命令搜索引擎 - + @@ -50,39 +50,27 @@ -
    -

    nproc

    +
    +

    nproc

    打印可用的处理器单元数量。

    -

    概要

    +

    概要

    nproc [OPTION]...
     
    -

    主要用途

    +

    主要用途

    • 打印可用的处理器单元数量。
    -

    选项

    +

    选项

    --all         打印已安装处理器的数量。
     --ignore=N    如果可以的情况下,排除 N 个处理单元。
     --help        显示帮助信息并退出。
     --version     显示版本信息并退出。
     
    -

    例子

    +

    例子

    [root@localhost ~]# nproc
     8
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 nprocinfo coreutils 'nproc invocation'
    @@ -111,7 +99,7 @@
    - - + + \ No newline at end of file diff --git a/c/nslookup.html b/c/nslookup.html index 3c9a80801b..96a61e4852 100644 --- a/c/nslookup.html +++ b/c/nslookup.html @@ -10,7 +10,7 @@ nslookup 命令,Linux nslookup 命令详解:查询域名DNS信息的工具 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
    -

    nslookup

    +
    +

    nslookup

    查询域名DNS信息的工具

    -

    补充说明

    +

    补充说明

    nslookup命令 是常用域名查询工具,就是查DNS信息用的命令。

    nslookup4有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

    进入交互模式,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。或者输入nslookup -nameserver/ip。进入非交互模式,就直接输入nslookup 域名就可以了。

    -

    语法

    +

    语法

    nslookup(选项)(参数)
     
    -

    选项

    +

    选项

    -sil:不显示任何警告信息。
     
    -

    参数

    +

    参数

    域名:指定要查询域名。

    -

    实例

    +

    实例

    [root@localhost ~]# nslookup www.jsdig.com
     Server:         202.96.104.15
     Address:        202.96.104.15#53
    @@ -112,7 +100,7 @@ Address: 100.42.212.8
     
    - - + + \ No newline at end of file diff --git a/c/ntpdate.html b/c/ntpdate.html index 2b7b715472..3a6f1f3964 100644 --- a/c/ntpdate.html +++ b/c/ntpdate.html @@ -10,7 +10,7 @@ ntpdate 命令,Linux ntpdate 命令详解:使用网络计时协议(NTP)设置日期和时间 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    ntpdate

    +
    +

    ntpdate

    使用网络计时协议(NTP)设置日期和时间

    -

    补充说明

    +

    补充说明

    ntpdate命令 是用来设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NTP 时钟过滤器和选择算法来选择最好的样本。

    此 ntpdate 命令使用以下方法进行时间调整:

      @@ -67,14 +63,10 @@

      使用很多服务器可以大幅度改善 ntpdate 命令的可靠性与精度。尽管能使用单一服务器,但您能通过提供至少三个或四个服务器以获得更好的性能。

      如果一个类似 xntpd 守护程序的 NTP 服务器守护程序正在同一主机上运行,命令将拒绝ntpdate 设置日期。

      你必须有 root 权限才能在主机上运行这个命令。

      -

      语法

      +

      语法

      ntpdate [ -b] [ -d] [ -s] [ -u] [ -aKeyid] [ -eAuthenticationDelay] [ -kKeyFile] [ -oVersion] [ -pSamples] [ -tTimeOut] Server...
       
      -

      选项

      +

      选项

      @@ -144,7 +136,7 @@ - - + + \ No newline at end of file diff --git a/c/ntsysv.html b/c/ntsysv.html index 5821cd4806..a43aab1052 100644 --- a/c/ntsysv.html +++ b/c/ntsysv.html @@ -10,7 +10,7 @@ ntsysv 命令,Linux ntsysv 命令详解:集中管理系统的各种服务 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
      -

      ntsysv

      +
      +

      ntsysv

      集中管理系统的各种服务

      -

      补充说明

      +

      补充说明

      ntsysv命令 提供了一个基于文本界面的菜单操作方式,集中管理系统不同的运行等级下的系统服务启动状态。在RedHat各个发行版,CentOS各个版本,都自带这个工具。它具有互动式操作界面,您可以轻易地利用方向键和空格键等,开启,关闭操作系统在每个执行等级中,所要执行的系统服务。

      -

      语法

      +

      语法

      ntsysv(选项)
       
      -

      选项

      +

      选项

      --leve:指定运行等级;
       --back:在互动式界面里,显示Back钮,而非cancel钮。
       
      -

      实例

      +

      实例

      输入ntsysv命令后,出现一个交互式的管理菜单,如下:

      !ntsysv
       
      @@ -102,7 +92,7 @@
      - - + + \ No newline at end of file diff --git a/c/objdump.html b/c/objdump.html index 131176552a..44e850d897 100644 --- a/c/objdump.html +++ b/c/objdump.html @@ -10,7 +10,7 @@ objdump 命令,Linux objdump 命令详解:显示二进制文件信息 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
      -

      objdump

      +
      +

      objdump

      显示二进制文件信息

      -

      补充说明

      +

      补充说明

      objdump命令 是用查看目标文件或者可执行的目标文件的构成的gcc工具。

      -

      选项

      +

      选项

      -a --archive-headers 
       # 显示档案库的成员信息,类似ls -l将lib*.a的信息列出。 
       
      @@ -173,9 +167,7 @@ objdump -b oasys -m vax -h fu.o
       
       @file 可以将选项集中到一个文件中,然后使用这个@file选项载入。
       
      -

      实例

      +

      实例

      首先,在给出后面大部分测试所基于的源代码以及编译指令。 源代码如下: 

      root@localhost [test]# nl mytest.cpp 
       
      @@ -504,7 +496,7 @@ Idx Name Size VMA LMA File off Algn
      - - + + \ No newline at end of file diff --git a/c/od.html b/c/od.html index 04f6dac422..b2ed201090 100644 --- a/c/od.html +++ b/c/od.html @@ -10,7 +10,7 @@ od 命令,Linux od 命令详解:输出文件的八进制、十六进制等格式编码的字节 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
      -

      od

      +
      +

      od

      输出文件的八进制、十六进制等格式编码的字节

      -

      补充说明

      +

      补充说明

      od命令 用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。

      常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。

      -

      语法

      +

      语法

      od(选项)(参数)
       
      -

      选项

      +

      选项

      -a:此参数的效果和同时指定“-ta”参数相同;
       -A:<字码基数>:选择以何种基数计算字码;
       -b:此参数的效果和同时指定“-toC”参数相同;
      @@ -88,13 +80,9 @@
       --help:在线帮助;
       --version:显示版本信息。
       
      -

      参数

      +

      参数

      文件:指定要显示的文件。

      -

      实例

      +

      实例

      [linuxde@localhost ~]$ echo abcdef g > tmp
       [linuxde@localhost ~]$ cat tmp
       abcdef g
      @@ -189,7 +177,7 @@ abcdef g
       
      - - + + \ No newline at end of file diff --git a/c/openssl.html b/c/openssl.html index 64468b8b5c..55d510b2ff 100644 --- a/c/openssl.html +++ b/c/openssl.html @@ -10,7 +10,7 @@ openssl 命令,Linux openssl 命令详解:强大的安全套接字层密码库 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      openssl

      +
      +

      openssl

      强大的安全套接字层密码库

      -

      补充说明

      +

      补充说明

      OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。在OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的开源软件包。由于这是互联网应用最广泛的安全传输方法,被网银、在线支付、电商网站、门户网站、电子邮件等重要网站广泛使用,所以该漏洞影响范围广大。

      OpenSSL有两种运行模式:交互模式和批处理模式。

      直接输入openssl回车进入交互模式,输入带命令选项的openssl进入批处理模式。

      @@ -73,9 +69,7 @@

      首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能。OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。 

      在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。 

      事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。

      -

      实例

      +

      实例

      1、使用 openssl 生成密码

      几乎所有 Linux 发行版都包含 openssl。我们可以利用它的随机功能来生成可以用作密码的随机字母字符串。

      openssl rand -base64 10
      @@ -199,7 +193,7 @@ openssl rsa -text -in fd.key
       
      - - + + \ No newline at end of file diff --git a/c/parted.html b/c/parted.html index 841521cf36..86d2a5165b 100644 --- a/c/parted.html +++ b/c/parted.html @@ -10,7 +10,7 @@ parted 命令,Linux parted 命令详解:磁盘分区和分区大小调整工具 - Linux 命令搜索引擎 - + @@ -50,38 +50,26 @@ -
      -

      parted

      +
      +

      parted

      磁盘分区和分区大小调整工具

      -

      补充说明

      +

      补充说明

      parted命令 是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

      -

      语法

      +

      语法

      parted(选项)(参数)
       
      -

      选项

      +

      选项

      -h:显示帮助信息;
       -i:交互式模式;
       -s:脚本模式,不提示用户;
       -v:显示版本号。
       
      -

      参数

      +

      参数

      • 设备:指定要分区的硬盘所对应的设备文件;
      • 命令:要执行的parted命令。
      -

      实例

      +

      实例

      从串行技术出现以来,越来越多用户选择使用大容量的SATA硬盘创建磁盘阵列;特别是MD1000/MD3000,很轻易就突破2T的LUN,故在此给大家一些指引。

      红帽企业 Linux 4 Update 4供对大于 2 terabytes(TB)的磁盘设备的支持。

      请参考以下操作步骤:

      @@ -198,7 +186,7 @@ none 252M 0 252M - - + + \ No newline at end of file diff --git a/c/partprobe.html b/c/partprobe.html index ad628ea0d8..4b0bd00188 100644 --- a/c/partprobe.html +++ b/c/partprobe.html @@ -10,7 +10,7 @@ partprobe 命令,Linux partprobe 命令详解:不重启的情况下重读分区 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
      -

      partprobe

      +
      +

      partprobe

      不重启的情况下重读分区

      -

      补充说明

      +

      补充说明

      partprobe命令 用于重读分区表,当出现删除文件后,出现仍然占用空间。可以partprobe在不重启的情况下重读分区。

      -

      语法

      +

      语法

      partprobe(选项)(参数)
       
      -

      选项

      +

      选项

      -d:不更新内核;
       -s:显示摘要和分区;
       -h:显示帮助信息;
       -v:显示版本信息。
       
      -

      参数

      +

      参数

      设备:指定需要确认分区表改变的硬盘对应的设备文件。

      -

      实例

      +

      实例

      使用partprobe不重启系统添加新的磁盘分区,主机自带硬盘超过300GB,目前只划分使用了3个主分区,不到70GB,如下:

      [root@localhost ~]# df -h 
       Filesystem Size Used Avail Use% Mounted on 
      @@ -209,7 +197,7 @@ tmpfs                  2023936         
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/passwd.html b/c/passwd.html
      index 636a9d8e33..45d9cba92b 100644
      --- a/c/passwd.html
      +++ b/c/passwd.html
      @@ -10,7 +10,7 @@
           
           passwd 命令,Linux passwd 命令详解:用于让用户可以更改自己的密码 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      passwd

      +
      +

      passwd

      用于让用户可以更改自己的密码

      -

      补充说明

      +

      补充说明

      passwd命令 用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

      -

      语法

      +

      语法

      passwd(选项)(参数)
       
      -

      选项

      +

      选项

      -d:删除密码,仅有系统管理者才能使用;
       -f:强制执行;
       -k:设置只有在密码过期失效后,方能更新;
      @@ -74,13 +66,9 @@
       -s:列出密码的相关信息,仅有系统管理者才能使用;
       -u:解开已上锁的帐号。
       
      -

      参数

      +

      参数

      用户名:需要设置密码的用户名。

      -

      知识扩展

      +

      知识扩展

      与用户、组账户信息相关的文件

      存放用户信息:

      /etc/passwd
      @@ -111,9 +99,7 @@ jack  # 组名
       *  # 禁用天数
       *  # 过期天数
       
      -

      实例

      +

      实例

      如果是普通用户执行passwd只能修改自己的密码。如果新建用户后,要为新用户创建密码,则用passwd用户名,注意要以root用户的权限来创建。

      [root@localhost ~]# passwd linuxde     # 更改或创建linuxde用户的密码;
       Changing password for user linuxde.
      @@ -175,7 +161,7 @@ Empty password.                          # 空密码
       
      - - + + \ No newline at end of file diff --git a/c/paste.html b/c/paste.html index d44263db00..d39aac3ff0 100644 --- a/c/paste.html +++ b/c/paste.html @@ -10,7 +10,7 @@ paste 命令,Linux paste 命令详解:将多个文件按列队列合并 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
      -

      paste

      +
      +

      paste

      将多个文件按列队列合并

      -

      补充说明

      +

      补充说明

      paste命令 用于将多个文件按照列队列进行合并。

      -

      语法

      +

      语法

      paste(选项)(参数)
       
      -

      选项

      +

      选项

      -d<间隔字符>或--delimiters=<间隔字符>:用指定的间隔字符取代跳格字符;
       -s或——serial串列进行而非平行处理。
       
      -

      参数

      +

      参数

      文件列表:指定需要合并的文件列表。

      @@ -99,7 +89,7 @@
      - - + + \ No newline at end of file diff --git a/c/patch.html b/c/patch.html index 5529351c8d..9848e9ca75 100644 --- a/c/patch.html +++ b/c/patch.html @@ -10,7 +10,7 @@ patch 命令,Linux patch 命令详解:为开放源代码软件安装补丁程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      patch

      +
      +

      patch

      为开放源代码软件安装补丁程序

      -

      补充说明

      +

      补充说明

      patch命令 被用于为开放源代码软件安装补丁程序。让用户利用设置修补文件的方式,修改,更新原始文件。如果一次仅修改一个文件,可直接在命令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。

      -

      语法

      +

      语法

      patch(选项)(参数)
       
      -

      选项

      +

      选项

      -b或--backup:备份每一个原始文件;
       -B<备份字首字符串>或--prefix=<备份字首字符串>:设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称;
       -c或--context:把修补数据解译成关联性的差异;
      @@ -100,9 +92,7 @@
       --nobackup-if-mismatch:在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件;
       --verbose:详细显示指令的执行过程。
       
      -

      参数

      +

      参数

      • 原文件:指定需要打补丁的原始文件;
      • 补丁文件:指定补丁文件。
      • @@ -132,7 +122,7 @@
      - - + + \ No newline at end of file diff --git a/c/pathchk.html b/c/pathchk.html index 2db3eaa89d..b2b6a892a8 100644 --- a/c/pathchk.html +++ b/c/pathchk.html @@ -10,7 +10,7 @@ pathchk 命令,Linux pathchk 命令详解:检查文件中不可移植的部分 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
      -

      pathchk

      +
      +

      pathchk

      检查文件中不可移植的部分

      -

      补充说明

      +

      补充说明

      pathchk命令 用来检查文件中不可移植的部分。

      -

      语法

      +

      语法

      pathchk(选项)(参数)
       
      -

      选项

      +

      选项

      -p:检查大多数的POSIX系统;
       -P:检查空名字和“-”开头的文件;
       --portability:检查所有的POSIX系统,等同于“-P-p”选项;
       --help:显示帮助;
       --wersion:显示版本号。
       
      -

      参数

      +

      参数

      • 文件:带路径信息的文件;
      • 后缀:可选参数,指定要去除的文件后缀字符串。
      • @@ -105,7 +95,7 @@
      - - + + \ No newline at end of file diff --git a/c/perl.html b/c/perl.html index b188c0f550..4636b30fe5 100644 --- a/c/perl.html +++ b/c/perl.html @@ -10,7 +10,7 @@ perl 命令,Linux perl 命令详解:perl语言解释器 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
      -

      perl

      +
      +

      perl

      perl语言解释器

      -

      补充说明

      +

      补充说明

      perl命令 是perl语言解释器,负责解释执行perl语言程序。

      -

      语法

      +

      语法

      perl(选项)(参数)
       
      -

      选项

      +

      选项

      -w:输出有用的警告信息;
       -U:允许不安全的操作;
       -c:仅检查文件的语法;
       -d:在调试下运行脚本程序。
       
      -

      参数

      +

      参数

      文件:要运行的perl脚本程序。

      @@ -101,7 +91,7 @@
      - - + + \ No newline at end of file diff --git a/c/pfctl.html b/c/pfctl.html index 24a8022de3..43a8389d17 100644 --- a/c/pfctl.html +++ b/c/pfctl.html @@ -10,7 +10,7 @@ pfctl 命令,Linux pfctl 命令详解:PF防火墙的配置命令 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
      -

      pfctl

      +
      +

      pfctl

      PF防火墙的配置命令

      -

      补充说明

      +

      补充说明

      pfctl命令 是PF防火墙的配置命令,PF防火墙( 全称:Packet Filter )是UNIX LIKE系统上进行TCP/ip流量过滤和网络地址转换的软件系统。PF同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。PF最早是由Daniel Hartmeier开发的,现在的开发和维护由Daniel和openBSD小组的其他成员负责。

      PF防火墙的功能很多,本站只列举一些基本配置。

      -

      激活

      +

      激活

      要激活pf并且使它在启动时调用配置文件,编辑/etc/rc.conf文件,修改配置pf的一行:

      pf=yes
       
      @@ -72,9 +66,7 @@ pfctl -d

      注意这仅仅是启动和关闭PF,实际它不会载入规则集,规则集要么在系统启动时载入,要在PF启动后通过命令单独载入。

      -

      配置

      +

      配置

      系统引导到在rc脚本文件运行PF时PF从/etc/pf.conf文件载入配置规则。注意当/etc/pf.conf文件是默认配置文件,在系统调用rc脚本文件时,它仅仅是作为文本文件由pfctl装入并解释和插入pf的。对于一些应用来说,其他的规则集可以在系统引导后由其他文件载入。对于一些设计的非常好的unix程序,PF提供了足够的灵活性。

      pf.conf文件有7个部分:

        @@ -88,9 +80,7 @@ pfctl -d

      除去宏和表,其他的段在配置文件中也应该按照这个顺序出现,尽管对于一些特定的应用并不是所有的段都是必须的。

      空行会被忽略,以#开头的行被认为是注释。

      -

      控制

      +

      控制

      引导之后,PF可以通过pfctl程序进行操作,以下是一些例子:

      pfctl -f /etc/pf.conf  # 载入 pf.conf 文件
       pfctl -nf /etc/pf.conf # 解析文件,但不载入
      @@ -128,7 +118,7 @@ pfctl -sa # 显示任何可显示的
       
      - - + + \ No newline at end of file diff --git a/c/pgrep.html b/c/pgrep.html index a02bd5d4ed..32dd5b80b6 100644 --- a/c/pgrep.html +++ b/c/pgrep.html @@ -10,7 +10,7 @@ pgrep 命令,Linux pgrep 命令详解:根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID) - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      pgrep

      +
      +

      pgrep

      根据用户给出的信息在当前运行进程中查找并列出符合条件的进程ID(PID)

      -

      补充说明

      +

      补充说明

      pgrep命令 以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

      -

      语法

      +

      语法

      pgrep(选项)(参数)
       
      -

      选项

      +

      选项

      -o:仅显示找到的最小(起始)进程号;
       -n:仅显示找到的最大(结束)进程号;
       -l:显示进程名称;
      @@ -75,13 +67,9 @@
       -t:指定开启进程的终端;
       -u:指定进程的有效用户ID。
       
      -

      参数

      +

      参数

      进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

      -

      实例

      +

      实例

      pgrep -lo httpd
       4557 httpd
        [root@localhost ~]# pgrep -ln httpd
      @@ -131,7 +119,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/php.html b/c/php.html index c3d19357c3..0ed3a808c4 100644 --- a/c/php.html +++ b/c/php.html @@ -10,7 +10,7 @@ php 命令,Linux php 命令详解:PHP语言的命令行接口 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
      -

      php

      +
      +

      php

      PHP语言的命令行接口

      -

      补充说明

      +

      补充说明

      php命令 是流行的Web开发语言PHP的命令行接口,可以使用PHP语言开发基于命令行的系统管理脚本程序。

      -

      语法

      +

      语法

      php(选项)(参数)
       
      -

      选项

      +

      选项

      -a:进入交互模式;
       -c:指定“php.ini”的搜索路径。
       
      -

      参数

      +

      参数

      文件:要执行的php脚本。

      @@ -99,7 +89,7 @@
      - - + + \ No newline at end of file diff --git a/c/pico.html b/c/pico.html index 59281a53fd..669cbc5615 100644 --- a/c/pico.html +++ b/c/pico.html @@ -10,7 +10,7 @@ pico 命令,Linux pico 命令详解:功能强大全屏幕的文本编辑器 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      pico

      +
      +

      pico

      功能强大全屏幕的文本编辑器

      -

      补充说明

      +

      补充说明

      pico命令 是功能强大全屏幕的文本编辑器。pico的操作简单,提供了丰富的快捷键。常用的快捷键如下:

      Ctrl+G:获得pico的帮助信息;
       Ctrl+O:保存文件内容,如果是新文件,需要输入文件名;
      @@ -72,14 +68,10 @@ Ctrl+T:调用拼写检查功能,对文档进行拼写检查;
       Ctrl+J:段落重排;
       Ctrl+X:退出,当文件内容发生改变时,提供是否保存修改。
       
      -

      语法

      +

      语法

      pico(选项)(参数)
       
      -

      选项

      +

      选项

      -b:开启置换的功能;
       -d:开启删除的功能;
       -e:使用完整的文件名称;
      @@ -101,9 +93,7 @@ Ctrl+X:退出,当文件内容发生改变时,提供是否保存修改。
       -z:让pico可被Ctrl+z中断,暂存在后台作业里;
       +<列表编号>:执行pico指令进入编辑模式时,从指定的列数开始编辑。
       
      -

      参数

      +

      参数

      文件:指定要编辑的文件。

      @@ -130,7 +120,7 @@ Ctrl+X:退出,当文件内容发生改变时,提供是否保存修改。
      - - + + \ No newline at end of file diff --git a/c/pidof.html b/c/pidof.html index d1c697ff65..88d6b7a487 100644 --- a/c/pidof.html +++ b/c/pidof.html @@ -10,7 +10,7 @@ pidof 命令,Linux pidof 命令详解:查找指定名称的进程的进程号ID号 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
      -

      pidof

      +
      +

      pidof

      查找指定名称的进程的进程号ID号

      -

      补充说明

      +

      补充说明

      pidof命令 用于查找指定名称的进程的进程号id号。

      -

      语法

      +

      语法

      pidof(选项)(参数)
       
      -

      选项

      +

      选项

      -s:仅返回一个进程号;
       -c:仅显示具有相同“root”目录的进程;
       -x:显示由脚本开启的进程;
       -o:指定不显示的进程ID。
       
      -

      参数

      +

      参数

      进程名称:指定要查找的进程名称。

      -

      实例

      +

      实例

      pidof nginx
       13312 5371
       
      @@ -113,7 +101,7 @@ pidof init
       
      - - + + \ No newline at end of file diff --git a/c/pigz.html b/c/pigz.html index ef651399bc..ef1f0c7d6b 100644 --- a/c/pigz.html +++ b/c/pigz.html @@ -10,7 +10,7 @@ pigz 命令,Linux pigz 命令详解:可以用来解压缩文件,gzip的并行实现升级版 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
      -

      pigz

      +
      +

      pigz

      可以用来解压缩文件,gzip的并行实现升级版

      -

      补充说明

      +

      补充说明

      pigz命令可以用来解压缩文件,最重要的是支持多线程并行处理,解压缩比gzip快。主页: http://zlib.net/pigz/

      -

      语法

      +

      语法

      pigz [ -cdfhikKlLmMnNqrRtz0..9,11 ] [ -b blocksize ] [ -p threads ] [ -S suffix ] [ name ...  ]
       unpigz [ -cfhikKlLmMnNqrRtz ] [ -b blocksize ] [ -p threads ] [ -S suffix ] [ name ...  ]
       
      -

      参数

      +

      参数

      -0 to -9, -11       # Compression level (level 11, zopfli, is much slower)
       --fast, --best      # Compression levels 1 and 9 respectively
       -b, --blocksize mmm # Set compression block size to mmmK (default 128K)
      @@ -100,9 +92,7 @@ unpigz [ -cfhikKlLmMnNqrRtz # Compress to zlib (.zz) instead of gzip format
       --                  # All arguments after "--" are treated as files
       
      -

      实例

      +

      实例

      可以结合tar使用, 压缩命令

      tar -cvf - dir1 dir2 dir3 | pigz -p 8 > output.tgz
       
      @@ -137,7 +127,7 @@ unpigz [ -cfhikKlLmMnNqrRtz - - + + \ No newline at end of file diff --git a/c/ping.html b/c/ping.html index 294809ca75..0285ad8614 100644 --- a/c/ping.html +++ b/c/ping.html @@ -10,7 +10,7 @@ ping 命令,Linux ping 命令详解:测试主机之间网络的连通性 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ping

      +
      +

      ping

      测试主机之间网络的连通性

      -

      补充说明

      +

      补充说明

      ping命令 用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

      -

      语法

      +

      语法

      ping(选项)(参数)
       
      -

      选项

      +

      选项

      -d:使用Socket的SO_DEBUG功能;
       -c<完成次数>:设置完成要求回应的次数;
       -f:极限检测;
      @@ -82,13 +74,9 @@
       -t<存活数值>:设置存活数值TTL的大小;
       -v:详细显示指令的执行过程。
       
      -

      参数

      +

      参数

      目的主机:指定发送ICMP报文的目的主机。

      -

      实例

      +

      实例

      [root@AY1307311912260196fcZ ~]# ping www.jsdig.com
       PING host.1.jsdig.com (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
      @@ -126,7 +114,7 @@ rtt min/avg/max/mdev = 
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/pkill.html b/c/pkill.html
      index 99691feb6f..a3f43fe172 100644
      --- a/c/pkill.html
      +++ b/c/pkill.html
      @@ -10,7 +10,7 @@
           
           pkill 命令,Linux pkill 命令详解:可以按照进程名杀死进程 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,36 +50,24 @@
       
       
       
      -
      -

      pkill

      +
      +

      pkill

      可以按照进程名杀死进程

      -

      补充说明

      +

      补充说明

      pkill命令 可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。

      -

      语法

      +

      语法

      pkill(选项)(参数)
       
      -

      选项

      +

      选项

      -o:仅向找到的最小(起始)进程号发送信号;
       -n:仅向找到的最大(结束)进程号发送信号;
       -P:指定父进程号发送信号;
       -g:指定进程组;
       -t:指定开启进程的终端。
       
      -

      参数

      +

      参数

      进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。

      -

      实例

      +

      实例

      pgrep -l gaim
       2979 gaim
       
      @@ -111,7 +99,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/pmap.html b/c/pmap.html index 20f4d31759..f5715a4cbf 100644 --- a/c/pmap.html +++ b/c/pmap.html @@ -10,7 +10,7 @@ pmap 命令,Linux pmap 命令详解:报告进程的内存映射关系 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
      -

      pmap

      +
      +

      pmap

      报告进程的内存映射关系

      -

      补充说明

      +

      补充说明

      pmap命令 用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。

      -

      语法

      +

      语法

      pmap(选项)(参数)
       
      -

      选项

      +

      选项

      -x:显示扩展格式;
       -d:显示设备格式;
       -q:不显示头尾行;
       -V:显示指定版本。
       
      -

      参数

      +

      参数

      进程号:指定需要显示内存映射关系的进程号,可以是多个进程号。

      -

      实例

      +

      实例

      pidof nginx
       13312 5371
       
      @@ -194,7 +182,7 @@ total kB           72880   
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/popd.html b/c/popd.html
      index 9a05e58703..b50b02aec4 100644
      --- a/c/popd.html
      +++ b/c/popd.html
      @@ -10,7 +10,7 @@
           
           popd 命令,Linux popd 命令详解:从目录堆栈中删除目录。 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,19 +50,13 @@
       
       
       
      -
      -

      popd

      +
      +

      popd

      从目录堆栈中删除目录。

      -

      概要

      +

      概要

      popd [-n] [+N | -N]
       
      -

      主要用途

      +

      主要用途

      • 从目录堆栈中删除目录,如果是顶部目录被删除,那么当前工作目录会切换到新的顶部目录。

        @@ -71,23 +65,15 @@

        没有参数时,删除目录堆栈顶部。

      -

      选项

      +

      选项

      -n    抑制删除目录引起的当前工作目录变化。
       
      -

      参数

      +

      参数

      +N(可选):不带参数执行dirs命令显示的列表中,左起的第N个目录将被删除。(从0开始计数)

      -N(可选):不带参数执行dirs命令显示的列表中,右起的第N个目录将被删除。(从0开始计数)

      -

      返回值

      +

      返回值

      返回成功除非提供了非法选项或执行出现错误。

      -

      例子

      +

      例子

      # 添加目录到堆栈,当前工作目录不变。
       [user2@pc ~]$ dirs
       ~
      @@ -116,17 +102,13 @@
       ~
       [user2@pc ~]$ 
       
      -

      注意

      +

      注意

      1. bash的目录堆栈命令包括dirs popd pushd
      2. 当前目录始终是目录堆栈的顶部。
      3. 该命令是bash内建命令,相关的帮助信息请查看help命令。
      -

      参考链接

      +

      参考链接

      @@ -155,7 +137,7 @@
      - - + + \ No newline at end of file diff --git a/c/poweroff.html b/c/poweroff.html index e6a950d9ad..bb3da5a0cf 100644 --- a/c/poweroff.html +++ b/c/poweroff.html @@ -10,7 +10,7 @@ poweroff 命令,Linux poweroff 命令详解:关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      poweroff

      +
      +

      poweroff

      关闭Linux系统,关闭记录会被写入到/var/log/wtmp日志文件中

      -

      补充说明

      +

      补充说明

      grename命令 可以重命名卷组的名称。

      -

      语法

      +

      语法

      poweroff [选项]
       
      -

      选项

      +

      选项

      -n 关闭之前不同步
       -p 当被称为halt时关闭电源
       -v 增加输出,包括消息
      @@ -74,9 +66,7 @@
       -w 并不实际关闭系统,只是写入/var/log/wtmp文件中
       -f 强制关机,不调用shutdown
       
      -

      例子

      +

      例子

      关闭Linux系统。

      [root@localhost ~]# poweroff
       
      @@ -105,7 +95,7 @@
      - - + + \ No newline at end of file diff --git a/c/ppp-off.html b/c/ppp-off.html index d8cb834c12..080d0e5c0e 100644 --- a/c/ppp-off.html +++ b/c/ppp-off.html @@ -10,7 +10,7 @@ ppp-off 命令,Linux ppp-off 命令详解:关闭ppp连线 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
      -

      ppp-off

      +
      +

      ppp-off

      关闭ppp连线

      -

      补充说明

      +

      补充说明

      这是Slackware发行版内附的程序,让用户切断PPP的网络连线。

      -

      语法

      +

      语法

      ppp-off
       
      @@ -89,7 +83,7 @@
      - - + + \ No newline at end of file diff --git a/c/pr.html b/c/pr.html index 62f0c28673..8a4dcaaa57 100644 --- a/c/pr.html +++ b/c/pr.html @@ -10,7 +10,7 @@ pr 命令,Linux pr 命令详解:将文本文件转换成适合打印的格式 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
      -

      pr

      +
      +

      pr

      将文本文件转换成适合打印的格式

      -

      补充说明

      +

      补充说明

      pr命令 用来将文本文件转换成适合打印的格式,它可以把较大的文件分割成多个页面进行打印,并为每个页面添加标题。

      -

      语法

      +

      语法

      pr(选项)(参数)
       
      -

      选项

      +

      选项

      -h<标题>:为页指定标题;
       -l<行数>:指定每页的行数。
       
      -

      参数

      +

      参数

      文件:需要转换格式的文件。

      @@ -99,7 +89,7 @@
      - - + + \ No newline at end of file diff --git a/c/printf.html b/c/printf.html index aae82f2706..170977c031 100644 --- a/c/printf.html +++ b/c/printf.html @@ -10,7 +10,7 @@ printf 命令,Linux printf 命令详解:格式化并输出结果。 - Linux 命令搜索引擎 - + @@ -50,40 +50,26 @@ -
      -

      printf

      +
      +

      printf

      格式化并输出结果。

      -

      目录

      +

      目录

      -

      内建命令

      -

      概要

      +

      内建命令

      +

      概要

      printf [-v var] format [arguments]
       
      -

      主要用途

      +

      主要用途

      • 格式化参数并输出。
      -

      选项

      +

      选项

      -v var:将结果输出到变量var中而不是输出到标准输出。
       
      -

      参数

      +

      参数

      format:输出格式。

      arguments:一到多个参数。

      转义序列:除了支持printf(1)和printf(3)的转义序列,内建printf还支持以下转义序列:
      @@ -92,13 +78,9 @@
       %q       将参数扩起以用作shell输入。
       %(fmt)T  根据strftime(3)中的转义字符来输出日期时间字符串。
       
      -

      返回值

      +

      返回值

      返回状态为成功除非给出了非法选项、写错误、赋值错误。

      -

      例子

      +

      例子

      # %-5s 格式为左对齐且宽度为5的字符串代替('-'表示左对齐),不使用则默认右对齐。
       # %-4.2f 格式为左对齐宽度为4,保留两位小数。
       
      @@ -129,36 +111,24 @@ a\ b\# 输出
       2019-09-10 01:48:07 +0000
       
      -

      注意

      +

      注意

      1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
      -

      外部命令

      -

      概要

      +

      外部命令

      +

      概要

      printf FORMAT [ARGUMENT]...
       printf OPTION
       
      -

      主要用途

      +

      主要用途

      • 格式化参数并输出。
      -

      选项

      +

      选项

      --help 显示帮助信息并退出。
       --version 显示版本信息并退出。
       
      -

      参数

      +

      参数

      format:输出格式。

      arguments:一到多个参数。

      在这里忽略了(%b %q),如果你安装的coreutils版本支持它们,那么请参考上面的例子。
      @@ -183,9 +153,7 @@ a\ b\'diouxXfeEgGcs'中的一个结尾的C格式规范,将被转换为正确的类型并处理可变宽度。
       
      -

      例子

      +

      例子

      # 使用 /usr/bin/printf 确保调用的不是内建命令。
       # 当然,在你关闭内建printf以及确认当前环境没有printf函数的情况下,可直接使用printf,详见末尾"注意"的链接。
       
      @@ -213,13 +181,9 @@ key1
       value2
       value1
       
      -

      返回值

      +

      返回值

      返回状态为成功除非给出了非法选项等。

      -

      注意

      +

      注意

      1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 printfinfo coreutils 'pwd invocation'

        @@ -271,7 +235,7 @@ value1
      - - + + \ No newline at end of file diff --git a/c/protoize.html b/c/protoize.html index d6988f247b..4f2051ef9b 100644 --- a/c/protoize.html +++ b/c/protoize.html @@ -10,7 +10,7 @@ protoize 命令,Linux protoize 命令详解:GNU-C代码转换为ANSI-C代码 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
      -

      protoize

      +
      +

      protoize

      GNU-C代码转换为ANSI-C代码

      -

      补充说明

      +

      补充说明

      protoize命令 属于gcc套件,用于为C语言源代码文件添加函数原型,将GNU-C代码转换为ANSI-C代码。

      -

      语法

      +

      语法

      protoize(选项)(参数)
       
      -

      选项

      +

      选项

      -d:设置需要转换代码的目录;
       -x:转换代码时排除的文件。
       
      -

      参数

      +

      参数

      文件:需要转换代码的C语言源文件。

      @@ -99,7 +89,7 @@
      - - + + \ No newline at end of file diff --git a/c/ps.html b/c/ps.html index bf4f429fa3..c8da8c1ac6 100644 --- a/c/ps.html +++ b/c/ps.html @@ -10,7 +10,7 @@ ps 命令,Linux ps 命令详解:报告当前系统的进程状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ps

      +
      +

      ps

      报告当前系统的进程状态

      -

      补充说明

      +

      补充说明

      ps命令 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

      -

      语法

      +

      语法

      ps(选项)
       
      -

      选项

      +

      选项

      -a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
       a:显示现行终端机下的所有程序,包括其他用户的程序。
       -A:显示所有程序。
      @@ -131,9 +123,7 @@ X:采用旧式的Linux i386登陆格式显示程序状况。
       --widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
       

      由于ps命令能够支持的系统类型相当的多,所以选项多的离谱!

      -

      实例

      +

      实例

      ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
       ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
       ps aux | sort -nk 3  # 按 CPU 资源的使用量对进程进行排序
      @@ -247,7 +237,7 @@ X:采用旧式的Linux i386登陆格式显示程序状况。
       
      - - + + \ No newline at end of file diff --git a/c/pssh.html b/c/pssh.html index 443a89e2c4..3fe708c74f 100644 --- a/c/pssh.html +++ b/c/pssh.html @@ -10,7 +10,7 @@ pssh 命令,Linux pssh 命令详解:批量管理执行 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
      -

      pssh

      +
      +

      pssh

      批量管理执行

      -

      补充说明

      +

      补充说明

      pssh命令 是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问。

      -

      安装pssh

      +

      安装pssh

      在CentOS系统环境下,介绍yum的安装和源码安装的方式:

      yum方法

      yum install pssh
      @@ -72,9 +66,7 @@
       cd pssh-2.3.1/
       python setup.py install
       
      -

      选项

      +

      选项

      --version:查看版本
       --help:查看帮助,即此信息
       -h:主机文件列表,内容格式”[user@]host[:port]”
      @@ -92,9 +84,7 @@ python setup.py install
       -i:每个服务器内部处理信息输出
       -P:打印出服务器返回信息
       
      -

      实例

      +

      实例

      获取每台服务器的uptime:

      # pssh -h ip.txt -i uptime
       [1] 11:15:03 [SUCCESS] Mar.mars.he
      @@ -160,7 +150,7 @@ python setup.py install
       
      - - + + \ No newline at end of file diff --git a/c/pstack.html b/c/pstack.html index 8f5bb2b69d..066305cf66 100644 --- a/c/pstack.html +++ b/c/pstack.html @@ -10,7 +10,7 @@ pstack 命令,Linux pstack 命令详解:显示每个进程的栈跟踪 - Linux 命令搜索引擎 - + @@ -50,22 +50,16 @@ -
      -

      pstack

      +
      +

      pstack

      显示每个进程的栈跟踪

      -

      补充说明

      +

      补充说明

      pstack命令 可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID

      命令软件包下载地址:https://packages.debian.org/sid/pstack

      -

      实例

      +

      实例

      pstree以树结构显示进程

      pstree -p work | grep ad
       sshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)
      @@ -167,7 +161,7 @@ Thread 1 (
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/pstree.html b/c/pstree.html
      index 674307b8b5..62fe649527 100644
      --- a/c/pstree.html
      +++ b/c/pstree.html
      @@ -10,7 +10,7 @@
           
           pstree 命令,Linux pstree 命令详解:以树状图的方式展现进程之间的派生关系 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      pstree

      +
      +

      pstree

      以树状图的方式展现进程之间的派生关系

      -

      补充说明

      +

      补充说明

      pstree命令 以树状图的方式展现进程之间的派生关系,显示效果比较直观。

      -

      语法

      +

      语法

      pstree(选项)
       
      -

      选项

      +

      选项

      -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
       -c:不使用精简标示法;
       -G:使用VT100终端机的列绘图字符;
      @@ -79,9 +71,7 @@
       -U:使用UTF-8列绘图字符;
       -V:显示版本信息。
       
      -

      实例

      +

      实例

      显示当前所有进程的进程号和进程id

      pstree -p
       
      @@ -120,7 +110,7 @@
      - - + + \ No newline at end of file diff --git a/c/pushd.html b/c/pushd.html index 289745e7b4..de1558e0ea 100644 --- a/c/pushd.html +++ b/c/pushd.html @@ -10,7 +10,7 @@ pushd 命令,Linux pushd 命令详解:将目录添加到目录堆栈顶部。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
      -

      pushd

      +
      +

      pushd

      将目录添加到目录堆栈顶部。

      -

      概要

      +

      概要

      pushd [-n] [+N | -N | dir]
       
      -

      主要用途

      +

      主要用途

      • 将目录添加到目录堆栈顶部,切换当前工作目录到该目录。

        @@ -74,24 +68,16 @@

        没有参数时,交换目录堆栈的前两个目录。

      -

      选项

      +

      选项

      -n    抑制添加目录引起的当前工作目录变化。
       
      -

      参数

      +

      参数

      +N(可选):不带参数执行dirs命令显示的列表中,左起的第N个目录将作为堆栈顶部,在它前面的会移动到底部。(从0开始计数)

      -N(可选):不带参数执行dirs命令显示的列表中,右起的第N个目录将作为堆栈顶部,在它前面的会移动到底部。(从0开始计数)

      dir(可选):要推送的目录。

      -

      返回值

      +

      返回值

      返回成功除非提供了非法选项或执行出现错误。

      -

      例子

      +

      例子

      # 添加目录到堆栈,改变了当前工作目录。
       [user2@pc ~]$ dirs
       ~
      @@ -115,17 +101,13 @@
       [user2@pc ~]$ pushd
       ~ ~/Desktop ~/Pictures
       
      -

      注意

      +

      注意

      1. bash的目录堆栈命令包括dirs popd pushd
      2. 当前目录始终是目录堆栈的顶部。
      3. 该命令是bash内建命令,相关的帮助信息请查看help命令。
      -

      参考链接

      +

      参考链接

      @@ -154,7 +136,7 @@
      - - + + \ No newline at end of file diff --git a/c/pv.html b/c/pv.html index 49e10ecfdb..6e7c160914 100644 --- a/c/pv.html +++ b/c/pv.html @@ -10,7 +10,7 @@ pv 命令,Linux pv 命令详解:显示当前在命令行执行的命令的进度信息,管道查看器 - Linux 命令搜索引擎 - + @@ -50,33 +50,23 @@ -
      -

      pv

      +
      +

      pv

      显示当前在命令行执行的命令的进度信息,管道查看器

      -

      补充说明

      +

      补充说明

      pv命令 Pipe Viewer 的简称,由Andrew Wood 开发。意思是通过管道显示数据处理进度的信息。这些信息包括已经耗费的时间,完成的百分比(通过进度条显示),当前的速度,全部传输的数据,以及估计剩余的时间。

      -

      下载安装

      +

      下载安装

      # Debian 系的操作系统,如 Ubuntu
       sudo apt-get install pv
       
       # RedHat系的则这样:
       yum install pv
       
      -

      语法

      +

      语法

      pv(选项)(参数)
       pv [OPTION] [FILE]...
       
      -

      选项

      +

      选项

      -p, --progress           显示进度条
       -t, --timer              显示已用时间
       -e, --eta                显示预计到达时间 (完成)
      @@ -117,9 +107,7 @@ yum install pv<
       -h, --help               显示帮助
       -V, --version            显示版本信息
       
      -

      实例

      +

      实例

      我们(在 linux 上使用命令行的用户)的大多数使用场景都会用到的命令是从一个 USB 驱动器拷贝电影文件到你的电脑。如果你使用 cp 来完成上面的任务,你会什么情况都不清楚,直到整个复制过程结束或者出错。

      # 复制文件会有进度
       linux [master●] % pv ~/Downloads/CentOS-7-x86_64-Minimal-1511.iso > ~/Desktop/CentOS-7-x86_64-Minimal-1511.iso
      @@ -145,9 +133,7 @@ source:  5.2GiB 5在linux上, 如果执行的一些命令或者一些脚本需要花费很长时间, 但又不能拿出更多的精力反复盯着有没有执行结束, 这时候可以用pv监听PID, 任务完成后通过网络通知到微信或者钉钉, 这样就可以腾出来精力做其他的事, 是不是很棒

      $ pv -d $(ps -ef | grep -v grep | grep "<脚本或命令的关键字>" | awk '{print $2}') && <这里执行发通知脚本或者命令,脚本或命令需要提前调试好>
       
      -

      注意

      +

      注意

      1. 选项"-d, --watchfd PID[:FD]", 是在1.6.6版本中才有的参数,如果使用需要pv升级到大于等于1.6.6的版本
      2. CentOS7的Yum仓库里pv最新的是1.4.6版本,1.6.6版本是发布在CentOS8里面的,如果需要,可以将CentOS8里的pv下载到本地电脑上或者本地的Yum私服里, 这个是下载地址, 可以根据自己不同的架构下载, 1.6.6的安装: rpm -ivh pv-1.6.6-7.el8.x86_64.rpm -U
      3. @@ -177,7 +163,7 @@ source: 5.2GiB 5 - - + + \ No newline at end of file diff --git a/c/pvchange.html b/c/pvchange.html index 2a60568c07..c00a9f2358 100644 --- a/c/pvchange.html +++ b/c/pvchange.html @@ -10,7 +10,7 @@ pvchange 命令,Linux pvchange 命令详解:修改物理卷属性 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
        -

        pvchange

        +
        +

        pvchange

        修改物理卷属性

        -

        补充说明

        +

        补充说明

        pvchange命令 允许管理员改变物理卷的分配许可。如果物理卷出现故障,可以使用pvchange命令禁止分配物理卷上的PE。

        -

        语法

        +

        语法

        pvchange(选项)(参数)
         
        -

        选项

        +

        选项

        -u:生成新的UUID;
         -x:是否允许分配PE。
         
        -

        参数

        +

        参数

        物理卷:指定要修改属性的物理卷所对应的设备文件。

        -

        实例

        +

        实例

        使用pvchange命令禁止分配指定物理卷上的PE。在命令行中输入下面的命令:

        pvchange -x n /dev/sdb1     #禁止分配"/dev/sdb1"上的PE
         
        @@ -109,7 +97,7 @@
        - - + + \ No newline at end of file diff --git a/c/pvck.html b/c/pvck.html index 62aa080483..5221a07f32 100644 --- a/c/pvck.html +++ b/c/pvck.html @@ -10,7 +10,7 @@ pvck 命令,Linux pvck 命令详解:检测物理卷的LVM元数据的一致性 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
        -

        pvck

        +
        +

        pvck

        检测物理卷的LVM元数据的一致性

        -

        补充说明

        +

        补充说明

        pvck命令 用来检测物理卷的LVM元数据的一致性。默认情况下,物理卷中的前4个扇区保存着LVM卷标,可以使用--labelsector选项指定其他的位置(例如:数据恢复时)。

        -

        语法

        +

        语法

        pvck(选项)(参数)
         
        -

        选项

        +

        选项

        -d:调试模式;
         -v:详细信息模式;
         --labelsector:指定LVE卷标所在扇区。
         
        -

        参数

        +

        参数

        物理卷:指定要检查的物理卷对应的设备文件。

        -

        实例

        +

        实例

        使用pvck命令检查物理卷/dev/sdb1。在命令行中输入下面的命令:

        pvck -v /dev/sdb1    #检查物理卷元数据
         Scanning /dev/sdb1  
        @@ -111,7 +99,7 @@ Found LVM2 metadata record at offset
         
        -
        -
        +
        +
         
         
        \ No newline at end of file
        diff --git a/c/pvcreate.html b/c/pvcreate.html
        index fdf9a26a92..dac6d27c65 100644
        --- a/c/pvcreate.html
        +++ b/c/pvcreate.html
        @@ -10,7 +10,7 @@
             
             pvcreate 命令,Linux pvcreate 命令详解:将物理硬盘分区初始化为物理卷 -  Linux 命令搜索引擎
             
        -    
        +    
         
         
         
        @@ -50,35 +50,23 @@
         
         
         
        -
        -

        pvcreate

        +
        +

        pvcreate

        将物理硬盘分区初始化为物理卷

        -

        补充说明

        +

        补充说明

        pvcreate命令 用于将物理硬盘分区初始化为物理卷,以便LVM使用。

        -

        语法

        +

        语法

        pvcreate(选项)(参数)
         
        -

        选项

        +

        选项

        -f:强制创建物理卷,不需要用户确认;
         -u:指定设备的UUID;
         -y:所有的问题都回答“yes”;
         -Z:是否利用前4个扇区。
         
        -

        参数

        +

        参数

        物理卷:指定要创建的物理卷对应的设备文件名。

        -

        实例

        +

        实例

        查看磁盘信息:

        [root@localhost ~]# fdisk -l
         Disk /dev/hda: 41.1 GB, 41174138880 bytes
        @@ -164,7 +152,7 @@ Physical volume "/dev/sdb1" changed
         
        - - + + \ No newline at end of file diff --git a/c/pvdisplay.html b/c/pvdisplay.html index 0d64b9e3e7..5cb3d090c8 100644 --- a/c/pvdisplay.html +++ b/c/pvdisplay.html @@ -10,7 +10,7 @@ pvdisplay 命令,Linux pvdisplay 命令详解:显示物理卷的属性 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
        -

        pvdisplay

        +
        +

        pvdisplay

        显示物理卷的属性

        -

        补充说明

        +

        补充说明

        pvdisplay命令 用于显示物理卷的属性。pvdisplay命令显示的物理卷信息包括:物理卷名称、所属的卷组、物理卷大小、PE大小、总PE数、可用PE数、已分配的PE数和UUID。

        -

        语法

        +

        语法

        pvdisplay(选项)(参数)
         
        -

        选项

        +

        选项

        -s:以短格式输出;
         -m:显示PE到LE的映射。
         
        -

        参数

        +

        参数

        物理卷:要显示的物理卷对应的设备文件名。

        -

        实例

        +

        实例

        使用pvdisplay命令显示指定的物理卷的基本信息。在命令行中输入下面的命令:

        [root@localhost ~]# pvdisplay /dev/sdb1    #显示物理卷基本信息
         
        @@ -112,7 +100,7 @@ PV UUID FOXiS2-Ghaj-Z0Mf- cdVZ-pfpk- dP9p-ifIZXN
        - - + + \ No newline at end of file diff --git a/c/pvremove.html b/c/pvremove.html index d35ea2f7f4..e358ae0364 100644 --- a/c/pvremove.html +++ b/c/pvremove.html @@ -10,7 +10,7 @@ pvremove 命令,Linux pvremove 命令详解:删除一个存在的物理卷 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
        -

        pvremove

        +
        +

        pvremove

        删除一个存在的物理卷

        -

        补充说明

        +

        补充说明

        pvremove命令 用于删除一个存在的物理卷。使用pvremove指令删除物理卷时,它将LVM分区上的物理卷信息删除,使其不再被视为一个物理卷。

        -

        语法

        +

        语法

        pvremove(选项)(参数)
         
        -

        选项

        +

        选项

        -d # 调试模式;
         -f # 强制删除;
         -y # 对提问回答“yes”。
         
        -

        参数

        +

        参数

        物理卷:指定要删除的物理卷对应的设备文件名。

        -

        实例

        +

        实例

        使用pvremove指令删除物理卷/dev/sdb2。在命令行中输入下面的命令:

        pvremove /dev/sdb2 # 删除物理卷
         Labels on physical volume "/dev/sdb2" successfully wiped
        @@ -107,7 +95,7 @@ Labels on physical volume "/dev/sdb2" suc
         
        - - + + \ No newline at end of file diff --git a/c/pvs.html b/c/pvs.html index fcd467565b..23b9a6c9f5 100644 --- a/c/pvs.html +++ b/c/pvs.html @@ -10,7 +10,7 @@ pvs 命令,Linux pvs 命令详解:输出物理卷信息报表 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
        -

        pvs

        +
        +

        pvs

        输出物理卷信息报表

        -

        补充说明

        +

        补充说明

        pvs命令 用于输出格式化的物理卷信息报表。使用pvs命令仅能得到物理卷的概要信息,如果要得到更加详细的信息可以使用pvdisplay命令。

        -

        语法

        +

        语法

        pvs(选项)(参数)
         
        -

        选项

        +

        选项

        --noheadings:不输出标题头;
         --nosuffix:不输出空间大小的单位。
         
        -

        参数

        +

        参数

        物理卷:要显示报表的物理卷列表。

        -

        实例

        +

        实例

        使用pvs命令显示系统中所有物理卷的信息报表。在命令行中输入下面的命令:

        pvs # 输出物理卷信息报表 
         
        @@ -110,7 +98,7 @@
        - - + + \ No newline at end of file diff --git a/c/pvscan.html b/c/pvscan.html index eee8791ddb..751968440f 100644 --- a/c/pvscan.html +++ b/c/pvscan.html @@ -10,7 +10,7 @@ pvscan 命令,Linux pvscan 命令详解:扫描系统中所有硬盘的物理卷列表 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
        -

        pvscan

        +
        +

        pvscan

        扫描系统中所有硬盘的物理卷列表

        -

        补充说明

        +

        补充说明

        pvscan命令 会扫描系统中连接的所有硬盘,列出找到的物理卷列表。使用pvscan命令的-n选项可以显示硬盘中的不属于任何卷组的物理卷,这些物理卷是未被使用的。

        -

        语法

        +

        语法

        pvscan(选项)
         
        -

        选项

        +

        选项

        -d:调试模式;
         -e:仅显示属于输出卷组的物理卷;
         -n:仅显示不属于任何卷组的物理卷;
         -s:短格式输出;
         -u:显示UUID。
         
        -

        实例

        +

        实例

        使用pvscan命令扫描当前系统中所有硬盘的物理卷,在命令行中输入下面的命令:

        [root@localhost ~]# pvscan     #扫描所有硬盘上的物理卷 
         
        @@ -111,7 +101,7 @@ MB]
        - - + + \ No newline at end of file diff --git a/c/pwck.html b/c/pwck.html index e0d13dce14..923861fee9 100644 --- a/c/pwck.html +++ b/c/pwck.html @@ -10,7 +10,7 @@ pwck 命令,Linux pwck 命令详解:用来验证系统认证文件内容和格式的完整性 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
        -

        pwck

        +
        +

        pwck

        用来验证系统认证文件内容和格式的完整性

        -

        补充说明

        +

        补充说明

        pwck命令 用来验证系统认证文件/etc/passwd/etc/shadow的内容和格式的完整性。

        -

        语法

        +

        语法

        pwck(选项)(参数)
         
        -

        选项

        +

        选项

        -q:仅报告错误信息;
         -s:以用户id排序文件“/etc/passwd”和“/etc/shadow”;
         -r:只读方式运行指令。
         
        -

        参数

        +

        参数

        • 密码文件:指定密码文件的路径;
        • 影子文件:指定影子文件的路径。
        -

        实例

        +

        实例

        pwck /etc/passwd
         user 'lp': directory '/var/spool/lpd' does not exist
         user 'news': directory '/var/spool/news' does not exist
        @@ -125,7 +113,7 @@ pwck:无改变
         
        - - + + \ No newline at end of file diff --git a/c/pwconv.html b/c/pwconv.html index 6fbbc350ec..9da300e0a9 100644 --- a/c/pwconv.html +++ b/c/pwconv.html @@ -10,7 +10,7 @@ pwconv 命令,Linux pwconv 命令详解:用来开启用户的投影密码 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        pwconv

        +
        +

        pwconv

        用来开启用户的投影密码

        -

        补充说明

        +

        补充说明

        pwconv命令 用来开启用户的投影密码。Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为"x"字符,有效的强化了系统的安全性。

        -

        语法

        +

        语法

        pwconv
         
        -

        实例

        +

        实例

        cat /etc/passwd | grep test
         test:x:3001:3001::/home/test:/bin/sh
         
        @@ -99,7 +91,7 @@ test:$6$nYOEWam
        - - + + \ No newline at end of file diff --git a/c/pwd.html b/c/pwd.html index 34f01d9f9e..59b3b552e0 100644 --- a/c/pwd.html +++ b/c/pwd.html @@ -10,7 +10,7 @@ pwd 命令,Linux pwd 命令详解:显示当前工作目录的绝对路径。 - Linux 命令搜索引擎 - + @@ -50,77 +50,49 @@ -
        -

        pwd

        +
        +

        pwd

        显示当前工作目录的绝对路径。

        -

        目录

        +

        目录

        -

        内建命令

        -

        概要

        +

        内建命令

        +

        概要

        pwd [-LP]
         
        -

        主要用途

        +

        主要用途

        • 显示当前工作目录。
        -

        选项

        +

        选项

        -L (默认值)打印环境变量"$PWD"的值,可能为符号链接。
         -P 打印当前工作目录的物理位置。
         
        -

        返回值

        +

        返回值

        返回状态为成功除非给出了非法选项或是当前目录无法读取。

        -

        注意

        +

        注意

        1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
        -

        外部命令

        -

        概要

        +

        外部命令

        +

        概要

        pwd [OPTION]...
         
        -

        主要用途

        +

        主要用途

        • 显示当前工作目录。
        -

        选项

        +

        选项

        -L, --logical 打印环境变量"$PWD"的值,可能为符号链接。
         -P, --physical (默认值)打印当前工作目录的物理位置。
         --help 显示帮助信息并退出。
         --version 显示版本信息并退出。
         
        -

        返回值

        +

        返回值

        返回状态为成功除非给出了非法选项或是当前目录无法读取。

        -

        注意

        +

        注意

        1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man pwdinfo coreutils 'pwd invocation'
        2. 启动或关闭内建命令请查看enable命令,关于同名优先级的问题请查看builtin命令的例子部分的相关讨论。
        3. @@ -151,7 +123,7 @@
        - - + + \ No newline at end of file diff --git a/c/pwunconv.html b/c/pwunconv.html index 5f4b706086..b74bfd8931 100644 --- a/c/pwunconv.html +++ b/c/pwunconv.html @@ -10,7 +10,7 @@ pwunconv 命令,Linux pwunconv 命令详解:用来关闭用户的投影密码 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        pwunconv

        +
        +

        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
        @@ -99,7 +91,7 @@ ls: cannot access /etc/shadow: No such file
         
        - - + + \ No newline at end of file diff --git a/c/quota.html b/c/quota.html index dcae51e0b5..40c1a7a7e1 100644 --- a/c/quota.html +++ b/c/quota.html @@ -10,7 +10,7 @@ quota 命令,Linux quota 命令详解:显示磁盘已使用的空间与限制 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
        -

        quota

        +
        +

        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 ~]# groupadd qgroup
        @@ -189,7 +177,7 @@ Disk quotas for group qgroup 
        -
        -
        +
        +
         
         
        \ No newline at end of file
        diff --git a/c/quotacheck.html b/c/quotacheck.html
        index d1a282acc9..b832824896 100644
        --- a/c/quotacheck.html
        +++ b/c/quotacheck.html
        @@ -10,7 +10,7 @@
             
             quotacheck 命令,Linux quotacheck 命令详解:检查磁盘的使用空间与限制 -  Linux 命令搜索引擎
             
        -    
        +    
         
         
         
        @@ -50,27 +50,19 @@
         
         
         
        -
        -

        quotacheck

        +
        +

        quotacheck

        检查磁盘的使用空间与限制

        -

        补充说明

        +

        补充说明

        quotacheck命令 通过扫描指定的文件系统,获取磁盘的使用情况,创建、检查和修复磁盘配额(quota)文件。执行quotacheck指令,扫描挂入系统的分区,并在各分区的文件系统根目录下产生quota.user和quota.group文件,设置用户和群组的磁盘空间限制。

        如果在执行quotacheck命令时出现了以下信息:

        quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. 
         

        可以考虑将之前在文件系统的配置文件中添加的quota相关字段修改为:usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1,然后重新挂载文件系统:mount -vo remount 挂载目录(注意,如果这一步操作出现了任何问题,千万不要试图通过重启解决!将配置文件恢复原状是一个好的选择)

        -

        语法

        +

        语法

        quotacheck(选项)(参数)
         
        -

        选项

        +

        选项

        -a:扫描在/etc/fstab文件里,有加入quota设置的分区;
         -c:对目标文件系统进行一次新的扫描,并创建新的quota文件;
         -d:详细显示指令执行过程,便于排错或了解程序执行的情形;
        @@ -79,13 +71,9 @@
         -u:扫描磁盘空间时,计算每个用户识别码所占用的目录和文件数目;
         -v:显示指令执行过程。
         
        -

        参数

        +

        参数

        文件系统:指定要扫描的文件系统。

        -

        实例

        +

        实例

        将所有的在/etc/mtab内,含有quota支持的partition进行扫描:

        [root@linux ~]# quotacheck -avug
         quotacheck: Scanning /dev/hdb1 [/disk2] done
        @@ -122,7 +110,7 @@ quotacheck: Checked 3 directories and 
         
        -
        -
        +
        +
         
         
        \ No newline at end of file
        diff --git a/c/quotaoff.html b/c/quotaoff.html
        index bae8d1f139..f0f5d7eee4 100644
        --- a/c/quotaoff.html
        +++ b/c/quotaoff.html
        @@ -10,7 +10,7 @@
             
             quotaoff 命令,Linux quotaoff 命令详解:关闭Linux内核中指定文件系统的磁盘配额功能 -  Linux 命令搜索引擎
             
        -    
        +    
         
         
         
        @@ -50,31 +50,21 @@
         
         
         
        -
        -

        quotaoff

        +
        +

        quotaoff

        关闭Linux内核中指定文件系统的磁盘配额功能

        -

        补充说明

        +

        补充说明

        quotaoff命令 用于关闭Linux内核中指定文件系统的磁盘配额功能。

        -

        语法

        +

        语法

        quotaoff(选项)(参数)
         
        -

        选项

        +

        选项

        -a:关闭在/etc/fstab文件里,有加入quota设置的分区的空间限制;
         -g:关闭群组的磁盘空间限制;
         -u:关闭用户的磁盘空间限制;
         -v:显示指令执行过程。
         
        -

        参数

        +

        参数

        文件系统:指定要关闭磁盘配额功能的文件系统。

        @@ -101,7 +91,7 @@
        - - + + \ No newline at end of file diff --git a/c/quotaon.html b/c/quotaon.html index edf1a8ef2a..db1ac4a82a 100644 --- a/c/quotaon.html +++ b/c/quotaon.html @@ -10,7 +10,7 @@ quotaon 命令,Linux quotaon 命令详解:激活Linux内核中指定文件系统的磁盘配额功能 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
        -

        quotaon

        +
        +

        quotaon

        激活Linux内核中指定文件系统的磁盘配额功能

        -

        补充说明

        +

        补充说明

        quotaon命令 执行quotaon指令可开启磁盘对用户和群组的空间使用限制,但在开启前,各分区的文件系统根目录必须存在通过quotacheck命令创建的quota配置文件。

        -

        语法

        +

        语法

        quotaon(选项)(参数)
         
        -

        选项

        +

        选项

        -a:开启在/ect/fstab文件里,有加入quota设置的分区的空间限制;
         -g:开启群组的磁盘空间限制;
         -u:开启用户的磁盘空间限制;
         -v:显示指令指令执行过程。
         
        -

        参数

        +

        参数

        文件系统:指定要激活磁盘配额功能的文件系统。

        @@ -101,7 +91,7 @@
        - - + + \ No newline at end of file diff --git a/c/rcconf.html b/c/rcconf.html index 0a2fd27b22..6b172c2023 100644 --- a/c/rcconf.html +++ b/c/rcconf.html @@ -10,7 +10,7 @@ rcconf 命令,Linux rcconf 命令详解:Debian Linux下的运行等级服务配置工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        rcconf

        +
        +

        rcconf

        Debian Linux下的运行等级服务配置工具

        -

        补充说明

        +

        补充说明

        rcconf命令 是Debian Linux下的运行等级服务配置工具,用以设置在特定的运行等级下系统服务的启动配置。

        -

        语法

        +

        语法

        rcconf(选项)
         
        -

        选项

        +

        选项

        --help:打印帮助信息;
         --dialog:使用对话命令显示菜单;
         --notermcheck:不按照终端属性来设置窗口尺寸。
        @@ -96,7 +88,7 @@
         
        - - + + \ No newline at end of file diff --git a/c/rcp.html b/c/rcp.html index 342fdd3eb3..b336c550c3 100644 --- a/c/rcp.html +++ b/c/rcp.html @@ -10,7 +10,7 @@ rcp 命令,Linux rcp 命令详解:使在两台Linux主机之间的文件复制操作更简单 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        rcp

        +
        +

        rcp

        使在两台Linux主机之间的文件复制操作更简单

        -

        补充说明

        +

        补充说明

        rcp命令 使在两台Linux主机之间的文件复制操作更简单。通过适当的配置,在两台Linux主机之间复制文件而无需输入密码,就像本地文件复制一样简单。

        -

        语法

        +

        语法

        rcp(选项)(参数)
         
        -

        选项

        +

        选项

        -p:保留源文件或目录的属性,包括拥有者、所属群组、权限与时间;
         -r:递归处理,将指定目录下的文件与子目录一并处理;
         -x:加密两台Linux主机间传送的所有信息。
        @@ -74,13 +66,9 @@
         

        同名用户的主目录。如果没有给出远程用户名,就使用当前用户名。如果远程机上的路径包含特殊shell字符,需要用反斜线\\、双引号""或单引号''括起来,使所有的shell元字符都能被远程地解释。需要说明的是,rcp不提示输入口令,它通过rsh命令来执行拷贝。

        directory 每个文件或目录参数既可以是远程文件名也可以是本地文件名。远程文件名具有如下形式rname@rhost:path,其中rname是远程用户名,rhost是远程计算机名,path是这个文件的路径。

        -

        参数

        +

        参数

        源文件:指定要复制的源文件。源文件可以有多个。

        -

        实例

        +

        实例

        rcp命令使用条件

        如果系统中有/etc/hosts文件,系统管理员应确保该文件包含要与之进行通信的远程主机的项。配置过程:

        只对root用户生效

        @@ -149,7 +137,7 @@
        - - + + \ No newline at end of file diff --git a/c/read.html b/c/read.html index 7ad634a6dc..6b0c5d3e47 100644 --- a/c/read.html +++ b/c/read.html @@ -10,7 +10,7 @@ read 命令,Linux read 命令详解:从键盘读取变量值 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
        -

        read

        +
        +

        read

        从键盘读取变量值

        -

        补充说明

        +

        补充说明

        read命令 从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY

        -

        语法

        +

        语法

        read(选项)(参数)
         
        -

        选项

        +

        选项

        -p:指定读取值时的提示符;
         -t:指定读取值时等待的时间(秒)。
         
        -

        参数

        +

        参数

        变量:指定读取值的变量名。

        -

        实例

        +

        实例

        下面的列表给出了read命令的常用方式:

        read 1987name
         从标准输入读取输入并赋值给变量1987name。
        @@ -105,9 +93,7 @@
           
        read -d ":" var
         用定界符“:”结束输入行。
         
        -

        read命令示例

        +

        read命令示例

        从标准输入读取输入并赋值给变量1987name。

        #read 1987name        #等待读取输入,直到回车后表示输入完毕,并将输入赋值给变量answer
         HelloWorld            #控制台输入Hello
        @@ -198,7 +184,7 @@ stty echo
         
        - - + + \ No newline at end of file diff --git a/c/readelf.html b/c/readelf.html index fd89a6d44b..421a9bd9b0 100644 --- a/c/readelf.html +++ b/c/readelf.html @@ -10,7 +10,7 @@ readelf 命令,Linux readelf 命令详解:用于显示elf格式文件的信息 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
        -

        readelf

        +
        +

        readelf

        用于显示elf格式文件的信息

        -

        补充说明

        +

        补充说明

        readelf命令 用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。 

        这个程序和objdump提供的功能类似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件),所以即使BFD库有什么bug存在的话也不会影响到readelf程序。 

        运行readelf的时候,除了-v和-H之外,其它的选项必须有一个被指定。 

        -

        ELF文件类型

        +

        ELF文件类型

        种类型的ELF文件:

        1. 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件。 
        2. @@ -85,9 +79,7 @@
        3. 加载相关:包括程序头表相关信息。 
        4. 链接相关:节头表相关信息。 
        5. -

          选项

          +

          选项

          -a 
           --all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I. 
           
          @@ -156,9 +148,7 @@
           
           @file 可以将选项集中到一个文件中,然后使用这个@file选项载入。 
           
          -

          实例

          +

          实例

          先给出如下例子:

          1.对于可执行文件形式的elf格式文件:

          1)查看可执行程序的源代码如下: 

          @@ -599,7 +589,7 @@ Key to Flags:
        - - + + \ No newline at end of file diff --git a/c/readonly.html b/c/readonly.html index 521c7e783a..cf356ecc1b 100644 --- a/c/readonly.html +++ b/c/readonly.html @@ -10,7 +10,7 @@ readonly 命令,Linux readonly 命令详解:标记shell变量或函数为只读 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
        -

        readonly

        +
        +

        readonly

        标记shell变量或函数为只读

        -

        语法

        +

        语法

        readonly [-aAf] [name[=value] ...]
         readonly -p
         
        -

        主要用途

        +

        主要用途

        • 定义一到多个变量并设置只读属性。
        • 为已定义的一到多个变量设置只读属性。
        • @@ -71,28 +65,20 @@
        • 为已定义的一到多个函数设置只读属性。
        • 显示全部包含只读属性的函数。
        -

        选项

        +

        选项

        -a:指向数组。
         -A:指向关联数组。
         -f:指向函数。
         -p:显示全部只读变量。
         --:在它之后的选项无效。
         
        -

        参数

        +

        参数

        name(可选):变量名或函数名
         value(可选):变量的值
         
        -

        返回值

        +

        返回值

        readonly返回true除非你提供了非法选项或非法名称。

        -

        例子

        +

        例子

        # 定义变量并增加只读属性
         readonly var1=13 var2
         readonly -a arr1=(1 2 3 4 5) arr2=('z' 'x' 'c')
        @@ -126,9 +112,7 @@ value(可选):变量的值
         # 显示全部拥有只读属性的函数
         readonly -f
         
        -

        常见错误

        +

        常见错误

        对于只读变量而言,若用户对其值进行修改,则会立即报错。例如,使用该指令定义一个只读变量"test",并且将其值初始化为"ok",输入如下命令:

        [root@localhost ~]# readonly test='ok'        #定义只读变量并初始化 
         
        @@ -137,9 +121,7 @@ value(可选):变量的值 -bash: test: readonly variable

        当用户试图修改只读变量的值时,会被提示该变量为只读变量。

        -

        注意

        +

        注意

        1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
        2. declare +r不能去除只读属性, unset不能删除只读变量。
        3. @@ -169,7 +151,7 @@ value(可选):变量的值
        - - + + \ No newline at end of file diff --git a/c/reboot.html b/c/reboot.html index 7b34cdf4cd..eab061a915 100644 --- a/c/reboot.html +++ b/c/reboot.html @@ -10,7 +10,7 @@ reboot 命令,Linux reboot 命令详解:重新启动正在运行的Linux操作系统 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
        -

        reboot

        +
        +

        reboot

        重新启动正在运行的Linux操作系统

        -

        补充说明

        +

        补充说明

        reboot命令 用来重新启动正在运行的Linux操作系统。

        -

        语法

        +

        语法

        reboot(选项)
         
        -

        选项

        +

        选项

        -d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;
         -f:强制重新开机,不调用shutdown指令的功能;
         -i:在重开机之前,先关闭所有网络界面;
         -n:重开机之前不检查是否有未结束的程序;
         -w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。
         
        -

        实例

        +

        实例

        reboot        //重开机。
         reboot -w     //做个重开机的模拟(只有纪录并不会真的重开机)。
         
        @@ -104,7 +94,7 @@
        - - + + \ No newline at end of file diff --git a/c/reject.html b/c/reject.html index 939b896ca2..face20bdab 100644 --- a/c/reject.html +++ b/c/reject.html @@ -10,7 +10,7 @@ reject 命令,Linux reject 命令详解:指示打印系统拒绝发往指定目标打印机的打印任务 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
        -

        reject

        +
        +

        reject

        指示打印系统拒绝发往指定目标打印机的打印任务

        -

        补充说明

        +

        补充说明

        reject命令 属于CUPS套件,用于指示打印系统拒绝发往指定目标打印机的打印任务。

        -

        语法

        +

        语法

        reject(选项)(参数)
         
        -

        选项

        +

        选项

        -E:当连接到服务器时强制使用加密;
         -U:指定连接服务器时使用的用户名;
         -h:指定连接服务器名和端口号;
         -r:指定拒绝打印任务的原因。
         
        -

        参数

        +

        参数

        目标:指定目标打印机。

        @@ -101,7 +91,7 @@
        - - + + \ No newline at end of file diff --git a/c/rename.html b/c/rename.html index e36cf1574f..9b03d58ba9 100644 --- a/c/rename.html +++ b/c/rename.html @@ -10,7 +10,7 @@ rename 命令,Linux rename 命令详解:用字符串替换的方式批量改变文件名 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
        -

        rename

        +
        +

        rename

        用字符串替换的方式批量改变文件名

        -

        补充说明

        +

        补充说明

        rename命令存在两个版本用法上有所区别

        C语言版本, 支持通配符
         [常用通配符说明]
        @@ -83,18 +79,14 @@ $ rename --version
         $ rename --version
         rename,来自 util-linux 2.23.2
         
        -

        语法

        +

        语法

        # Perl版本
         rename [ -h|-m|-V ] [ -v ] [ -0 ] [ -n ] [ -f ] [ -d ] [ -e|-E perlexpr]*|perlexpr [ files ]
         
         # C语言版本
         rename [选项] 表达式 替换的字符 文件...
         
        -

        参数

        +

        参数

        # Perl版本
         -v, --verbose
                 详细:成功重命名的文件的打印名称。
        @@ -143,13 +135,9 @@ rename,来自 util-linux 2.23.2
         -h, --help
                 显示帮助文本并退出
         
        -

        实例

        +

        实例


        -

        Perl版本

        +

        Perl版本

        将1.txt 2.txt重命名为1.log 2.log

        $ rename -v "s/txt/log/g" 1.txt 2.txt
         1.txt renamed as 1.log
        @@ -165,9 +153,7 @@ rename,来自 util-linux 2.23.2
           
        rename "s//.txt//" *   # 把所有以.txt结尾的文件名的.txt删掉
         

        -
        C语言版本
        +
        C语言版本

        将1.txt 2.txt重命名为1.log 2.log

        $ rename -v txt log 1.txt 2.txt
         `1.txt' -> `1.log'
        @@ -211,7 +197,7 @@ rename,来自 util-linux 2.23.2
         
        - - + + \ No newline at end of file diff --git a/c/renice.html b/c/renice.html index d7053f4340..a2bcbc737c 100644 --- a/c/renice.html +++ b/c/renice.html @@ -10,7 +10,7 @@ renice 命令,Linux renice 命令详解:修改正在运行的进程的调度优先级 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
        -

        renice

        +
        +

        renice

        修改正在运行的进程的调度优先级

        -

        补充说明

        +

        补充说明

        renice命令 可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。

        -

        语法

        +

        语法

        renice(选项)(参数)
         
        -

        选项

        +

        选项

        -g:指定进程组id;
         -p<程序识别码>:改变该程序的优先权等级,此参数为预设值。
         -u:指定开启进程的用户名。
         
        -

        参数

        +

        参数

        进程号:指定要修改优先级的进程。

        -

        实例

        +

        实例

        将行程id为987及32的行程与行程拥有者为daemon及root的优先序号码加1:

        renice 1 987 -u daemon root -p 32
         
        @@ -107,7 +95,7 @@
        - - + + \ No newline at end of file diff --git a/c/repquota.html b/c/repquota.html index 0604272a5e..21dec1ba09 100644 --- a/c/repquota.html +++ b/c/repquota.html @@ -10,7 +10,7 @@ repquota 命令,Linux repquota 命令详解:报表的格式输出磁盘空间限制的状态 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
        -

        repquota

        +
        +

        repquota

        报表的格式输出磁盘空间限制的状态

        -

        补充说明

        +

        补充说明

        repquota命令 以报表的格式输出指定分区,或者文件系统的磁盘配额信息。

        -

        语法

        +

        语法

        repquota(选项)(参数)
         
        -

        选项

        +

        选项

        -a:列出在/etc/fstab文件里,有加入quota设置的分区的使用状况,包括用户和群组;
         -g:列出所有群组的磁盘空间限制;
         -u:列出所有用户的磁盘空间限制;
         -v:显示该用户或群组的所有空间限制。
         
        -

        参数

        +

        参数

        文件系统:要打印报表的文件系统或者对应的设备文件名。

        -

        实例

        +

        实例

        显示所有文件系统的磁盘使用情况

        repquota -a
         
        @@ -107,7 +95,7 @@
        - - + + \ No newline at end of file diff --git a/c/resize.html b/c/resize.html index a6534fe1a8..2b43801e9c 100644 --- a/c/resize.html +++ b/c/resize.html @@ -10,7 +10,7 @@ resize 命令,Linux resize 命令详解:命令设置终端机视窗的大小 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
        -

        resize

        +
        +

        resize

        命令设置终端机视窗的大小

        -

        补充说明

        +

        补充说明

        resize命令 命令设置终端机视窗的大小。执行resize指令可设置虚拟终端机的视窗大小。

        -

        语法

        +

        语法

        resize [-cu][-s <列数> <行数>]
         
        -

        选项

        +

        选项

        -c  就算用户环境并非C Shell,也用C Shell指令改变视窗大小。
         -s <列数> <行数>  设置终端机视窗的垂直高度和水平宽度。
         -u  就算用户环境并非Bourne Shell,也用Bourne Shell指令改变视窗大小。
         
        -

        实例

        +

        实例

        使用 C shell

        [root@localhost ~]# resize -c
         set noglob;
        @@ -115,7 +105,7 @@ setenv LINES 
        -
        -
        +
        +
         
         
        \ No newline at end of file
        diff --git a/c/restore.html b/c/restore.html
        index ae115457ba..e130386da1 100644
        --- a/c/restore.html
        +++ b/c/restore.html
        @@ -10,7 +10,7 @@
             
             restore 命令,Linux restore 命令详解:所进行的操作和dump指令相反 -  Linux 命令搜索引擎
             
        -    
        +    
         
         
         
        @@ -50,23 +50,15 @@
         
         
         
        -
        -

        restore

        +
        +

        restore

        所进行的操作和dump指令相反

        -

        补充说明

        +

        补充说明

        restore命令 是dump命令的逆过程,用于还原dump命令生成的备份文件。倾倒操作可用来备份文件,而还原操作则是写回这些已备份的文件。

        -

        语法

        +

        语法

        restore(选项)
         
        -

        选项

        +

        选项

        -b<区块大小>:设置区块大小,单位为Byte;
         -c:不检查倾倒操作的备份格式,仅准许读取使用旧格式的备份文件;
         -C:使用对比模式,将备份的文件与现行的文件相互对比;
        @@ -83,9 +75,7 @@
         -x:设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内;
         -y:不询问任何问题,一律以同意回答并继续执行指令。
         
        -

        实例

        +

        实例

        dump -9 -u -f /dev/hda3 /home/frank/
         

        用restore命令来恢复备份:

        @@ -119,7 +109,7 @@
        - - + + \ No newline at end of file diff --git a/c/restorecon.html b/c/restorecon.html index 6784f10cf9..201e04e74f 100644 --- a/c/restorecon.html +++ b/c/restorecon.html @@ -10,7 +10,7 @@ restorecon 命令,Linux restorecon 命令详解:恢复文件的安全上下文 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        restorecon

        +
        +

        restorecon

        恢复文件的安全上下文

        -

        补充说明

        +

        补充说明

        restorecon命令 用来恢复SELinux文件属性即恢复文件的安全上下文。

        -

        语法

        +

        语法

        restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...]
         
        -

        选项

        +

        选项

        -i:忽略不存在的文件。
         -f:infilename 文件 infilename 中记录要处理的文件。
         -e:directory 排除目录。
        @@ -76,9 +68,7 @@
         -v:将过程显示到屏幕上。
         -F:强制恢复文件安全语境。
         
        -

        实例

        +

        实例

        假设CentOS安装了apache,网页默认的主目录是/var/www/html,我们经常遇到这样的问题,在其他目录中创建了一个网页文件,然后用mv移动到网页默认目录/var/www/html中,但是在浏览器中却打不开这个文件,这很可能是因为这个文件的SELinux配置信息是继承原来那个目录的,与/var/www/html目录不同,使用mv移动的时候,这个SELinux配置信息也一起移动过来了,从而导致无法打开页面,具体请看下面的实例:

        使用CentOS举例,如果默认没有安装apache,确保网络连接,使用下面的命令安装

        [root@jsdig.com ~]# yum install httpd
        @@ -139,7 +129,7 @@ welcome to www.jsdig.com
         
        - - + + \ No newline at end of file diff --git a/c/return.html b/c/return.html index f8a7c9f6a7..403543eb86 100644 --- a/c/return.html +++ b/c/return.html @@ -10,7 +10,7 @@ return 命令,Linux return 命令详解:从函数中退出并返回数值。 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
        -

        return

        +
        +

        return

        从函数中退出并返回数值。

        -

        概要

        +

        概要

        return [n]
         
        -

        主要用途

        +

        主要用途

        • 使得shell函数退出并返回数值,如果没有指定n的值,则默认为函数最后一条命令执行的返回状态。
        -

        参数

        +

        参数

        n(可选):整数。

        -

        返回值

        +

        返回值

        返回值为你指定的参数n的值,如果你指定的参数大于255或小于0,那么会通过加或减256的方式使得返回值总是处于0到255之间。

        在函数外执行return语句会返回失败。

        -

        例子

        +

        例子

        #!/usr/bin/env bash
         # 定义一个返回值大于255的函数
         example() {
        @@ -88,9 +76,7 @@ example
         # 显示3
         echo $?
         
        -

        注意

        +

        注意

        1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
        @@ -119,7 +105,7 @@ example
        - - + + \ No newline at end of file diff --git a/c/rev.html b/c/rev.html index 50528d108b..f9e60fdd17 100644 --- a/c/rev.html +++ b/c/rev.html @@ -10,7 +10,7 @@ rev 命令,Linux rev 命令详解:将文件内容以字符为单位反序输出 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
        -

        rev

        +
        +

        rev

        将文件内容以字符为单位反序输出

        -

        补充说明

        +

        补充说明

        rev命令 将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。

        -

        语法

        +

        语法

        rev(参数)
         
        -

        参数

        +

        参数

        文件:指定要反序显示内容的文件。

        -

        实例

        +

        实例

        [root@localhost ~]# cat iptables.bak
         # Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
         *filter
        @@ -126,7 +116,7 @@ TIMMOC
         
        - - + + \ No newline at end of file diff --git a/c/rexec.html b/c/rexec.html index abf30f9aef..4ad04f1def 100644 --- a/c/rexec.html +++ b/c/rexec.html @@ -10,7 +10,7 @@ rexec 命令,Linux rexec 命令详解:远程执行Linux系统下命令 - Linux 命令搜索引擎 - + @@ -50,39 +50,27 @@ -
        -

        rexec

        +
        +

        rexec

        远程执行Linux系统下命令

        -

        补充说明

        +

        补充说明

        rexec命令 用于在指定的远程Linux系统主机上执行命令,向远程rexec服务器发出执行命令的请求。

        rexec命令通过检查$HOME/.netrc文件(包含远程主机上使用的用户名和密码)来提供自动登录的功能。如果没有发现此类项或系统在安全方式下操作(参阅 securetcpip 命令),rexec命令提示输入一个远程主机的有效用户名和密码。这两种情况下,rexec均导致远程系统上的rexecd使用缺省的compat用户登录认证方法。rexecd不会为了备用的认证方法去查找/etc/security/user文件。也可以指定-n标志到rexec命令行上来重设自动登录功能。

        -

        语法

        +

        语法

        rexec(选项)(参数)
         
        -

        选项

        +

        选项

        -a:表示远程命令的标准错误与标准输出相同,不支持发送任意信号到远程进程;
         -l<用户名>:指定连接远程rexec服务器的用户名;
         -p<密码>:指定连接远程rexec服务器的密码;
         -n:明确地提示输入用户名和密码。
         
        -

        参数

        +

        参数

        • 远程主机:指定远程主机(ip地址或主机名);
        • 命令:指定需要在远程主机上执行的命令。
        -

        实例

        +

        实例

        要在一个远程主机上执行date命令,输入:

        rexec host1 date
         
        @@ -121,7 +109,7 @@
        - - + + \ No newline at end of file diff --git a/c/rlogin.html b/c/rlogin.html index 2d5491207e..14be911c34 100644 --- a/c/rlogin.html +++ b/c/rlogin.html @@ -10,7 +10,7 @@ rlogin 命令,Linux rlogin 命令详解:从当前终端登录到远程Linux主机 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
        -

        rlogin

        +
        +

        rlogin

        从当前终端登录到远程Linux主机

        -

        补充说明

        +

        补充说明

        rlogin命令 用于从当前终端登录到远程Linux主机。

        -

        语法

        +

        语法

        rlogin(选项)(参数)
         
        -

        选项

        +

        选项

        -8:允许输入8位字符数据;
         -e脱离字符>:设置脱离字符;
         -E:滤除脱离字符;
         -l用户名称>:指定要登入远端主机的用户名称;
         -L:使用litout模式进行远端登入阶段操作。
         
        -

        参数

        +

        参数

        远程主机:指定要登录的远程主机(ip地址或者域名)。

        @@ -102,7 +92,7 @@
        - - + + \ No newline at end of file diff --git a/c/rm.html b/c/rm.html index 84c6d89092..bce2d59075 100644 --- a/c/rm.html +++ b/c/rm.html @@ -10,7 +10,7 @@ rm 命令,Linux rm 命令详解:用于删除给定的文件和目录 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
        -

        rm

        +
        +

        rm

        用于删除给定的文件和目录

        -

        补充说明

        +

        补充说明

        rm 命令 可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

        注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

        -

        语法

        +

        语法

        rm (选项)(参数)
         
        -

        选项

        +

        选项

        -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
         -f:强制删除文件或目录;
         -i:删除已有文件或目录之前先询问用户;
        @@ -75,13 +67,9 @@
         --preserve-root:不对根目录进行递归操作;
         -v:显示指令的详细执行过程。
         
        -

        参数

        +

        参数

        文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

        -

        实例

        +

        实例

        交互式删除当前目录下的文件test和example

        rm -i test example
         Remove test ?n(不删除文件test)
        @@ -167,7 +155,7 @@ Remove example ?y(删除文件example)
         
        - - + + \ No newline at end of file diff --git a/c/rmdir.html b/c/rmdir.html index 4d19c400b7..9a918c60c6 100644 --- a/c/rmdir.html +++ b/c/rmdir.html @@ -10,7 +10,7 @@ rmdir 命令,Linux rmdir 命令详解:用来删除空目录 - Linux 命令搜索引擎 - + @@ -50,38 +50,26 @@ -
        -

        rmdir

        +
        +

        rmdir

        用来删除空目录

        -

        补充说明

        +

        补充说明

        rmdir命令 用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。

        注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。

        虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。

        -

        语法

        +

        语法

        rmdir(选项)(参数)
         
        -

        选项

        +

        选项

        -p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
         --ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
         -v或-verboes:显示命令的详细执行过程;
         --help:显示命令的帮助信息;
         --version:显示命令的版本信息。
         
        -

        参数

        +

        参数

        目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。

        -

        实例

        +

        实例

        将工作目录下,名为 www 的子目录删除 :

        rmdir www
         
        @@ -116,7 +104,7 @@
        - - + + \ No newline at end of file diff --git a/c/rmmod.html b/c/rmmod.html index 34d394fe1c..967df08176 100644 --- a/c/rmmod.html +++ b/c/rmmod.html @@ -10,7 +10,7 @@ rmmod 命令,Linux rmmod 命令详解:从运行的内核中移除指定的内核模块 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
        -

        rmmod

        +
        +

        rmmod

        从运行的内核中移除指定的内核模块

        -

        补充说明

        +

        补充说明

        rmmod命令 用于从当前运行的内核中移除指定的内核模块。执行rmmod指令,可删除不需要的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放如核心。你可以将这些功能编译成一个个单独的模块,待有需要时再分别载入它们。

        -

        语法

        +

        语法

        rmmod(选项)(参数)
         
        -

        选项

        +

        选项

        -v:显示指令执行的详细信息;
         -f:强制移除模块,使用此选项比较危险;
         -w:等待着,直到模块能够被除时在移除模块;
         -s:向系统日志(syslog)发送错误信息。
         
        -

        参数

        +

        参数

        模块名:要移除的模块名称。

        -

        实例

        +

        实例

        用rmmod命令主要用于卸载正在使用的Linux内核模块,与modprobe -r命令相似,如下所示:

        [root@localhost boot]# lsmod | grep raid1
         raid1                  25153  0
        @@ -111,7 +99,7 @@ raid1                  25153  
        -
        -
        +
        +
         
         
        \ No newline at end of file
        diff --git a/c/route.html b/c/route.html
        index 5207051922..1771dd9264 100644
        --- a/c/route.html
        +++ b/c/route.html
        @@ -10,7 +10,7 @@
             
             route 命令,Linux route 命令详解:显示并设置Linux中静态路由表 -  Linux 命令搜索引擎
             
        -    
        +    
         
         
         
        @@ -50,24 +50,16 @@
         
         
         
        -
        -

        route

        +
        +

        route

        显示并设置Linux中静态路由表

        -

        补充说明

        +

        补充说明

        route命令 用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

        在Linux系统中设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的ip地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

        -

        语法

        +

        语法

        route(选项)(参数)
         
        -

        选项

        +

        选项

        -A:设置地址类型;
         -C:打印将Linux核心的路由缓存;
         -v:详细信息模式;
        @@ -76,9 +68,7 @@
         -net:到一个网络的路由表;
         -host:到一个主机的路由表。
         
        -

        参数

        +

        参数

        Add:增加指定的路由记录;
         Del:删除指定的路由记录;
         Target:目的网络或目的主机;
        @@ -87,9 +77,7 @@ mss:设置TCP的最大区块长度(MSS),单位MB;
         window:指定通过路由表的TCP连接的TCP窗口大小;
         dev:路由记录所表示的网络接口。
         
        -

        实例

        +

        实例

        显示当前路由:

        [root@localhost ~]# route
         Kernel IP routing table
        @@ -160,7 +148,7 @@ route add default gw 
        -
        -
        +
        +
         
         
        \ No newline at end of file
        diff --git a/c/rpm.html b/c/rpm.html
        index f4dd52b8ae..c46d91ea69 100644
        --- a/c/rpm.html
        +++ b/c/rpm.html
        @@ -10,7 +10,7 @@
             
             rpm 命令,Linux rpm 命令详解:RPM软件包的管理工具 -  Linux 命令搜索引擎
             
        -    
        +    
         
         
         
        @@ -50,23 +50,15 @@
         
         
         
        -
        -

        rpm

        +
        +

        rpm

        RPM软件包的管理工具

        -

        补充说明

        +

        补充说明

        rpm命令 是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

        -

        语法

        +

        语法

        rpm(选项)(参数)
         
        -

        选项

        +

        选项

        -a:查询所有套件;
         -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
         -c:只列出组态配置文件,本参数需配合"-l"参数使用;
        @@ -85,13 +77,9 @@
         -v:显示指令执行过程;
         -vv:详细显示指令执行过程,便于排错。
         
        -

        参数

        +

        参数

        软件包:指定要操纵的rpm软件包。

        -

        实例

        +

        实例

        如何安装rpm软件包

        rpm软件包的安装可以使用程序rpm来完成。执行下面的命令:

        rpm -ivh your-package.rpm
        @@ -194,9 +182,7 @@ proftpd-1.2.8-1
         rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt
         proftpd-1.2.8-1
         
        -

        更多实例

        +

        更多实例

        库依赖: http://rpmfind.net/

        @@ -248,7 +234,7 @@ rpm2cpio | cpio -idv
        - - + + \ No newline at end of file diff --git a/c/rpm2cpio.html b/c/rpm2cpio.html index 0e6548ce00..b453d9fc7a 100644 --- a/c/rpm2cpio.html +++ b/c/rpm2cpio.html @@ -10,7 +10,7 @@ rpm2cpio 命令,Linux rpm2cpio 命令详解:将RPM软件包转换为cpio格式的文件 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
        -

        rpm2cpio

        +
        +

        rpm2cpio

        将RPM软件包转换为cpio格式的文件

        -

        补充说明

        +

        补充说明

        rpm2cpio命令 用于将rpm软件包转换为cpio格式的文件。

        -

        语法

        +

        语法

        rpm2cpio(参数)
         
        -

        参数

        +

        参数

        文件:指定要转换的rpm包的文件名。

        -

        实例

        +

        实例

        rpm2cpio ../libstdc++-4.3.0-8.i386.rpm | cpio -idv
         
        @@ -98,7 +88,7 @@
        - - + + \ No newline at end of file diff --git a/c/rpmbuild.html b/c/rpmbuild.html index 53abf84544..ba08f7d2bd 100644 --- a/c/rpmbuild.html +++ b/c/rpmbuild.html @@ -10,7 +10,7 @@ rpmbuild 命令,Linux rpmbuild 命令详解:创建RPM的二进制软件包和源码软件包 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
        -

        rpmbuild

        +
        +

        rpmbuild

        创建RPM的二进制软件包和源码软件包

        -

        补充说明

        +

        补充说明

        rpmbuild命令 被用于创建rpm的二进制软件包和源码软件包。

        -

        语法

        +

        语法

        rpmbuild(选项)
         
        -

        选项

        +

        选项

        --initdb:初始化RPM数据库;
         --rebuilddb:从已安装的包头文件,方向重建RPM数据库;
         -ba:创建二进制和源代码包;
         -bb:创建二进制代码包;
         -bs:创建源代码包。
         
        -

        实例

        +

        实例

        rpmbuild -ba 'spec文件路径'
         

        build完后,可以在/usr/src/redhat/RPMS/下找到二进制rpm包,rpm包按照其对应的cpu体系结构分类,通常在/usr/src/redhat/RPMS/i386目录下。/usr/src/redhat/SRPMS/下找到源码rpm包,此时由于是源代码,所以无须按体系结构分类。

        @@ -104,7 +94,7 @@
        - - + + \ No newline at end of file diff --git a/c/rpmdb.html b/c/rpmdb.html index 956e2a74e8..994ff635c9 100644 --- a/c/rpmdb.html +++ b/c/rpmdb.html @@ -10,7 +10,7 @@ rpmdb 命令,Linux rpmdb 命令详解:初始化和重建RPM数据库 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        rpmdb

        +
        +

        rpmdb

        初始化和重建RPM数据库

        -

        补充说明

        +

        补充说明

        rpmdb命令 用于初始化和重建rpm数据库。

        -

        语法

        +

        语法

        rpmdb(选项)
         
        -

        选项

        +

        选项

        --initdb:初始化RPM数据库;
         --rebuilddb:从已安装的包头文件,反向重建RPM数据库。
         
        @@ -95,7 +87,7 @@
        - - + + \ No newline at end of file diff --git a/c/rpmquery.html b/c/rpmquery.html index 502a536fdd..b5a2536ad0 100644 --- a/c/rpmquery.html +++ b/c/rpmquery.html @@ -10,7 +10,7 @@ rpmquery 命令,Linux rpmquery 命令详解:从RPM数据库中查询软件包信息 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
        -

        rpmquery

        +
        +

        rpmquery

        从RPM数据库中查询软件包信息

        -

        补充说明

        +

        补充说明

        rpmquery命令 使用多种依据从rpm数据库中查询软件包信息。

        -

        语法

        +

        语法

        rpmquery(选项)
         
        -

        选项

        +

        选项

        -qf:查询指定的文件所属的软件包;
         -q:查询指定的软件包是否被安装;
         -qc:查询软件包中的配置文件;
         -qd:查询软件包中的文档文件;
         -qi:查询软件包的基本信息。
         
        -

        实例

        +

        实例

        使用rpmquery命令查询指定文件所属的软件包:

        [root@localhost ~]# rpmquery -qf /usr/bin/htpasswd
         httpd-2.2.3-81.el5.centos
        @@ -105,7 +95,7 @@ httpd-2.2.3-81.el5.centos
         
        - - + + \ No newline at end of file diff --git a/c/rpmsign.html b/c/rpmsign.html index 589579c096..95ff1dcc31 100644 --- a/c/rpmsign.html +++ b/c/rpmsign.html @@ -10,7 +10,7 @@ rpmsign 命令,Linux rpmsign 命令详解:使用RPM软件包的签名管理工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        rpmsign

        +
        +

        rpmsign

        使用RPM软件包的签名管理工具

        -

        补充说明

        +

        补充说明

        rpmsign命令 使用rpm软件包的签名管理工具。

        -

        语法

        +

        语法

        rpmsign(选项)
         
        -

        选项

        +

        选项

        --addsign:为自动软件包添加签名;
         --checksig:验证软件包签名;
         --delsign:删除软件包签名;
        @@ -100,7 +92,7 @@
         
        - - + + \ No newline at end of file diff --git a/c/rpmverify.html b/c/rpmverify.html index 5964114b97..a6edce901f 100644 --- a/c/rpmverify.html +++ b/c/rpmverify.html @@ -10,7 +10,7 @@ rpmverify 命令,Linux rpmverify 命令详解:验证已安装的RPM软件包的正确性 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
        -

        rpmverify

        +
        +

        rpmverify

        验证已安装的RPM软件包的正确性

        -

        补充说明

        +

        补充说明

        rpmverify命令 用来验证已安装的rpm软件包的正确性。

        -

        语法

        +

        语法

        rpmverify(选项)
         
        -

        选项

        +

        选项

        -Va:验证所有软件包;
         -V<软件包>f:验证指定软件包;
         --nomd5:不验证软件包的md5摘要。
        @@ -96,7 +88,7 @@
         
        - - + + \ No newline at end of file diff --git a/c/rsh.html b/c/rsh.html index e2fa99971a..a4e3254dbe 100644 --- a/c/rsh.html +++ b/c/rsh.html @@ -10,7 +10,7 @@ rsh 命令,Linux rsh 命令详解:连接远程主机并执行命令 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
        -

        rsh

        +
        +

        rsh

        连接远程主机并执行命令

        -

        补充说明

        +

        补充说明

        rsh命令 用于连接到远程的指定主机并执行指定的命令。

        -

        语法

        +

        语法

        rsh(选项)(参数)
         
        -

        选项

        +

        选项

        -d:使用Socket层级的排错功能;
         -l<用户名称>:指定要登入远端主机的用户名称;
         -n:把输入的指令号向代号为/dev/null的特殊外围设备。
         
        -

        参数

        +

        参数

        • 远程主机:指定要连接的远程主机;
        • 指令:指定要在远程主机上执行的命令。
        • @@ -103,7 +93,7 @@
        - - + + \ No newline at end of file diff --git a/c/rsync.html b/c/rsync.html index b1444b3ec3..bad683547c 100644 --- a/c/rsync.html +++ b/c/rsync.html @@ -10,7 +10,7 @@ rsync 命令,Linux rsync 命令详解:远程数据同步工具 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
        -

        rsync

        +
        +

        rsync

        远程数据同步工具

        -

        补充说明

        +

        补充说明

        rsync命令 是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

        -

        语法

        +

        语法

        rsync [OPTION]... SRC DEST
         rsync [OPTION]... SRC [USER@]host:DEST
         rsync [OPTION]... [USER@]HOST:SRC DEST
        @@ -78,9 +72,7 @@
             
      4. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www
      5. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www
      -

      选项

      +

      选项

      -v, --verbose 详细模式输出。
       -q, --quiet 精简输出模式。
       -c, --checksum 打开校验开关,强制对文件传输进行校验。
      @@ -143,9 +135,7 @@
       --bwlimit=KBPS 限制I/O带宽,KBytes per second。
       -h, --help 显示帮助信息。
       
      -

      实例

      +

      实例

      SSH方式

      首先在服务端启动ssh服务:

      service sshd start
      @@ -323,7 +313,7 @@ $ rsync -av --exclude 
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/runlevel.html b/c/runlevel.html
      index 21c8241632..5e07cd1148 100644
      --- a/c/runlevel.html
      +++ b/c/runlevel.html
      @@ -10,7 +10,7 @@
           
           runlevel 命令,Linux runlevel 命令详解:打印当前Linux系统的运行等级 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      runlevel

      +
      +

      runlevel

      打印当前Linux系统的运行等级

      -

      补充说明

      +

      补充说明

      runlevel命令 用于打印当前Linux系统的运行等级。

      -

      语法

      +

      语法

      runlevel
       
      -

      知识扩展

      +

      知识扩展

      linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel,同样,当linux操作系统关闭时也要经历另外几个不同的runlevel,下面我们就准备详细介绍一下runlevel,并向您展示一些小技巧来让您的linux系统避免不必要的重启动。

      runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中的Normal,safemode,和command prompt only。进入每个runlevel都需要启动或关闭相应的一系列服务(services),这些服务(services)以初始化脚本的方式放置于目录/etc/rc.d/rc?.d/或者/etc/rc?.d下面(?代表runlevel的对应序号)。

      在大多数的linux发行版本中,通常有8个runlevel:

      @@ -106,7 +98,7 @@ S s Single user mode
      - - + + \ No newline at end of file diff --git a/c/sar.html b/c/sar.html index 6772a0adf5..9f02729ae6 100644 --- a/c/sar.html +++ b/c/sar.html @@ -10,7 +10,7 @@ sar 命令,Linux sar 命令详解:系统运行状态统计工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      sar

      +
      +

      sar

      系统运行状态统计工具

      -

      补充说明

      +

      补充说明

      sar命令 是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

      -

      语法

      +

      语法

      sar(选项)(参数)
       
      -

      选项

      +

      选项

      -A:显示所有的报告信息;
       -b:显示I/O速率;
       -B:显示换页状态;
      @@ -82,16 +74,12 @@
       -w:显示交换分区状态;
       -x:显示给定进程的状态。
       
      -

      参数

      +

      参数

      • 间隔时间:每次报告的间隔时间(秒);
      • 次数:显示报告的次数。
      -

      实例

      +

      实例

      察看内存和交换空间的使用率:

      sar -r
       Linux 2.4.20-8 (www.jsdig.com)    20130503  
      @@ -136,7 +124,7 @@ Average:       324346    
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/scp.html b/c/scp.html
      index 1ad5820070..2b238a4f20 100644
      --- a/c/scp.html
      +++ b/c/scp.html
      @@ -10,7 +10,7 @@
           
           scp 命令,Linux scp 命令详解:加密的方式在本地主机和远程主机之间复制文件 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      scp

      +
      +

      scp

      加密的方式在本地主机和远程主机之间复制文件

      -

      补充说明

      +

      补充说明

      scp命令 用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

      -

      语法

      +

      语法

      scp(选项)(参数)
       
      -

      选项

      +

      选项

      -1:使用ssh协议版本1;
       -2:使用ssh协议版本2;
       -4:使用ipv4;
      @@ -82,16 +74,12 @@
       -q:不显示复制进度;
       -r:以递归方式复制。
       
      -

      参数

      +

      参数

      • 源文件:指定要复制的源文件。
      • 目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。
      -

      实例

      +

      实例

      从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。

      从远程机器复制文件到本地目录

      scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
      @@ -140,7 +128,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/screen.html b/c/screen.html index 47b709cecf..86effb9309 100644 --- a/c/screen.html +++ b/c/screen.html @@ -10,7 +10,7 @@ screen 命令,Linux screen 命令详解:用于命令行终端切换 - Linux 命令搜索引擎 - + @@ -50,28 +50,20 @@ -
      -

      screen

      +
      +

      screen

      用于命令行终端切换

      -

      补充说明

      +

      补充说明

      Screen 是一款由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 <行数>  指定视窗的缓冲区行数。
      @@ -85,9 +77,7 @@
       -ls或--list  显示目前所有的screen作业。
       -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。
       
      -

      常用screen参数

      +

      常用screen参数

      screen -S yourname -> 新建一个叫yourname的session
       screen -ls -> 列出当前所有的session
       screen -r yourname -> 回到yourname这个session
      @@ -121,9 +111,7 @@ C-a  -> 进入 copy mode,在 copy mode 下
           Esc 结束 copy mode 
       C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上
       
      -

      使用 screen

      +

      使用 screen

      安装screen

      流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。

      [root@TS-DEV ~]# yum install screen
      @@ -178,9 +166,7 @@ There are screens on:
       #或者
       [root@TS-DEV ~]# screen -XS test quit
       
      -

      screen 高级应用 

      +

      screen 高级应用 

      会话共享

      还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:

      [root@TS-DEV ~]# screen -x
      @@ -232,7 +218,7 @@ There are screens on:
       
      - - + + \ No newline at end of file diff --git a/c/script.html b/c/script.html index abb2cb6151..7f1b1ef0fa 100644 --- a/c/script.html +++ b/c/script.html @@ -10,7 +10,7 @@ script 命令,Linux script 命令详解:记录终端会话的所有操作 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      script

      +
      +

      script

      记录终端会话的所有操作

      -

      补充说明

      +

      补充说明

      script 用于在终端会话中,记录用户的所有操作和命令的输出信息。简而言之,记录终端会话发生的一切信息,如同一台终端录像机。例如,用户在输入某条命令时,字符的键入和删除也都会被记录。用户在终端的所有操作、终端的回显等信息会被以 raw 格式存储在日志文件,称为终端数据文件。命令的时间信息会被单独以另一种结构储存为日志文件,称为时间日志文件。使用命令exit或者快捷键Ctrl + D停止记录。

      -

      语法

      +

      语法

      script(选项)(参数)
       
      -

      选项

      +

      选项

      -a, --append              # 对终端会话的操作信息,以追加方式写入文件(保留原文件内容)
       -c, --command command     # 只运行 command 命令而不打开交互终端。相当于开启 script ,执行 command ,再退出 script
                                 # command 可以是任意能够在终端会话执行的命令
      @@ -81,15 +73,11 @@
       -V, --version             # 显示版本信息并退出
       -h, --help                # 显示帮助文本并退出
       
      -

      参数

      +

      参数

      • 终端数据文件:设置存储终端数据信息的文件名称
      -

      实例

      +

      实例

      script                             # 开启记录,默认会在当前目录创建名称为 typescript 的文件来保存终端数据文件
       script command.log                 # 开启记录,在当前目录创建名称为 command.log 的文件来保存终端数据文件
       script -t 2>time.file command.log  # 开启记录,在当前目录创建名称为 command.log 的文件来保存终端数据文件
      @@ -176,7 +164,7 @@ zfb@localhost:~$
       
      - - + + \ No newline at end of file diff --git a/c/scriptreplay.html b/c/scriptreplay.html index 08ab786b3e..017ce63fc9 100644 --- a/c/scriptreplay.html +++ b/c/scriptreplay.html @@ -10,7 +10,7 @@ scriptreplay 命令,Linux scriptreplay 命令详解:重新播放终端会话的所有操作 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      scriptreplay

      +
      +

      scriptreplay

      重新播放终端会话的所有操作

      -

      补充说明

      +

      补充说明

      scriptreplay 用于在终端中,根据 script 命令记录的终端数据文件和时间日志文件,重现当时用户的所有操作和命令的输出信息。简而言之,重现播放当时终端会话发生的一切信息,而不是重新运行一遍命令。例如,用户当时在输入某条命令时,字符的键入和删除也都会被重现。非常适合用于教程演示场合。而且,在机器 A 上面使用 script 命令记录终端操作,可以在机器 B 上面使用 scriptreplay 命令重新播放。

      -

      语法

      +

      语法

      scriptreplay [options] [-t] timingfile [typescript [divisor]]
       
      -

      选项

      +

      选项

      -t, --timing file         # 记录时间日志的文件名称
       -s, --typescript file     # 记录终端数据信息的日志文件名称
       -d, --divisor number      # 表示倍速播放,把时间日志文件记录的时间间隔都除以 number
      @@ -76,16 +68,12 @@
       -V, --version             # 显示版本信息并退出
       -h, --help                # 显示帮助文本并退出
       
      -

      参数

      +

      参数

      • 时间日志文件:存储时间日志信息的文件名称
      • 终端数据文件:存储终端数据信息的文件名称
      -

      实例

      +

      实例

      # 重新播放终端内容,默认第一个参数是时间日志,第二个参数是终端数据文件
       scriptreplay time.file command.log
       # 重新播放终端内容,播放快进速度为 1 ,命令之间最大延时为 2 秒
      @@ -158,7 +146,7 @@ zfb@localhost:~$
       
      - - + + \ No newline at end of file diff --git a/c/sed.html b/c/sed.html index 189cede6bf..e0bbfd0028 100644 --- a/c/sed.html +++ b/c/sed.html @@ -10,7 +10,7 @@ sed 命令,Linux sed 命令详解:功能强大的流式文本编辑器 - Linux 命令搜索引擎 - + @@ -50,38 +50,26 @@ -
      -

      sed

      +
      +

      sed

      功能强大的流式文本编辑器

      -

      补充说明

      +

      补充说明

      sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

      -

      sed的选项、命令、替换标记

      +

      sed的选项、命令、替换标记

      命令格式

      sed [options] 'command' file(s)
       sed [options] -f scriptfile file(s)
       
      -

      选项

      +

      选项

      -e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件;
       -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
       -h或--help:显示帮助;
       -n或--quiet或——silent:仅显示script处理后的结果;
       -V或--version:显示版本信息。
       
      -

      参数

      +

      参数

      文件:指定待处理的文本文件列表。

      -

      sed命令

      +

      sed命令

      a\ # 在当前行下面插入文本。
       i\ # 在当前行上面插入文本。
       c\ # 把选定的行改为新的文本。
      @@ -108,9 +96,7 @@ W file # 写并
       = # 打印当前行号码。  
       # # 把注释扩展到下一个换行符以前。  
       
      -

      sed替换标记

      +

      sed替换标记

      g # 表示行内全面替换。  
       p # 表示打印行。  
       w # 表示把行写入一个文件。  
      @@ -119,9 +105,7 @@ y # 表示把一个字符翻译为另外的字符(
       \1 # 子串匹配标记
       & # 已匹配字符串标记
       
      -

      sed元字符集

      +

      sed元字符集

      ^ # 匹配行开始,如:/^sed/匹配所有以sed开头的行。
       $ # 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
       . # 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
      @@ -136,12 +120,8 @@ x\{\{m,\} # 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
       x\{m,n\} # 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。  
       
      -

      sed用法实例

      -

      替换操作:s命令

      +

      sed用法实例

      +

      替换操作:s命令

      替换文本中的字符串:

      sed 's/book/books/' file
       
      @@ -150,9 +130,7 @@ x\{直接编辑文件 选项-i ,会匹配file文件中每一行的所有book替换为books:

      sed -i 's/book/books/g' file
       
      -

      全面替换标记g

      +

      全面替换标记g

      使用后缀 /g 标记会替换每一行中的所有匹配:

      sed 's/book/books/g' file
       
      @@ -166,9 +144,7 @@ skskSKSKSKSK echo sksksksksksk | sed 's/sk/SK/4g' skskskSKSKSK
      -

      定界符

      +

      定界符

      以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:

      sed 's:test:TEXT:g'
       sed 's|test|TEXT|g'
      @@ -176,9 +152,7 @@ skskskSKSKSK
         

      定界符出现在样式内部时,需要进行转义:

      sed 's/\/bin/\/usr\/local\/bin/g'
       
      -

      删除操作:d命令

      +

      删除操作:d命令

      删除空白行:

      sed '/^$/d' file
       
      @@ -194,9 +168,7 @@ skskskSKSKSK

      删除文件中所有开头是test的行:

      sed '/^test/'d file
       
      -

      已匹配字符串标记&

      +

      已匹配字符串标记&

      正则表达式 \w+ 匹配每一个单词,使用 [&] 替换它,& 对应于之前所匹配到的单词:

      echo this is a test line | sed 's/\w\+/[&]/g'
       [this] [is] [a] [test] [line]
      @@ -205,9 +177,7 @@ skskskSKSKSK
         
      sed 's/^192.168.0.1/&localhost/' file
       192.168.0.1localhost
       
      -

      子串匹配标记\1

      +

      子串匹配标记\1

      匹配给定样式的其中一部分:

      echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'
       this is 7 in a number
      @@ -219,26 +189,20 @@ BBB aaa
         

      love被标记为1,所有loveable会被替换成lovers,并打印出来:

      sed -n 's/\(love\)able/\1rs/p' file
       
      -

      组合多个表达式

      +

      组合多个表达式

      sed '表达式' | sed '表达式'
       
       等价于:
       
       sed '表达式; 表达式'
       
      -

      引用

      +

      引用

      sed表达式可以使用单引号来引用,但是如果表达式内部包含变量字符串,就需要使用双引号。

      test=hello
       echo hello WORLD | sed "s/$test/HELLO"
       HELLO WORLD
       
      -

      选定行的范围:,(逗号)

      +

      选定行的范围:,(逗号)

      所有在模板test和check所确定的范围内的行都被打印:

      sed -n '/test/,/check/p' file
       
      @@ -248,9 +212,7 @@ HELLO WORLD

      对于模板test和west之间的行,每行的末尾用字符串aaa bbb替换:

      sed '/test/,/west/s/$/aaa bbb/' file
       
      -

      多点编辑:e命令

      +

      多点编辑:e命令

      -e选项允许在同一行里执行多条命令:

      sed -e '1,5d' -e 's/test/check/' file
       
      @@ -258,76 +220,54 @@ HELLO WORLD

      和 -e 等价的命令是 --expression:

      sed --expression='s/test/check/' --expression='/love/d' file
       
      -

      从文件读入:r命令

      +

      从文件读入:r命令

      file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面:

      sed '/test/r file' filename
       
      -

      写入文件:w命令  

      +

      写入文件:w命令  

      在example中所有包含test的行都被写入file里:

      sed -n '/test/w file' example
       
      -

      追加(行下):a\命令

      +

      追加(行下):a\命令

      将 this is a test line 追加到 以test 开头的行后面:

      sed '/^test/a\this is a test line' file
       

      在 test.conf 文件第2行之后插入 this is a test line:

      sed -i '2a\this is a test line' test.conf
       
      -

      插入(行上):i\命令

      +

      插入(行上):i\命令

      将 this is a test line 追加到以test开头的行前面:

      sed '/^test/i\this is a test line' file
       

      在test.conf文件第5行之前插入this is a test line:

      sed -i '5i\this is a test line' test.conf
       
      -

      下一个:n命令

      +

      下一个:n命令

      如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续:

      sed '/test/{ n; s/aa/bb/; }' file
       
      -

      变形:y命令

      +

      变形:y命令

      把1~10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令:

      sed '1,10y/abcde/ABCDE/' file
       
      -

      退出:q命令

      +

      退出:q命令

      打印完第10行后,退出sed

      sed '10q' file
       
      -

      保持和获取:h命令和G命令

      +

      保持和获取:h命令和G命令

      在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。

      sed -e '/test/h' -e '$G' file
       

      在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。

      -

      保持和互换:h命令和x命令

      +

      保持和互换:h命令和x命令

      互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换:

      sed -e '/test/h' -e '/check/x' file
       
      -

      脚本scriptfile

      +

      脚本scriptfile

      sed脚本是一个sed的命令清单,启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以#开头的行为注释行,且不能跨行。

      sed [options] -f scriptfile file(s)
       
      -

      打印奇数行或偶数行

      +

      打印奇数行或偶数行

      方法1:

      sed -n 'p;n' test.txt  #奇数行
       sed -n 'n;p' test.txt  #偶数行
      @@ -336,9 +276,7 @@ HELLO WORLD
         
      sed -n '1~2p' test.txt  #奇数行
       sed -n '2~2p' test.txt  #偶数行
       
      -

      打印匹配字符串的下一行

      +

      打印匹配字符串的下一行

      grep -A 1 SCC URFILE
       sed -n '/SCC/{n;p}' URFILE
       awk '/SCC/{getline; print}' URFILE
      @@ -368,7 +306,7 @@ HELLO WORLD
       
      - - + + \ No newline at end of file diff --git a/c/seinfo.html b/c/seinfo.html index dfeb2d5337..7828ac984a 100644 --- a/c/seinfo.html +++ b/c/seinfo.html @@ -10,7 +10,7 @@ seinfo 命令,Linux seinfo 命令详解:查询SELinux的策略提供多少相关规则 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
      -

      seinfo

      +
      +

      seinfo

      查询SELinux的策略提供多少相关规则

      -

      补充说明

      +

      补充说明

      seinfo命令 是用来查询SELinux的策略提供多少相关规则,一个主体进程能否读取到目标文件资源的重点是在于SELinux的策略以及策略内的各项规则,然后再通过该规则的定义去处理各项目标文件的安全上下文,尤其是“类型”部分。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

      -

      语法

      +

      语法

      seinfo(选项)
       
      -

      选项

      +

      选项

      -A:列出SELinux的状态、规则布尔值、身份识别、角色、类型等所有信息。
       -t:列出SELinux所有类型(type)的种类。
       -r:列出SELinux所有角色(role)的种类。
       -u:列出SELinux所有身份识别(user)的种类。
       -b:列出所有规则的种类(布尔值)。
       
      -

      实例

      +

      实例

      列出与httpd有关的规则:

      seinfo -b | grep httpd
       
      @@ -104,7 +94,7 @@
      - - + + \ No newline at end of file diff --git a/c/semanage.html b/c/semanage.html index 4e5d3b89c1..5d4242d0b4 100644 --- a/c/semanage.html +++ b/c/semanage.html @@ -10,7 +10,7 @@ semanage 命令,Linux semanage 命令详解:默认目录的安全上下文查询与修改 - Linux 命令搜索引擎 - + @@ -50,33 +50,23 @@ -
      -

      semanage

      +
      +

      semanage

      默认目录的安全上下文查询与修改

      -

      补充说明

      +

      补充说明

      semanage命令 是用来查询与修改SELinux默认目录的安全上下文。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

      -

      语法

      +

      语法

      semanage {login|user|port|interface|fcontext|translation} -l
       semanage fcontext -{a|d|m} [-frst] file_spec
       
      -

      选项

      +

      选项

      -l:查询。
       fcontext:主要用在安全上下文方面。
       -a:增加,你可以增加一些目录的默认安全上下文类型设置。
       -m:修改。
       -d:删除。
       
      -

      实例

      +

      实例

      查询一下/var/www/html的默认安全性本文的设置:

      semanage fcontext -l
       SELinux fcontext    type          Context
      @@ -139,7 +129,7 @@ drwxr-xr-x  root root system_u:object_r:public_content_t /srv/samba/  
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/sendmail.html b/c/sendmail.html
      index 7170449c17..585231d2b6 100644
      --- a/c/sendmail.html
      +++ b/c/sendmail.html
      @@ -10,7 +10,7 @@
           
           sendmail 命令,Linux sendmail 命令详解:著名电子邮件服务器 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      sendmail

      +
      +

      sendmail

      著名电子邮件服务器

      -

      补充说明

      +

      补充说明

      sendmail命令 是一款著名的电子邮件传送代理程序,也就是平常说的电子邮件服务器,它基于标准的简单邮件传输协议(SMTP)。

      -

      语法

      +

      语法

      sendmail(选项)
       
      -

      选项

      +

      选项

      -bd:以守护进程方式运行指令;
       -bD:以前台运行方式运行;
       -bi:初始化别名数据库;
      @@ -104,7 +96,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/seq.html b/c/seq.html index bfd94d37de..df6065307b 100644 --- a/c/seq.html +++ b/c/seq.html @@ -10,7 +10,7 @@ seq 命令,Linux seq 命令详解:以指定增量从首数开始打印数字到尾数 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
      -

      seq

      +
      +

      seq

      以指定增量从首数开始打印数字到尾数

      -

      补充说明

      +

      补充说明

      seq命令 用于产生从某个数到另外一个数之间的所有整数。

      -

      语法

      +

      语法

      seq [选项]... 尾数
       seq [选项]... 首数 尾数
       seq [选项]... 首数 增量 尾数
       
      -

      选项

      +

      选项

      -f, --format=格式        使用printf 样式的浮点格式
       -s, --separator=字符串   使用指定字符串分隔数字(默认使用:\n)
       -w, --equal-width        在列前添加0 使得宽度相同
       
      -

      实例

      +

      实例

      -f选项:指定格式

      #seq -f"%3g" 9 11
       9
      @@ -135,7 +125,7 @@ str009 str010 str011
       
      - - + + \ No newline at end of file diff --git a/c/service.html b/c/service.html index 84b86fbd9f..781cb57fc5 100644 --- a/c/service.html +++ b/c/service.html @@ -10,7 +10,7 @@ service 命令,Linux service 命令详解:控制系统服务的实用工具 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
      -

      service

      +
      +

      service

      控制系统服务的实用工具

      -

      补充说明

      +

      补充说明

      service命令 是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

      -

      语法

      +

      语法

      service(选项)(参数)
       
      -

      选项

      +

      选项

      -h:显示帮助信息;
       --status-all:显示所服务的状态。
       
      -

      参数

      +

      参数

      • 服务名:自动要控制的服务名,即/etc/init.d目录下的脚本文件名;
      • 控制命令:系统服务脚本支持的控制命令。
      -

      实例

      +

      实例

      当修改了主机名、ip地址等信息时,经常需要把网络重启使之生效。

      service network status
       配置设备:
      @@ -127,7 +115,7 @@ mysqld (pid 16
       
      - - + + \ No newline at end of file diff --git a/c/sesearch.html b/c/sesearch.html index c9e5faa1f1..06e3fddee8 100644 --- a/c/sesearch.html +++ b/c/sesearch.html @@ -10,7 +10,7 @@ sesearch 命令,Linux sesearch 命令详解:查询SELinux策略的规则详情 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      sesearch

      +
      +

      sesearch

      查询SELinux策略的规则详情

      -

      补充说明

      +

      补充说明

      使用seinfo命令可以查询SELinux的策略提供多少相关规则,如果查到的相关类型或者布尔值,想要知道详细规则时,使用 sesearch命令 查询。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

      -

      语法

      +

      语法

      sesearch [-a] [-s 主体类型] [-t 目标类型] [-b 布尔值]
       
      -

      选项

      +

      选项

      -a:列出该类型或布尔值的所有相关信息
       -t:后面还要接类型,例如 -t httpd_t
       -b:后面还要接布尔值的规则,例如 -b httpd_enable_ftp_server
       
      -

      实例

      +

      实例

      找出目标文件资源类型为httpd_sys_content_t的有关信息:

      sesearch -a -t httpd_sys_content_t
       
      @@ -108,7 +98,7 @@
      - - + + \ No newline at end of file diff --git a/c/set.html b/c/set.html index bc13540248..4d28616c98 100644 --- a/c/set.html +++ b/c/set.html @@ -10,7 +10,7 @@ set 命令,Linux set 命令详解:显示或设置shell特性及shell变量 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      set

      +
      +

      set

      显示或设置shell特性及shell变量

      -

      补充说明

      +

      补充说明

      set命令 作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。

      -

      语法

      +

      语法

      set(选项)(参数)
       
      -

      选项

      +

      选项

      -a:标示已修改的变量,以供输出至环境变量。
       -b:使被中止的后台程序立刻回报执行状态。
       -C:转向所产生的文件无法覆盖已存在的文件。
      @@ -86,13 +78,9 @@
       -v:显示shell所读取的输入值。
       -x:执行指令后,会先显示该指令及所下的参数。
       
      -

      参数

      +

      参数

      取消某个set曾启动的参数。

      -

      实例

      +

      实例

      使用declare命令定义一个新的环境变量"mylove",并且将其值设置为"Visual C++",输入如下命令:

      declare mylove='Visual C++'   #定义新环境变量
       
      @@ -128,7 +116,7 @@
      - - + + \ No newline at end of file diff --git a/c/setfacl.html b/c/setfacl.html index ad8524041e..975278c60c 100644 --- a/c/setfacl.html +++ b/c/setfacl.html @@ -10,7 +10,7 @@ setfacl 命令,Linux setfacl 命令详解:设置文件访问控制列表 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
      -

      setfacl

      +
      +

      setfacl

      设置文件访问控制列表

      -

      补充说明

      +

      补充说明

      setfacl命令 是用来在命令行里设置ACL(访问控制列表)。在命令行里,一系列的命令跟随以一系列的文件名。

      -

      选项

      +

      选项

      -b,--remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
       -k,--remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。
       -n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
      @@ -271,7 +265,7 @@ other::r--
       
      - - + + \ No newline at end of file diff --git a/c/setpci.html b/c/setpci.html index 195a869283..9784bf28c2 100644 --- a/c/setpci.html +++ b/c/setpci.html @@ -10,7 +10,7 @@ setpci 命令,Linux setpci 命令详解:查询和配置PCI设备的使用工具 - Linux 命令搜索引擎 - + @@ -50,39 +50,27 @@ -
      -

      setpci

      +
      +

      setpci

      查询和配置PCI设备的使用工具

      -

      补充说明

      +

      补充说明

      setpci命令 是一个查询和配置PCI设备的使用工具。

      -

      语法

      +

      语法

      setpci(选项)(参数)
       
      -

      选项

      +

      选项

      -v:显示指令执行的细节信息;
       -f:当没有任何操作需要完成时,不显示任何信息;
       -D:测试模式,并不真正将配置信息写入寄存器;
       -d:仅显示给定厂商和设备的信息;
       -s:仅显示指定总线、插槽上的设备或设备上的功能块信息。
       
      -

      参数

      +

      参数

      • PCI设备:指定要配置的PCI设备;
      • 操作:指定要完成的配置操作。
      -

      实例

      +

      实例

      Linux下调节笔记本屏幕亮度方法:

      首先进入终端输入lspci命令,列出各种设备的地址:

      lspci
      @@ -134,7 +122,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/setsebool.html b/c/setsebool.html index aade70662a..e525a9452a 100644 --- a/c/setsebool.html +++ b/c/setsebool.html @@ -10,7 +10,7 @@ setsebool 命令,Linux setsebool 命令详解:修改SElinux策略内各项规则的布尔值 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
      -

      setsebool

      +
      +

      setsebool

      修改SElinux策略内各项规则的布尔值

      -

      补充说明

      +

      补充说明

      setsebool命令 是用来修改SElinux策略内各项规则的布尔值。setsebool命令和getsebool命令是SELinux修改和查询布尔值的一套工具组。SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令。

      -

      语法

      +

      语法

      setsebool [-P] 布尔值=[0|1]
       
      -

      选项

      +

      选项

      -P:直接将设置值写入配置文件,该设置数据将来会生效的。
       
      -

      实例

      +

      实例

      允许vsvtp匿名用户写入权限:

      setsebool -P allow_ftpd_anon_write=1
       
      @@ -164,7 +154,7 @@ chcon -R -t httpd_sys_content_t ~user/public_html
      - - + + \ No newline at end of file diff --git a/c/setsid.html b/c/setsid.html index 4e8cbe1b38..cacd400d63 100644 --- a/c/setsid.html +++ b/c/setsid.html @@ -10,7 +10,7 @@ setsid 命令,Linux setsid 命令详解:在新的会话中运行程序 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      setsid

      +
      +

      setsid

      在新的会话中运行程序

      -

      补充说明

      +

      补充说明

      setsid命令 子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用setsid来实现。,而命令行或脚本中可以通过使用命令setsid来运行程序实现。setsid帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。

      -

      语法

      +

      语法

      setsid[options] <program> [arguments ...]
       
      -

      选项

      +

      选项

      -c, --ctty   将控制终端设置为当前控制终端
       -f, --fork   总是 fork
       -w, --wait   等待程序退出,并使用相同的返回
       
      -

      实例

      +

      实例

      可见 setsid 的使用也是非常方便的,也只需在要处理的命令前加上 setsid 即可

      [root@root ~]# setsid ping www.ibm.com
       [root@root ~]# ps -ef |grep www.ibm.com
      @@ -106,7 +96,7 @@ root 31102 29217
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/sftp-server.html b/c/sftp-server.html
      index 1c40343733..c07991c7ce 100644
      --- a/c/sftp-server.html
      +++ b/c/sftp-server.html
      @@ -10,7 +10,7 @@
           
           sftp-server 命令,Linux sftp-server 命令详解:sftp协议的服务器端程序 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,18 +50,12 @@
       
       
       
      -
      -

      sftp-server

      +
      +

      sftp-server

      sftp协议的服务器端程序

      -

      补充说明

      +

      补充说明

      sftp-server命令 是一个“sftp”协议的服务器端程序,它使用加密的方式进行文件传输。

      -

      语法

      +

      语法

      sftp-server
       
      @@ -89,7 +83,7 @@
      - - + + \ No newline at end of file diff --git a/c/sftp.html b/c/sftp.html index d285a1c053..121f538c9b 100644 --- a/c/sftp.html +++ b/c/sftp.html @@ -10,7 +10,7 @@ sftp 命令,Linux sftp 命令详解:交互式的文件传输程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      sftp

      +
      +

      sftp

      交互式的文件传输程序

      -

      补充说明

      +

      补充说明

      sftp命令 是一款交互式的文件传输程序,命令的运行和使用方式与ftp命令相似,但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。

      -

      语法

      +

      语法

      sftp(选项)(参数)
       
      -

      选项

      +

      选项

      -B:指定传输文件时缓冲区的大小;
       -l:使用ssh协议版本1;
       -b:指定批处理文件;
      @@ -76,13 +68,9 @@
       -R:指定一次可以容忍多少请求数;
       -v:升高日志等级。
       
      -

      参数

      +

      参数

      目标主机:指定sftp服务器ip地址或者主机名。

      -

      实例

      +

      实例

      建立联接

      $ sfpt username@1.1.1.1 # 回车输入密码
       
      @@ -121,7 +109,7 @@ Uploading /Users/my/Downloads/re-produce.gif to /export/sftp/re-produce.gif
      - - + + \ No newline at end of file diff --git a/c/sh.html b/c/sh.html index 3461175a64..f7a2510959 100644 --- a/c/sh.html +++ b/c/sh.html @@ -10,7 +10,7 @@ sh 命令,Linux sh 命令详解:shell命令解释器 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
      -

      sh

      +
      +

      sh

      shell命令解释器

      -

      补充说明

      +

      补充说明

      sh命令 是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

      -

      语法

      +

      语法

      bash [options] [file]
       
      -

      选项

      +

      选项

      -c string:命令从-c后的字符串读取。
       -i:实现脚本交互。
       -n:进行shell脚本的语法检查。
       -x:实现shell脚本逐条语句的跟踪。
       
      -

      实例

      +

      实例

      使用-x选项跟踪脚本调试shell脚本,能打印出所执行的每一行命令以及当前状态:

      [root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh
       + DEFINE=30
      @@ -131,7 +121,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/shift.html b/c/shift.html index e1cd3dcf17..4d5b9954c4 100644 --- a/c/shift.html +++ b/c/shift.html @@ -10,7 +10,7 @@ shift 命令,Linux shift 命令详解:移动位置参数。 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      shift

      +
      +

      shift

      移动位置参数。

      -

      概要

      +

      概要

      shift [n]
       
      -

      主要用途

      +

      主要用途

      • 将位置参数$n, $n+1...重命名为$1, $2...
      -

      参数

      +

      参数

      n(可选):大于等于1且小于等于参数个数的整数,默认为1。

      -

      返回值

      +

      返回值

      返回成功除非n大于参数个数或n小于1以及其他非法值。

      -

      例子

      +

      例子

      假设我们的脚本文件(test.sh)如下:

      #!/usr/bin/env bash
       # 显示前三个位置参数。
      @@ -92,9 +80,7 @@
         
      q w e
       e r t
       
      -

      注意

      +

      注意

      1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
      @@ -123,7 +109,7 @@ e r t
      - - + + \ No newline at end of file diff --git a/c/shopt.html b/c/shopt.html index d5ff545fe7..3824e84ea8 100644 --- a/c/shopt.html +++ b/c/shopt.html @@ -10,7 +10,7 @@ shopt 命令,Linux shopt 命令详解:显示和设置shell操作选项 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      shopt

      +
      +

      shopt

      显示和设置shell操作选项

      -

      补充说明

      +

      补充说明

      shopt命令 用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。

      -

      语法

      +

      语法

      shopt(选项)(参数)
       
      -

      选项

      +

      选项

      -s:激活指定的shell行为选项;
       -u:关闭指定的shell行为选项。
       
      -

      参数

      +

      参数

      shell选项:指定要操作的shell选项。

      -

      实例

      +

      实例

      使用shopt命令显示当前所有可以设置的shell操作选项,输入如下命令:

      shopt           #输出所有可以设置的shell操作选项
       cdable_vars     off
      @@ -122,7 +110,7 @@ extdebug        off
       
      - - + + \ No newline at end of file diff --git a/c/showmount.html b/c/showmount.html index f9aacd517a..ac3adae837 100644 --- a/c/showmount.html +++ b/c/showmount.html @@ -10,7 +10,7 @@ showmount 命令,Linux showmount 命令详解:显示NFS服务器加载的信息 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
      -

      showmount

      +
      +

      showmount

      显示NFS服务器加载的信息

      -

      补充说明

      +

      补充说明

      showmount命令 查询“mountd”守护进程,以显示NFS服务器加载的信息。

      -

      语法

      +

      语法

      showmount(选项)(参数)
       
      -

      选项

      +

      选项

      -d:仅显示已被NFS客户端加载的目录;
       -e:显示NFS服务器上所有的共享目录。
       
      -

      参数

      +

      参数

      NFS服务器:指定NFS服务器的ip地址或者主机名。

      @@ -99,7 +89,7 @@
      - - + + \ No newline at end of file diff --git a/c/shuf.html b/c/shuf.html index 74c507a808..030faa3da3 100644 --- a/c/shuf.html +++ b/c/shuf.html @@ -10,7 +10,7 @@ shuf 命令,Linux shuf 命令详解:产生随机的排列。 - Linux 命令搜索引擎 - + @@ -50,28 +50,20 @@ -
      -

      shuf

      +
      +

      shuf

      产生随机的排列。

      -

      概要

      +

      概要

      shuf [OPTION]... [FILE]
       shuf -e [OPTION]... [ARG]...
       shuf -i LO-HI [OPTION]...
       
      -

      主要用途

      +

      主要用途

      • 将输入的内容随机排列并输出。
      • 当没有文件或文件为-时,读取标准输入。
      -

      选项

      +

      选项

      -e, --echo                  将每个ARG视为输入行。
       -i, --input-range=LO-HI     将数字范围LO(最低)到HI(最高)之间的作为输入行。
       -n, --head-count=COUNT      只输出前COUNT行。
      @@ -82,18 +74,12 @@
       --help                      显示帮助信息并退出。
       --version                   显示版本信息并退出。
       
      -

      参数

      +

      参数

      FILE(可选):要处理的文件,可以为任意数量。

      ARG(可选):作为输入行的字符串,可以为任意数量。

      -

      返回值

      +

      返回值

      返回0表示成功,返回非0值表示失败。

      -

      例子

      +

      例子

      # 模拟硬币抛掷,获取前10个结果:
       [user2@pc ~]$ head -r -n 10 -e "正面" -e "反面"
       反面
      @@ -116,9 +102,7 @@
       6
       11
       
      -

      注意

      +

      注意

      1. 该命令是GNU coreutils包中的命令,更多详细的帮助信息请查看man -s 1 shufinfo coreutils 'shuf invocation'
      @@ -147,7 +131,7 @@
      - - + + \ No newline at end of file diff --git a/c/shutdown.html b/c/shutdown.html index b92973655f..b67180b771 100644 --- a/c/shutdown.html +++ b/c/shutdown.html @@ -10,7 +10,7 @@ shutdown 命令,Linux shutdown 命令详解:用来执行系统关机的命令 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      shutdown

      +
      +

      shutdown

      用来执行系统关机的命令

      -

      补充说明

      +

      补充说明

      shutdown命令 用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。

      -

      语法

      +

      语法

      shutdown(选项)(参数)
       
      -

      选项

      +

      选项

      -c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
       -f:重新启动时不执行fsck;
       -F:重新启动时执行fsck;
      @@ -76,16 +68,12 @@
       -r:shutdown之后重新启动;
       -t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
       
      -

      参数

      +

      参数

      • [时间]:设置多久时间后执行shutdown指令;
      • [警告信息]:要传送给所有登入用户的信息。
      -

      实例

      +

      实例

      指定现在立即关机:

      shutdown -h now
       
      @@ -117,7 +105,7 @@
      - - + + \ No newline at end of file diff --git a/c/skill.html b/c/skill.html index 309c754db6..032aec1303 100644 --- a/c/skill.html +++ b/c/skill.html @@ -10,7 +10,7 @@ skill 命令,Linux skill 命令详解:向选定的进程发送信号冻结进程 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      skill

      +
      +

      skill

      向选定的进程发送信号冻结进程

      -

      补充说明

      +

      补充说明

      skill命令 用于向选定的进程发送信号,冻结进程。这个命令初学者并不常用,深入之后牵涉到系统服务优化之后可能会用到。

      -

      语法

      +

      语法

      skill(选项)
       
      -

      选项

      +

      选项

      -f:快速模式;
       -i:交互模式,每一步操作都需要确认;
       -v:冗余模式;
      @@ -77,9 +69,7 @@
       -p:指定进程的id号;
       -c:指定开启进程的指令名称。
       
      -

      实例

      +

      实例

      如果您发现了一个占用大量CPU和内存的进程,但又不想停止它,该怎么办?考虑下面的top命令输出:

      top -c -p 16514
       23:00:44  up 12 days,  2:04,  4 users,  load average: 0.47, 0.35, 0.31
      @@ -166,7 +156,7 @@ Swap: 2041192k av,   83152k used, 1958040k free
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/slabtop.html b/c/slabtop.html
      index 4d89e73d0a..a8684eadc5 100644
      --- a/c/slabtop.html
      +++ b/c/slabtop.html
      @@ -10,7 +10,7 @@
           
           slabtop 命令,Linux slabtop 命令详解:实时显示内核slab内存缓存信息 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      slabtop

      +
      +

      slabtop

      实时显示内核slab内存缓存信息

      -

      补充说明

      +

      补充说明

      slabtop命令 以实时的方式显示内核“slab”缓冲区的细节信息。

      -

      语法

      +

      语法

      slabtop(选项)
       
      -

      选项

      +

      选项

      --delay=n, -d n:每n秒更新一次显示的信息,默认是每3秒;
       --sort=S, -s S:指定排序标准进行排序(排序标准,参照下面或者man手册);
       --once, -o:显示一次后退出;
      @@ -86,15 +78,11 @@
           
    • s: sort by object size
    • u: sort by cache utilization
    • -

      知识扩展

      +

      知识扩展

      内核的模块在分配资源的时候,为了提高效率和资源的利用率,都是透过slab来分配的。通过slab的信息,再配合源码能粗粗了解系统的运行情况,比如说什么资源有没有不正常的多,或者什么资源有没有泄漏。linux系统透过/proc/slabinfo来向用户暴露slab的使用情况。

      Linux 所使用的 slab 分配器的基础是 Jeff Bonwick 为 SunOS 操作系统首次引入的一种算法。Jeff 的分配器是围绕对象缓存进行的。在内核中,会为有限的对象集(例如文件描述符和其他常见结构)分配大量内存。Jeff 发现对内核中普通对象进行初始化所需的时间超过了对其进行分配和释放所需的时间。因此他的结论是不应该将内存释放回一个全局的内存池,而是将内存保持为针对特定目而初始化的状态。Linux slab 分配器使用了这种思想和其他一些思想来构建一个在空间和时间上都具有高效性的内存分配器。

      保存着监视系统中所有活动的 slab 缓存的信息的文件为/proc/slabinfo。

      -

      实例

      +

      实例

      slabtop
       
        Active / Total Objects (% used)    : 897519 / 1245930 (72.0%)
      @@ -162,7 +150,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/sleep.html b/c/sleep.html index 8af4c29004..0d403d4916 100644 --- a/c/sleep.html +++ b/c/sleep.html @@ -10,7 +10,7 @@ sleep 命令,Linux sleep 命令详解:将目前动作延迟一段时间 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
      -

      sleep

      +
      +

      sleep

      将目前动作延迟一段时间

      -

      补充说明

      +

      补充说明

      sleep命令 暂停指定的时间。

      -

      语法

      +

      语法

      sleep(参数)
       
      -

      参数

      +

      参数

      时间:指定要暂停时间的长度。

      时间长度,后面可接 s、m、h 或 d,其中 s 为秒,m 为 分钟,h 为小时,d 为日数。

      -

      实例

      +

      实例

      有时在写一些以循环方式运行的监控脚本,设置时间间隔是必不可少的,下面是一个Shell进度条的脚本演示在脚本中生成延时。

      #!/bin/bash
       
      @@ -109,7 +99,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/slocate.html b/c/slocate.html index 90b1682ff0..a986e8dcb1 100644 --- a/c/slocate.html +++ b/c/slocate.html @@ -10,7 +10,7 @@ slocate 命令,Linux slocate 命令详解:命令查找文件或目录 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
      -

      slocate

      +
      +

      slocate

      命令查找文件或目录

      -

      补充说明

      +

      补充说明

      slocate命令 是一个命令查找文件或目录。slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。

      -

      语法

      +

      语法

      slocate [-u][--help][--version][-d <目录>][查找的文件]
       
      -

      选项

      +

      选项

      -d<目录>或--database=<目录>  指定数据库所在的目录。
       -u  更新slocate数据库。
       --help  显示帮助。
       --version  显示版本信息。
       
      -

      实例

      +

      实例

      使用指令"slocate"显示文件名中含有关键字"fdisk"的文件路径信息,输入如下命令:

      $ slocate fdisk #显示文件名中含有fdisk关键字的文件的路径信息 
       
      @@ -113,7 +103,7 @@
      - - + + \ No newline at end of file diff --git a/c/smbclient.html b/c/smbclient.html index 3bb939fc94..9c4af6d8b4 100644 --- a/c/smbclient.html +++ b/c/smbclient.html @@ -10,7 +10,7 @@ smbclient 命令,Linux smbclient 命令详解:交互方式访问samba服务器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      smbclient

      +
      +

      smbclient

      交互方式访问samba服务器

      -

      补充说明

      +

      补充说明

      smbclient命令 属于samba套件,它提供一种命令行使用交互式方式访问samba服务器的共享资源。

      -

      语法

      +

      语法

      smbclient(选项)(参数)
       
      -

      选项

      +

      选项

      -B<ip地址>:传送广播数据包时所用的IP地址;
       -d<排错层级>:指定记录文件所记载事件的详细程度;
       -E:将信息送到标准错误输出设备;
      @@ -87,13 +79,9 @@
       -U<用户名称>:指定用户名称;
       -w<工作群组>:指定工作群组名称。
       
      -

      参数

      +

      参数

      smb服务器:指定要连接的smb服务器。

      -

      实例

      +

      实例

      列出某个IP地址所提供的共享文件夹

      smbclient -L 198.168.0.1 -U username%password
       
      @@ -139,7 +127,7 @@ smb:/>ls
      - - + + \ No newline at end of file diff --git a/c/smbpasswd.html b/c/smbpasswd.html index e8c2ba0e29..3cce1033da 100644 --- a/c/smbpasswd.html +++ b/c/smbpasswd.html @@ -10,7 +10,7 @@ smbpasswd 命令,Linux smbpasswd 命令详解:samba用户和密码管理工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      smbpasswd

      +
      +

      smbpasswd

      samba用户和密码管理工具

      -

      补充说明

      +

      补充说明

      smbpasswd命令 属于samba套件,能够实现添加或删除samba用户和为用户修改密码。

      -

      语法

      +

      语法

      smbpasswd(选项)(参数)
       
      -

      选项

      +

      选项

      -a:向smbpasswd文件中添加用户;
       -c:指定samba的配置文件;
       -x:从smbpasswd文件中删除用户;
      @@ -74,9 +66,7 @@
       -e:在smbpasswd文件中激活指定的用户;
       -n:将指定的用户的密码置空。
       
      -

      参数

      +

      参数

      用户名:指定要修改SMB密码的用户。

      @@ -103,7 +93,7 @@
      - - + + \ No newline at end of file diff --git a/c/sort.html b/c/sort.html index 9bae31acba..6e7475b39b 100644 --- a/c/sort.html +++ b/c/sort.html @@ -10,7 +10,7 @@ sort 命令,Linux sort 命令详解:对文本文件中所有行进行排序。 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
      -

      sort

      +
      +

      sort

      对文本文件中所有行进行排序。

      -

      概要

      +

      概要

      sort [OPTION]... [FILE]...
       sort [OPTION]... --files0-from=F
       
      -

      主要用途

      +

      主要用途

      • 将所有输入文件的内容排序后并输出。
      • 当没有文件或文件为-时,读取标准输入。
      -

      选项

      +

      选项

      排序选项:

      -b, --ignore-leading-blanks    忽略开头的空白。
       -d, --dictionary-order         仅考虑空白、字母、数字。
      @@ -120,17 +112,11 @@ b 1;
       K 1024(默认);
       剩余的 M, G, T, P, E, Z, Y 可以类推出来。
       
      -

      参数

      +

      参数

      FILE(可选):要处理的文件,可以为任意数量。

      -

      返回值

      +

      返回值

      返回0表示成功,返回非0值表示失败。

      -

      例子

      +

      例子

      sort将文件/文本的每一行作为一个单位相互比较,比较原则是从首字符向后依次按ASCII码值进行比较,最后将他们按升序输出。

      root@[mail text]# cat sort.txt
       aaa:10:1.1
      @@ -233,9 +219,7 @@ guge 50 3000
           解读:由于只对第二个字母进行排序,所以我们使用了-k 1.2,1.2的表示方式,表示我们只对第二个字母进行排序(如果你问我使用-k 1.2怎么不行?当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。
           对员工工资进行排序,我们也使用了-k 3,3,这是最准确的表述,表示我们只对本域进行排序,因为如果你省略了后面的3,就变成了我们对第3个域开始到最后一个域位置的内容进行排序了。
         

      -

      注意

      +

      注意

      1. 关于-g和-n选项的区别:stackoverflow

        @@ -272,7 +256,7 @@ guge 50 3000
      - - + + \ No newline at end of file diff --git a/c/source.html b/c/source.html index 643da28b9b..e9475e9819 100644 --- a/c/source.html +++ b/c/source.html @@ -10,7 +10,7 @@ source 命令,Linux source 命令详解:在当前Shell环境中从指定文件读取和执行命令。 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      source

      +
      +

      source

      在当前Shell环境中从指定文件读取和执行命令。

      -

      概要

      +

      概要

      source filename [arguments]

      -

      主要用途

      +

      主要用途

      • 执行文件并从文件中加载变量及函数到执行环境
      -

      参数

      +

      参数

      filename:要执行的文件

      arguments(可选):传递给文件的参数

      -

      返回值

      +

      返回值

      source返回文件最后一个命令的返回值,如果文件不能读取则会失败

      -

      错误用法

      +

      错误用法

      • 文件在$PATH中找不到。

        @@ -85,9 +73,7 @@

        文件未给出。

      -

      例子

      +

      例子

      • @@ -101,14 +87,10 @@

      [root@localhost ~]# source ~/.bash_profile
       
      -

      Q&A

      +

      Q&A

      Q:sourcesh在执行文件方面有什么区别?

      A:sh的执行是在子shell中,source会使得被执行文件的变量及函数加载进当前终端环境内(除去函数内local修饰的变量等);建议您参考export命令的 知识点 部分

      -

      注意

      +

      注意

      1. 该命令是bash内建命令,相关的帮助信息请查看 help 命令。
      @@ -137,7 +119,7 @@
      - - + + \ No newline at end of file diff --git a/c/speedtest-cli.html b/c/speedtest-cli.html index 2b7c00e7c6..ccf071f630 100644 --- a/c/speedtest-cli.html +++ b/c/speedtest-cli.html @@ -10,7 +10,7 @@ speedtest-cli 命令,Linux speedtest-cli 命令详解:命令行下测试服务器外网速度 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
      -

      speedtest-cli

      +
      +

      speedtest-cli

      命令行下测试服务器外网速度

      -

      补充说明

      +

      补充说明

      speedtest-cli 是一个使用python编写的命令行脚本,通过调用speedtest.net测试上下行的接口来完成速度测试,最后我会测试运维生存时间所在服务器的外网速度。项目地址:https://github.com/sivel/speedtest-cli

      -

      安装speedtest-cli

      +

      安装speedtest-cli

      speedtest-cli需要在python 2.4-3.4的环境下,安装方法都很简单,自己选择以下最适合你的一种。

      pip方式

      # pip install speedtest-cli
      @@ -85,9 +79,7 @@
       # chmod +x speedtest-cli
       

      直接下载脚本,给予执行权限即可。

      -

      用法

      +

      用法

      -h, --help       show this help message and exit
       --share          分享你的网速,该命令会在speedtest网站上生成网速测试结果的图片。
       --simple         Suppress verbose output, only show basic information
      @@ -97,9 +89,7 @@
       --source=SOURCE  Source ip address to bind to
       --version        Show the version number and exit
       
      -

      实例

      +

      实例

      列出所有在中国的测试服务器:

      [root@li229-122 ~]# speedtest-cli --list | grep China
       1185) China Unicom (Changchun, China) [10534.35 km]
      @@ -165,7 +155,7 @@ Share results: http://www.speedtest.net/result/3240988007.png
       
      - - + + \ No newline at end of file diff --git a/c/spell.html b/c/spell.html index e9e5ee8028..04098d4fc4 100644 --- a/c/spell.html +++ b/c/spell.html @@ -10,7 +10,7 @@ spell 命令,Linux spell 命令详解:对文件进行拼写检查 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      spell

      +
      +

      spell

      对文件进行拼写检查

      -

      补充说明

      +

      补充说明

      spell命令 对文件进行拼写检查,并把拼写错误的单词输出。

      -

      语法

      +

      语法

      spell(参数)
       
      -

      参数

      +

      参数

      文件:指定需要进行拼写检查的文件。

      @@ -93,7 +85,7 @@
      - - + + \ No newline at end of file diff --git a/c/split.html b/c/split.html index ebf946b4da..59ad9d62ab 100644 --- a/c/split.html +++ b/c/split.html @@ -10,7 +10,7 @@ split 命令,Linux split 命令详解:分割任意大小的文件 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
      -

      split

      +
      +

      split

      分割任意大小的文件

      -

      补充说明

      +

      补充说明

      split命令 可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。

      -

      选项

      +

      选项

      -b:值为每一输出档案的大小,单位为 byte。
       -C:每一输出档中,单行的最大 byte 数。
       -d:使用数字作为后缀。
       -l:值为每一输出档的行数大小。
       -a:指定后缀长度(默认为2)
      -

      实例

      +

      实例

      生成一个大小为100KB的测试文件:

      [root@localhost split]# dd if=/dev/zero bs=100k count=1 of=date.file
       1+0 records in
      @@ -120,7 +112,7 @@ date.file  split_file000  split_file001  split_file002  split_file003  split_fil
       
      - - + + \ No newline at end of file diff --git a/c/squid.html b/c/squid.html index 677700834f..d4cd7839be 100644 --- a/c/squid.html +++ b/c/squid.html @@ -10,7 +10,7 @@ squid 命令,Linux squid 命令详解:squid服务器守护进程 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      squid

      +
      +

      squid

      squid服务器守护进程

      -

      补充说明

      +

      补充说明

      squid命令 高性能的Web客户端代理缓存服务器套件“squid”的服务器守护进程。

      -

      语法

      +

      语法

      squid(选项)
       
      -

      选项

      +

      选项

      -d:将指定调试等级的信息发送到标准错误设备;
       -f:使用指定的配置文件。而不使用默认配置文件;
       -k:向squid服务器发送指令;
      @@ -102,7 +94,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/squidclient.html b/c/squidclient.html index 1b1982ec47..d137af30ea 100644 --- a/c/squidclient.html +++ b/c/squidclient.html @@ -10,7 +10,7 @@ squidclient 命令,Linux squidclient 命令详解:squid服务器的客户端管理工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      squidclient

      +
      +

      squidclient

      squid服务器的客户端管理工具

      -

      补充说明

      +

      补充说明

      squidclient命令 使用squid服务器的客户端管理工具,它可以查看squid服务器的详细运行信息和管理squid服务器。

      -

      语法

      +

      语法

      squidclient(选项)(参数)
       
      -

      选项

      +

      选项

      -a:不包含“accept:header”;
       -r:强制缓存重新加载URL;
       -s:安静模式,不输出信息到标准输出设备;
      @@ -76,9 +68,7 @@
       -m:指定发送请求的方法;
       -u:代理认证用户名。
       
      -

      参数

      +

      参数

      URL:指定操作缓存中的URL。

      @@ -105,7 +95,7 @@
      - - + + \ No newline at end of file diff --git a/c/ss.html b/c/ss.html index a30f548ea7..892108fa8d 100644 --- a/c/ss.html +++ b/c/ss.html @@ -10,7 +10,7 @@ ss 命令,Linux ss 命令详解:比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息 - Linux 命令搜索引擎 - + @@ -50,26 +50,18 @@ -
      -

      ss

      +
      +

      ss

      比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息

      -

      补充说明

      +

      补充说明

      ss命令 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

      当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。

      天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。

      -

      语法

      +

      语法

      ss [参数]
       ss [参数] [过滤]
       
      -

      选项

      +

      选项

      -h, --help      帮助信息
       -V, --version   程序版本信息
       -n, --numeric   不解析服务名称
      @@ -97,9 +89,7 @@ ss [参数=FILE  从文件中都去过滤器信息
              FILTER := [ state TCP-STATE ] [ EXPRESSION ]
       
      -

      实例

      +

      实例

      ss -t -a    # 显示TCP连接
       ss -s       # 显示 Sockets 摘要
       ss -l       # 列出所有打开的网络连接端口
      @@ -253,7 +243,7 @@ TIME-WAIT 28
       
      - - + + \ No newline at end of file diff --git a/c/ssh-add.html b/c/ssh-add.html index f31a94f26f..6b8ff7376b 100644 --- a/c/ssh-add.html +++ b/c/ssh-add.html @@ -10,7 +10,7 @@ ssh-add 命令,Linux ssh-add 命令详解:把专用密钥添加到ssh-agent的高速缓存中 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
      -

      ssh-add

      +
      +

      ssh-add

      把专用密钥添加到ssh-agent的高速缓存中

      -

      补充说明

      +

      补充说明

      ssh-add命令 是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在/usr/bin/ssh-add

      -

      语法

      +

      语法

      ssh-add [-cDdLlXx] [-t life] [file ...]
       ssh-add -s pkcs11
       ssh-add -e pkcs11
       
      -

      选项

      +

      选项

      -D:删除ssh-agent中的所有密钥.
       -d:从ssh-agent中的删除密钥
       -e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。
      @@ -79,9 +71,7 @@ ssh-add -e pkcs11
       -X:对ssh-agent进行解锁
       -x:对ssh-agent进行加锁
       
      -

      实例

      +

      实例

      1、把专用密钥添加到 ssh-agent 的高速缓存中:

      ssh-add ~/.ssh/id_dsa
       
      @@ -116,7 +106,7 @@ ssh-add -e pkcs11
      - - + + \ No newline at end of file diff --git a/c/ssh-agent.html b/c/ssh-agent.html index dcb8f4c0a4..da070bb50b 100644 --- a/c/ssh-agent.html +++ b/c/ssh-agent.html @@ -10,7 +10,7 @@ ssh-agent 命令,Linux ssh-agent 命令详解:ssh密钥管理器 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
      -

      ssh-agent

      +
      +

      ssh-agent

      ssh密钥管理器

      -

      补充说明

      +

      补充说明

      ssh-agent命令 是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。

      其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。

      -

      语法

      +

      语法

      ssh-agent [-c | -s] [-d] [-a bind_address] [-t life] [command [arg ...]]
       ssh-agent [-c | -s] -k
       
      -

      选项

      +

      选项

      -a bind_address:bind the agent to the UNIX-domain socket bind_address.
       -c:生成C-shell风格的命令输出。
       -d:调试模式。
      @@ -76,9 +68,7 @@ ssh-agent [-c 实例
      +  

      实例

      运行ssh-agent:

      ssh-agent
       
      @@ -108,7 +98,7 @@ ssh-agent [-c - - + + \ No newline at end of file diff --git a/c/ssh-copy-id.html b/c/ssh-copy-id.html index b5d510705a..4908b8639e 100644 --- a/c/ssh-copy-id.html +++ b/c/ssh-copy-id.html @@ -10,7 +10,7 @@ ssh-copy-id 命令,Linux ssh-copy-id 命令详解:把本地的ssh公钥文件安装到远程主机对应的账户下 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
      -

      ssh-copy-id

      +
      +

      ssh-copy-id

      把本地的ssh公钥文件安装到远程主机对应的账户下

      -

      补充说明

      +

      补充说明

      ssh-copy-id命令 可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

      -

      语法

      +

      语法

      ssh-copy-id [-i [identity_file]] [user@]machine
       
      -

      选项

      +

      选项

      -i:指定公钥文件
       
      -

      实例

      +

      实例

      1、把本地的ssh公钥文件安装到远程主机对应的账户下:

      ssh-copy-id user@server
       ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
      @@ -101,7 +91,7 @@ ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
       
      - - + + \ No newline at end of file diff --git a/c/ssh-keygen.html b/c/ssh-keygen.html index edccb97f79..8dd91f07bd 100644 --- a/c/ssh-keygen.html +++ b/c/ssh-keygen.html @@ -10,7 +10,7 @@ ssh-keygen 命令,Linux ssh-keygen 命令详解:为ssh生成、管理和转换认证密钥 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ssh-keygen

      +
      +

      ssh-keygen

      为ssh生成、管理和转换认证密钥

      -

      补充说明

      +

      补充说明

      ssh-keygen命令 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。

      -

      语法

      +

      语法

      ssh-keygen(选项)
       
      -

      选项

      +

      选项

      -b:指定密钥长度;
       -e:读取openssh的私钥或者公钥文件;
       -C:添加注释;
      @@ -103,7 +95,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/ssh-keyscan.html b/c/ssh-keyscan.html index bde2cdf700..53401f9f10 100644 --- a/c/ssh-keyscan.html +++ b/c/ssh-keyscan.html @@ -10,7 +10,7 @@ ssh-keyscan 命令,Linux ssh-keyscan 命令详解:收集主机公钥的使用工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ssh-keyscan

      +
      +

      ssh-keyscan

      收集主机公钥的使用工具

      -

      补充说明

      +

      补充说明

      ssh-keyscan命令 是一个收集大量主机公钥的使用工具。

      -

      语法

      +

      语法

      ssh-keyscan(选项)(参数)
       
      -

      选项

      +

      选项

      -4:强制使用IPv4地址;
       -6:强制使用IPv6地址;
       -f:从指定文件中读取“地址列表/名字列表”;
      @@ -75,9 +67,7 @@
       -t:指定要创建的密钥类型;
       -v:信息模式,打印调试信息。
       
      -

      参数

      +

      参数

      主机列表:指定要收集公钥的主机列表。

      @@ -104,7 +94,7 @@
      - - + + \ No newline at end of file diff --git a/c/ssh.html b/c/ssh.html index 69f62586a8..4e925fb3cb 100644 --- a/c/ssh.html +++ b/c/ssh.html @@ -10,7 +10,7 @@ ssh 命令,Linux ssh 命令详解:openssh套件中的客户端连接工具 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      ssh

      +
      +

      ssh

      openssh套件中的客户端连接工具

      -

      补充说明

      +

      补充说明

      ssh命令 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

      -

      语法

      +

      语法

      ssh(选项)(参数)
       
      -

      选项

      +

      选项

      -1:强制使用ssh协议版本1;
       -2:强制使用ssh协议版本2;
       -4:强制使用IPv4地址;
      @@ -88,16 +80,12 @@
       -x:关闭X11转发功能;
       -y:开启信任X11转发功能。
       
      -

      参数

      +

      参数

      • 远程主机:指定要连接的远程ssh服务器;
      • 指令:要在远程ssh服务器上执行的指令。
      -

      实例

      +

      实例

      # ssh 用户名@远程服务器地址
       ssh user1@172.24.210.101
       # 指定端口
      @@ -109,16 +97,12 @@ ssh-keygen # 为当前用户生成 ssh 公钥 + 私
       ssh-keygen -f keyfile -i -m key_format -e -m key_format # key_format: RFC4716/SSH2(default) PKCS8 PEM
       ssh-copy-id user@ip:port # 将当前用户的公钥复制到需要 ssh 的服务器的 ~/.ssh/authorized_keys,之后可以免密登录
       
      -

      背后故事

      +

      背后故事

      英文:Tatu Ylonen
      编译:Linux中国/kenxx
      来源:https://linux.cn/article-8476-1.html

      为什么 SSH(安全终端)的端口号是 22 呢,这不是一个巧合,这其中有个我(Tatu Ylonen,SSH 协议的设计者)未曾诉说的故事。

      -

      将 SSH 协议端口号设为 22 的故事

      +

      将 SSH 协议端口号设为 22 的故事

      1995 年春我编写了 SSH 协议的最初版本,那时候 telnet 和 FTP 正被广泛使用。

      当时我设计 SSH 协议想着是为了替代 telnet(端口 23)和 ftp(端口21)两个协议的,而端口 22 是空闲的。我想当然地就选择了夹在 telnet 和 ftp 的端口中间的数字。我觉得端口号虽然是个小事但似乎又存在着某种信念。但我到底要怎么拿到那个端口号呢?我未曾拥有过任何一个端口号,但我却认识几个拥有端口号的人!

      在那时取得端口号的事情其实说来挺简单的。毕竟当时的因特网(Internet)并不是很大,是因特网爆炸的早期。端口号分配的活儿是 IANA(Internet Assigned Numbers Authority,互联网数字分配机构)干的。在那时这机构可相当于是因特网先驱 Jon PostelJoyce K. Reynolds 一般的存在。Jon 参与编写了多项主要的协议标准,例如 IP(RFC 791)、ICMP(RFC 792)和 TCP(RFC 793)等一些你应该早有耳闻的协议。

      @@ -140,38 +124,26 @@ ssh-copy-id user@ip:port # 将当前用户的公钥

      这就搞定了!SSH 的端口正式使用 22!!!

      1995 年 7 月 12 日上午 2 点 21 分,我给我在赫尔辛基理工大学的测试者们宣布了 SSH 的最后 beta 版本。当日下午 5 点 23 分,我给测试者们宣布了 ssh-1.0.0 版本。1995 年 7 月 12 日,下午 5 点 51 分,我将一份 SSH(安全终端)的宣告发给了 cypherpunks@toad.com 的邮件列表,此外我还将其发给了一些新闻组、邮件列表和一些在因特网上讨论相关话题的人们。

      -

      如何更改 SSH 服务的端口号

      +

      如何更改 SSH 服务的端口号

      SSH 服务器是默认运行在 22 号端口上的。然而,由于某些原因需要,它也可以运行在别的端口上。比如为了方便测试使用,又比如在同一个宿主机上运行多个不同的配置。当然,极少情况下,不使用 root 权限运行它也可以,比如某些必须运行在非特权的端口的情况(端口号大于等于 1024)。

      端口号可以在配置文件 /etc/ssh/sshd_config 中将 Port 22 更改。也可以使用 -p 选项运行 sshd。SSH 客户端和 sftp 程序也可以使用 -p 选项。

      -

      配置 SSH 协议穿越防火墙

      +

      配置 SSH 协议穿越防火墙

      SSH 是少数通常被许可穿越防火墙的协议之一。通常的做法是不限制出站的 SSH 连接,尤其常见于一些较小的或者比较技术型的组织中,而入站的 SSH 连接通常会限制到一台或者是少数几台服务器上。

      -

      出站的 SSH 连接

      +

      出站的 SSH 连接

      在防火墙中配置出站的 SSH 连接十分简单。如果完全限制了外发连接,那么只需要创建一个允许 TCP 端口 22 可以外发的规则即可。如果你想限制目标地址,你可以限制该规则仅允许访问你的组织放在云端的外部服务器或保护该云端的跳板服务器即可。

      -

      反向通道是有风险的

      +

      反向通道是有风险的

      其实不限制出站的 SSH 连接虽然是可以的,但是是存在风险的,SSH 协议是支持 通道访问 的。最初的想法是在外部服务器搭建一个 SSH 服务监听来自各处的连接,将进入的连接转发到组织,并让这个连接可以访问某个内部服务器。

      在某些场景下这当然非常的方便。开发者和系统管理员经常使用它打开一个通道以便于他们可以远程访问,比如在家里或者在旅行中使用笔记本电脑等场景。

      然而通常来讲这些做法是违背安全策略的,跳过了防火墙管理员和安全团队保护的控制无疑是违背安全策略的,比如这些: PCI、HIPAA、NIST SP 800-53 等。它可以被黑客和外国情报机构用来在组织内留下后门。

      CryptoAuditor 是一款可以控制通道穿过防火墙或者一组云端服务器入口的产品。该款产品可以配合 通用 SSH 密钥管理器(Universal SSH Key Manager) 来获得对 主机密钥(host keys)的访问,以在启用防火墙并阻挡未授权转发的场景中解密 SSH 会话。

      -

      入站的 SSH 访问

      +

      入站的 SSH 访问

      对于入站访问而言,这里有几点需要说一下:

      配置防火墙,并转发所有去往 22 端口的连接只能流向到一个特定的内部网络 IP 地址或者一个 DMZ 主机。在该 IP 上运行 CryptoAuditor 或者跳板机来控制和审查所有访问该组织的连接。 在防火墙上使用不同的端口访问不同的服务器。 只允许使用 IPsec 协议这样的 VPN(虚拟专用网)登录后连接 SSH 服务。

      -

      通过 iptables 服务限制 SSH 访问

      +

      通过 iptables 服务限制 SSH 访问

      iptables 是一款内建在 Linux 内核的宿主防火墙。通常配置用于保护服务器以防止被访问那些未明确开启的端口。

      如果服务器上启用了 iptables,使用下面的命令将可以允许进入的 SSH 访问,当然命令需要以 root 身份运行。

      iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
      @@ -205,7 +177,7 @@ iptables -A OUTPUT -p tcp --sport 22 -m conntr
       
      - - + + \ No newline at end of file diff --git a/c/sshd.html b/c/sshd.html index 3187855177..2c8a63b168 100644 --- a/c/sshd.html +++ b/c/sshd.html @@ -10,7 +10,7 @@ sshd 命令,Linux sshd 命令详解:openssh软件套件中的服务器守护进程 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      sshd

      +
      +

      sshd

      openssh软件套件中的服务器守护进程

      -

      补充说明

      +

      补充说明

      sshd命令 是openssh软件套件中的服务器守护进程。

      -

      语法

      +

      语法

      sshd(选项)
       
      -

      选项

      +

      选项

      -4:强制使用IPv4地址;
       -6:强制使用IPv6地址;
       -D:以后台守护进程方式运行服务器;
      @@ -105,7 +97,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/startx.html b/c/startx.html index be9346896e..49527f7bfa 100644 --- a/c/startx.html +++ b/c/startx.html @@ -10,7 +10,7 @@ startx 命令,Linux startx 命令详解:用来启动X Window - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      startx

      +
      +

      startx

      用来启动X Window

      -

      补充说明

      +

      补充说明

      startx命令 用来启动X Window,实际上启动X Window的程序为xinit。

      -

      语法

      +

      语法

      startx(参数)
       
      -

      参数

      +

      参数

      • 客户端及选项:X客户端及选项;
      • 服务器及选项:X服务器及选项。
      -

      实例

      +

      实例

      要在工作站上或 X 终端上启动 X 会话,请输入:

      startx
       
      @@ -143,7 +133,7 @@
      - - + + \ No newline at end of file diff --git a/c/stat.html b/c/stat.html index 3446f2c351..a72425d601 100644 --- a/c/stat.html +++ b/c/stat.html @@ -10,7 +10,7 @@ stat 命令,Linux stat 命令详解:用于显示文件的状态信息 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
      -

      stat

      +
      +

      stat

      用于显示文件的状态信息

      -

      补充说明

      +

      补充说明

      stat命令 用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。

      -

      语法

      +

      语法

      stat(选项)(参数)
       
      -

      选项

      +

      选项

      -L:支持符号连接;
       -f:显示文件系统状态而非文件状态;
       -t:以简洁方式输出信息;
       --help:显示指令的帮助信息;
       --version:显示指令的版本信息。
       
      -

      参数

      +

      参数

      文件:指定要显示信息的普通文件或者文件系统对应的设备文件名。

      -

      实例

      +

      实例

      [root@localhost ~]# ls -l myfile
       -rw-r--r-- 1 root root 0 2010-10-09 myfile
       
      @@ -127,7 +115,7 @@ myfile 0 8 8
       
      - - + + \ No newline at end of file diff --git a/c/strace.html b/c/strace.html index 43d121a617..82e0a2a695 100644 --- a/c/strace.html +++ b/c/strace.html @@ -10,7 +10,7 @@ strace 命令,Linux strace 命令详解:跟踪系统调用和信号 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
      -

      strace

      +
      +

      strace

      跟踪系统调用和信号

      -

      补充说明

      +

      补充说明

      strace命令 是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。

      strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。

      -

      语法

      +

      语法

      strace  [  -dffhiqrtttTvxx  ] [ -acolumn ] [ -eexpr ] ...
           [ -ofile ] [-ppid ] ...  [ -sstrsize ] [ -uusername ]
           [ -Evar=val ] ...  [ -Evar  ]...
      @@ -71,9 +65,7 @@
       strace  -c  [ -eexpr ] ...  [ -Ooverhead ] [ -Ssortby ]
           [ command [ arg...  ] ]
       
      -

      选项

      +

      选项

      -c 统计每一系统调用的所执行的时间,次数和出错的次数等.
       -d 输出strace关于标准错误的调试信息.
       -f 跟踪由fork调用所产生的子进程.
      @@ -110,9 +102,7 @@ qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value
       -s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
       -u username 以username的UID和GID执行被跟踪的命令
       
      -

      实例

      +

      实例

      追踪系统调用

      现在我们做一个很简单的程序来演示strace的基本用法。这个程序的C语言代码如下:

      # filename test.c
      @@ -224,9 +214,7 @@ read(0,
       100.00    0.000305                    68        47 total
       

      这里很清楚的告诉你调用了那些系统函数,调用次数多少,消耗了多少时间等等这些信息,这个对我们分析一个程序来说是非常有用的。

      -

      常用参数说明

      +

      常用参数说明

      除了-c参数之外,strace还提供了其他有用的参数给我们,让我们能很方便的得到自己想要的信息,下面就对那些常用的参数一一做个介绍。

      重定向输出

      参数-o用在将strace的结果输出到文件中,如果不指定-o参数的话,默认的输出设备是STDERR,也就是说使用”-o filename”和” 2>filename”的结果是一样的。

      @@ -288,9 +276,7 @@ read(0,

      strace不光能自己初始化一个进程进行trace,还能追踪现有的进程,参数-p就是取这个作用的,用法也很简单,具体如下。

      strace -p pid
       
      -

      综合例子

      +

      综合例子

      说了那么多的功能和参数,现在我们来一个实用点的,就是研究下Oracle的lgwr进程,看看这个进程是不是像文档所说的那样没3s钟写一次log文件,考虑到lgwr写日志的触发条件比较多,我们需要找一个空闲的Oracle实例做这个实验。

      我们先要得到lgwr进程的pid,运行下面的命令

      ps -ef|grep lgwr
      @@ -386,7 +372,7 @@ lrwx------    1 oracle   dba            
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/strings.html b/c/strings.html
      index 9edb54d8e0..e6a342e1e7 100644
      --- a/c/strings.html
      +++ b/c/strings.html
      @@ -10,7 +10,7 @@
           
           strings 命令,Linux strings 命令详解:在对象文件或二进制文件中查找可打印的字符串 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      strings

      +
      +

      strings

      在对象文件或二进制文件中查找可打印的字符串

      -

      补充说明

      +

      补充说明

      strings命令 在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。

      -

      语法

      +

      语法

      strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ]  [file ... ]
       
      -

      选项

      +

      选项

      -a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
       -f –print-file-name:在显示字符串前先显示文件名
       -n –bytes=[number]:找到并且输出所有NUL终止符序列
      @@ -77,9 +69,7 @@
       -e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
       @ :读取中选项
       
      -

      实例

      +

      实例

      列出ls中所有的ASCII文本:

      strings /bin/ls
       
      @@ -114,7 +104,7 @@
      - - + + \ No newline at end of file diff --git a/c/stty.html b/c/stty.html index 80ec086f29..3e126ccfed 100644 --- a/c/stty.html +++ b/c/stty.html @@ -10,7 +10,7 @@ stty 命令,Linux stty 命令详解:修改终端命令行的相关设置 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      stty

      +
      +

      stty

      修改终端命令行的相关设置

      -

      补充说明

      +

      补充说明

      stty命令 修改终端命令行的相关设置。

      -

      语法

      +

      语法

      stty(选项)(参数)
       
      -

      选项

      +

      选项

      -a:以容易阅读的方式打印当前的所有配置;
       -g:以stty可读方式打印当前的所有配置。
       
      -

      参数

      +

      参数

      终端设置:指定终端命令行的设置选项。

      -

      实例

      +

      实例

      在命令行下,禁止输出大写的方法:

      stty iuclc     #开启
       stty -iuclc    #恢复
      @@ -141,7 +129,7 @@ stty -igncr    #恢复
       
      - - + + \ No newline at end of file diff --git a/c/su.html b/c/su.html index 6479665231..a826047745 100644 --- a/c/su.html +++ b/c/su.html @@ -10,7 +10,7 @@ su 命令,Linux su 命令详解:用于切换当前用户身份到其他用户身份 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      su

      +
      +

      su

      用于切换当前用户身份到其他用户身份

      -

      补充说明

      +

      补充说明

      su命令 用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

      -

      语法

      +

      语法

      su(选项)(参数)
       
      -

      选项

      +

      选项

      -c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
       -f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
       -l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
      @@ -75,13 +67,9 @@
       --help:显示帮助;
       --version;显示版本信息。
       
      -

      参数

      +

      参数

      用户:指定要切换身份的目标用户。

      -

      实例

      +

      实例

      变更帐号为root并在执行ls指令后退出变回原使用者:

      su -c ls root
       
      @@ -116,7 +104,7 @@
      - - + + \ No newline at end of file diff --git a/c/sudo.html b/c/sudo.html index 38c97d891f..b1190a37b2 100644 --- a/c/sudo.html +++ b/c/sudo.html @@ -10,7 +10,7 @@ sudo 命令,Linux sudo 命令详解:以其他身份来执行命令 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      sudo

      +
      +

      sudo

      以其他身份来执行命令

      -

      补充说明

      +

      补充说明

      sudo命令 用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

      -

      语法

      +

      语法

      sudo(选项)(参数)
       
      -

      选项

      +

      选项

      -b:在后台执行指令;
       -E:继承当前环境变量
       -h:显示帮助;
      @@ -79,13 +71,9 @@
       -v:延长密码有效期限5分钟;
       -V :显示版本信息。
       
      -

      参数

      +

      参数

      指令:需要运行的指令和对应的参数。

      -

      实例

      +

      实例

      $ sudo su -
       # env | grep -E '(HOME|SHELL|USER|LOGNAME|^PATH|PWD|TEST_ETC|TEST_ZSH|TEST_PRO|TEST_BASH|TEST_HOME|SUDO)'
       
      @@ -200,7 +188,7 @@ install.log.syslog
      - - + + \ No newline at end of file diff --git a/c/sum.html b/c/sum.html index 1510d58292..9b5bea409e 100644 --- a/c/sum.html +++ b/c/sum.html @@ -10,7 +10,7 @@ sum 命令,Linux sum 命令详解:计算文件的校验码和显示块数 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
      -

      sum

      +
      +

      sum

      计算文件的校验码和显示块数

      -

      补充说明

      +

      补充说明

      sum命令 用于计算并显示指定文件的校验和与文件所占用的磁盘块数。

      -

      语法

      +

      语法

      sum(选项)(参数)
       
      -

      选项

      +

      选项

      -r:使用BSD的校验和算法,块大小为1k;
       -s:使用system V的校验和算法,块大小为512字节。
       
      -

      参数

      +

      参数

      文件列表:需要计算和与磁盘块数的文件列表。

      -

      实例

      +

      实例

      计算文件校验码:

      [root@localhost ~]# sum insert.sql
       00827    12
      @@ -106,7 +94,7 @@
       
      - - + + \ No newline at end of file diff --git a/c/supervisord.html b/c/supervisord.html index 9373930a9f..f1cb44abda 100644 --- a/c/supervisord.html +++ b/c/supervisord.html @@ -10,7 +10,7 @@ supervisord 命令,Linux supervisord 命令详解:配置后台服务/常驻进程的进程管家工具 - Linux 命令搜索引擎 - + @@ -50,20 +50,14 @@ -
      -

      supervisord

      +
      +

      supervisord

      配置后台服务/常驻进程的进程管家工具

      -

      安装

      +

      安装

      # 安装 supervisord
       apt-get install supervisor
       
      -

      实例

      +

      实例

      生成配置文件 /etc/supervisord.conf

      [program:app]
       command=/usr/bin/gunicorn -w 1 wsgiapp:application
      @@ -75,9 +69,7 @@
       supervisorctl stop app
       supervisorctl reload # 修改/添加配置文件需要执行这个
       
      -

      下载地址

      +

      下载地址

      https://pypi.python.org/pypi/meld3
      https://pypi.python.org/pypi/supervisor

      @@ -104,7 +96,7 @@ supervisorctl reload # 修改/添加配置文件需
      - - + + \ No newline at end of file diff --git a/c/suspend.html b/c/suspend.html index a7a0d200e7..39b215bca0 100644 --- a/c/suspend.html +++ b/c/suspend.html @@ -10,7 +10,7 @@ suspend 命令,Linux suspend 命令详解:挂起shell的执行。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
      -

      suspend

      +
      +

      suspend

      挂起shell的执行。

      -

      概要

      +

      概要

      suspend [-f]
       
      -

      主要用途

      +

      主要用途

      • 挂起shell的执行,直到收到SIGCONT信号。

        @@ -71,18 +65,12 @@

        除非使用-f选项,否则无法对login shell使用。

      -

      选项

      +

      选项

      -f    对login shell执行挂起操作。
       
      -

      返回值

      +

      返回值

      返回成功除非未开启作业控制或发生了错误。

      -

      例子

      +

      例子

      # 打开一个终端,首先获取PID。
       echo $
       # 执行挂起命令
      @@ -92,9 +80,7 @@
       kill -s SIGCONT PID
       # 此时之前的终端结束挂起状态,可以正常交互。
       
      -

      注意

      +

      注意

      1. bash的作业控制命令包括bg fg kill wait disown suspend
      2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
      3. @@ -125,7 +111,7 @@
      - - + + \ No newline at end of file diff --git a/c/swapoff.html b/c/swapoff.html index 4d67022bf8..b7d4116dc1 100644 --- a/c/swapoff.html +++ b/c/swapoff.html @@ -10,7 +10,7 @@ swapoff 命令,Linux swapoff 命令详解:关闭指定的交换空间 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
      -

      swapoff

      +
      +

      swapoff

      关闭指定的交换空间

      -

      补充说明

      +

      补充说明

      swapoff命令 用于关闭指定的交换空间(包括交换文件和交换分区)。swapoff实际上为swapon的符号连接,可用来关闭系统的交换区。

      -

      语法

      +

      语法

      swapoff(选项)(参数)
       
      -

      选项

      +

      选项

      -a:关闭配置文件“/etc/fstab”中所有的交换空间。
       
      -

      参数

      +

      参数

      交换空间:指定需要激活的交换空间,可以是交换文件和交换分区,如果是交换分区则指定交换分区对应的设备文件。

      -

      实例

      +

      实例

      关闭交换分区

      swapoff /dev/sda2
       
      @@ -104,7 +92,7 @@
      - - + + \ No newline at end of file diff --git a/c/swapon.html b/c/swapon.html index 01b52dbef8..c81e107cc7 100644 --- a/c/swapon.html +++ b/c/swapon.html @@ -10,7 +10,7 @@ swapon 命令,Linux swapon 命令详解:激活Linux系统中交换空间 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
      -

      swapon

      +
      +

      swapon

      激活Linux系统中交换空间

      -

      补充说明

      +

      补充说明

      swapon命令 用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。

      -

      语法

      +

      语法

      swapon(选项)(参数)
       
      -

      选项

      +

      选项

      -a:将/etc/fstab文件中所有设置为swap的设备,启动为交换区;
       -h:显示帮助;
       -p<优先顺序>:指定交换区的优先顺序;
       -s:显示交换区的使用状况;
       -V:显示版本信息。
       
      -

      参数

      +

      参数

      交换空间:指定需要激活的交换空间,可以是交换文件和交换分区,如果是交换分区则指定交换分区对应的设备文件。

      -

      实例

      +

      实例

      mkswap -c /dev/hdb4 (-c是检查有无坏块)
       swapon -v /dev/hdb4
       swapon -s
      @@ -112,7 +100,7 @@ Filename                                t
       
      - - + + \ No newline at end of file diff --git a/c/sync.html b/c/sync.html index f386667d38..dad7a83b72 100644 --- a/c/sync.html +++ b/c/sync.html @@ -10,7 +10,7 @@ sync 命令,Linux sync 命令详解:用于强制被改变的内容立刻写入磁盘 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
      -

      sync

      +
      +

      sync

      用于强制被改变的内容立刻写入磁盘

      -

      补充说明

      +

      补充说明

      sync命令 用于强制被改变的内容立刻写入磁盘,更新超块信息。

      在Linux/Unix系统中,在文件或数据处理过程中一般先放到内存缓冲区中,等到适当的时候再写入磁盘,以提高系统的运行效率。sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中。用户通常不需执行sync命令,系统会自动执行update或bdflush操作,将缓冲区的数据写 入磁盘。只有在update或bdflush无法执行或用户需要非正常关机时,才需手动执行sync命令。

      -

      语法

      +

      语法

      sync(选项)
       
      -

      选项

      +

      选项

      -d, --data             只同步文件数据,不同步不必要的元数据
       -f, --file-system      同步包含这些文件的文件系统
       --help:显示帮助;
       --version:显示版本信息。
       
      -

      buffer与cache

      +

      buffer与cache

      • buffer:为了解决写磁盘的效率
      • cache:为了解决读磁盘的效率
      • @@ -108,7 +98,7 @@
      - - + + \ No newline at end of file diff --git a/c/sysctl.html b/c/sysctl.html index 6347c0215e..e9a3db8a1a 100644 --- a/c/sysctl.html +++ b/c/sysctl.html @@ -10,7 +10,7 @@ sysctl 命令,Linux sysctl 命令详解:时动态地修改内核的运行参数 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      sysctl

      +
      +

      sysctl

      时动态地修改内核的运行参数

      -

      补充说明

      +

      补充说明

      sysctl命令 被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。

      -

      语法

      +

      语法

      sysctl(选项)(参数)
       
      -

      选项

      +

      选项

      -n:打印值时不打印关键字;
       -e:忽略未知关键字错误;
       -N:仅打印名称;
      @@ -75,13 +67,9 @@
       -a:打印当前所有可用的内核参数变量和值;
       -A:以表格方式打印当前所有可用的内核参数变量和值。
       
      -

      参数

      +

      参数

      变量=值:设置内核参数对应的变量值。

      -

      实例

      +

      实例

      查看所有可读变量:

      sysctl -a

      读一个指定的变量,例如kern.maxproc

      @@ -105,9 +93,7 @@ sysctl -w net.ipv4.tcp_keepalive_time==1 sysctl -w net.ipv4.tcp_sack=1
      -

      配置sysctl

      +

      配置sysctl

      编辑此文件:/etc/sysctl.conf

      如果该文件为空,则输入以下内容,否则请根据情况自己做调整:

      # Controls source route verification
      @@ -241,7 +227,7 @@ net.ipv4.icmp_echo_ignore_all = 
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/syslog.html b/c/syslog.html
      index b3d71cd5d1..023ec8219a 100644
      --- a/c/syslog.html
      +++ b/c/syslog.html
      @@ -10,7 +10,7 @@
           
           syslog 命令,Linux syslog 命令详解:系统默认的日志守护进程 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,20 +50,14 @@
       
       
       
      -
      -

      syslog

      +
      +

      syslog

      系统默认的日志守护进程

      -

      补充说明

      +

      补充说明

      syslog 是Linux系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。

      几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听UDP 端口514,并根据 syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线) 方法分析远端设备的事件。

      通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。

      -

      使用方法

      +

      使用方法

      在/var/log中创建并写入日志信息是由syslog协议处理的,是由守护进程sylogd负责执行。每个标准的进程都可以用syslog记录日志。可以使用logger命令通过syslogd记录日志。

      要向syslog文件/var/log/messages中记录日志信息:

      logger this is a test log line
      @@ -104,7 +98,7 @@ Jan  5 10:37
       
      - - + + \ No newline at end of file diff --git a/c/systemctl.html b/c/systemctl.html index de53870df2..cbc7bc047d 100644 --- a/c/systemctl.html +++ b/c/systemctl.html @@ -10,7 +10,7 @@ systemctl 命令,Linux systemctl 命令详解:系统服务管理器指令 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      systemctl

      +
      +

      systemctl

      系统服务管理器指令

      -

      补充说明

      +

      补充说明

      systemctl命令 是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

      @@ -110,9 +106,7 @@
      -

      实例

      +

      实例

      systemctl start nfs-server.service . # 启动nfs服务
       systemctl enable nfs-server.service # 设置开机自启动
       systemctl disable nfs-server.service # 停止开机自启动
      @@ -156,7 +150,7 @@ systemctl list-units --type=service 
       
      -
      -
      +
      +
       
       
      \ No newline at end of file
      diff --git a/c/systool.html b/c/systool.html
      index 9f07ac559d..55f5ab9ab3 100644
      --- a/c/systool.html
      +++ b/c/systool.html
      @@ -10,7 +10,7 @@
           
           systool 命令,Linux systool 命令详解:显示基于总线、类和拓扑显示系统中设备的信息 -  Linux 命令搜索引擎
           
      -    
      +    
       
       
       
      @@ -50,23 +50,15 @@
       
       
       
      -
      -

      systool

      +
      +

      systool

      显示基于总线、类和拓扑显示系统中设备的信息

      -

      补充说明

      +

      补充说明

      systool命令 指令显示基于总线、类和拓扑显示系统中设备的信息。

      -

      语法

      +

      语法

      systool(选项)(参数)
       
      -

      选项

      +

      选项

      -a:显示被请求资源的属性;
       -b<总线>:显示指定总线的信息;
       -c<class>:显示指定类的信息;
      @@ -79,13 +71,9 @@
       -D:仅显示驱动程序信息;
       -P:显示设备的父类。
       
      -

      参数

      +

      参数

      设备:指定要查看信息的设备名称。

      -

      实例

      +

      实例

      [root@localhost ~]# systool
       Supported sysfs buses:
               acpi
      @@ -275,7 +263,7 @@ Supported sysfs modules:
       
      - - + + \ No newline at end of file diff --git a/c/tac.html b/c/tac.html index cd9717422d..b01cff5224 100644 --- a/c/tac.html +++ b/c/tac.html @@ -10,7 +10,7 @@ tac 命令,Linux tac 命令详解:连接多个文件并以行为单位反向打印到标准输出。 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      tac

      +
      +

      tac

      连接多个文件并以行为单位反向打印到标准输出。

      -

      概要

      +

      概要

      tac [OPTION]... [FILE]...
       
      -

      主要用途

      +

      主要用途

      • 按行为单位反向显示文件内容,如果没有文件或文件为-则读取标准输入。
      • 处理多个文件时,依次将每个文件反向显示,而不是将所有文件连在一起再反向显示。
      -

      参数

      +

      参数

      FILE(可选):要处理的文件,可以为一或多个。

      -

      选项

      +

      选项

      长选项与短选项等价
       
       -b, --before              在之前而不是之后连接分隔符。
      @@ -82,13 +72,9 @@
       --help                    显示帮助信息并退出。
       --version                 显示版本信息并退出。
       
      -

      返回值

      +

      返回值

      返回状态为成功除非给出了非法选项或非法参数。

      -

      例子

      +

      例子

      # 选自官方info文档的例子:
       # 一个接着一个字符的反转一个文件:
       tac -r -s 'x\|[^x]' test.log
      @@ -109,9 +95,7 @@
       # 前一个例子相当于将 '1\n2\n3\n' 转换为 '3\n2\n1\n'
       # 前一个例子相当于将 '1\n2\n3\n' 转换为 '\n\n3\n21'
       
      -

      注意

      +

      注意

      1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 tacinfo coreutils 'tac invocation'
      2. 关于基础正则表达式(BRE)的内容,详见man -s 1 grepREGULAR EXPRESSIONS段落。
      3. @@ -141,7 +125,7 @@
      - - + + \ No newline at end of file diff --git a/c/tail.html b/c/tail.html index b9720dd262..72faf8a66c 100644 --- a/c/tail.html +++ b/c/tail.html @@ -10,7 +10,7 @@ tail 命令,Linux tail 命令详解:在屏幕上显示指定文件的末尾若干行 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
      -

      tail

      +
      +

      tail

      在屏幕上显示指定文件的末尾若干行

      -

      补充说明

      +

      补充说明

      tail命令 用于输入文件中的尾部内容。

      • 默认在屏幕上显示指定文件的末尾10行。
      • @@ -77,14 +73,10 @@
    -

    语法

    +

    语法

    tail (选项) (参数)
     
    -

    选项

    +

    选项

    -c, --bytes=NUM                 输出文件尾部的NUM(NUM为整数)个字节内容。
     -f, --follow[={name|descript}]  显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。
     -F                              与 “--follow=name --retry” 功能相同。
    @@ -97,13 +89,9 @@
     --help                          显示指令的帮助信息。
     --version                       显示指令的版本信息。
     
    -

    参数

    +

    参数

    文件列表:指定要显示尾部内容的文件列表。

    -

    实例

    +

    实例

    tail file #(显示文件file的最后10行)
     tail -n +20 file #(显示文件file的内容,从第20行至文件末尾)
     tail -c 10 file #(显示文件file的最后10个字节)
    @@ -137,7 +125,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/tailf.html b/c/tailf.html index 0d3844b359..b0677751f5 100644 --- a/c/tailf.html +++ b/c/tailf.html @@ -10,7 +10,7 @@ tailf 命令,Linux tailf 命令详解:在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出 - Linux 命令搜索引擎 - + @@ -50,40 +50,28 @@ -
    -

    tailf

    +
    +

    tailf

    在屏幕上显示指定文件的末尾若干行内容,通常用于日志文件的跟踪输出

    -

    补充说明

    +

    补充说明

    tailf命令几乎等同于tail -f,严格说来应该与tail --follow=name更相似些。当文件改名之后它也能继续跟踪,特别适合于日志文件的跟踪(follow the growth of a log file)。与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件。tailf特别适合那些便携机上跟踪日志文件,因为它能省电,因为减少了磁盘访问。tailf命令不是个脚本,而是一个用C代码编译后的二进制执行文件,某些Linux安装之后没有这个命令。

    tailf和tail -f的区别

    1. tailf 总是从文件开头一点一点的读, 而tail -f 则是从文件尾部开始读
    2. tailf check文件增长时,使用的是文件名, 用stat系统调用;而tail -f 则使用的是已打开的文件描述符; 注:tail 也可以做到类似跟踪文件名的效果; 但是tail总是使用fstat系统调用,而不是stat系统调用;结果就是:默认情况下,当tail的文件被偷偷删除时,tail是不知道的,而tailf是知道的。
    -

    语法

    +

    语法

    tailf logfile # 动态跟踪日志文件logfile,最初的时候打印文件的最后10行内容。
     
    -

    选项

    +

    选项

    -n, --lines NUMBER  # 输出最后数行
     -NUMBER             # 与NUMBER相同 `-n NUMBER'
     -V, --version       # 输出版本信息并退出
     -h, --help          # 显示帮助并退出
     
    -

    参数

    +

    参数

    目标:指定目标日志。

    -

    实例

    +

    实例

    tailf log/WEB.LOG 
     tailf -n 5 log2014.log   # 显示文件最后5行内容
     
    @@ -112,7 +100,7 @@ tailf -n 5 log2014.log - - + + \ No newline at end of file diff --git a/c/talk.html b/c/talk.html index f86bd1287b..00cdd47f22 100644 --- a/c/talk.html +++ b/c/talk.html @@ -10,7 +10,7 @@ talk 命令,Linux talk 命令详解:让用户和其他用户聊天 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    talk

    +
    +

    talk

    让用户和其他用户聊天

    -

    补充说明

    +

    补充说明

    talk命令 是talk服务器的客户端工具,通过talk命令可以让用户和其他用户聊天。linux中talk命令参数程序的使用很简单,只要知道交谈对象的地址,就可以邀请对方交谈。

    -

    语法

    +

    语法

    talk(参数)
     
    -

    参数

    +

    参数

    • 用户:指定聊天的用户;
    • 终端:指定用户的终端。
    -

    实例

    +

    实例

    例如登录在主机rs6000.cic.test.com上的用户jdx希望和登录在主机tirc.cs.test.com上的用户wangxz进行交谈,则可以输入下面的命令:

    talk wangxz@tirc.cs.test.com
     
    @@ -132,7 +122,7 @@ talk: respond with: talk jdx@rs6000.cic.test.com
    - - + + \ No newline at end of file diff --git a/c/tar.html b/c/tar.html index 37070bd6ba..ca4a463fce 100644 --- a/c/tar.html +++ b/c/tar.html @@ -10,7 +10,7 @@ tar 命令,Linux tar 命令详解:将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    tar

    +
    +

    tar

    将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。

    -

    补充说明

    +

    补充说明

    tar命令 可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

    首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

    为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

    -

    语法

    +

    语法

    tar [选项...] [FILE]...
     
    -

    选项

    +

    选项

    -A, --catenate, --concatenate   追加 tar 文件至归档
     -c, --create               创建一个新归档
     -d, --diff, --compare      找出归档和文件系统的差异
    @@ -364,13 +356,9 @@
     --format=gnu -f- -b20 --quoting-style=escape --rmt-command=/etc/rmt
     --rsh-command=/usr/bin/ssh
     
    -

    参数

    +

    参数

    文件或目录:指定要打包的文件或目录列表。

    -

    实例

    +

    实例

    - z:有gzip属性的
     - j:有bz2属性的
     - Z:有compress属性的
    @@ -399,42 +387,28 @@
     tar -tvf archive.tar         # 详细列出archive.tar中的所有文件。
     tar -xf archive.tar          # 从archive.tar提取所有文件。
     
    -

    zip格式

    +

    zip格式

    压缩: zip -r [目标文件名].zip [原文件/目录名]
    解压: unzip [原文件名].zip
    注:-r参数代表递归

    -

    tar格式(该格式仅仅打包,不压缩)

    +

    tar格式(该格式仅仅打包,不压缩)

    打包:tar -cvf [目标文件名].tar [原文件名/目录名]
    解包:tar -xvf [原文件名].tar
    注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。

    -

    tar.gz格式

    +

    tar.gz格式

    方式一:利用前面已经打包好的tar文件,直接用压缩命令。

    压缩:gzip [原文件名].tar
    解压:gunzip [原文件名].tar.gz

    方式二:一次性打包并压缩、解压并解包

    打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名]
    解压并解包: tar -zxvf [原文件名].tar.gz
    注:z代表用gzip算法来压缩/解压。

    -

    tar.bz2格式

    +

    tar.bz2格式

    方式一:利用已经打包好的tar文件,直接执行压缩命令:

    压缩:bzip2 [原文件名].tar
    解压:bunzip2 [原文件名].tar.bz2
    方式二:一次性打包并压缩、解压并解包

    打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名]
    解压并解包: tar -jxvf [原文件名].tar.bz2
    注:小写j代表用bzip2算法来压缩/解压。

    -

    tar.xz格式

    +

    tar.xz格式

    方式一:利用已经打包好的tar文件,直接用压缩命令:

    压缩:xz [原文件名].tar
    解压:unxz [原文件名].tar.xz
    方式二:一次性打包并压缩、解压并解包

    打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
    解压并解包: tar -Jxvf [原文件名].tar.xz
    注:大写J代表用xz算法来压缩/解压。

    -

    tar.Z格式(已过时)

    +

    tar.Z格式(已过时)

    方式一:利用已经打包好的tar文件,直接用压缩命令:

    压缩:compress [原文件名].tar
    解压:uncompress [原文件名].tar.Z
    方式二:一次性打包并压缩、解压并解包

    打包并压缩: tar -Zcvf [目标文件名].tar.Z [原文件名/目录名]
    解压并解包: tar -Zxvf [原文件名].tar.Z
    注:大写Z代表用ncompress算法来压缩/解压。另,ncompress是早期Unix系统的压缩格式,但由于ncompress的压缩率太低,现已过时。

    -

    jar格式

    +

    jar格式

    压缩:jar -cvf [目标文件名].jar [原文件名/目录名]
    解压:jar -xvf [原文件名].jar

    注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下:

    Manifest-Version: 1.0
    @@ -443,14 +417,10 @@ Main-class: the_name_of_the_main_class_should_be_put_here
     

    然后用如下命令打包:

    jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名]
    这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。

    -

    7z格式

    +

    7z格式

    压缩:7z a [目标文件名].7z [原文件名/目录名]
    解压:7z x [原文件名].7z
    注:这个7z解压命令支持rar格式,即:

    7z x [原文件名].rar

    -

    其它例子

    +

    其它例子

    将文件全部打包成tar包

    tar -cvf log.tar log2012.log    仅打包,不压缩!
     tar -zcvf log.tar.gz log2012.log   打包后,以 gzip 压缩
    @@ -516,7 +486,7 @@ Main-class: the_name_of_the_main_class_should_be_put_here
     
    - - + + \ No newline at end of file diff --git a/c/tcpdump.html b/c/tcpdump.html index 5fcaa1c0b6..54c9697492 100644 --- a/c/tcpdump.html +++ b/c/tcpdump.html @@ -10,7 +10,7 @@ tcpdump 命令,Linux tcpdump 命令详解:一款sniffer工具,是Linux上的抓包工具,嗅探器 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    tcpdump

    +
    +

    tcpdump

    一款sniffer工具,是Linux上的抓包工具,嗅探器

    -

    补充说明

    +

    补充说明

    tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后分析。

    -

    语法

    +

    语法

    tcpdump(选项)
     
    -

    选项

    +

    选项

    -a:尝试将网络和广播地址转换成名称;
     -c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
     -d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
    @@ -93,9 +85,7 @@
     -x:用十六进制字码列出数据包资料;
     -w<数据包文件>:把数据包数据写入指定的文件。
     
    -

    实例

    +

    实例

    直接启动tcpdump将监视第一个网络接口上所有流过的数据包

    tcpdump
     
    @@ -179,7 +169,7 @@
    - - + + \ No newline at end of file diff --git a/c/tcpreplay.html b/c/tcpreplay.html index f7e39b082e..0ba23ed387 100644 --- a/c/tcpreplay.html +++ b/c/tcpreplay.html @@ -10,7 +10,7 @@ tcpreplay 命令,Linux tcpreplay 命令详解:将PCAP包重新发送,用于性能或者功能测试 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    tcpreplay

    +
    +

    tcpreplay

    将PCAP包重新发送,用于性能或者功能测试

    -

    补充说明

    +

    补充说明

    简单的说, tcpreplay 是一种pcap包的重放工具,它可以将用ethreal、wireshark工具抓下来的包原样或经过任意修改后重放回去。它允许你对报文做任意的修改(主要是指对2层、3层、4层报文头),指定重放报文的速度等,这样tcpreplay就可以用来复现抓包的情景以定位bug,以极快的速度重放从而实现压力测试。

    -

    选项

    +

    选项

    -A "<args>" 在使用 tcpdump 风格打印输出信息时,同时再调用tcpdump中的参数, 默认已经带有“-n,-l”,所以一般看到的都是ip地址,而没有主机名的打印,注意这个是在tcpreplay使用了-v参数时才能使用,不带-v不会报错,但是没有实际意义。格式:-vA “nnt”表示以tcpdump风格输出报文信息,并且不打印时间戳、主机名、端口服务名称。注意不要使用-c参数来指定打印的数据报文的个数,这样发送出去的报文也会变少。
     -c <cachefile> 双网卡回放报文必选参数,后面紧跟cache文件名,该文件为tcpprep根据对应的pcap文件构造出来。 
     -D 把应用层的数据,使用dump mode写入到指定文件中去,和-w、-W 参数一起使用。 
    @@ -92,9 +86,7 @@
     -V 查看版本号。
     -w <file> 将主网卡发送的报文写入一个文件中,参数后紧跟文件名。
     
    -

    实例

    +

    实例

    **1、重放在客户端 ftp 连接的报文 **

    a、在客户端使用 ethereal 抓包,存为 ftp.pcap 文件。

    b、 将 ftp.pcap 文件进行 tcpprep 操作,制作 cache 文件。

    @@ -147,7 +139,7 @@
    - - + + \ No newline at end of file diff --git a/c/tee.html b/c/tee.html index dd14d0e8dd..d3e6a5957c 100644 --- a/c/tee.html +++ b/c/tee.html @@ -10,7 +10,7 @@ tee 命令,Linux tee 命令详解:从标准输入读取数据并重定向到标准输出和文件。 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    tee

    +
    +

    tee

    从标准输入读取数据并重定向到标准输出和文件。

    -

    概要

    +

    概要

    tee [OPTION]... [FILE]...
     
    -

    主要用途

    +

    主要用途

    • 需要同时查看数据内容并输出到文件时使用。
    -

    参数

    +

    参数

    FILE(可选):要输出的文件,可以为一或多个。

    -

    选项

    +

    选项

    长选项与短选项等价
     
     -a, --append               追加到文件中而不是覆盖。
    @@ -92,22 +82,16 @@ MODE决定了当出现写错误时的输出行为,可用的MODE如下:
     -p选项的指定的默认MODE为'warn-nopipe'。
     当'--output-error'没有在选项中时,默认的操作是当写入到管道报错时立刻退出,诊断错误信息并写入到非管道输出。
     
    -

    返回值

    +

    返回值

    返回状态为成功除非给出了非法选项或非法参数。

    -

    例子

    +

    例子

    # 将进程信息通过管道输出到标准输出(终端)并覆盖写入到文件中。
     ps -ef |tee info_a.log info_b.log
     
     # 将进程信息通过管道输出到标准输出(终端)并追加写入到文件中。
     ps -ef |tee -a info_a.log info_b.log
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 teeinfo coreutils 'tee invocation'
    2. 存在缓存机制,每1024个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到1024个字节,则接收从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。
    3. @@ -137,7 +121,7 @@ MODE决定了当出现写错误时的输出行为,可用的MODE如下:
    - - + + \ No newline at end of file diff --git a/c/telint.html b/c/telint.html index ab62eecb81..590ecfc6ad 100644 --- a/c/telint.html +++ b/c/telint.html @@ -10,7 +10,7 @@ telint 命令,Linux telint 命令详解:切换当前正在运行系统的运行等级 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    telint

    +
    +

    telint

    切换当前正在运行系统的运行等级

    -

    补充说明

    +

    补充说明

    telint命令 用于切换当前正在运行的Linux系统的运行等级。

    -

    语法

    +

    语法

    telint(选项)(参数)
     
    -

    选项

    +

    选项

    -t:指定等待的秒数。
     
    -

    参数

    +

    参数

    运行等级:指定要切换的运行等级。

    @@ -98,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/telnet.html b/c/telnet.html index 31cc76d4a9..3c492128f9 100644 --- a/c/telnet.html +++ b/c/telnet.html @@ -10,7 +10,7 @@ telnet 命令,Linux telnet 命令详解:登录远程主机和管理(测试ip端口是否连通) - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    telnet

    +
    +

    telnet

    登录远程主机和管理(测试ip端口是否连通)

    -

    补充说明

    +

    补充说明

    telnet命令 用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。

    -

    语法

    +

    语法

    telnet(选项)(参数)
     
    -

    选项

    +

    选项

    -8:允许使用8位字符资料,包括输入与输出;
     -a:尝试自动登入远端系统;
     -b<主机别名>:使用别名指定远端主机名称;
    @@ -86,16 +78,12 @@
     -x:假设主机有支持数据加密的功能,就使用它;
     -X<认证形态>:关闭指定的认证形态。
     
    -

    参数

    +

    参数

    • 远程主机:指定要登录进行管理的远程主机;
    • 端口:指定TELNET协议使用的端口号。
    -

    实例

    +

    实例

    $ telnet 192.168.2.10
     Trying 192.168.2.10...
     Connected to 192.168.2.10 (192.168.2.10).
    @@ -185,7 +173,7 @@ telnet 23/udp
     
    - - + + \ No newline at end of file diff --git a/c/tempfile.html b/c/tempfile.html index d720a202c0..7cec24604d 100644 --- a/c/tempfile.html +++ b/c/tempfile.html @@ -10,7 +10,7 @@ tempfile 命令,Linux tempfile 命令详解:shell中给临时文件命名 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    tempfile

    +
    +

    tempfile

    shell中给临时文件命名

    -

    补充说明

    +

    补充说明

    有时候在写Shell脚本的时候需要一些临时存储数据的才做,最适合存储临时文件数据的位置就是/tmp,因为该目录中所有的内容在系统重启后就会被清空。下面是两种方法为临时数据生成标准的文件名。

    -

    tempfile命令

    +

    tempfile命令

    tempfile命令只有在基于Debian的发行版中才默认自带,比如Ubuntu,其他发行版没有这个命令。

    用tempfile命令为一个临时文件命名:

    temp_file_name=$(tempfile)
    @@ -70,9 +64,7 @@
       
    temp_file_name="/tmp/file_$RANDOM"
     

    $RANDOM是一个返回随机数的环境变量。

    -

    $变量

    +

    $变量

    如果没有tempfile命令的Linux发行版,也可以使用自己的临时文件名:

    temp_file_name="/tmp/file.$"
     
    @@ -102,7 +94,7 @@
    - - + + \ No newline at end of file diff --git a/c/test.html b/c/test.html index 7d848975ee..07e1513148 100644 --- a/c/test.html +++ b/c/test.html @@ -10,7 +10,7 @@ test 命令,Linux test 命令详解:执行条件表达式。 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    test

    +
    +

    test

    执行条件表达式。

    -

    概要

    +

    概要

    test [expr]
     
    -

    主要用途

    +

    主要用途

    • 执行条件表达式。
    -

    参数

    -

    文件操作符:

    +

    参数

    +

    文件操作符:

    -a FILE    如果文件存在,则为true。
     -b FILE    如果文件是块特殊的,则为true。
     -c FILE    如果文件是特殊字符,则为true。
    @@ -98,9 +88,7 @@ FILE1 -nt FILE2    根据修改日期,如果 file1 比 file2 新,则为true
     FILE1 -ot FILE2    根据修改日期,如果 file1 比 file2 旧,则为true。
     FILE1 -ef FILE2    如果 file1 为 file2 的硬链接,则为true。
     
    -

    字符串运算符:

    +

    字符串运算符:

    -z STRING              如果字符串为空,则为true。
     -n STRING              如果字符串不为空,则为true。
     STRING                 如果字符串不为空,则为true。
    @@ -109,9 +97,7 @@ STRING1 != STRING2    如果字符串不
     STRING1 < STRING2      如果 STRING1 的字典排序在 STRING2 之前,则为true。
     STRING1 > STRING2      如果 STRING1 在字典排序在 STRING2 之后,则为true。
     
    -

    其他运算符:

    +

    其他运算符:

    -o OPTION         如果启用了shell选项OPTION,则为true。
     -v VAR            如果设置了shell变量VAR,则为true。
     -R VAR            如果设置了shell变量VAR并且是变量引用,则为true。
    @@ -120,13 +106,9 @@ EXPR1 -a EXPR2    如果expr1和expr2都为true,则为true。
     EXPR1 -o EXPR2    如果expr1或expr2为true,则为true。
     arg1 OP arg2      算术表达式测试; OP是 -eq,-ne,-lt,-le,-gt,-ge 中的一个;算术表达式为真时返回true。
     
    -

    返回值

    +

    返回值

    如果表达式执行结果为成功时返回0,当表达式执行结果为失败或给出非法参数时返回1。

    -

    例子

    +

    例子

    # 执行条件表达式并显示返回值。
     [root@pc root]$ test ! "abc" == 123; echo $?
     0
    @@ -138,9 +120,7 @@ arg1 OP arg2      算术表达式测试; OP是 -eq,-ne,-lt,-le,-gt,-
     [root@pc root]$ [[ ! "abc" == 123 ]]; echo $?
     0
     
    -

    注意

    +

    注意

    1. 该命令等价于 [
    2. 编写 bash 条件表达式可用内建命令 test[ ,组合命令 [[
    3. @@ -180,7 +160,7 @@ arg1 OP arg2 算术表达式测试; OP是 -eq,-ne,-lt,-le,-gt,-
    - - + + \ No newline at end of file diff --git a/c/tftp.html b/c/tftp.html index 3aeb2a2cfe..a9271746c2 100644 --- a/c/tftp.html +++ b/c/tftp.html @@ -10,7 +10,7 @@ tftp 命令,Linux tftp 命令详解:在本机和tftp服务器之间使用TFTP协议传输文件 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    tftp

    +
    +

    tftp

    在本机和tftp服务器之间使用TFTP协议传输文件

    -

    补充说明

    +

    补充说明

    tftp命令 用在本机和tftp服务器之间使用TFTP协议传输文件。

    TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。下面就详细介绍一下linux服务器端tftp-server的配置。

    -

    语法

    +

    语法

    tftp(选项)(参数)
     
    -

    选项

    +

    选项

    -c:指定与tftp服务器连接成功后,立即要执行的指令;
     -m:指定文件传输模式。可以是ASCII或者Binary;
     -v:显示指令详细执行过程;
     -V:显示指令版本信息。
     
    -

    参数

    +

    参数

    主机:指定tftp要联机的tftp服务器的ip地址或主机名。

    -

    实例

    +

    实例

    1、安装tftp服务器

    需要安装xinetd、tftp和tftp-server 3个软件

    如果能上网,通过yum安装:

    @@ -191,7 +179,7 @@ tftp>q
    - - + + \ No newline at end of file diff --git a/c/time.html b/c/time.html index 998880826b..41c8a948a5 100644 --- a/c/time.html +++ b/c/time.html @@ -10,7 +10,7 @@ time 命令,Linux time 命令详解:统计给定命令所花费的总时间 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    time

    +
    +

    time

    统计给定命令所花费的总时间

    -

    补充说明

    +

    补充说明

    time命令 用于统计给定命令所花费的总时间。

    -

    语法

    +

    语法

    time(参数)
     
    -

    参数

    +

    参数

    指令:指定需要运行的额指令及其参数。

    -

    实例

    +

    实例

    当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的。所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗。例如:

    [root@localhost ~]# time ls
     anaconda-ks.cfg  install.log  install.log.syslog  satools  text
    @@ -183,7 +173,7 @@ sys     0m0.007s
     
    - - + + \ No newline at end of file diff --git a/c/times.html b/c/times.html index f0c6902738..40b59d7abe 100644 --- a/c/times.html +++ b/c/times.html @@ -10,7 +10,7 @@ times 命令,Linux times 命令详解:显示进程累计时间。 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    times

    +
    +

    times

    显示进程累计时间。

    -

    主要用途

    +

    主要用途

    • 打印出shell及其子进程累计使用的用户时间和系统时间。
    -

    返回值

    +

    返回值

    总是返回成功。

    -

    例子

    +

    例子

    # 执行命令
     times
     # 返回结果
    @@ -77,9 +69,7 @@
     # 用户时间        | 系统时间
     # 子进程的用户时间 | 子进程的系统时间
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -108,7 +98,7 @@
    - - + + \ No newline at end of file diff --git a/c/tload.html b/c/tload.html index a2d1ae840b..4169985f92 100644 --- a/c/tload.html +++ b/c/tload.html @@ -10,7 +10,7 @@ tload 命令,Linux tload 命令详解:显示系统负载状况 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    tload

    +
    +

    tload

    显示系统负载状况

    -

    补充说明

    +

    补充说明

    tload命令 以图形化的方式输出当前系统的平均负载到指定的终端。假设不给予终端机编号,则会在执行tload指令的终端机显示负载情形。

    -

    语法

    +

    语法

    tload(选项)(参数)
     
    -

    选项

    +

    选项

    -s:指定闲时的刻度;
     -d:指定间隔的时间(秒)。
     
    -

    参数

    +

    参数

    终端:指定显示信息的终端设备文件。

    -

    实例

    +

    实例

    使用tload命令查看系统负载情况:

    tload -d 1
     0.08, 0.02,0.01
    @@ -110,7 +98,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/tmux.html b/c/tmux.html index 8573a220c8..06c8da2b84 100644 --- a/c/tmux.html +++ b/c/tmux.html @@ -10,7 +10,7 @@ tmux 命令,Linux tmux 命令详解:Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    tmux

    +
    +

    tmux

    Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权

    -

    补充说明

    +

    补充说明

    使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;

    -

    功能

    +

    功能

    • 提供了强劲的、易于使用的命令行界面。
    • 可横向和纵向分割窗口。
    • @@ -72,9 +66,7 @@
    • 支持跨窗口搜索。
    • 支持自动及手动锁定窗口。
    -

    安装

    +

    安装

    # 在 Mac OS 中,通过 brew 安装
     brew install tmux
     # ubuntu版本下直接apt-get安装
    @@ -89,9 +81,7 @@ yum install libevent libevent-devel ncurses-
     ./configure
     make && make install
     
    -

    快捷键使用说明

    +

    快捷键使用说明

    @@ -401,9 +391,7 @@ ctrl+b s # 以菜单方式显示和选择 ctrl+b t # 显示时钟。然后按enter键后就会恢复到shell终端状态 ctrl+b d # 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 -

    参考资料

    +

    参考资料

    @@ -432,7 +420,7 @@ ctrl+b d # 脱离当前会话;这样可 - - + + \ No newline at end of file diff --git a/c/top.html b/c/top.html index 92b2a81df8..94fbcadcaf 100644 --- a/c/top.html +++ b/c/top.html @@ -10,7 +10,7 @@ top 命令,Linux top 命令详解:显示或管理执行中的程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    top

    +
    +

    top

    显示或管理执行中的程序

    -

    补充说明

    +

    补充说明

    top命令 可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

    -

    语法

    +

    语法

    top(选项)
     
    -

    选项

    +

    选项

    -b:以批处理模式操作;
     -c:显示完整的治命令;
     -d:屏幕刷新间隔时间;
    @@ -78,9 +70,7 @@
     -p<进程号>:指定进程;
     -n<次数>:循环显示的次数。
     
    -

    top交互命令

    +

    top交互命令

    在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

    h:显示帮助画面,给出一些简短的命令总结说明;
     k:终止一个进程;
    @@ -100,9 +90,7 @@ P:根据CPU使用百分比大小进行排序;
     T:根据时间/累计时间进行排序;
     w:将当前设置写入~/.toprc文件中。
     
    -

    实例

    +

    实例

    top - 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92
     Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie
     Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    @@ -160,7 +148,7 @@ Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached
     
    - - + + \ No newline at end of file diff --git a/c/touch.html b/c/touch.html index 18e75383bc..e2eb5b56d4 100644 --- a/c/touch.html +++ b/c/touch.html @@ -10,7 +10,7 @@ touch 命令,Linux touch 命令详解:创建新的空文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    touch

    +
    +

    touch

    创建新的空文件

    -

    补充说明

    +

    补充说明

    touch命令 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

    -

    语法

    +

    语法

    touch(选项)(参数)
     
    -

    选项

    +

    选项

    -a:或--time=atime或--time=access或--time=use  只更改存取时间;
     -c:或--no-create  不建立任何文件;
     -d:<时间日期> 使用指定的日期时间,而非现在的时间;
    @@ -77,13 +69,9 @@
     --help:在线帮助;
     --version:显示版本信息。
     
    -

    参数

    +

    参数

    文件:指定要设置时间属性的文件列表。

    -

    实例

    +

    实例

    touch ex2
     

    在当前目录下建立一个空文件ex2,然后,利用ls -l命令可以发现文件ex2的大小为0,表示它是空文件。

    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/tput.html b/c/tput.html index e0f5ae5f7b..0700faef2d 100644 --- a/c/tput.html +++ b/c/tput.html @@ -10,7 +10,7 @@ tput 命令,Linux tput 命令详解:通过terminfo数据库对终端会话进行初始化和操作 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    tput

    +
    +

    tput

    通过terminfo数据库对终端会话进行初始化和操作

    -

    补充说明

    +

    补充说明

    tput命令 将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用 tput,您可以更改几项终端功能,如移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。

    -

    什么是 terminfo 数据库?

    +

    什么是 terminfo 数据库?

    UNIX 系统上的 terminfo 数据库用于定义终端和打印机的属性及功能,包括各设备(例如,终端和打印机)的行数和列数以及要发送至该设备的文本的属性。UNIX 中的几个常用程序都依赖 terminfo 数据库提供这些属性以及许多其他内容,其中包括 vi 和 emacs 编辑器以及 curses 和 man 程序。

    与 UNIX 中的大多数命令一样,tput 命令既可以用在 shell 命令行中也可以用在 shell 脚本中。为让您更好地理解 tput,本文首先从命令行讲起,然后紧接着讲述 shell 脚本示例。

    光标属性

    @@ -116,9 +110,7 @@ tput rc # 显示输出

    要反显当前的颜色方案,只需执行tput rev

    有时,仅为文本着色还不够,也就是说,您想要通过另一种方式引起用户的注意。可以通过两种方式达到这一目的:一是将文本设置为粗体,二是为文本添加下划线。

    要将文本更改为粗体,请使用 bold 选项。要开始添加下划线,请使用 smul 选项。在完成显示带下划线的文本后,请使用 rmul 选项。

    -

    实例

    +

    实例

    使输出的字符串有颜色,底色,加粗:

    #!/bin/bash
     printf $(tput setaf 2; tput bold)'color show\n\n'$(tput sgr0)
    @@ -243,7 +235,7 @@ tput rc
     
    - - + + \ No newline at end of file diff --git a/c/tr.html b/c/tr.html index d06d816467..85de581802 100644 --- a/c/tr.html +++ b/c/tr.html @@ -10,7 +10,7 @@ tr 命令,Linux tr 命令详解:将字符进行替换压缩和删除 - Linux 命令搜索引擎 - + @@ -50,38 +50,26 @@ -
    -

    tr

    +
    +

    tr

    将字符进行替换压缩和删除

    -

    补充说明

    +

    补充说明

    tr命令 可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

    -

    语法

    +

    语法

    tr(选项)(参数)
     
    -

    选项

    +

    选项

    -c或——complerment:取代所有不属于第一字符集的字符;
     -d或——delete:删除所有属于第一字符集的字符;
     -s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;
     -t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。
     
    -

    参数

    +

    参数

    • 字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;
    • 字符集2:指定要转换成的目标字符集。
    -

    实例

    +

    实例

    将输入字符由大写转换为小写:

    echo "HELLO WORLD" | tr 'A-Z' 'a-z'
     hello world
    @@ -152,7 +140,7 @@ this is a text line.
     
    - - + + \ No newline at end of file diff --git a/c/tracepath.html b/c/tracepath.html index ac3c8137b8..0d843c69fc 100644 --- a/c/tracepath.html +++ b/c/tracepath.html @@ -10,7 +10,7 @@ tracepath 命令,Linux tracepath 命令详解:追踪目的主机经过的路由信息 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    tracepath

    +
    +

    tracepath

    追踪目的主机经过的路由信息

    -

    补充说明

    +

    补充说明

    tracepath命令 用来追踪并显示报文到达目的主机所经过的路由信息。

    -

    语法

    +

    语法

    tracepath(参数)
     
    -

    参数

    +

    参数

    • 目的主机:指定追踪路由信息的目的主机;
    • 端口:指定使用的UDP端口号。
    -

    实例

    +

    实例

    tracepath www.58.com
      1:  192.168.2.10 (192.168.2.10)                           20.150ms pmtu 1500
      1:  unknown (192.168.2.1)                                  9.343ms
    @@ -116,7 +106,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/traceroute.html b/c/traceroute.html index 7e1ece7553..71d8d7ca11 100644 --- a/c/traceroute.html +++ b/c/traceroute.html @@ -10,7 +10,7 @@ traceroute 命令,Linux traceroute 命令详解:显示数据包到主机间的路径 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    traceroute

    +
    +

    traceroute

    显示数据包到主机间的路径

    -

    补充说明

    +

    补充说明

    traceroute命令 用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。

    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

    traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。

    -

    语法

    +

    语法

    traceroute(选项)(参数)
     
    -

    选项

    +

    选项

    -d:使用Socket层级的排错功能;
     -f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;
     -F:设置勿离断位;
    @@ -85,13 +77,9 @@
     -w<超时秒数>:设置等待远端主机回报的时间;
     -x:开启或关闭数据包的正确性检验。
     
    -

    参数

    +

    参数

    主机:指定目的主机IP地址或主机名。

    -

    实例

    +

    实例

    traceroute www.58.com
     traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
      1  unknown (192.168.2.1)  3.453 ms  3.801 ms  3.937 ms
    @@ -158,7 +146,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/trap.html b/c/trap.html index bede68905a..68ed930608 100644 --- a/c/trap.html +++ b/c/trap.html @@ -10,7 +10,7 @@ trap 命令,Linux trap 命令详解:捕捉信号和其他事件并执行命令。 - Linux 命令搜索引擎 - + @@ -50,41 +50,27 @@ -
    -

    trap

    +
    +

    trap

    捕捉信号和其他事件并执行命令。

    -

    概要

    +

    概要

    trap [-lp] [[arg] signal_spec ...]
     
    -

    主要用途

    +

    主要用途

    • 用于指定在接收到信号后将要采取的动作。
    • 脚本程序被中断时执行清理工作。
    -

    选项

    +

    选项

    -l    打印信号名称以及信号名称对应的数字。
     -p    显示与每个信号关联的trap命令。
     
    -

    参数

    +

    参数

    arg:接收到信号时执行的命令。

    signal_spec:信号名称或信号名称对应的数字。

    -

    返回值

    +

    返回值

    如果表达式执行结果为成功时返回0,当参数 signal_spec 没有指定有效值时返回1。

    -

    关于信号

    +

    关于信号

    信号是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略,默认,或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是SIG_IGN,就忽略该信号;如果是SIG_DFT,则会采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数(捕捉),则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务。

    在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我们可不希望用户使用 Ctrl+C 等方法进入到shell状态做我们不希望做的事情。这便用到了信号处理。

    以下是一些你可能会遇到的常见信号:

    @@ -132,15 +118,11 @@
    -

    例子

    +

    例子

    当shell收到 HUP INT PIPE QUIT TERM 这几个命令时,当前执行的程序会执行 exit 1

    [root@pc root]$ trap "exit 1" HUP INT PIPE QUIT TERM
     
    -

    1 清理临时文件

    +

    1 清理临时文件

    下面展示了如果有人试图从终端中止程序时,如何删除文件然后退出:

    trap "rm -f $WORKDIR/work1 $WORKDIR/dataout; exit" 2
     
    @@ -148,24 +130,18 @@

    添加信号1 SIGHUP

    $ trap "rm $WORKDIR/work1 $WORKDIR/dataout; exit" 1 2
     
    -

    2 忽略信号

    +

    2 忽略信号

    如果陷阱列出的命令是空的,指定的信号接收时,将被忽略:

    $ trap '' 2
     

    忽略多个信号:

    $ trap '' 1 2 3 15
     
    -

    3 重置陷阱

    +

    3 重置陷阱

    当你改变了收到信号后采取的动作,你可以省略第一个参数来重置到默认行为。

    $ trap 1 2
     
    -

    注意

    +

    注意

    1. trap -l 等价于执行 kill -l
    2. 发送信号请查看 kill 命令。
    3. @@ -203,7 +179,7 @@
    - - + + \ No newline at end of file diff --git a/c/tree.html b/c/tree.html index 8d62ce2394..3d746783dd 100644 --- a/c/tree.html +++ b/c/tree.html @@ -10,7 +10,7 @@ tree 命令,Linux tree 命令详解:树状图列出目录的内容 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    tree

    +
    +

    tree

    树状图列出目录的内容

    -

    补充说明

    +

    补充说明

    tree命令 以树状图列出目录的内容。

    -

    语法

    +

    语法

    tree(选项)(参数)
     
    -

    选项

    +

    选项

    ------- 列表选项 -------
     -a            # 显示所有文件和目录。
     -d            # 显示目录名称而非文件。
    @@ -123,13 +115,9 @@
     --help        # 打印使用帮助信息。
     --            # Options processing terminator.
     
    -

    参数

    +

    参数

    目录:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

    -

    实例

    +

    实例

    列出目录/private/ 第一级文件名

    tree  /private/ -L 1
     /private/
    @@ -182,7 +170,7 @@ tree -L 2 >
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/true.html b/c/true.html
    index 2971554f28..9f4d0a9946 100644
    --- a/c/true.html
    +++ b/c/true.html
    @@ -10,7 +10,7 @@
         
         true 命令,Linux true 命令详解:返回状态为成功。 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,29 +50,19 @@
     
     
     
    -
    -

    true

    +
    +

    true

    返回状态为成功。

    -

    概要

    +

    概要

    true
     
    -

    主要用途

    +

    主要用途

    • 用于和其他命令进行逻辑运算。
    -

    返回值

    +

    返回值

    返回状态总是成功;返回值为0。

    -

    例子

    +

    例子

    # 当你的脚本设置set -e时,任何返回值为失败的命令都会使得脚本退出。
     set -e
     # 如何临时跳过呢?下面的语句使用逻辑或操作符连接true,返回值一定为真。
    @@ -80,9 +70,7 @@ some_command || 
     
     # 当然,和python的pass一样,也可以用作条件语句临时占位。
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -111,7 +99,7 @@ some_command ||
    - - + + \ No newline at end of file diff --git a/c/tty.html b/c/tty.html index 78f0f8aa7b..6c59d0010a 100644 --- a/c/tty.html +++ b/c/tty.html @@ -10,7 +10,7 @@ tty 命令,Linux tty 命令详解:显示连接到当前标准输入的终端设备文件名 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    tty

    +
    +

    tty

    显示连接到当前标准输入的终端设备文件名

    -

    概要

    +

    概要

    tty [option] ...
     
    -

    主要用途

    +

    主要用途

    • 显示连接到当前标准输入的终端设备文件名,当标准输入不是终端时打印 "not a tty"。
    -

    选项

    +

    选项

    -s, --silent, --quiet    不打印任何信息,只返回退出状态。
     --help                   显示帮助信息并退出。
     --version                显示版本信息并退出。
     
    -

    返回值

    +

    返回值

    当使用 -s, --silent, --quiet 时,返回码为 0 表示标准输入是终端,返回码为 1 表示标准输入不是终端,返回码为 2 表示选项错误,返回码为 3 表示有写错误发生。

    -

    例子

    +

    例子

    显示连接到当前标准输入的终端设备文件名。

    [root@localhost ~]# tty
     /dev/pts/2
    @@ -88,9 +76,7 @@
       
    # 注意是筛选 TTY 列。
     ps -ef | egrep "pts/2 " | grep -v grep
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 ttyinfo coreutils 'tty invocation'
    @@ -119,7 +105,7 @@
    - - + + \ No newline at end of file diff --git a/c/type.html b/c/type.html index 134cb4a45f..553f80983a 100644 --- a/c/type.html +++ b/c/type.html @@ -10,7 +10,7 @@ type 命令,Linux type 命令详解:显示指定命令的类型。 - Linux 命令搜索引擎 - + @@ -50,44 +50,30 @@ -
    -

    type

    +
    +

    type

    显示指定命令的类型。

    -

    概要

    +

    概要

     type [-afptP] name [name ...]
     
    -

    主要用途

    +

    主要用途

    • 显示要查找的命令的信息。
    • 控制查找范围和行为。
    • 显示要查找的命令优先级最高的类型。
    -

    选项

    +

    选项

    -a:在环境变量PATH中查找并显示所有包含name的可执行文件路径;当'-p'选项没有同时给出时,如果在别名、关键字,函数,内建的信息中存在name,则一并显示。
     -f:排除对shell函数的查找。
     -p:如果name在执行'type -t name'返回的不是'file',那么什么也不返回;否则会在环境变量PATH中查找并返回可执行文件路径。
     -P:即使要查找的name是别名、内建、函数中的一个,仍然会在环境变量PATH中查找并返回可执行文件路径。
     -t:根据name的类型返回一个单词(别名,关键字,函数,内建,文件),否则返回空值。
     
    -

    参数

    +

    参数

    name:要查找的命令,可以为多个。

    -

    返回值

    +

    返回值

    当指定的命令可以找到时返回成功,如果有没找到的返回失败。

    -

    例子

    +

    例子

    接下来要用到的例子假设'~/.bashrc'文件定义了以下的内容:
     
     alias ls='ls --color=auto'
    @@ -157,9 +143,7 @@ keyword
     # 输出
     file
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

      @@ -193,7 +177,7 @@ keyword
    - - + + \ No newline at end of file diff --git a/c/ulimit.html b/c/ulimit.html index 1a0dd59918..abfb2048a5 100644 --- a/c/ulimit.html +++ b/c/ulimit.html @@ -10,7 +10,7 @@ ulimit 命令,Linux ulimit 命令详解:控制shell程序的资源 - Linux 命令搜索引擎 - + @@ -50,27 +50,19 @@ -
    -

    ulimit

    +
    +

    ulimit

    控制shell程序的资源

    -

    补充说明

    +

    补充说明

    ulimit命令 用来限制系统用户对shell资源的访问。如果不懂什么意思,下面一段内容可以帮助你理解:

    假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。

    而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大 小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联 系。这时,ulimit 可以起到很大的作用,它是一种简单并且有效的实现资源限制的方式。

    ulimit 用于限制 shell 启动进程所占用的资源,支持以下各种类型的限制:所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户的最大线程数、Shell 进程所能使用的最大虚拟内存。同时,它支持硬资源和软资源的限制。

    作为临时限制,ulimit 可以作用于通过使用其命令登录的 shell 会话,在会话终止时便结束限制,并不影响于其他 shell 会话。而对于长期的固定限制,ulimit 命令语句又可以被添加到由登录 shell 读取的文件中,作用于特定的 shell 用户。

    -

    语法

    +

    语法

    ulimit(选项)
     
    -

    选项

    +

    选项

    -a:显示目前资源限制的设定;
     -c <core文件上限>:设定core文件的最大值,单位为区块;
     -d <数据节区大小>:程序数据节区的最大值,单位为KB;
    @@ -86,9 +78,7 @@
     -u <程序数目>:用户最多可开启的程序数目;
     -v <虚拟内存大小>:指定可使用的虚拟内存上限,单位为KB。
     
    -

    实例

    +

    实例

    [root@localhost ~]# ulimit -a
     core file size          (blocks, -c) 0           #core文件的最大值为100 blocks。
     data seg size           (kbytes, -d) unlimited   #进程的数据段可以任意大。
    @@ -132,7 +122,7 @@ virtual memory          (kbytes, -v
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/umask.html b/c/umask.html
    index a22ef40ab2..96f3eabf28 100644
    --- a/c/umask.html
    +++ b/c/umask.html
    @@ -10,7 +10,7 @@
         
         umask 命令,Linux umask 命令详解:显示或设置创建文件的权限掩码。 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,41 +50,27 @@
     
     
     
    -
    -

    umask

    +
    +

    umask

    显示或设置创建文件的权限掩码。

    -

    概要

    +

    概要

    umask [-p] [-S] [mode]
     
    -

    主要用途

    +

    主要用途

    • 显示当前的文件权限掩码。
    • 通过八进制数的方式设置创建文件的权限掩码。
    • 通过符号组合的方式设置创建文件的权限掩码。
    -

    参数

    +

    参数

    mode(可选):八进制数或符号组合。

    -

    选项

    +

    选项

    -p:当没有参数时指定该选项,执行产生的输出格式可复用为输入;
     -S:以符号组合的方式输出创建文件的权限掩码,不使用该选项时以八进制数的形式输出。
     
    -

    返回值

    +

    返回值

    返回状态为成功除非给出了非法选项或非法参数。

    -

    例子

    +

    例子

    以下的例子均假设文件权限掩码为0022。

    # 以八进制数的形式输出创建文件的权限掩码。
     umask -p
    @@ -135,9 +121,7 @@
     # 查看权限,发现执行权限的设置可以起作用。
     stat newdir
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

      @@ -174,7 +158,7 @@
    - - + + \ No newline at end of file diff --git a/c/umount.html b/c/umount.html index 5a188a4186..7ec3cc0689 100644 --- a/c/umount.html +++ b/c/umount.html @@ -10,7 +10,7 @@ umount 命令,Linux umount 命令详解:用于卸载已经加载的文件系统 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    umount

    +
    +

    umount

    用于卸载已经加载的文件系统

    -

    补充说明

    +

    补充说明

    umount命令 用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。

    -

    语法

    +

    语法

    umount(选项)(参数)
     
    -

    选项

    +

    选项

    -a:卸除/etc/mtab中记录的所有文件系统;
     -h:显示帮助;
     -n:卸除时不要将信息存入/etc/mtab文件中;
    @@ -75,13 +67,9 @@
     -v:执行时显示详细的信息;
     -V:显示版本信息。
     
    -

    参数

    +

    参数

    文件系统:指定要卸载的文件系统或者其对应的设备文件名。

    -

    实例

    +

    实例

    下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:

    通过设备名卸载

    umount -v /dev/sda1
    @@ -132,7 +120,7 @@ umount: /mnt/mymount: device is busy
     
    - - + + \ No newline at end of file diff --git a/c/unalias.html b/c/unalias.html index 1d9c02fd7a..24ca5b755c 100644 --- a/c/unalias.html +++ b/c/unalias.html @@ -10,7 +10,7 @@ unalias 命令,Linux unalias 命令详解:删除由alias设置的别名 - Linux 命令搜索引擎 - + @@ -50,39 +50,25 @@ -
    -

    unalias

    +
    +

    unalias

    删除由alias设置的别名

    -

    概要

    +

    概要

    unalias [-a] name [name ...]
     
    -

    主要用途

    +

    主要用途

    • 删除一个或多个别名。
    • 删除全部已定义的别名。
    -

    选项

    +

    选项

    -a:删除全部已定义的别名。
     
    -

    参数

    +

    参数

    name:指定要删除的一个或多个已定义的别名。

    -

    返回值

    +

    返回值

    unalias返回true除非您要删除的别名未定义。

    -

    例子

    +

    例子

    # 删除全部已定义的别名
     unalias -a
     
    @@ -90,9 +76,7 @@
     unalias vi
     unalias ls grep
     
    -

    错误用法

    +

    错误用法

    • 要删除的别名未定义。

      @@ -101,9 +85,7 @@

      不使用-a选项时没有传递name参数。

    -

    注意

    +

    注意

    1. 执行脚本时请注意:
    @@ -144,7 +126,7 @@
    - - + + \ No newline at end of file diff --git a/c/uname.html b/c/uname.html index b5b3899b04..5fad8cfbcd 100644 --- a/c/uname.html +++ b/c/uname.html @@ -10,7 +10,7 @@ uname 命令,Linux uname 命令详解:打印系统信息。 - Linux 命令搜索引擎 - + @@ -50,19 +50,13 @@ -
    -

    uname

    +
    +

    uname

    打印系统信息。

    -

    概要

    +

    概要

    uname [OPTION]...
     
    -

    主要用途

    +

    主要用途

    • 打印机器和操作系统的信息。
    • 当没有选项时,默认启用 -s 选项。
    • @@ -71,9 +65,7 @@ 机器名称 处理器 硬件平台 操作系统。
    -

    选项

    +

    选项

    -a, --all                  按顺序打印全部信息,如果 -p 和 -i 的信息是未知,那么省略。
     -s, --kernel-name          打印内核名称。
     -n, --nodename             打印网络节点主机名称。
    @@ -86,13 +78,9 @@
     --help                     显示帮助信息并退出。
     --version                  显示版本信息并退出。
     
    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    # 单独使用uname命令时相当于uname -s
     [root@localhost ~]# uname
     Linux
    @@ -126,9 +114,7 @@ i386
     [root@localhost ~]# uname -o
     GNU/Linux
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 unameinfo coreutils 'uname invocation'
    @@ -157,7 +143,7 @@ GNU/Linux
    - - + + \ No newline at end of file diff --git a/c/unarj.html b/c/unarj.html index e73889d327..c9893ee239 100644 --- a/c/unarj.html +++ b/c/unarj.html @@ -10,7 +10,7 @@ unarj 命令,Linux unarj 命令详解:解压缩由arj命令创建的压缩包 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    unarj

    +
    +

    unarj

    解压缩由arj命令创建的压缩包

    -

    补充说明

    +

    补充说明

    unarj命令 用来解压缩由arj命令创建的压缩包。

    -

    语法

    +

    语法

    unarj(选项)(参数)
     
    -

    选项

    +

    选项

    e:解压缩.arj文件;
     l:显示压缩文件内所包含的文件;
     t:检查压缩文件是否正确;
     x:解压缩时保留原有的路径。
     
    -

    参数

    +

    参数

    .arj压缩包:指定要解压缩的.arj压缩包。

    @@ -101,7 +91,7 @@ x:解压缩时保留原有的路径。
    - - + + \ No newline at end of file diff --git a/c/uncompress.html b/c/uncompress.html index f664b62272..9e1c703f8a 100644 --- a/c/uncompress.html +++ b/c/uncompress.html @@ -10,7 +10,7 @@ uncompress 命令,Linux uncompress 命令详解:用来解压.Z文件 - Linux 命令搜索引擎 - + @@ -50,34 +50,22 @@ -
    -

    uncompress

    +
    +

    uncompress

    用来解压.Z文件

    -

    补充说明

    +

    补充说明

    uncompress命令 用来解压缩由compress命令压缩后产生的“.Z”压缩包。

    -

    语法

    +

    语法

    uncompress(选项)(参数)
     
    -

    选项

    +

    选项

    -f:不提示用户,强制覆盖掉目标文件;
     -c:将结果送到标准输出,无文件被改变;
     -r:递归的操作方式。
     
    -

    参数

    +

    参数

    文件:指定要压缩的“.Z”压缩包。

    -

    实例

    +

    实例

    先创建一个.Z压缩文件

    compress FileName
     
    @@ -109,7 +97,7 @@
    - - + + \ No newline at end of file diff --git a/c/unexpand.html b/c/unexpand.html index 23ffb2da7f..b8b12ffe29 100644 --- a/c/unexpand.html +++ b/c/unexpand.html @@ -10,7 +10,7 @@ unexpand 命令,Linux unexpand 命令详解:将文件的空白字符转换为制表符 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    unexpand

    +
    +

    unexpand

    将文件的空白字符转换为制表符

    -

    补充说明

    +

    补充说明

    unexpand命令 用于将给定文件中的空白字符(space)转换为制表符(TAB),并把转换结果显示在标准输出设备(显示终端)。

    -

    语法

    +

    语法

    unexpand(选项)(参数)
     
    -

    选项

    +

    选项

    -a或--all:转换文件中所有的空白字符;
     --first-only:仅转换开头的空白字符;
     -t<N>:指定TAB所代表的N个(N为整数)字符数,默认N值是8。
     
    -

    参数

    +

    参数

    文件:指定要转换空白为TAB的文件列表。

    @@ -100,7 +90,7 @@
    - - + + \ No newline at end of file diff --git a/c/uniq.html b/c/uniq.html index 1dbfd35417..4837207393 100644 --- a/c/uniq.html +++ b/c/uniq.html @@ -10,7 +10,7 @@ uniq 命令,Linux uniq 命令详解:显示或忽略重复的行。 - Linux 命令搜索引擎 - + @@ -50,26 +50,18 @@ -
    -

    uniq

    +
    +

    uniq

    显示或忽略重复的行。

    -

    概要

    +

    概要

    uniq [OPTION]... [INPUT [OUTPUT]]
     
    -

    主要用途

    +

    主要用途

    • 将输入文件(或标准输入)中邻近的重复行写入到输出文件(或标准输出)中。
    • 当没有选项时,邻近的重复行将合并为一个。
    -

    选项

    +

    选项

    -c, --count                在每行开头增加重复次数。
     -d, --repeated             所有邻近的重复行只被打印一次。
     -D                         所有邻近的重复行将全部打印。
    @@ -84,18 +76,12 @@
     --help                     显示帮助信息并退出。
     --version                  显示版本信息并退出。
     
    -

    参数

    +

    参数

    INPUT(可选):输入文件,不提供时为标准输入。

    OUTPUT(可选):输出文件,不提供时为标准输出。

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    注意:命令2和命令3结果一样,命令1仅作了相邻行的去重。

    uniq file.txt
     sort file.txt | uniq
    @@ -111,9 +97,7 @@
       

    在文件中找出重复的行:

    sort file.txt | uniq -d
     
    -

    注意

    +

    注意

    1. uniq只检测邻近的行是否重复,sort -u将输入文件先排序然后再处理重复行。

      @@ -147,7 +131,7 @@
    - - + + \ No newline at end of file diff --git a/c/unlink.html b/c/unlink.html index 917258065e..473adda15d 100644 --- a/c/unlink.html +++ b/c/unlink.html @@ -10,7 +10,7 @@ unlink 命令,Linux unlink 命令详解:系统调用函数unlink去删除指定的文件 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    unlink

    +
    +

    unlink

    系统调用函数unlink去删除指定的文件

    -

    补充说明

    +

    补充说明

    unlink命令 用于系统调用函数unlink去删除指定的文件。和rm命令作用一样,都是删除文件。

    -

    语法

    +

    语法

    unlink(选项)(参数)
     
    -

    选项

    +

    选项

    --help:显示帮助;
     --version:显示版本号。
     
    -

    参数

    +

    参数

    文件:指定要删除的文件。

    @@ -99,7 +89,7 @@
    - - + + \ No newline at end of file diff --git a/c/unprotoize.html b/c/unprotoize.html index 4091e527f3..3fce6349f4 100644 --- a/c/unprotoize.html +++ b/c/unprotoize.html @@ -10,7 +10,7 @@ unprotoize 命令,Linux unprotoize 命令详解:删除C语言源代码文件中的函数原型 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    unprotoize

    +
    +

    unprotoize

    删除C语言源代码文件中的函数原型

    -

    补充说明

    +

    补充说明

    unprotoize命令 属于gcc套件,用于删除C语言源代码文件中的函数原型。

    -

    语法

    +

    语法

    unprotoize(选项)(参数)
     
    -

    选项

    +

    选项

    -d:设置需要转换代码的目录;
     -x:转换代码时排除的文件。
     
    -

    参数

    +

    参数

    文件:需要转换代码的C语言源文件。

    @@ -99,7 +89,7 @@
    - - + + \ No newline at end of file diff --git a/c/unrar.html b/c/unrar.html index 798f140775..2bfde3b7c6 100644 --- a/c/unrar.html +++ b/c/unrar.html @@ -10,7 +10,7 @@ unrar 命令,Linux unrar 命令详解:解压rar文件命令,从 rar 压缩包中提取文件 - Linux 命令搜索引擎 - + @@ -50,29 +50,21 @@ -
    -

    unrar

    +
    +

    unrar

    解压rar文件命令,从 rar 压缩包中提取文件

    -

    语法

    +

    语法

    unrar [选项][switch 命令] [文件名...][路径]
     unrar <command> [-<switch 1> -<switch N>] archive [files...] [path...]
     
    -

    安装

    +

    安装

    在 Linux 中输入以下命令下载安装包

    wget https://www.rarlab.com/rar/rarlinux-6.0.2.tar.gz
     
     cd ~/Downloads/
     tar -zxvf rarlinux-6.0.2.tar.gz
     
    -

    选项

    +

    选项

    e             # 解压压缩文件到当前目录
     l[t,b]        # 列出压缩文件[技术信息,简洁]
     p             # 将文件打印到标准输出。
    @@ -80,9 +72,7 @@ t             # 测试压缩文件
     v[t,b]        # 详细列出压缩文件[技术信息,简洁]
     x             # 用绝对路径解压文件
     
    -

    SWITCHES 开关设置

    +

    SWITCHES 开关设置

    注意:每个开关必须用空格分隔。你不能把它们放在一起。

    -av-       # 禁用,真实性验证检查。
     -c-        # 禁用,评论显示
    @@ -105,13 +95,9 @@ x             # 用绝对路径解压文件
     -x@        # 读取要从 stdin 中排除的文件名。
     -y         # 对所有查询都假设为是。
     
    -

    参数

    +

    参数

    目录:指定要显示列表的目录,也可以是具体的文件。

    -

    实例

    +

    实例

    将压缩文件 text.rar 在当前目录下解压缩,并解压完整路径。

    unrar x test.rar
     
    @@ -152,7 +138,7 @@ x # 用绝对路径解压文件
    - - + + \ No newline at end of file diff --git a/c/unset.html b/c/unset.html index 078150d81e..3fa2a99a8d 100644 --- a/c/unset.html +++ b/c/unset.html @@ -10,7 +10,7 @@ unset 命令,Linux unset 命令详解:删除指定的shell变量或函数。 - Linux 命令搜索引擎 - + @@ -50,42 +50,28 @@ -
    -

    unset

    +
    +

    unset

    删除指定的shell变量或函数。

    -

    概要

    +

    概要

    unset [-f] [-v] [-n] [name ...]
     
    -

    主要用途

    +

    主要用途

    • 删除一到多个shell变量(不包括只读变量)。
    • 删除一到多个shell函数。
    • 删除一到多个具有引用属性的变量(如果-n选项存在)。
    -

    选项

    +

    选项

    -f:仅删除函数。
     -v:仅删除变量(不包括只读变量)。
     -n:删除具有引用属性的变量名(如果该选项存在)。
     
    -

    参数

    +

    参数

    name(可选):要删除的变量或函数。

    -

    返回值

    +

    返回值

    返回成功除非选项错误或要删除的变量或函数有只读属性。

    -

    例子

    +

    例子

    # 删除变量。
     declare paper_size='B5'
     unset -v paper_size
    @@ -137,9 +123,7 @@
     # 被引用的变量a被删除
     declare -p a
     
    -

    注意

    +

    注意

    1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
    @@ -168,7 +152,7 @@
    - - + + \ No newline at end of file diff --git a/c/unzip.html b/c/unzip.html index d78a43451c..0ef895f7fe 100644 --- a/c/unzip.html +++ b/c/unzip.html @@ -10,7 +10,7 @@ unzip 命令,Linux unzip 命令详解:用于解压缩由zip命令压缩的压缩包 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    unzip

    +
    +

    unzip

    用于解压缩由zip命令压缩的压缩包

    -

    补充说明

    +

    补充说明

    unzip命令 用于解压缩由zip命令压缩的“.zip”压缩包。

    -

    语法

    +

    语法

    unzip(选项)(参数)
     
    -

    选项

    +

    选项

    -c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;
     -f:更新现有的文件;
     -l:显示压缩文件内所包含的文件;
    @@ -92,13 +84,9 @@
     -x<文件>:指定不要处理.zip压缩文件中的哪些文件;
     -Z:unzip-Z等于执行zipinfo指令。
     
    -

    参数

    +

    参数

    压缩包:指定要解压的“.zip”压缩包。

    -

    实例

    +

    实例

    将压缩文件text.zip在当前目录下解压缩。

    unzip test.zip
     
    @@ -139,7 +127,7 @@
    - - + + \ No newline at end of file diff --git a/c/updatedb.html b/c/updatedb.html index ebfd40c991..a7e734afdc 100644 --- a/c/updatedb.html +++ b/c/updatedb.html @@ -10,7 +10,7 @@ updatedb 命令,Linux updatedb 命令详解:创建或更新slocate命令所必需的数据库文件 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    updatedb

    +
    +

    updatedb

    创建或更新slocate命令所必需的数据库文件

    -

    补充说明

    +

    补充说明

    updatedb命令 用来创建或更新slocate命令所必需的数据库文件。updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入slocate数据库文件中。

    补充说明:slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。

    -

    语法

    +

    语法

    updatedb(选项)
     
    -

    选项

    +

    选项

    -o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件;
     -U<目录>:更新指定目录的slocate数据库;
     -v:显示执行的详细过程。
     
    -

    实例

    +

    实例

    实用updatedb命令的-U选项可以指定要更新slocate数据库的目录。

    updatedb -U /usr/local/  更新指定命令的slocate数据库
     
    @@ -103,7 +93,7 @@
    - - + + \ No newline at end of file diff --git a/c/uptime.html b/c/uptime.html index ce3863b342..19515e6ab9 100644 --- a/c/uptime.html +++ b/c/uptime.html @@ -10,7 +10,7 @@ uptime 命令,Linux uptime 命令详解:查看Linux系统负载信息 - Linux 命令搜索引擎 - + @@ -50,28 +50,18 @@ -
    -

    uptime

    +
    +

    uptime

    查看Linux系统负载信息

    -

    补充说明

    +

    补充说明

    uptime命令 能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

    -

    语法

    +

    语法

    uptime(选项)
     
    -

    选项

    +

    选项

    -V:显示指令的版本信息。
     
    -

    实例

    +

    实例

    使用uptime命令查看系统负载:

    [root@LinServ-1 ~]# uptime -V    #显示uptime命令版本信息
     procps version 3.2.7
    @@ -113,7 +103,7 @@ load average: 0.00, 
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/useradd.html b/c/useradd.html
    index edaf6a6caf..ccd31b643f 100644
    --- a/c/useradd.html
    +++ b/c/useradd.html
    @@ -10,7 +10,7 @@
         
         useradd 命令,Linux useradd 命令详解:创建的新的系统用户 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,24 +50,16 @@
     
     
     
    -
    -

    useradd

    +
    +

    useradd

    创建的新的系统用户

    -

    补充说明

    +

    补充说明

    useradd命令 用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

    在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd命令建立新用户,如此可方便管理员建立用户帐号。在Red Hat Linux中, adduser命令 则是useradd命令的符号连接,两者实际上是同一个指令。

    -

    语法

    +

    语法

    useradd(选项)(参数)
     
    -

    选项

    +

    选项

    -c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
     -d<登入目录>:指定用户登入时的启始目录;
     -D:变更预设值;
    @@ -82,13 +74,9 @@
     -s<shell>:指定用户登入后所使用的shell;
     -u<uid>:指定用户id。
     
    -

    参数

    +

    参数

    用户名:要创建的用户名。

    -

    实例

    +

    实例

    新建用户加入组:

    useradd –g sales jack –G company,employees    //-g:加入主要组、-G:加入次要组
     
    @@ -121,7 +109,7 @@
    - - + + \ No newline at end of file diff --git a/c/userdel.html b/c/userdel.html index 0aace929ee..bfc5004d6c 100644 --- a/c/userdel.html +++ b/c/userdel.html @@ -10,7 +10,7 @@ userdel 命令,Linux userdel 命令详解:用于删除给定的用户以及与用户相关的文件 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    userdel

    +
    +

    userdel

    用于删除给定的用户以及与用户相关的文件

    -

    补充说明

    +

    补充说明

    userdel命令 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

    -

    语法

    +

    语法

    userdel(选项)(参数)
     
    -

    选项

    +

    选项

    -f:强制删除用户,即使用户当前已登录;
     -r:删除用户的同时,删除与用户相关的所有文件。
     
    -

    参数

    +

    参数

    用户名:要删除的用户名。

    -

    实例

    +

    实例

    userdel命令很简单,比如我们现在有个用户linuxde,其家目录位于/var目录中,现在我们来删除这个用户:

    userdel linuxde       # 删除用户linuxde,但不删除其家目录及文件;
     userdel -r linuxde    # 删除用户linuxde,其家目录及文件一并删除;
    @@ -108,7 +96,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/usermod.html b/c/usermod.html index 2a55404d4b..4407bd8d05 100644 --- a/c/usermod.html +++ b/c/usermod.html @@ -10,7 +10,7 @@ usermod 命令,Linux usermod 命令详解:用于修改用户的基本信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    usermod

    +
    +

    usermod

    用于修改用户的基本信息

    -

    补充说明

    +

    补充说明

    usermod命令 用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在server上更动相关的NIS设定。

    -

    语法

    +

    语法

    usermod(选项)(参数)
     
    -

    选项

    +

    选项

    -c<备注>:修改用户帐号的备注文字;
     -d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家目录,通常和-m一起使用;
     -m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。
    @@ -80,13 +72,9 @@
     -u<uid>:修改用户ID;
     -U:解除密码锁定。
     
    -

    参数

    +

    参数

    登录名:指定要修改信息的用户登录名。

    -

    实例

    +

    实例

    将 newuser2 添加到组 staff 中:

    usermod -G staff newuser2
     
    @@ -138,7 +126,7 @@ new_home
    - - + + \ No newline at end of file diff --git a/c/usernetctl.html b/c/usernetctl.html index 5c1496db5f..cffb7648e1 100644 --- a/c/usernetctl.html +++ b/c/usernetctl.html @@ -10,7 +10,7 @@ usernetctl 命令,Linux usernetctl 命令详解:被允许时操作指定的网络接口 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    usernetctl

    +
    +

    usernetctl

    被允许时操作指定的网络接口

    -

    补充说明

    +

    补充说明

    usernetctl命令 在用于被允许时操作指定的网络接口。

    -

    语法

    +

    语法

    usernetctl(参数)
     
    -

    参数

    +

    参数

    • 网络接口:被操纵的网络接口;
    • up:激活网络接口;
    • @@ -98,7 +90,7 @@
    - - + + \ No newline at end of file diff --git a/c/users.html b/c/users.html index c3cda32663..7da9de4820 100644 --- a/c/users.html +++ b/c/users.html @@ -10,7 +10,7 @@ users 命令,Linux users 命令详解:打印当前主机所有登陆用户的名称。 - Linux 命令搜索引擎 - + @@ -50,45 +50,29 @@ -
    -

    users

    +
    +

    users

    打印当前主机所有登陆用户的名称。

    -

    概要

    +

    概要

    users [OPTION]... [FILE]
     
    -

    主要用途

    +

    主要用途

    • 每个显示的用户名对应一个登录会话;如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。
    -

    选项

    +

    选项

    --help       显示帮助信息并退出。
     --version    显示版本信息并退出。
     
    -

    参数

    +

    参数

    FILE(可选):记录用户当前登录情况的文件;默认使用 /var/run/utmp/var/log/wtmp

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    [root@localhost ~]# users
     root root
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 usersinfo coreutils 'users invocation'
    @@ -117,7 +101,7 @@ root root
    - - + + \ No newline at end of file diff --git a/c/uucico.html b/c/uucico.html index 9f69f771f7..ad0113e83c 100644 --- a/c/uucico.html +++ b/c/uucico.html @@ -10,7 +10,7 @@ uucico 命令,Linux uucico 命令详解:UUCP文件传输服务程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    uucico

    +
    +

    uucico

    UUCP文件传输服务程序

    -

    补充说明

    +

    补充说明

    uucico命令 命令UUCP文件传输服务程序。 uucico是用来处理uucp或uux送到队列的文件传输工具。uucico有两种工作模式:主动模式和附属模式。当在主动模式下时,uucico会调用远端主机;在附属模式下时,uucico则接受远端主机的调用。

    -

    语法

    +

    语法

    uucico [-cCDefqvwz][-i<类型>][-I<文件>][-p<连接端口号码>][-][-rl][-s<主机>][-S<主机>][-u<用户>][-x<类型>][--help]
     
    -

    选项

    +

    选项

    -c或--quiet 当不执行任何工作时,不要更改记录文件的内容及更新目前的状态。
     -C或--ifwork 当有工作要执行时,才调用-s或-S参数所指定主机。
     -D或--nodetach 不要与控制终端机离线。
    @@ -86,9 +78,7 @@
     -z或--try-next 当执行不成功时,尝试下一个选择而不结束程序。
     --help 显示帮助,并且结束程序。
     
    -

    实例

    +

    实例

    使用主动模式启动uucico服务。在命令提示符下直接输入如下命令:

    uucico-r1
     
    @@ -118,7 +108,7 @@
    - - + + \ No newline at end of file diff --git a/c/uupick.html b/c/uupick.html index caf461f223..a58b269a53 100644 --- a/c/uupick.html +++ b/c/uupick.html @@ -10,7 +10,7 @@ uupick 命令,Linux uupick 命令详解:命令处理传送进来的文件 - Linux 命令搜索引擎 - + @@ -50,31 +50,21 @@ -
    -

    uupick

    +
    +

    uupick

    命令处理传送进来的文件

    -

    补充说明

    +

    补充说明

    uupick命令 处理传送进来的文件。 当其他主机通过UUCP将文件传送进来时,可利用uupick指令取出这些文件。

    -

    语法

    +

    语法

    uupick [-v][-I<配置文件>][-s<主机>][-x<层级>][--help]
     
    -

    选项

    +

    选项

    -I<配置文件>或--config<配置文件> 指定配置文件。
     -s<主机>或--system<主机> 处理由指定主机传送过来的文件。
     -v或--version 显示版本信息。
     --help 显示帮助。
     
    -

    例子

    +

    例子

    处理由主机localhost传送过来的文件。在命令行直接输入如下命令:

    uupick-s localhost
     
    @@ -104,7 +94,7 @@
    - - + + \ No newline at end of file diff --git a/c/uuto.html b/c/uuto.html index 366d259655..e86dda1d34 100644 --- a/c/uuto.html +++ b/c/uuto.html @@ -10,7 +10,7 @@ uuto 命令,Linux uuto 命令详解:将文件传送到远端的UUCP主机 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    uuto

    +
    +

    uuto

    将文件传送到远端的UUCP主机

    -

    补充说明

    +

    补充说明

    uuto命令 为script文件,它实际上会执行uucp,用来将文件传送到远端UUCP主机,并在完成工作后,以邮件通知远端主机上的用户。

    -

    语法

    +

    语法

    uuto [文件][目的]
     
    -

    例子

    +

    例子

    将文件传送到远程 UUCP 主机 localhost 的 tmp 目录,在命令提示符中直接输入如下命令:

    uuto./testfile localhost/tmp # 将文件传送到远程UUCP 主机localhost的tmp目录 
     
    @@ -96,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/vdfuse.html b/c/vdfuse.html index cd4a0a0e3c..037c953f31 100644 --- a/c/vdfuse.html +++ b/c/vdfuse.html @@ -10,7 +10,7 @@ vdfuse 命令,Linux vdfuse 命令详解:VirtualBox软件挂载VDI分区文件工具 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
    -

    vdfuse

    +
    +

    vdfuse

    VirtualBox软件挂载VDI分区文件工具

    -

    补充说明

    +

    补充说明

    vdfuse命令 是VirtualBox软件挂载VDI分区文件的一个工具,VirtualBox是一款能创建虚拟机的开源软件,vdi是它的默认磁盘格式。

    -

    什么是VirtualBox

    +

    什么是VirtualBox

    VirtualBox是一款功能强大的x86虚拟机软件,它不仅具有丰富的特色,而且性能也很优异。更可喜的是,VirtualBox于数日前走向开源,成为了一个发布在GPL许可之下的自由软件。VirtualBox可以在Linux和Windows主机中运行,并支持在其中安装Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD等系列的客户操作系统。

    在Ubuntu中安装vdfuse,打开终端,输入:

    sudo apt-get install virtualbox-fuse
     
    -

    语法

    +

    语法

    vdfuse [options] -f image-file mountpoint
     
    -

    选项

    +

    选项

    -h 帮助
     -r 只读
     -t 类型 (VDI, VMDK, VHD, or raw; default: auto)
    @@ -85,9 +75,7 @@
     -d debug模式
     

    注意:必须编辑一下/etc/fuse.confand,去掉 "user_allow_other" 前面的注释符号(#),否则不能正确运行。

    -

    实例

    +

    实例

    使用如下如下语句挂载.vdi文件:

    sudo vdfuse -f /path/to/file.vdi /path/to/mountpoint
     
    @@ -120,7 +108,7 @@
    - - + + \ No newline at end of file diff --git a/c/vgchange.html b/c/vgchange.html index 6ce958df52..d37a33f43c 100644 --- a/c/vgchange.html +++ b/c/vgchange.html @@ -10,7 +10,7 @@ vgchange 命令,Linux vgchange 命令详解:修改卷组属性 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
    -

    vgchange

    +
    +

    vgchange

    修改卷组属性

    -

    补充说明

    +

    补充说明

    vgchange命令 用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。处于活动状态的卷组无法被删除,必须使用vgchange命令将卷组设置为非活动状态后才能删除。

    -

    语法

    +

    语法

    vgchange(选项)(参数)
     
    -

    选项

    +

    选项

    -a:设置卷组的活动状态。
     
    -

    参数

    +

    参数

    卷组:指定要设置属性的卷组。

    -

    实例

    +

    实例

    使用vgchange命令将卷组状态改为活动的。在命令行中输入下面的命令:

    [root@localhost ~]# vgchange -ay vg1000     #将卷组"vg1000"设置为活动状态
     
    @@ -107,7 +95,7 @@
    - - + + \ No newline at end of file diff --git a/c/vgconvert.html b/c/vgconvert.html index 766ecd0988..187b707870 100644 --- a/c/vgconvert.html +++ b/c/vgconvert.html @@ -10,7 +10,7 @@ vgconvert 命令,Linux vgconvert 命令详解:转换卷组元数据格式 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
    -

    vgconvert

    +
    +

    vgconvert

    转换卷组元数据格式

    -

    补充说明

    +

    补充说明

    vgconvert命令 用于转换指定LVM卷组的元数据格式,通常将“LVM1”格式的卷组转换为“LVM2”格式。转换卷组元数据前必须保证卷组处于非活动状态,否则无法完成转换操作。

    -

    语法

    +

    语法

    vgconvert(选项)(参数)
     
    -

    选项

    +

    选项

    -M:要转换的卷组格式。
     
    -

    参数

    +

    参数

    卷组:指定要转换格式的卷组。

    -

    实例

    +

    实例

    转换卷组元数据格式前,使用vgchange命令将卷组设置为非活动状态。在命令行中输入下面的命令:

    [root@localhost lvm]# vgchange -an vg1000    #设置卷组状态为非活动状态
     0 logical volume(s) in volume group "vg1000" now active 
    @@ -117,7 +105,7 @@ Volume group vg1000 successfully converted
     
    - - + + \ No newline at end of file diff --git a/c/vgcreate.html b/c/vgcreate.html index 2b78b85ca2..d54bffc6be 100644 --- a/c/vgcreate.html +++ b/c/vgcreate.html @@ -10,7 +10,7 @@ vgcreate 命令,Linux vgcreate 命令详解:用于创建LVM卷组 - Linux 命令搜索引擎 - + @@ -50,37 +50,25 @@ -
    -

    vgcreate

    +
    +

    vgcreate

    用于创建LVM卷组

    -

    补充说明

    +

    补充说明

    vgcreate命令 用于创建LVM卷组。卷组(Volume Group)将多个物理卷组织成一个整体,屏蔽了底层物理卷细节。在卷组上创建逻辑卷时不用考虑具体的物理卷信息。

    -

    语法

    +

    语法

    vgcreate(选项)(参数)
     
    -

    选项

    +

    选项

    -l:卷组上允许创建的最大逻辑卷数;
     -p:卷组中允许添加的最大物理卷数;
     -s:卷组上的物理卷的PE大小。
     
    -

    参数

    +

    参数

    • 卷组名:要创建的卷组名称;
    • 物理卷列表:要加入到卷组中的物理卷列表。
    -

    实例

    +

    实例

    使用vgcreate命令创建卷组 "vg1000",并且将物理卷/dev/sdb1/dev/sdb2添加到卷组中。在命令行中输入下面的命令:

    [root@localhost ~]# vgcreate vg1000 /dev/sdb1 /dev/sdb2  #创建卷组"vg1000"
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/vgdisplay.html b/c/vgdisplay.html index d6cba96bdc..02912d774b 100644 --- a/c/vgdisplay.html +++ b/c/vgdisplay.html @@ -10,7 +10,7 @@ vgdisplay 命令,Linux vgdisplay 命令详解:显示LVM卷组的信息 - Linux 命令搜索引擎 - + @@ -50,33 +50,21 @@ -
    -

    vgdisplay

    +
    +

    vgdisplay

    显示LVM卷组的信息

    -

    补充说明

    +

    补充说明

    vgdisplay命令 用于显示LVM卷组的信息。如果不指定"卷组"参数,则分别显示所有卷组的属性。

    -

    语法

    +

    语法

    vgdisplay(选项)(参数)
     
    -

    选项

    +

    选项

    -A:仅显示活动卷组的属性;
     -s:使用短格式输出的信息。
     
    -

    参数

    +

    参数

    卷组:要显示属性的卷组名称。

    -

    实例

    +

    实例

    使用vgdisplay命令显示存在的卷组"vg1000"的属性。在命令行中输入下面的命令:

    [root@localhost ~]# vgdisplay vg1000     #显示卷组"vg1000"的属性
     
    @@ -112,7 +100,7 @@
    - - + + \ No newline at end of file diff --git a/c/vgextend.html b/c/vgextend.html index de7bf6cbe5..6cda4f37b9 100644 --- a/c/vgextend.html +++ b/c/vgextend.html @@ -10,7 +10,7 @@ vgextend 命令,Linux vgextend 命令详解:向卷组中添加物理卷 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    vgextend

    +
    +

    vgextend

    向卷组中添加物理卷

    -

    补充说明

    +

    补充说明

    vgextend命令 用于动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量。LVM卷组中的物理卷可以在使用vgcreate命令创建卷组时添加,也可以使用vgextend命令动态的添加。

    -

    语法

    +

    语法

    vgextend(选项)(参数)
     
    -

    选项

    +

    选项

    -d:调试模式;
     -t:仅测试。
     
    -

    参数

    +

    参数

    • 卷组:指定要操作的卷组名称;
    • 物理卷列表:指定要添加到卷组中的物理卷列表。
    -

    实例

    +

    实例

    使用vgextend命令向卷组"vg2000"中添加物理卷。在命令行中输入下面的命令:

    [root@localhost ~]# vgextend vg2000 /dev/sdb2     #将物理卷"/dev/sdb2"加入卷组"vg2000"
     
    @@ -111,7 +99,7 @@
    - - + + \ No newline at end of file diff --git a/c/vgreduce.html b/c/vgreduce.html index 450bc134f7..46494c6ebb 100644 --- a/c/vgreduce.html +++ b/c/vgreduce.html @@ -10,7 +10,7 @@ vgreduce 命令,Linux vgreduce 命令详解:从卷组中删除物理卷 - Linux 命令搜索引擎 - + @@ -50,36 +50,24 @@ -
    -

    vgreduce

    +
    +

    vgreduce

    从卷组中删除物理卷

    -

    补充说明

    +

    补充说明

    vgreduce命令 通过删除LVM卷组中的物理卷来减少卷组容量。不能删除LVM卷组中剩余的最后一个物理卷。

    -

    语法

    +

    语法

    vgreduce(选项)(参数)
     
    -

    选项

    +

    选项

    -a:如果命令行中没有指定要删除的物理卷,则删除所有的空物理卷;
     --removemissing:删除卷组中丢失的物理卷,使卷组恢复正常状态。
     
    -

    参数

    +

    参数

    • 卷组:指定要操作的卷组名称;
    • 物理卷列表:指定要删除的物理卷列表。
    -

    实例

    +

    实例

    使用vgreduce命令从卷组"vg2000"中移除物理卷/dev/sdb2。在命令行中输入下面的命令:

    [root@localhost ~]# vgreduce vg2000 /dev/sdb2    #将物理卷"/dev/sdb2"从卷组"vg2000"中删除
     
    @@ -111,7 +99,7 @@
    - - + + \ No newline at end of file diff --git a/c/vgremove.html b/c/vgremove.html index acd574d18c..de771ac0e9 100644 --- a/c/vgremove.html +++ b/c/vgremove.html @@ -10,7 +10,7 @@ vgremove 命令,Linux vgremove 命令详解:用于用户删除LVM卷组 - Linux 命令搜索引擎 - + @@ -50,32 +50,20 @@ -
    -

    vgremove

    +
    +

    vgremove

    用于用户删除LVM卷组

    -

    补充说明

    +

    补充说明

    vgremove命令 用于用户删除LVM卷组。当要删除的卷组上已经创建了逻辑卷时,vgremove命令需要进行确认删除,防止误删除数据。

    -

    语法

    +

    语法

    vgremove(选项)(参数)
     
    -

    选项

    +

    选项

    -f:强制删除。
     
    -

    参数

    +

    参数

    卷组:指定要删除的卷组名称。

    -

    实例

    +

    实例

    使用vgremove命令删除LVM卷组"vg1000"。在命令行中输入下面的命令:

    [root@localhost ~]# vgremove vg1000    #删除卷组"vg1000"
     Volume group "vg1000" successfully removed
    @@ -105,7 +93,7 @@ Volume group "vg1000" successfully removed
     
    - - + + \ No newline at end of file diff --git a/c/vgrename.html b/c/vgrename.html index 32cdcb16b3..9f6e22fa33 100644 --- a/c/vgrename.html +++ b/c/vgrename.html @@ -10,7 +10,7 @@ vgrename 命令,Linux vgrename 命令详解:使用vgrename命令可以重命名卷组的名称 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    vgrename

    +
    +

    vgrename

    使用vgrename命令可以重命名卷组的名称

    -

    补充说明

    +

    补充说明

    grename命令 可以重命名卷组的名称。

    -

    语法

    +

    语法

    vgrename [选项] [旧卷组路径|旧卷组名称|旧卷组UUID] [新卷组路径|新卷组名称]
     
    -

    选项

    +

    选项

    -d 启用调试模式
     -t 启用测试模式
     
    -

    例子

    +

    例子

    重命名卷组/dev/vg1为/dev/vg2。

    [root@localhost ~]# vgrename /dev/vg1 /dev/vg2
       Volume group "vg1" successfullyrenamed to "vg2"
    @@ -106,7 +96,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/vgscan.html b/c/vgscan.html index a2962dd85b..026760a373 100644 --- a/c/vgscan.html +++ b/c/vgscan.html @@ -10,7 +10,7 @@ vgscan 命令,Linux vgscan 命令详解:扫描并显示系统中的卷组 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    vgscan

    +
    +

    vgscan

    扫描并显示系统中的卷组

    -

    补充说明

    +

    补充说明

    vgscan命令 查找系统中存在的LVM卷组,并显示找到的卷组列表。vgscan命令仅显示找到的卷组的名称和LVM元数据类型,要得到卷组的详细信息需要使用vgdisplay命令。

    -

    语法

    +

    语法

    vgscan(选项)
     
    -

    选项

    +

    选项

    -d:调试模式;
     --ignorerlockingfailure:忽略锁定失败的错误。
     
    -

    实例

    +

    实例

    使用vgscan命令扫描系统中所有的卷组。在命令行中输入下面的命令:

    [root@localhost ~]# vgscan     #扫描并显示LVM卷组列表
     
    @@ -106,7 +96,7 @@ Found volume group "vg1000" using metadata - - + + \ No newline at end of file diff --git a/c/vi.html b/c/vi.html index 0fbec1d664..6efebd543c 100644 --- a/c/vi.html +++ b/c/vi.html @@ -10,7 +10,7 @@ vi 命令,Linux vi 命令详解:功能强大的纯文本编辑器 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    vi

    +
    +

    vi

    功能强大的纯文本编辑器

    -

    补充说明

    +

    补充说明

    vi命令 是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。

    vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。

    vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入。常用内置命令如下:

    @@ -96,14 +92,10 @@ O:在当前行前面插入一空行; :set number:在命令模式下,用于在最左端显示行号; :set nonumber:在命令模式下,用于在最左端不显示行号;
    -

    语法

    +

    语法

    vi(选项)(参数)
     
    -

    选项

    +

    选项

    +<行号>:从指定行号的行开始显示文本内容;
     -b:以二进制模式打开文件,用于编辑二进制文件和可执行文件;
     -c<指令>:在完成对第一个文件编辑任务后,执行给出的指令;
    @@ -116,13 +108,9 @@ O:在当前行前面插入一空行;
     -R:以只读方式打开文件;
     -s:安静模式,不现实指令的任何错误信息。
     
    -

    参数

    +

    参数

    文件列表:指定要编辑的文件列表。多个文件之间使用空格分隔开。

    -

    知识扩展

    +

    知识扩展

    vi编辑器有三种工作方式:命令方式、输入方式和ex转义方式。通过相应的命令或操作,在这三种工作方式之间可以进行转换。

    命令方式

    在Shell提示符后输入命令vi,进入vi编辑器,并处于vi的命令方式。此时,从键盘上输入的任何字符都被作为编辑命令来解释,例如,a(append)表示附加命令,i(insert)表示插入命令,x表示删除字符命令等。如果输入的字符不是vi的合法命令,则机器发出“报警声”,光标不移动。另外,在命令方式下输入的字符(即vi命令)并不在屏幕上显示出来,例如,输入i,屏幕上并无变化,但通过执行i命令,编辑器的工作方式却发生变化:由命令方式变为输入方式。

    @@ -160,7 +148,7 @@ O:在当前行前面插入一空行;
    - - + + \ No newline at end of file diff --git a/c/vmstat.html b/c/vmstat.html index 83fe15b145..fe5e529618 100644 --- a/c/vmstat.html +++ b/c/vmstat.html @@ -10,7 +10,7 @@ vmstat 命令,Linux vmstat 命令详解:显示虚拟内存状态 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    vmstat

    +
    +

    vmstat

    显示虚拟内存状态

    -

    补充说明

    +

    补充说明

    vmstat命令 的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

    -

    语法

    +

    语法

    vmstat(选项)(参数)
     
    -

    选项

    +

    选项

    -a:显示活动内页;
     -f:显示启动后创建的进程总数;
     -m:显示slab信息;
    @@ -76,16 +68,12 @@
     -p:显示指定的硬盘分区状态;
     -S:输出信息的单位。
     
    -

    参数

    +

    参数

    • 事件间隔:状态信息刷新的时间间隔;
    • 次数:显示报告的次数。
    -

    实例

    +

    实例

    vmstat 3
     procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
      r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
    @@ -167,7 +155,7 @@ procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
     
    - - + + \ No newline at end of file diff --git a/c/volname.html b/c/volname.html index 547e2d85ee..2e2a7f3b2f 100644 --- a/c/volname.html +++ b/c/volname.html @@ -10,7 +10,7 @@ volname 命令,Linux volname 命令详解:显示指定的ISO-9660格式的设备的卷名称 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    volname

    +
    +

    volname

    显示指定的ISO-9660格式的设备的卷名称

    -

    补充说明

    +

    补充说明

    volname命令 用于显示指定的“ISO-9660”格式的设备的卷名称,通常这种格式的设备为光驱。

    -

    语法

    +

    语法

    volname(参数)
     
    -

    参数

    +

    参数

    设备文件名:指定要显示卷名称的设备。

    @@ -93,7 +85,7 @@
    - - + + \ No newline at end of file diff --git a/c/w.html b/c/w.html index cbe1cbf95e..351af79ee2 100644 --- a/c/w.html +++ b/c/w.html @@ -10,7 +10,7 @@ w 命令,Linux w 命令详解:显示目前登入系统的用户信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    w

    +
    +

    w

    显示目前登入系统的用户信息

    -

    补充说明

    +

    补充说明

    w命令 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

    -

    语法

    +

    语法

    w(选项)(参数)
     
    -

    选项

    +

    选项

     -h, --no-header     不打印头信息;
      -u, --no-current    当显示当前进程和cpu时间时忽略用户名;
      -s, --short         使用短输出格式;
    @@ -77,13 +69,9 @@
          --help     显示此帮助并退出
      -V, --version  显示版本信息。
     
    -

    参数

    +

    参数

    用户:仅显示指定用户。

    -

    实例

    +

    实例

    w
      20:39:37 up 136 days,  3:58,  1 user,  load average: 0.00, 0.00, 0.00
     USER     TTY      FROM              login@   IDLE   JCPU   PCPU WHAT
    @@ -114,7 +102,7 @@ root     pts/0    222.94.97.122    
     
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/wait.html b/c/wait.html
    index f4661884b0..6dc05ad1b3 100644
    --- a/c/wait.html
    +++ b/c/wait.html
    @@ -10,7 +10,7 @@
         
         wait 命令,Linux wait 命令详解:等待进程执行完后返回 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,27 +50,17 @@
     
     
     
    -
    -

    wait

    +
    +

    wait

    等待进程执行完后返回

    -

    补充说明

    +

    补充说明

    wait命令 用来等待指令的指令,直到其执行完毕后返回终端。该指令常用于shell脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务。该指令等待作业时,在作业标识号前必须添加百分号"%"。

    -

    语法

    +

    语法

    wait(参数)
     
    -

    参数

    +

    参数

    进程或作业标示:指定进程号或者作业号。

    -

    实例

    +

    实例

    使用命令wait等待作业号为1的作业完成后再返回,输入如下命令:

    wait %1       #等待作业号为3的作业完成 
     
    @@ -102,7 +92,7 @@
    - - + + \ No newline at end of file diff --git a/c/wall.html b/c/wall.html index b6e1a70c8f..e94be2f1d8 100644 --- a/c/wall.html +++ b/c/wall.html @@ -10,7 +10,7 @@ wall 命令,Linux wall 命令详解:向系统当前所有打开的终端上输出信息 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    wall

    +
    +

    wall

    向系统当前所有打开的终端上输出信息

    -

    补充说明

    +

    补充说明

    wall命令 用于向系统当前所有打开的终端上输出信息。通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。

    -

    语法

    +

    语法

    wall(参数)
     
    -

    参数

    +

    参数

    消息:指定广播消息。

    -

    实例

    +

    实例

    [root@localhost ~]# wall this is a test line
     
     Broadcast message from root (pts/1) (Fri Dec 20 11:36:51 2013):
    @@ -102,7 +92,7 @@ this is a test line
     
    - - + + \ No newline at end of file diff --git a/c/watch.html b/c/watch.html index 6749dc8429..0257d9c3c7 100644 --- a/c/watch.html +++ b/c/watch.html @@ -10,7 +10,7 @@ watch 命令,Linux watch 命令详解:可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    watch

    +
    +

    watch

    可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令

    -

    补充说明

    +

    补充说明

    watch命令 以周期性的方式执行给定的指令,指令输出以全屏方式显示。watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。

    -

    语法

    +

    语法

    watch(选项)(参数)
     
    -

    选项

    +

    选项

    -n # 或--interval  watch缺省每2秒运行一下程序,可以用-n或-interval来指定间隔的时间。
     -d # 或--differences  用-d或--differences 选项watch 会高亮显示变化的区域。 而-d=cumulative选项会把变动过的地方(不管最近的那次有没有变动)都高亮显示出来。
     -t # 或-no-title  会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。
     -h, --help # 查看帮助文档
     
    -

    参数

    +

    参数

    指令:需要周期性执行的指令。

    -

    实例

    +

    实例

    watch -n 1 -d netstat -ant       # 命令:每隔一秒高亮显示网络链接数的变化情况
     watch -n 1 -d 'pstree|grep http' # 每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加''将命令区域归整。
     watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l' # 实时查看模拟攻击客户机建立起来的连接数
    @@ -118,7 +106,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/wc.html b/c/wc.html index 8d16c866af..bea399b377 100644 --- a/c/wc.html +++ b/c/wc.html @@ -10,7 +10,7 @@ wc 命令,Linux wc 命令详解:统计文件的字节数、字数、行数 - Linux 命令搜索引擎 - + @@ -50,25 +50,17 @@ -
    -

    wc

    +
    +

    wc

    统计文件的字节数、字数、行数

    -

    补充说明

    +

    补充说明

    wc命令 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。

    -

    语法

    +

    语法

    wc(选项)(参数)
     wc [选项]... [文件]...
     wc [选项]... --files0-from=F
     
    -

    选项

    +

    选项

    -c # 统计字节数,或--bytes或——chars:只显示Bytes数;。
     -l # 统计行数,或——lines:只显示列数;。
     -m # 统计字符数。这个标志不能与 -c 标志一起使用。
    @@ -77,13 +69,9 @@
     -help     # 显示帮助信息
     --version # 显示版本信息
     
    -

    参数

    +

    参数

    文件:需要统计的文件列表。

    -

    例子

    +

    例子

    wc -l *       # 统计当前目录下的所有文件行数及总计行数。
     wc -l *.js    # 统计当前目录下的所有 .js 后缀的文件行数及总计行数。
     find  . * | xargs wc -l # 当前目录以及子目录的所有文件行数及总计行数。
    @@ -143,7 +131,7 @@ wc: node_modules: read: Is a directory
     
    - - + + \ No newline at end of file diff --git a/c/wget.html b/c/wget.html index aa6ac4b6ad..1040318dae 100644 --- a/c/wget.html +++ b/c/wget.html @@ -10,7 +10,7 @@ wget 命令,Linux wget 命令详解:Linux系统下载文件工具 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    wget

    +
    +

    wget

    Linux系统下载文件工具

    -

    补充说明

    +

    补充说明

    wget命令 用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

    wget支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。

    用于从网络上下载资源,没有指定目录,下载资源回默认为当前目录。wget虽然功能强大,但是使用起来还是比较简单:

    @@ -68,14 +64,10 @@
  • 设置方便简单 可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标;
  • 程序小,完全免费 程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的。
  • -

    语法

    +

    语法

    wget [参数] [URL地址]
     
    -

    选项

    +

    选项

    启动参数:
     
     -V, –-version 显示wget的版本后退出
    @@ -177,13 +169,9 @@ FTP 选项参数:
     -np, –-no-parent 不要追溯到父目录
     wget -S –-spider url 不下载只显示过程
     
    -

    参数

    +

    参数

    URL:下载指定的URL地址。

    -

    实例

    +

    实例

    使用wget下载单个文件

    wget http://www.jsdig.com/testfile.zip
     
    @@ -325,7 +313,7 @@ url4
    - - + + \ No newline at end of file diff --git a/c/whatis.html b/c/whatis.html index 68aabfb07e..4eb0a696f8 100644 --- a/c/whatis.html +++ b/c/whatis.html @@ -10,7 +10,7 @@ whatis 命令,Linux whatis 命令详解:查询一个命令执行什么功能 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    whatis

    +
    +

    whatis

    查询一个命令执行什么功能

    -

    补充说明

    +

    补充说明

    whatis命令 是用于查询一个命令执行什么功能,并将查询结果打印到终端上。

    whatis命令在用catman -w命令创建的数据库中查找command参数指定的命令、系统调用、库函数或特殊文件名。whatis命令显示手册部分的页眉行。然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。

    -

    语法

    +

    语法

    whatis
     
    -

    实例

    +

    实例

    [root@localhost ~]# whatis ls
     ls                   (1)  - list directory contents
     ls                   (1p)  - list directory contents
    @@ -115,7 +107,7 @@ man.config [man
    -
    -
    +
    +
     
     
    \ No newline at end of file
    diff --git a/c/whereis.html b/c/whereis.html
    index 69ff4b929e..886af57e93 100644
    --- a/c/whereis.html
    +++ b/c/whereis.html
    @@ -10,7 +10,7 @@
         
         whereis 命令,Linux whereis 命令详解:查找二进制程序、代码等相关文件路径 -  Linux 命令搜索引擎
         
    -    
    +    
     
     
     
    @@ -50,25 +50,17 @@
     
     
     
    -
    -

    whereis

    +
    +

    whereis

    查找二进制程序、代码等相关文件路径

    -

    补充说明

    +

    补充说明

    whereis命令 用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

    和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

    -

    语法

    +

    语法

    whereis(选项)(参数)
     
    -

    选项

    +

    选项

    -b:只查找二进制文件;
     -B<目录>:只在设置的目录下查找二进制文件;
     -f:不显示文件名前的路径名称;
    @@ -78,13 +70,9 @@
     -S<目录>只在设置的目录下查找原始代码文件;
     -u:查找不包含指定类型的文件。
     
    -

    参数

    +

    参数

    指令名:要查找的二进制程序、源文件和man手册页的指令名。

    -

    实例

    +

    实例

    将相关的文件都查找出来

    [root@localhost ~]# whereis tomcat
     tomcat:
    @@ -129,7 +117,7 @@ svn:
     
    - - + + \ No newline at end of file diff --git a/c/which.html b/c/which.html index 9caabc1cb9..079ca0da1b 100644 --- a/c/which.html +++ b/c/which.html @@ -10,7 +10,7 @@ which 命令,Linux which 命令详解:查找并显示给定命令的绝对路径 - Linux 命令搜索引擎 - + @@ -50,35 +50,23 @@ -
    -

    which

    +
    +

    which

    查找并显示给定命令的绝对路径

    -

    补充说明

    +

    补充说明

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

    -

    语法

    +

    语法

    which(选项)(参数)
     
    -

    选项

    +

    选项

    -n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
     -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
     -w:指定输出时栏位的宽度;
     -V:显示版本信息。
     
    -

    参数

    +

    参数

    指令名:指令名列表。

    -

    实例

    +

    实例

    查找文件、显示命令路径:

    [root@localhost ~]# which pwd
     /bin/pwd
    @@ -117,7 +105,7 @@ cd: shell built-in command
     
    - - + + \ No newline at end of file diff --git a/c/who.html b/c/who.html index d99c5c8581..3a195b6f7d 100644 --- a/c/who.html +++ b/c/who.html @@ -10,7 +10,7 @@ who 命令,Linux who 命令详解:显示当前所有登陆用户的信息。 - Linux 命令搜索引擎 - + @@ -50,26 +50,18 @@ -
    -

    who

    +
    +

    who

    显示当前所有登陆用户的信息。

    -

    概要

    +

    概要

    who [OPTION]... [file] [am i]
     
    -

    主要用途

    +

    主要用途

    • 当没有给出非选项参数时,按以下字段顺序为每个当前用户打印信息:登录用户名称,终端信息,登录时间,远程主机或X display。
    • 当用户执行 who am i 时,只显示运行该命令的用户的信息。
    -

    选项

    +

    选项

    -a, --all                                等价于调用 '-b -d --login -p -r -t -T -u'。
     -b, --boot                               上次系统启动的时间。
     -d, --dead                               打印 dead 状态的进程。
    @@ -92,17 +84,11 @@
     '-'  禁止写入信息
     '?'  不能查找到终端设备
     
    -

    参数

    +

    参数

    file(可选):指定 file 代替默认的 /var/run/utmp/etc/utmp ;通常使用 /var/log/wtmp 作为参数用于查看过去登陆系统的用户。

    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    [root@localhost ~]# who
     root     pts/0        2013-08-19 15:04 (192.168.0.134)
     root     pts/1        2013-12-20 10:37 (180.111.155.40)
    @@ -120,9 +106,7 @@ root     pts/1        2013-12-20 2013-08-19 15:04 (192.168.0.134)
     root     + pts/1        2013-12-20 10:37 (180.111.155.40)
     
    -

    注意

    +

    注意

    1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 whoinfo coreutils 'who invocation'
    @@ -151,7 +135,7 @@ root + pts/1 2013-12-20 - - + + \ No newline at end of file diff --git a/c/whoami.html b/c/whoami.html index 52b50548a8..1d032329d1 100644 --- a/c/whoami.html +++ b/c/whoami.html @@ -10,7 +10,7 @@ whoami 命令,Linux whoami 命令详解:打印当前有效的用户ID对应的名称 - Linux 命令搜索引擎 - + @@ -50,41 +50,27 @@ -
    -

    whoami

    +
    +

    whoami

    打印当前有效的用户ID对应的名称

    -

    概要

    +

    概要

    whoami [OPTION]...
     
    -

    主要用途

    +

    主要用途

    • 打印当前有效的用户ID对应的名称。
    -

    选项

    +

    选项

    --help       显示帮助信息并退出。
     --version    显示版本信息并退出。
     
    -

    返回值

    +

    返回值

    返回0表示成功,返回非0值表示失败。

    -

    例子

    +

    例子

    [root@localhost ~]# whoami
     root
     
    -

    注意

    +

    注意

    1. 该命令等价于 id -un
    2. 注意区分 whoamilogname 这两个命令;比如我们以用户 root 打开的终端,然后切换到了用户 user2。此时, whoami返回的是当前用户 user2, logname 返回的是 root,大家可以自行实践验证一下。
    3. @@ -115,7 +101,7 @@ root
    - - + + \ No newline at end of file diff --git a/c/write.html b/c/write.html index 98084a4daf..9c24c82b1d 100644 --- a/c/write.html +++ b/c/write.html @@ -10,7 +10,7 @@ write 命令,Linux write 命令详解:向指定登录用户终端上发送信息 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    write

    +
    +

    write

    向指定登录用户终端上发送信息

    -

    补充说明

    +

    补充说明

    write命令 用于向指定登录用户终端上发送信息。通过write命令可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write命令就会将信息传给对方。如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。

    -

    语法

    +

    语法

    write(参数)
     
    -

    参数

    +

    参数

    用户:指定要接受信息的登录用户;
     登陆终端:指定接收信息的用户的登录终端。
     
    -

    实例

    +

    实例

    传信息给Rollaend,此时Rollaend只有一个连线 : 

    write Rollaend
     
    @@ -107,7 +97,7 @@
    - - + + \ No newline at end of file diff --git a/c/xargs.html b/c/xargs.html index c6ada66c0e..cd432d3afa 100644 --- a/c/xargs.html +++ b/c/xargs.html @@ -10,7 +10,7 @@ xargs 命令,Linux xargs 命令详解:给其他命令传递参数的一个过滤器 - Linux 命令搜索引擎 - + @@ -50,18 +50,12 @@ -
    -

    xargs

    +
    +

    xargs

    给其他命令传递参数的一个过滤器

    -

    补充说明

    +

    补充说明

    xargs 命令 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。

    -

    xargs 命令用法

    +

    xargs 命令用法

    xargs 用作替换工具,读取输入数据重新格式化后输出。

    定义一个测试文件,内有多行文本数据:

    cat test.txt
    @@ -77,9 +71,7 @@ u v w x y z
     
     a b c d e f g h i j k l m n o p q r s t u v w x y z
     
    -

    使用 -n 进行多行输出

    +

    使用 -n 进行多行输出

    -n 选项 多行输出:

    cat test.txt | xargs -n3
     
    @@ -93,9 +85,7 @@ s t u
     v w x
     y z
     
    -

    使用 -d 分割输入

    +

    使用 -d 分割输入

    -d 选项 可以自定义一个定界符:

    echo "nameXnameXnameXname" | xargs -dX
     
    @@ -107,9 +97,7 @@ name name name name
     name name
     name name
     
    -

    读取 stdin

    +

    读取 stdin

    读取 stdin,将格式化后的参数传递给命令

    假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:

    #!/bin/bash
    @@ -124,9 +112,7 @@ aaa
     bbb
     ccc
     
    -

    结合 -I 选项

    +

    结合 -I 选项

    xargs 的一个 选项 -I ,使用 -I 指定一个替换字符串{},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

    cat arg.txt | xargs -I {} ./sk.sh -p {} -l
     
    @@ -137,9 +123,7 @@ ccc
       

    复制所有图片文件到 /data/images 目录下:

    ls *.jpg | xargs -n1 -I cp {} /data/images
     
    -

    结合 find 命令使用

    +

    结合 find 命令使用

    xargs 结合 find 使用

    用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:

    find . -type f -name "*.log" -print0 | xargs -0 rm -f
    @@ -151,22 +135,16 @@ ccc
       

    查找所有的 jpg 文件,并且压缩它们:

    find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
     
    -

    打印出执行的命令

    +

    打印出执行的命令

    结合 -t 选项可以打印出 xargs 执行的命令

    ls | xargs -t -I{} echo {}
     

    会输出当前目录下的文件列表和执行的 echo 命令

    -

    使用 -p 选项确认执行的命令

    +

    使用 -p 选项确认执行的命令

    -p 选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用 -p 参数,比如,查找当前目录下 .log 文件,每一次删除都需要确认:

    find . -maxdepth 1 -name "*.log" | xargs -p -I{} rm {}
     
    -

    执行多个命令

    +

    执行多个命令

    使用 -I 选项可以让 xargs 执行多个命令

    cat foo.txt
     one
    @@ -181,16 +159,12 @@ three
     ls
     one two three
     
    -

    其他应用

    +

    其他应用

    xargs 其他应用

    假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs 下载所有链接:

    cat url-list.txt | xargs wget -c
     
    -

    子 Shell(Subshells)

    +

    子 Shell(Subshells)

    运行一个 shell 脚本时会启动另一个命令解释器.,就好像你的命令是在命令行提示下被解释的一样,类似于批处理文件里的一系列命令。每个 shell 脚本有效地运行在父 shell(parent shell) 的一个子进程里。这个父 shell 是指在一个控制终端或在一个 xterm 窗口中给你命令指示符的进程。

    cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5
     
    @@ -213,9 +187,7 @@ COMMAND3 COMMAND6 COMMAND7
    -

    reference

    +

    reference

    @@ -244,7 +216,7 @@ COMMAND7
    - - + + \ No newline at end of file diff --git a/c/xauth.html b/c/xauth.html index 4a52d2ba45..845d8e24bf 100644 --- a/c/xauth.html +++ b/c/xauth.html @@ -10,7 +10,7 @@ xauth 命令,Linux xauth 命令详解:显示和编辑被用于连接X服务器的认证信息 - Linux 命令搜索引擎 - + @@ -50,32 +50,22 @@ -
    -

    xauth

    +
    +

    xauth

    显示和编辑被用于连接X服务器的认证信息

    -

    补充说明

    +

    补充说明

    xauth命令 用于显示和编辑被用于连接X服务器的认证信息。

    -

    语法

    +

    语法

    xauth(选项)(参数)
     
    -

    选项

    +

    选项

    -f:不使用默认的认证文件,而使用指定的认证文件;
     -q:安静模式,不打印未请求的状态信息;
     -v:详细模式,打印指定的各种操作信息;
     -i:忽略认证文件锁定;
     -b:执行任何操作,终端认证文件锁定。
     
    -

    参数

    +

    参数

    • add:添加认证条目到认证文件中;
    • extract:将指定的设备内容加入到指定的密码文件中;
    • @@ -114,7 +104,7 @@
    - - + + \ No newline at end of file diff --git a/c/xclip.html b/c/xclip.html index 4d5a0720e7..2c4c9ec3b0 100644 --- a/c/xclip.html +++ b/c/xclip.html @@ -10,7 +10,7 @@ xclip 命令,Linux xclip 命令详解:管理 X 粘贴板 - Linux 命令搜索引擎 - + @@ -50,14 +50,10 @@ -
    -

    xclip

    +
    +

    xclip

    管理 X 粘贴板

    -

    补充说明

    +

    补充说明

    在 X 系统里面,从一个窗口复制一段文字到另一个窗口,有两套机制,分别是 Selections 和 cut buffers。

    常用的 copy & paste 是利用的 cut buffers 机制;另外用鼠标选中一段文字,然后在另一个窗口按鼠标中键实现复制,利用的是 selections 机制。selection 又可以分为 master 和 slave selection。

    当用鼠标选中一段文件,这段文字就自动被复制到 master selection。然后在另一个地方按鼠标中键,就自动把 master selection 的内容粘贴出来。

    @@ -92,7 +88,7 @@
    - - + + \ No newline at end of file diff --git a/c/xhost.html b/c/xhost.html index 0b148608ff..8a4cbe9f9d 100644 --- a/c/xhost.html +++ b/c/xhost.html @@ -10,7 +10,7 @@ xhost 命令,Linux xhost 命令详解:制哪些X客户端能够在X服务器上显示 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    xhost

    +
    +

    xhost

    制哪些X客户端能够在X服务器上显示

    -

    补充说明

    +

    补充说明

    xhost命令 是X服务器的访问控制工具,用来控制哪些X客户端能够在X服务器上显示。该命令必须从有显示连接的机器上运行。可以通过使用-host参数,从访问列表中除去一个名称。不要从访问列表中除去当前的名称。如果已经这样做了,请在作出任何更改之前注销系统。

    -

    语法

    +

    语法

    xhost(参数)
     
    -

    参数

    +

    参数

    • +:关闭访问控制,允许任何主机访问本地的X服务器;
    • -:打开访问控制,仅允许授权清单中的主机访问本地的X服务器。
    • @@ -101,7 +93,7 @@
    - - + + \ No newline at end of file diff --git a/c/xinit.html b/c/xinit.html index aee0eab486..4e279d6051 100644 --- a/c/xinit.html +++ b/c/xinit.html @@ -10,7 +10,7 @@ xinit 命令,Linux xinit 命令详解:是Linux下X-Window系统的初始化程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    xinit

    +
    +

    xinit

    是Linux下X-Window系统的初始化程序

    -

    补充说明

    +

    补充说明

    xinit命令 是Linux下X-Window系统的初始化程序,主要完成X服务器的初始化设置。

    -

    语法

    +

    语法

    xinit(参数)
     
    -

    参数

    +

    参数

    • 客户端选项:客户端指令及选项;
    • --:用于区分客户端选项和服务器端选项;
    • @@ -97,7 +89,7 @@
    - - + + \ No newline at end of file diff --git a/c/xlsatoms.html b/c/xlsatoms.html index e7f3238896..2ca25366fc 100644 --- a/c/xlsatoms.html +++ b/c/xlsatoms.html @@ -10,7 +10,7 @@ xlsatoms 命令,Linux xlsatoms 命令详解:列出X服务器内部所有定义的原子成分 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    xlsatoms

    +
    +

    xlsatoms

    列出X服务器内部所有定义的原子成分

    -

    补充说明

    +

    补充说明

    xlsatoms命令 用于列出X服务器内部所有定义的原子成分,每个原子成分都有自身的编号。可利用参数设置列表范围,或直接指定欲查询的成分名称。

    -

    语法

    +

    语法

    xlsatoms(选项)
     
    -

    选项

    +

    选项

    • -display<显示器编号>:指定X Server连接的显示器编号,该编号由"0"开始计算,依序递增;
    • -format<输出格式>:设置成分清单的列表格式,您可使用控制字符改变显示样式;
    • @@ -98,7 +90,7 @@
    - - + + \ No newline at end of file diff --git a/c/xlsclients.html b/c/xlsclients.html index ecb2b48066..72048c2944 100644 --- a/c/xlsclients.html +++ b/c/xlsclients.html @@ -10,7 +10,7 @@ xlsclients 命令,Linux xlsclients 命令详解:列出显示器中的客户端应用程序 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    xlsclients

    +
    +

    xlsclients

    列出显示器中的客户端应用程序

    -

    补充说明

    +

    补充说明

    xlsclients命令 用来列出显示器中的客户端应用程序。

    -

    语法

    +

    语法

    xlsclients(选项)
     
    -

    选项

    +

    选项

    -a:列出所有显示器的客户端应用程序信息;
     -display<显示器编号>:指定X Server连接的显示器编号,该编号由"0"开始计算,依序递增;
     -l:使用详细格式列表;
    @@ -97,7 +89,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/xlsfonts.html b/c/xlsfonts.html index fc90bd1506..7cb65aa766 100644 --- a/c/xlsfonts.html +++ b/c/xlsfonts.html @@ -10,7 +10,7 @@ xlsfonts 命令,Linux xlsfonts 命令详解:列出X Server使用的字体 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    xlsfonts

    +
    +

    xlsfonts

    列出X Server使用的字体

    -

    补充说明

    +

    补充说明

    xlsfonts命令 列出X Server使用的字体,也能使用范本样式仅列出的符合条件的字体。

    -

    语法

    +

    语法

    xlsfonts(选项)
     
    -

    选项

    +

    选项

    -l:除字体名称外,同时列出字体的属性;
     -ll:此参数的效果和指定"l"参数类似,但显示更详细的信息;
     -lll:此参数的效果和指定"ll"参数类似,但显示更详细的信息;
    @@ -101,7 +93,7 @@
     
    - - + + \ No newline at end of file diff --git a/c/xset.html b/c/xset.html index 97acd3a2c4..16277f68b7 100644 --- a/c/xset.html +++ b/c/xset.html @@ -10,7 +10,7 @@ xset 命令,Linux xset 命令详解:设置X-Window系统中的用户爱好的实用工具 - Linux 命令搜索引擎 - + @@ -50,29 +50,19 @@ -
    -

    xset

    +
    +

    xset

    设置X-Window系统中的用户爱好的实用工具

    -

    补充说明

    +

    补充说明

    xset命令 是设置X-Window系统中的用户爱好的实用工具。

    -

    语法

    +

    语法

    xset(选项)(参数)
     
    -

    选项

    +

    选项

    -b:蜂鸣器开关设置;
     -c:键盘按键声响设置。
     
    -

    参数

    +

    参数

    • c:键盘按键声响设置;
    • s:屏幕保护程序设置。
    • @@ -102,7 +92,7 @@
    - - + + \ No newline at end of file diff --git a/c/xz.html b/c/xz.html index bf0c7daa28..ae1cf5db74 100644 --- a/c/xz.html +++ b/c/xz.html @@ -10,7 +10,7 @@ xz 命令,Linux xz 命令详解:POSIX 平台开发具有高压缩率的工具 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    xz

    +
    +

    xz

    POSIX 平台开发具有高压缩率的工具

    -

    补充说明

    +

    补充说明

    xz命令 XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩文件更小,而且解压缩速度也很快。最初 XZ Utils 的是基于 LZMA-SDK 开发,但是 LZMA-SDK 包含了一些 WINDOWS 平台的特性,所以 XZ Utils 为以适应 POSIX 平台作了大幅的修改。XZ Utils 的出现也是为了取代 POSIX 系统中旧的 LZMA Utils。

    -

    语法

    +

    语法

    xz(选项)(参数)
     xz [OPTION]... [FILE]...
     
    -

    选项

    +

    选项

    -z, --compress    # 强制压缩
     -d, --decompress, --uncompress
                       # force decompression
    @@ -89,16 +81,12 @@ xz [OPTION# 显示更多帮助(还列出了高级选项)
     -V, --version     # 显示版本号并退出
     
    -

    参数

    +

    参数

    • 源文件:指定连接的源文件。
    • 目标文件:指定源文件的目标连接文件。
    -

    实例

    +

    实例

    压缩一个文件 test.txt,压缩成功后生成 test.txt.xz, 原文件会被删除。

    $ xz test.txt
     $ ls test.txt*
    @@ -152,7 +140,7 @@ $ xz -k --fast xz_pipe_decomp_mini.c
     
    - - + + \ No newline at end of file diff --git a/c/yes.html b/c/yes.html index 02def6c7cc..36834eeff5 100644 --- a/c/yes.html +++ b/c/yes.html @@ -10,7 +10,7 @@ yes 命令,Linux yes 命令详解:重复打印指定字符串 - Linux 命令搜索引擎 - + @@ -50,27 +50,17 @@ -
    -

    yes

    +
    +

    yes

    重复打印指定字符串

    -

    补充说明

    +

    补充说明

    yes命令 在命令行中输出指定的字符串,直到yes进程被杀死。不带任何参数输入yes命令默认的字符串就是y。

    -

    语法

    +

    语法

    yes(参数)
     
    -

    参数

    +

    参数

    字符串:指定要重复打印的字符串。

    -

    实例

    +

    实例

    [root@localhost ~]# yes testline
     
     testline
    @@ -108,7 +98,7 @@ testline
     
    - - + + \ No newline at end of file diff --git a/c/ypdomainname.html b/c/ypdomainname.html index 09074fd77f..1a3384572f 100644 --- a/c/ypdomainname.html +++ b/c/ypdomainname.html @@ -10,7 +10,7 @@ ypdomainname 命令,Linux ypdomainname 命令详解:显示主机的NIS的域名 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
    -

    ypdomainname

    +
    +

    ypdomainname

    显示主机的NIS的域名

    -

    补充说明

    +

    补充说明

    ypdomainname命令 显示主机的NIS的域名。

    -

    语法

    +

    语法

    ypdomainname(选项)
     
    -

    选项

    +

    选项

    -v:详细信息模式。
     
    @@ -94,7 +86,7 @@
    - - + + \ No newline at end of file diff --git a/c/yum.html b/c/yum.html index 026adccea7..d58a23c910 100644 --- a/c/yum.html +++ b/c/yum.html @@ -10,7 +10,7 @@ yum 命令,Linux yum 命令详解:基于RPM的软件包管理器 - Linux 命令搜索引擎 - + @@ -50,24 +50,16 @@ -
    -

    yum

    +
    +

    yum

    基于RPM的软件包管理器

    -

    补充说明

    +

    补充说明

    yum命令 是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

    yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

    -

    语法

    +

    语法

    yum(选项)(参数)
     
    -

    选项

    +

    选项

    -h:显示帮助信息;
     -y:对所有的提问都回答“yes”;
     -c:指定配置文件;
    @@ -78,9 +70,7 @@
     -R:设置yum处理一个命令的最大等待时间;
     -C:完全从缓存中运行,而不去下载或者更新任何头文件。
     
    -

    参数

    +

    参数

    install:安装rpm软件包;
     update:更新rpm软件包;
     check-update:检查是否有可用的更新rpm软件包;
    @@ -95,9 +85,7 @@ localinstall:安装本地的rpm软件包;
     localupdate:显示本地rpm软件包进行更新;
     deplist:显示rpm软件包的所有依赖关系。
     
    -

    实例

    +

    实例

    部分常用的命令包括:

    • 自动搜索最快镜像插件:yum install yum-fastestmirror
    • @@ -181,7 +169,7 @@ yum groupinstall "Chinese Support" - - + + \ No newline at end of file diff --git a/c/zcat.html b/c/zcat.html index db76abac76..9008b42513 100644 --- a/c/zcat.html +++ b/c/zcat.html @@ -10,7 +10,7 @@ zcat 命令,Linux zcat 命令详解:显示压缩包中文件的内容 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      zcat

      +
      +

      zcat

      显示压缩包中文件的内容

      -

      补充说明

      +

      补充说明

      zcat命令 用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。

      -

      语法

      +

      语法

      zcat(选项)(参数)
       
      -

      选项

      +

      选项

      -S:指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项;
       -c:将文件内容写到标注输出;
       -d:执行解压缩操作;
      @@ -79,9 +71,7 @@
       -l:更快的压缩速度;
       -9:更高的压缩比。
       
      -

      参数

      +

      参数

      文件:指定要显示其中文件内容的压缩包。

      @@ -108,7 +98,7 @@
      - - + + \ No newline at end of file diff --git a/c/zfore.html b/c/zfore.html index 14586b5a26..77bfeba9cf 100644 --- a/c/zfore.html +++ b/c/zfore.html @@ -10,7 +10,7 @@ zfore 命令,Linux zfore 命令详解:强制为gzip格式的压缩文件添加.gz后缀 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      zfore

      +
      +

      zfore

      强制为gzip格式的压缩文件添加.gz后缀

      -

      补充说明

      +

      补充说明

      zfore命令 强制为gzip格式的压缩文件添加“.gz”后缀。

      -

      语法

      +

      语法

      zfore(参数)
       
      -

      参数

      +

      参数

      文件列表:指定要添加“.gz”后缀的gzip压缩文件。

      @@ -93,7 +85,7 @@
      - - + + \ No newline at end of file diff --git a/c/zip.html b/c/zip.html index 1812003e1b..f5311f76cd 100644 --- a/c/zip.html +++ b/c/zip.html @@ -10,7 +10,7 @@ zip 命令,Linux zip 命令详解:可以用来解压缩文件 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      zip

      +
      +

      zip

      可以用来解压缩文件

      -

      补充说明

      +

      补充说明

      zip命令 可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。

      -

      语法

      +

      语法

      zip(选项)(参数)
       
      -

      选项

      +

      选项

      -A:调整可执行的自动解压缩文件;
       -b<工作目录>:指定暂时存放文件的目录;
       -c:替每个被压缩的文件加上注释;
      @@ -102,16 +94,12 @@
       -$:保存第一个被压缩文件所在磁盘的卷册名称;
       -<压缩效率>:压缩效率是一个介于1~9的数值。
       
      -

      参数

      +

      参数

      • zip压缩包:指定要创建的zip压缩包;
      • 文件列表:指定要压缩的文件列表。
      -

      实例

      +

      实例

      /home/Blinux/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip:

      zip -q -r html.zip /home/Blinux/html
       
      @@ -139,9 +127,7 @@

      httpdocs 目录忽略的所有文件,并与 .log 结尾的目录下创建所有文件的归档。

      $ zip -r httpdocs.zip httpdocs --exclude "*.log"
       
      -

      问题解决

      +

      问题解决

      CentOS7中命令找不到

      -Bash: Unzip: Command Not Found
       
      @@ -173,7 +159,7 @@
      - - + + \ No newline at end of file diff --git a/c/zipinfo.html b/c/zipinfo.html index 6a0a2e613b..8d8016053f 100644 --- a/c/zipinfo.html +++ b/c/zipinfo.html @@ -10,7 +10,7 @@ zipinfo 命令,Linux zipinfo 命令详解:用来列出压缩文件信息 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      zipinfo

      +
      +

      zipinfo

      用来列出压缩文件信息

      -

      补充说明

      +

      补充说明

      zipinfo命令 用来列出压缩文件信息。执行zipinfo指令可得知zip压缩文件的详细信息。

      -

      语法

      +

      语法

      zipinfo(选项)(参数)
       
      -

      选项

      +

      选项

      -1:只列出文件名称;
       -2:此参数的效果和指定“-1”参数类似,但可搭配“-h”,“-t”和“-z”参数使用;
       -h:只列出压缩文件的文件名称;
      @@ -80,9 +72,7 @@
       -x<范本样式>:不列出符合条件的文件的信息;
       -z:如果压缩文件内含有注释,就将注释显示出来。
       
      -

      参数

      +

      参数

      文件:指定zip格式的压缩包。

      @@ -109,7 +99,7 @@
      - - + + \ No newline at end of file diff --git a/c/zipsplit.html b/c/zipsplit.html index 3e87ead23b..542c8f87de 100644 --- a/c/zipsplit.html +++ b/c/zipsplit.html @@ -10,7 +10,7 @@ zipsplit 命令,Linux zipsplit 命令详解:将较大的zip压缩包分割成各个较小的压缩包 - Linux 命令搜索引擎 - + @@ -50,30 +50,20 @@ -
      -

      zipsplit

      +
      +

      zipsplit

      将较大的zip压缩包分割成各个较小的压缩包

      -

      补充说明

      +

      补充说明

      zipsplit命令 用于将较大的“zip”压缩包分割成各个较小的“zip”压缩包。

      -

      语法

      +

      语法

      zipsplit(选项)(参数)
       
      -

      选项

      +

      选项

      -n:指定分割后每个zip文件的大小;
       -t:报告将要产生的较小的zip文件的大小;
       -b:指定分割后的zip文件的存放位置。
       
      -

      参数

      +

      参数

      文件:指定要分割的zip压缩包。

      @@ -100,7 +90,7 @@
      - - + + \ No newline at end of file diff --git a/c/znew.html b/c/znew.html index 2ad0646bd0..ea2ad04655 100644 --- a/c/znew.html +++ b/c/znew.html @@ -10,7 +10,7 @@ znew 命令,Linux znew 命令详解:将.Z压缩包重新转化为gzip命令压缩的.gz压缩包 - Linux 命令搜索引擎 - + @@ -50,23 +50,15 @@ -
      -

      znew

      +
      +

      znew

      将.Z压缩包重新转化为gzip命令压缩的.gz压缩包

      -

      补充说明

      +

      补充说明

      znew命令 用于将使用compress命令压缩的“.Z”压缩包重新转化为使用gzip命令压缩的“.gz”压缩包。

      -

      语法

      +

      语法

      znew(选项)(参数)
       
      -

      选项

      +

      选项

      -f:# 强制执行转换操作,即是目标“.gz”已经存在;
       -t:# 删除原文件前测试新文件;
       -v:# 显示文件名和每个文件的压缩比;
      @@ -74,9 +66,7 @@
       -P:# 使用管道完成转换操作,以降低磁盘空间使用;
       -K:# 当“.Z”文件比“.gz”文件小时,保留“.Z”文件。
       
      -

      参数

      +

      参数

      文件:指定compress指令压缩生成的“.Z”压缩包。

      @@ -103,7 +93,7 @@
      - - + + \ No newline at end of file diff --git a/hot.html b/hot.html index 9122211fd0..f61f5d038d 100644 --- a/hot.html +++ b/hot.html @@ -10,7 +10,7 @@ 搜索 命令,Linux 搜索 命令详解:最专业的Linux命令大全,命令搜索引擎,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。 - Linux 命令搜索引擎 - + @@ -1218,7 +1218,7 @@
      - - + + \ No newline at end of file diff --git a/index.html b/index.html index 9c48c9ad23..58dcc15862 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ Linux命令搜索引擎 命令,Linux Linux命令搜索引擎 命令详解:最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。 - Linux 命令搜索引擎 - + @@ -61,7 +61,7 @@
    - - + + \ No newline at end of file diff --git a/linux-command.docset.zip b/linux-command.docset.zip index 1a06a34fab3cdc88d6ab62889564c4be91159d1d..3416c2adb18b90e08ae8965f77bf0b6cd284b6c9 100644 GIT binary patch delta 5364807 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⁡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

    ZTf*ZDP-(3(&eu1(b%j~Wfe1KXov>EV6on$Jq_ zVVKt%4aNE8o5QU-=^=ZQ$&rm`KG1h>kf_B%Wk`hn#3r{1$v3r%HT zqkT<(qI(Z$KAE95BhA!^$by+bYAY|AmExjhIeVWnalFw4Q_cA+_=O4p6~D?xDagsk zW<|y72z$u#+L*_?h8iklqDUO;;~XX9#GJMfZifbHsj$p#sxMQppnANI(Vv`ie(Y*X z=tv=b@Bbojph0=;57Z-|<=c}s7=lELDKo*oiCv|aBip7kLspv5Ep+xD(Hzm(x>O># zA%p7C&Lg|bi_WFjncW7^9UEDaeYlC83{35?6jeu1jX`$NH#V1BXq|XqRecxO+y+eN4(FdyX+Pzyx6P+ z+1Q`QR49i-R;2qQaSblgoR@mbx*f@gC`Gdd^EZ)e*D5bF`EGvaz-T}@utFSe={`#_ z6;v{^9unPs4xW4nM7IO7YD%Cmiv%H{%9)n^gN$j`50gPssR+!jKnb1_j3mf1-m8>X z)Wr@$U5r@&chm*6c|~2Hm;ykkEAlt$B35ZCc|~2_|3Y1>!DStPp)MxcUzbsTrNOS4 z@{u0^9T^aEDJ}7H2!iYZ6wsGMxhsRJ7%ezR-!L=D3pv`OD|wNe8X!u~#Qff5m0%uZ zF*ja(P`B+U6{bV--&-@(Jl&|2;t!oq=FXi%F+%B^tPWem^~Un-K3ssY-D(ydXzx{e z$0DH{!&HJ`5cKSkmC8>btzdi{K_|1{@cpV1z={h=h_oi~xY+Z?3VO?*_e&VMGweI^ zK?b8}?5~hxgw!u(Vi<8$G2%B0|=48PP-{h~9u zCLP;y%-iR}HVj`z{?RQ}8iLFv3GTus-4d}b4S$L=q%olbi#a1Y6-Ry*{s7jB{$VN! zihYz8hczS>{7od?XQ~dtaNq-KGa~RScp~IeABBN02g+P7f7Zt#I!X$a3Xg|r?5dfi#(SJ~G+ z;|3cBG($=!i~t$Ptd6)%VxwXH`v%>y=Iv5xkMLl#-t1fPRK# z(Q7vG1G4pKC=mBD-}qP#ybB^BgDXeXz0U%fE{;E@tMs3yYxiHKi~j$|bd`flS5oM> z<{((0cw~Pr4FQKS#7;Oc!9t|t7hLE#p^DJ_hj@GAcbrDPcn8)d7$s~qYDy>vWGxyv zHnSZOl+NBgY=HkG4^|ZpC#X^a%7aZLH>iJ+<_sncp1g_k_ayam1{*z9okLgD`A)Qi z^|PX1yo3tK{yE+#!d*}8D?X$;gOPN}S2EI`+KTTQe6Sn3l0B1D-DjVQI*OIc>*SnP zYn@?P8Z+}o&k5O>&7;EV;U>kUfczmO#DH{=+#2}5$gSf4$SqejklX_PQ*L4ZTW+nq zU&Z;C++u!}TZHlCYIdYS=L>qp!eSG&<2A(KXc7EqmH9esYW`CJ%Aa*hW5M48B7+^J z?EQ#mFl0l{$+J1wZ*PEv5d4qMRb2+`^CGX_O9J~zNj%_K|4wuj|uE+SWae+#u? zEd4f6jE@H!TB4w9s%;K*KrMHq*TgFq}%13?;pb#l_xZizvEh zIZS5a5Yk~a!6L+*0FyhWH8o&JQcwb-hLI4GDF)Q%XUf?ZGAYM;YqN?Pu}Ym5T?1pMxN#vYQxAaf6wH)hIY4F#=68SxmCXQUVqMSA3_9AzV2RLjoaVVs zijTCk+a;*NIu%R}!ZB&m@otbN?8U5EY46EP>E+j@;2^BF=zZ72=G2J-PyRR8713wd zS~ma{dAplGCsvdg-g||O*k{8!Q_>1ig7S&RG7`ruuRJcBI&xxRUr()+sxMR+=h01% zf%Z;1L-sp3v6sXLuQ_vbrJtxD`#pZ(#4kay%IRe+V!_0*}5aq5%p6Jp_EHlQ_WPE)E|SARGhqG&W(IT#W`^Jkf>!k)TFIuX(wwq4M$VPZd_<$MwEP4z_M7iC+m;t#R}qJDw(BV7)R z@_RY+DapL_eWtWHIc%mV2Gvdvqwl~o1{qvnHWf3YI&!d0rKxi0rJVJyh5w$k%zayacj63Qei7 zeD`rJodtf#g>1l3Z8#bI6DcwjF<}vRaNSQV)}$mGQxdF8GTUGh6A12axq-RpNaz(j zArshFZFEs~0Z@V(rv*T^vclcLqw{pSf`pekA?4nM=k( zcq`4h*2|e{(;wRiJ^gI8OLn*Up%L*HVPtVuNOy?*eU=J9I31hLe-0a%KnaVJU(@w2 z%;YU4EnR{H>CuA1W>|uCa6Y-q4J_D>@n2(gPD`cxBi)JdkbNDb!IsjArIvdF9jsag z!8NEUk>?-m?*}y2I~8sW-cpet>gMHVAEyn;w-Oil&NVq*((t)N%s>~Q(_TOMFLwpIWV;aVE~=- zSQX|I5^Jke%?!i{UQKIZmu?qxa$eR;iAO#<+uON9ud>rXXJNnLWD!n(zkZWcxrj(6 ziCwAXZGl87JGq3wl{8BR&d3tZW4=56S`0Tk0D545Uq@RTG`)|ifGh=c3c5%sKUjRqt%6s&|!??Q$Q`}jbhLu5JrWjO-L;0`6DoyL5`M4M;sewplA&dpsq6^ zCsAP2!ge11exc{2mIv1M66iz6%!z1v#A106Ei*>HD%%SDK?fT3qjVfvxKmlL!tr$a z#uoPOF2ZJ(rLP1sf!G(a4J-aF*8Kjvnyg+|=Mr3$&2eAJ>1<0{EeNrki{y?f44Y^v zAw9ki^JZBB{At3%vy%TOz*EZo7r+bo2f!EICkZwF?<7?JYZ7XzpN#;_$NcXkl-WO$P(amX z$=^w+nqF*8>jB1pC!w^4LQ8=xWrj?EdI29anbML8NRoFbCEusrIeyx~A(NZj8~V|S z(}J6?zgG=9NV2kK;5eh}o*@-I&up0uQ*|x!=nJvuz~lU$vn05H2Foo&jQ$6?!Tk?% zO8_A^Z@d2@H%C*K*1wROofQbVeHg98{;k|fH@Xfd$G8b<`6#-rnz@;4bFmgSK5DCi z#n(=I@VVi3r~QInAgW*R61UYIwf=%|lW;3WBy^fsAP&4`VkQE#D#dEv<(>yoO3h#| z%6Gzf&_g+D4{2fv*nHokkzGVm#lbEv{~dd>bf&QC2)VdbVy_N8YfS`*TdvSitTIqhM(|BH#Zue0D!ww+7}RR2z+-mkdA z_MEUp`RMf}AEkC6x=s3>;n-)?x_4&eNOu_`&hB3oWOonb>(&c5_PqQ=y`H5 zJoSU1n^I)gd7_Y*XcA6>L#_z1k(bTzD?6=O7E&sm^SHGd3i;l9|9VtR4K|_%3|Vlj zd%AxmnQl6w%dhIbs(w4_b5EGzZ78ipR_BT| z$ZuG2g(i{TzA1w6AK8tw=M2qqiIAOp@Hl3nON?bfRPrY3qKbHdHeJn@ljMic%9VZS zk<&(xL*Xv-I`)~w(7yWVfY~-ao(vu)WW~dlf&`T`FEJN0PpyvVDRA|*_ndZ9 zVgYlxbMNwVAZ#?ZlGGj&c{56kv&+(f?|Ec!jCbjtrqiV>*ncd%mrf9Nt)hw2P?}dS z+E8mMGq1J3SaE?2ChA#1wyKw+s=6xiSD6a4KN8xlX%9^DsHEskFw^i}S;RoE8_q50 z_Lt+Qiqa@Zmo|-;{M)1{;RvAt3zA6a(AySXb4%Y^>syKV-!Z7_QfUEGzAJJ9Mnw4x z6nbqH-xo<1%~~+q6m=G`P8wb67!mc;c$js|8K8_NI%O&6XK#`$=-V+SP?)-^A=X=0 z)bChen#8e4IN?kp7I`kls*!ovI??rkM-UZHPhtoYC}>orsz0_(;x%CdSi{v-W@<{9 zEh2srs50`VOf4GzQd8-+K&hDqa3(7!40oAi@P56|I77AVd~ zv^OD!M;lS!^%rc{wkW_M^7tLthl0@vR_?)g`@ZFVt1zNE8< z00HT{V<+^5qLNSu#jNnFTRDDgjB6RGYqb+>QQ)+SX@`Q-*oO)RU@bKXyf4;{lXXY& zN?aF^>>CLl0Ntaa=hkDK4PqxjvOr49+tqN;9I)pZOjb)Kua- zH6JhOk=jShZHO-wBYVKR@ayu6JTuK~7D=Zrs{AxY0zhd`j&EAmY81Edo%1|hNh_$8 zB-y;17Y^cPRtF}3wUW9gR!jbFC1t<1l6++$CEyTe(3d|6X0c)jNI2C7U|JLCzIktD z(;xrghGQCP4HDtXKvPX;EY?+k64R4Fx4f(1sF-`-J(2EhWHOPs=izV>;u0ZXY$Ty1 zlQJo8D)uTCWx75bwq|eZsTGu^PsW2~^J)J+Aus|k@OVXhgO<^F zE6|?aRx77!B4GGSzIIX(4KGjQWvTU;qD`Lq#i%kmy2j%=il1izbGvP%7|i@fzjT@8 zcB2u|!nC8O)bZ5{giX|zq5ur86O*{-OvgNQOkB=)$6z(0Pgj|}shGaAXcFcyVA}+X z$AM|MvD6}oD#zpNrbc>z$~ZrbL;mKjxZ?OK&N*tXWM~1|Bkt4nP0_^wLso$^C$8<#3Bj0% zHYZ91$-HgWP)eX*Zs2o0>IRkI+N@ad1@6jo@@a>pfob*%p4Xq-Y$`5JYd;rHA7Vy* zofBW|9AfOAh1QxsgC&R?^cZR8VL;0@^)6?$^6Ho=9FK*B9 z+F^S8r^7V$SBGiWJ%3}{Wbk)~Y5guS?KQ(>`I=!GW(H-L68$o?vXncIoIiuLHavul zGMsq&)OIe;r>}p;veAv~Jr=h`ZH?xz`q+942G7f${VBvfRS2odBPJNdW86;ZE$f3=>n+H`e4d3|0` zAKmtJ1<>Zwf7l_=pEh7-7@yw5xndx)9`RnBTj80@@GKthPvLKKV_EhtL3X<323=GN zYPE0{JiJTSZPgN0H>ZcG5xQ#_JG7Ql%Ri_dp58moTvN8Q;PsiG(cF@)zbR;r;LNO+ zN+#L5@7dpXYL2#cgXtI1Y6;q2FuCxBmZp~msL%9xbj;7&mJuGFjDmPv6F!RW{Hk7q zN{F*z;WK}EQFDY2Xn--zBLsAw_a=6F{_1GGmin=wo_$_0d1}AM2QyG_~EBHk>tEp{SPgX=l+}AvpMFEt`0n>YgMgAKJ=b7sKtQk-{jq zVjhHpeB1`e$FXt$_HpwAZ7ZkKhydo9`WnQ5i8tjXx*A%poc?LjCoi%lq~b)i^@=1< zzlvRb&J$4B&*O;&$94}?hkncg@DAnV^)lG!_4vjf^sZ+LQX0B~66W`x0IBVJ&xf&l zE{<0Qp51!>=J-_voICFp6{`azZSI1y);p`|QI3ve)K@P2&)gb}9`zVsKrh+AcW7ic z$4)*_wyi!GvP(Ye=60)Y>zyT?$v%Q(mP7iURd0J6=$!y-w*uP0PfiB_lu;wQ>7Hmk zw}VK(){7qY`jtoH+MdoGy;f(8FE6y`oxS?a&KIEhL8Evf$fJ{%`%U<&di_VO*3(^W zd1CJj!3+VfJM)k5t+OY0=Bv*uLTaNePlFkRf;W8Z!O}1H6fyU=VZvED`sMuhA?kMR zm-p)zqojtYb}!{zv3;xnVnAv1`L&(hO52?jkrh$AXj+I&21)DVROzhUlE>4IN5^{ns_D<&EfXp6Rrk`7$Lm4;#-~z}Sp>W%_j7Rf&_kN?76hFwM6e zv!J^N8SxfMmHswFT`_s#Wmgo_RUN07z5SvW2U-9Ac|D3taOl?#-`)EQp~la0P^vDM zzb-;n-L{TSo_CKv|pz0BMYB3175P@PjQaFew=ZI40{sW-3M;9W63wEe*y zDNFsW=YcE4F8?>A@+t4_vz!6|PmQisSs6!+wY4qhEH%Ny@O}?5V#7QiDL+j|wV0Xq z1==Mge%lk^97$2Ys+Mb+WC25A<$3+2*vYD{)lVrz9~p4T!HO6#zqksj!1kzz7KqC~ zEfaw^K_$DcxP?ufT@T8SqBPfafuFQo4R`heyd0X%>^VV?7M_!6k&KzU$DrXov$e;i za_!#ET0gc$-kgU6zc)0c2S@{4FQ0L!vlwDt5;*|eUQe?i)*>_=3t}kEcjNvYe7&yK z2ivv|hLRDUal1q>r8Qp1-hJ8Xj^%`6vb`3Q%Q_bPCJF@A?3(dgn-`K})ANytMTL8# z8RX21>3Tx(iD{H3oL?T>IhSU4TZ|GXB;bG-x zo+-dH#?|q1>7~v2q84RgaBuHWj;kQPl{U@C;bQ;T>FT+)73C=79+U|$HSpeKwmD?b zxv#l9eZbv4wyvsbtFIK8*YGg8G4S+kYW~!UoW?ftqS3u`<1)%!FzFf6NGi^K-+8go z%iMaWpRaB!boEQYr|Gk4y=K!Tv�*JOIEvO7JT(4%4#FmU;;D%l4@!*S1W?47Kbi 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

    3KxQJVxsQH1W(hRS& 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

    - - + + \ No newline at end of file