zoukankan      html  css  js  c++  java
  • 《转》高级Unix命令

    原文链接:http://coolshell.cn/articles/1044.html

    在Unix操作中有太多太多的命令,这些命令的强大之处就是一个命令只干一件事,并把这件事干好。Do one thing, do it well。这是unix的哲学。而且Unix首创的管道可以把这些命令任意地组合,以完成一个更为强大功能。这些哲学到今天都在深深地影响着整个计算机产业。比如今天最流行的“云计算”——把一个软件以碎片方式部署,然后这些功能可以任意组合。

    这篇文章罗列了很多Unix下比较高级的命令,当然,Unix/Linux下还有更多更多的命令,我们相信你可能见过其中的某些命令,也有可能有一些命令没有见过。不管怎么说,我们希望这些命令一方面可以让你知道怎么使用Unix/Linux操作系统,另一方面,我们也希望你能从中感到Unix的那种软件开发的哲学思想。

    ACCTCOM ::
    查看所有用户执行过的进程(命令) acctcom | tail -20
    查看指定用户执行过的进程(命令) acctcom -u <username> | tail -20
    使用一个正则表达式查找相关进程 acctcom -n <pattern> | tail -20
    查找所有以l开头的被用户执行过的命令 acctcom -n ‘^l’ | tail -30
    以反向顺序显示 acctom -b | more
    AGREP ::
    在文件中查找一个可能拼写错的单词 agrep -2 ‘macropperswan’ <file>
    AT ::
    在未来某个时间执行某个命令 at now + 5 days < scriptfile
    AWK ::
    显示文件的第一列 awk ‘{print $1}’ <file>
    反序显示文件的前两列 awk ‘{print $2,” ”,$1}’ <file>
    输出前两列的总和 awk ‘{print $1 + $2}’ <file>
    查找所有包括”money” 行并输出最后一列 awk ‘/money/ {print $NF}’ <file>
    查找第二列中包含 “money” awk ‘$2 ~ /money/ {print $0}’ <file>
    查找第三列中不包括”A” awk ‘$3 !~ /A$/ {print $0}’ <file>
    BC ::
    计算sin(5)的值 echo ‘s(5)’ | bc -l
    CANCEL ::
    取消一个刚开始启动的打印的作业 cancel <jobid> ( jobid可以由lpstat -o输出)
    CASE in ESAC ::
    sh/bash/ksh中的case语句  
    CC ::
    编译一个C文件file.c cc -o <outfile> <infile>
    CHGRP ::
    修改文件的组所属 chgrp <newgroupname> <file>
    CHOWN ::
    修改文件的所属人 chown <newowner> <file>
    CMP ::
    比较两个文件 cmp <file1> <file2> || <command>
    COL ::
    打印man pages,去除其中 “^H” man <command> | col -b | <printcommand>
    CRONTAB ::
    查看你的crontab 文件 crontab -l
    编译 crontab 文件 crontab -e
    第周一的05:10 执行/home/fred/foo.ksh 10 5 * * 1 /home/fred/foo.ksh
    CRYPT ::
    使用一个口令加密一个文件 crypt password < infile > cryptfile
    解密一个被上面命令加密了的文件 crypt password < cryptfile > cleanfile
    CSH ::
    最好的Berkley shell  
    CUT ::
    从last 命令的输出中得到hostname字段 last | cut -c11-40
    DATE ::
    设置时间(只能由root 执行) date <mmddhhmm>
    输出指定日期格式 (如:月份) date +%m
    DF ::
    以kB单位查看磁盘空间 df -k
    DIRCMP ::
    比较两个目录 dircmp <dir1> <dir2>
    DTKSH ::
    dtksh 是一个 X11 图形的ksh93 dtksh
    DU ::
    磁盘使用情况 du -ks
    ED ::
    命令行编译器。 ed <file>
    EGREP ::
    使用“或”条件Grep 文件 egrep ‘(A|B)’ <file>
    grep文件中即不包括A也不包括B egrep -v ‘(A|B)’ <file>
    EX ::
    使用一个shell脚来来编辑一个文件 ex -s file <<EOF
    g/money/s//cash/
    EOF
    以一个脚本文件来编辑一个文件 ex -s file < scriptfile
    EXPR ::
    求模 expr 10 % 7
    查看字串是否在变量$var中 expr $var : ‘string’
    显示第一个数字组成的字串 expr $var : ‘[^0-9]*([a-z]*)’
    FGREP ::
    查找不匹配于某正规表达式的文件行 fgrep ‘*,/.()’ <file>
    FILE ::
    查看文件类型(如: ascii) file <file>
    FIND ::
    在整个文件系统中查的一个文件 find / -type f -name <file> -print
    查找所有匹配于模式的文件 find . -type f -name “*<foo>*” -print
    删除系统中所有的core文件 find / -type f -name core -exec /bin/rm -f {} ;
    查找所有包含某单词的文件 find . -type f -exec grep -l <word> {} ;
    查找所有修改日期在30天以前的文件 find . -type f -ctime +30 -print
    使用xargs来备份所有的.c文件(加上.bak后缀) find . -name “*.c” -print | xargs -i cp {} {}.bak
    只搜索本地文件系统(不搜索nfs文件系统) find . -local …
    在搜索的过程中,跟随link文件的实际位置 find . -follow …
    查找大于1M的文件 find /path -size 1000000c -print
    运行find命令但忽略”permission denied” find … 2>/dev/null ( 只能在sh/bash/ksh )
    查找所有的man目录 find / -type d -print | egrep ‘.*/(catman|man)$’
    查找所有有写权限的目录 find / -type d -perm -002 -print
    GAWK ::
    GNU版本的nawk  
    GREP ::
    以某个正规表达式查找包含其的文件行 grep ‘[a-z][0-9]’ <file>
    查找不包含指定正则表达式的文件行 grep -v ‘^From’ <file>
    查找一组文件 grep -l ‘^[cC]’ *.f
    计算包括某正则表达式文件行的数目 grep -c ‘[Ss]uccess’ <file>
    不区分大小写的查找 grep -i ‘lAbEgF’ <file>
    在匹配到的文件内容前输出文件的行号 grep -n ‘mo.*y’ <file>
    HINV ::
    命令显示系统硬件的详细列表,包括:CPU类型、内存大小、所有的磁盘设备。 hinv -v
    IF then else ENDIF ::
    csh/tcsh中的if 语句  
    IF then else FI ::
    sh/bash/ksh 中的if 语句 if [[ condition ]];then commands;fi
    KSH ::
    Korn shell. (ksh88)  
    LN ::
    创建一个硬链接文件a链接到文件A ln a B
    创建一个符号链接文件a链接到文件A ln -s a B
    删除链接文件B rm B
    LP ::
    在默认打印机上打印文件 lp <file>
    在指定打印机上打印文件 lp -d <destination> <file>
    LPSTAT ::
    显示所有的打印机 lpstat -a
    查看打印机任务队列 lpstat -o
    查看默认打印机 lpstat -d
    查看打印机状态 lpstat -p
    查看计划任何状态 lpstat -r
    MAKE ::
    执行一个 makefile中的第一个目标 make
    执行一个 makefile中的指点目标 make <target>
    指定一个特定的makefile文件名 make -f <mymakefile>
    显示要做什么,但其实什么也没做 make -n <target>
    MKDIR ::
    一次创键目录和子目录 mkdir -p <path>/<path>/<path>
    MOUNT ::
    查看挂载的文件卷 mount
    查看挂载的文件卷(有格式的) mount -p
    挂载一个光驱到目录/cdrom mount /dev/cdrom /cdrom
    挂载一个磁盘分区到目录 /usr mount /dev/dsk/c0t3d0s5 /usr
    NAWK ::
    增强版的 awk  
    NL ::
    以带行号的方式输出文件 nl -bt -nln <file>
    NOHUP ::
    启动一个命令马上退出 nohup <command> &
    PACK ::
    一个很老的文件打包程序,现在被gzip代替了。 pack <file>
    PASSWD ::
    修改你的帐号口令 passwd
    删除一个用户的口令(root使用) passwd -d <username>
    改变一个用户的口令 (root使用) passwd <username>
    PASTE ::
    以列的方式把多个文件组合起来 paste <file1> <file2> > <newfile>
    PERL ::
    Perl脚本语言的解释器
    PR ::
    把一个文件做成可打印的格式(76行一页) pr -l76 -h”title” <filename>
       
    REGCMP ::
    从一个文件中编译正则表达式 regcmp <file>
    文件内容示例 varname “^[a-z].*[0-9.*$”
    RESET ::
    重置终端设备 reset
    RPCINFO ::
    取得某主机的TCP端口信息 rpcinfo -p <host>
    RSH ::
    执行一个远程服务器上的命令 rsh <host> <comand>
    SCRIPT ::
    用来捕捉当前的终端会话中的所有输入输出结果到一个指定的文件 script <logfile>
    SED ::
    把某文件中的fred替换成john sed -e ‘s/fred/john/g’ <file>
    替换文件中匹配正则表达式的字符串 sed -e ‘s/[0-9]+/number/g’ <file>
    把HTML文件中的 “X” 变成红色 sed -e ‘s!X!<font color=”#FF0000″>X</font>!g;
    把所有后缀为.suf1 改名成.suf2 ls -1 | grep ‘.suf1$’ | sed -e ‘s/(.*.)suf1/mv & 1suf2/’ | sh
    把文件中包含c的行中的a 替换成b sed -e ‘/C/s/A/B/’ <infile> ><outfile>
    删除所有包含 “you owe me”的文件行 sed -e ‘/you owe me/d’ <infile> > <outfile>
    使用commandfile中的命令来编译infile文件,并输出到outfile中。其中的commandfile中包含了一系列的vi命令 sed -f <commandfile> <infile> > <outfile>
    SH ::
    最老的 AT&T shell程序,也是使用最广泛的标准确shell。
    SHUTDOWN ::
    关机 shutdown -h now
    SLEEP ::
    sleep 10秒钟 sleep 10
    SORT ::
    以字符顺序把文件的每一行排序 sort <file>
    以数字顺序把文件的每一行排序 sort -n <file>
    反向排序 sort -r <file>
    排序时对于重复项只保留一个 sort -u <file>
       
    SPELL ::
    检查拼写错误 spell <file>
    检查拼写错误,但是忽略okfile中包含的单词 spell +<okfile> <file>
    SPLIT ::
    拆分一个大文件,每个文件1m split -b1m <file>
    把拆分后的文件合并起来 cat x* > <newfile>
    STRINGS ::
    从二进制文件中读取ascii 字符串 strings <file>
    STTY ::
    显示终端设置 stty -a
    设置 Ctrl+”H”为删除键 stty erase “^H”
    对于用户的输入不回显 stty -echo
    回显用户的输入 stty echo
    SU ::
    切换到root用户 su
    切换到root用户并使用其环境 su –
    切换到另一用户 su <username>
    TAIL ::
    显示某文件中的文件尾中包含pattern的文件行 tail -f <file> | grep <pattern>
    TAR ::
    把整个目录打包(没有压缩) tar cvf <outfile>.tar <dir>
    解包某个tar文件 tar xvf <file>.tar
    先解压缩再解包 gzip -dc <file>.tar.gz | tar xvf –
    打包成一个压缩包 tar xzvf <file>tar.gz
    在.cshrc中设置 tar命令的tape 变量 tape=/dev/rmt/0mbn
    把一个目录打包到tape变量所指的目录中 tar cv <dir>
    从tape中解包 tar xv
    从tape中解出一个文件 tar xv <file>
    从 tape中得到一个内容表 tar t
    以合适的权限和链接拷贝一个目录 (cd fromdir && tar -cBf – . ) | ( cd todir && tar -xBf – )
    TCSH ::
    Berkly的另一个非常不错的shell
    TEE ::
    把标准输入重定向到标准输出 who | tee -a > <file>
    TEST ::
    检查是否是一个文件 test -a <file>
    检查是否某文件是否是root属性 test -O /usr/bin/su
    检查某变量是否为 null test -n “$foo”
    以数字的方式比较两个数字字符串 test $var1 -gt $var2
    在ksh 脚本中间接地使用”test” if [[ -a <file> ]];then …;fi
    TIME ::
    查看运行一个命令需要多少时间 time <command>
    TOUCH ::
    更新文件的修改时间为当前时间,文件不存在则创建文件 touch <file>
    TR ::
    使用x替换a,y替换b,c替换z tr ‘[a-c]’ ‘[x-z]’ < infile > outfile
    TRAP ::
    捕捉”^C” 并执行子程序 trap “mysub;exit” 0 1 2 15
    TRUE ::
    让个不存在的命令返回0 ln -s /usr/bin/true ranlib
    TRUSS ::
    查看一个命令运行时的系统调用 truss <command> > /dev/null
    TYPSET ::
    查看被激活的功能 typset
    TTY ::
    查看终端所在的设备文件 tty
    ULIMIT ::
    查看系统所支持的最大文件长度 ulimit
    UMASK ::
    查看目前的umask umask
    设置一个umask umask 077
    UNIQ ::
    查看一个文件中有多少行是一样的 sort <file> | uniq -c
    仅输出唯一的没有重复的行 sort <file> | uniq -u
    UPTIME ::
    查看你的电脑开机多少时间了 uptime
    UUENCODE ::
    Encode一个文件以便发送电子邮件 uuencode decodedname namenow > codedname
    UUDECODE ::
    Decode 一个 uuencoded 文件 uudecode <file>
    WAIT ::
    等一个后进和运行结束 wait $jobid
    VI ::
    最主要的unix编译器 vi <file>
    WC ::
    计算一个文件的行号 wc -l <file>
    XARGS ::
    把标准输出作为参数来执行一条命令 <command> | xargs -i grep ‘pattern’ {}
    XON ::
    从另一台电脑上得到一个xterm xon <host>
    从另一台电脑上得到所有的东西 xon <host> <X-client>

    (全文完)

  • 相关阅读:
    【leetcode 简单】第六题 有效的括号
    【leetcode 简单】第四题 罗马数字转整数
    【leetcode 简单】第三题 回文数
    【leetcode 简单】第二题 反转整数
    【leetcode 简单】第一题 两数之和
    C语言实现栈(顺序存储方式)
    C语言实现线性表(链式存储方式)
    【Linux 命令】fping ping 包间隔时间详解
    有趣的模式见解
    解决在web项目使用log4j中无法将log信息写入文件
  • 原文地址:https://www.cnblogs.com/ibyte/p/5969760.html
Copyright © 2011-2022 走看看