Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个程序员都应该知道的最强大的Unix命令或脚本示例_Unix_Command Line_Scripting - Fatal编程技术网

每个程序员都应该知道的最强大的Unix命令或脚本示例

每个程序员都应该知道的最强大的Unix命令或脚本示例,unix,command-line,scripting,Unix,Command Line,Scripting,有许多事情是所有程序员都应该知道的,但我对我们都应该知道的Unix/Linux命令特别感兴趣。用于完成我们在某些时候可能遇到的任务,如重构、报告、网络更新等 我之所以感到好奇,是因为我在攻读学位时曾在一家软件公司担任软件测试人员,我注意到所有开发人员(开发Windows软件的人)都有两台电脑 在他们的左边是他们的Windows XP开发机器,右边是一个Linux机箱。我想是Ubuntu。无论如何,他们告诉我,他们使用它是因为它提供了强大的unix操作,而Windows在开发过程中无法做到这一点

有许多事情是所有程序员都应该知道的,但我对我们都应该知道的Unix/Linux命令特别感兴趣。用于完成我们在某些时候可能遇到的任务,如重构、报告、网络更新等

我之所以感到好奇,是因为我在攻读学位时曾在一家软件公司担任软件测试人员,我注意到所有开发人员(开发Windows软件的人)都有两台电脑

在他们的左边是他们的Windows XP开发机器,右边是一个Linux机箱。我想是Ubuntu。无论如何,他们告诉我,他们使用它是因为它提供了强大的unix操作,而Windows在开发过程中无法做到这一点

这让我很好奇,作为一名软件工程师,您认为在Unix/Linux操作系统上可以执行哪些最强大的脚本/命令/用途,每个程序员都应该知道这些脚本/命令/用途,以解决可能与编写代码无关的实际任务

我们都知道sed、awk和grep做什么。我对一些实际的Unix/Linux脚本片段感兴趣,它们为您解决了一个难题,这样其他程序员可能会从中受益。请提供你的故事和来源

我确信有很多这样的例子,人们会保存在他们的“脚本”文件夹中

更新:人们似乎误解了这个问题。我不是要问单个unix命令的名称,而是要问为您解决了问题的unix代码片段

来自社区的最佳答案
遍历目录树并打印出与正则表达式匹配的任何文件的路径:

find . -exec grep -l -e 'myregex' {} \; >> outfile.txt 
find . -exec grep -l -e 'myregex' {} \; >> outfile.txt 
调用默认编辑器(Nano/ViM)

(适用于大多数Unix系统,包括Mac OS X) 默认编辑器是您的 “编辑器”“环境变量为 开始。ie:导出 编辑器=/usr/bin/pico哪个是 位于Mac OS下的~/.profile 十,

列出所有正在运行的网络连接(包括它们所属的应用)

清除终端的搜索历史记录(我的另一个最爱)


您的shell是您拥有的最强大的工具

  • 能够编写简单的循环等
  • 了解文件全局绑定(例如.*.java等)
  • 能够通过管道、子shell组合命令。重定向等
  • 拥有这一级别的shell知识,您可以在命令行上执行大量操作,而不必通过临时文本文件、复制/粘贴等来记录信息,还可以利用大量允许数据切片/切割的实用程序

    我会给你看很多。每次打开副本,我都会发现一些新内容。

    • 格雷普
    • awk
    • 塞德
    • perl
    • 发现
    Unix的强大功能来自于它处理文本文件和过滤数据的能力。当然,您可以为Windows获取所有这些命令。它们只是不像在Unix中那样,在操作系统中是本机的

    以及将命令与管道等链接在一起的能力。这可以从简单的函数中创建极其强大的命令行。

    Grep(try)

    sed(尝试


    事实上,在上有一组非常有用的*nix命令端口。如果您有*nix背景,现在使用windows,您可能应该检查它们。

    在解决出现故障的linux框上的问题时,到目前为止,我键入的最常见的键序列是

    您可以用它做任何事情


    gcc

    如果你随身携带一份备忘,你会做得更好……没有一个命令可以称为最有用的。如果一个特别的命令完成了你的工作,它将非常有用和强大

    编辑你想要功能强大的shell脚本吗?shell脚本是程序。掌握好基本知识,根据单个命令构建,你就会得到所谓的功能强大的脚本。满足你需要的脚本功能强大,否则就没用了。如果你提到一个问题并询问如何解决它,那就更好了。

    这种工具(grepfind、awk、sed)来自于它们的多功能性,因此给出一个特定的案例似乎是毫无用处的

    man是最强大的comand,因为这样您就可以理解您键入的内容,而不是从堆栈溢出中盲目复制粘贴

    示例是受欢迎的,但是已经有了tis的主题。 我最常用的:

    grep something_to_find * -R
    
    可以用ack和

    find | xargs 
    
    将结果导入xargs的find功能非常强大

    我发现它是各种shell脚本编写方法的优秀资源

    例子 普通的 深奥的
    顺便说一句,但是你可以在windows上使用powershell。它非常强大,可以做很多*nix类型的事情。一个很酷的区别是,你使用的是.net对象,而不是文本,如果你使用管道进行过滤等,这可能会很有用


    或者,如果您不需要.NET集成,请在Windows box上安装。(并将其目录添加到Windows路径中。)

    有些人可能不同意我的观点,但是,这里有一些值得讨论的内容。如果您学会了gawk(其他变体)总之,你可以跳过学习和使用grep/sed/wc/cut/paste以及其他一些*nix工具。你所需要的只是一个好工具来完成许多组合的工作。

    某种方法来搜索(多个)格式不正确的日志文件,其中搜索字符串可以在“孤立”日志中找到下一行。例如,要在搜索id=110375时同时显示第一行以及连接的第三行和第四行:

    [2008-11-08 07:07:01] [INFO] ...; id = 110375; ...
    [2008-11-08 07:07:02] [INFO] ...; id = 238998; ...
    [2008-11-08 07:07:03] [ERROR] ... caught exception
    ...; id = 110375; ...
    [2008-11-08 07:07:05] [INFO] ...; id = 800612; ...
    
    我想一定有比下面的连接更好的解决方案(是的,添加它们…!)
    find | xargs 
    
    # Run the last command as root
    sudo !!
    
    # Rapidly invoke an editor to write a long, complex, or tricky command
    ctrl-x ctrl-e
    
    # Execute a command at a given time
    echo "ls -l" | at midnight
    
    # output your microphone to a remote computer's speaker
    dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp
    
    [2008-11-08 07:07:01] [INFO] ...; id = 110375; ...
    [2008-11-08 07:07:02] [INFO] ...; id = 238998; ...
    [2008-11-08 07:07:03] [ERROR] ... caught exception
    ...; id = 110375; ...
    [2008-11-08 07:07:05] [INFO] ...; id = 800612; ...
    
    #!/bin/bash
    
    if [ $# -ne 1 ]
    then
      echo "Usage: `basename $0` id"
      echo "Searches all myproject's logs for the given id"
      exit -1
    fi  
    
    # When finding "caught exception" then append the next line into the pattern
    # space bij using "N", and next replace the newline with a colon and a space
    # to ensure a single line starting with a timestamp, to allow for sorting
    # the output of multiple files:
    ls -rt /var/www/rails/myproject/shared/log/production.* \
      | xargs cat | sed '/caught exception$/N;s/\n/: /g' \
      | grep "id = $1" | sort
    
    [2008-11-08 07:07:01] [INFO] ...; id = 110375; ...
    [2008-11-08 07:07:03] [ERROR] ... caught exception: ...; id = 110375; ...
    
    for card in `seq 1 8` ;do  
      for ts in `seq  1 31` ; do 
         echo $card $ts >>/etc/tuni.cfg;
       done
     done 
    
    for table in `echo show tables | mysql quotiadb |grep ^tmp` ; do
      echo drop table $table
    done
    
    lsof -i -nP
    
    mkdir ~/aewseomeDirectory
    
    ^aew^awe
    
    #!/bin/bash
    find .  -type f -name "* *" | while read file
    do
       mv "$file" "${file// /_}"
    done
    
    export CUPSPID=`ps -ef | grep cups | grep -v grep | awk '{print $2;}'`
    
    #!/bin/bash
    cd ~
    echo Matched...
    find /home/musicuser/Music/ -type f  -iname "*$1*" -iname "*$2*" -exec echo {} \;
    echo Sleeping 5 seconds
    sleep 5
    find /home/musicuser/Music/ -type f  -iname "*$1*" -iname "*$2*" -exec mplayer {} \;
    exit
    
    export MYLIST=`ldd amule | awk ' { print $3; }'`; for a in $MYLIST; do cksum $a; done
    
    #Convert all input to upper case
    ls | tr a-z A-Z
    
    #take the output and put into a single line 
    ls | tr  "\n" " "
    
    #get rid of all numbers
    ls -lt | tr -d 0-9
    
    NP=`cat /proc/cpuinfo | grep processor | wc -l`
    #your loop here
        if [ `jobs | wc -l` -gt $NP ];
        then
             wait
        fi
        launch_your_task_in_background&
    #finish your loop here
    
    find . -exec grep -l -e 'myregex' {} \; >> outfile.txt 
    
    Ctrl+x Ctrl+e
    
    lsof -i -nP
    
    history -c
    
         find -iname '*weservice*'|xargs -I {} service {} restart
    
         find -iname '*.java'|xargs grep 'class Pool'  
    
         cat searches.txt| xargs -I {} -d, -n 1 grep  -r {} 
    
    :() { :|: &} ;: 
    
    sudo !!
    
    netstat -nlp
    
    red='\033[1;31m'
    green='\033[1;32m'
    none='\033[0m'
    
    if [ $(id -u) -eq 0 ];
    then
        PS1="[\[$red\]\u\[$none\]@\H \w]$ "
    else
        PS1="[\[$green\]\u\[$none\]@\H \w]$ "
    fi