【问题标题】:What are the most often linux (power) commands that you use?您最常使用的 linux(电源)命令是什么?
【发布时间】:2009-01-05 05:50:51
【问题描述】:

为了查找包含特定字符串的文件,我经常使用它

找到 . -名称 * | xargs grep -iH "字符串"

【问题讨论】:

  • 您可能会喜欢 ack 程序,它使用更现代的正则表达式语法和引擎 (Perl's) 完成了所有这些以及更多功能。
  • 我会使用: find 。 -name '*' -type f -exec grep -iH "string" \;
  • 以上可以用 $ grep -ri 'string' *
  • 更好:grep -ri "string" .
  • 我个人使用 fgrep -ri "string_to_search_for"

标签: unix shell command-line


【解决方案1】:

我的是

awk - 用于过滤和提取字段 find - 用于查找文件/目录 xargs - 构建命令列表,我经常将它与 find 一起使用 less - 用于快速浏览/阅读文件 man/info - 用于查看手册页和信息页 emacs - 用于编辑源代码 irssi - 与其他开发人员取得联系 cd - 切换到主目录和其他目录 killall - 杀死不行为的命令(是的,你得到了力量!) ps - 列出进程(哦不,我讨厌挂 mplayers 阻塞我的声音!) + - 通过在历史文件中搜索来完成命令 - 用于完成目录和文件名

最后但同样重要的是,最常用的power 命令是shutdown,不是吗? :)

【讨论】:

    【解决方案2】:

    要查找占用最多空间的目录(用于潜在的清理),从所需的级别开始,例如 /home 并执行:

    cd /home
    du -s * | sort -k1 -n
    

    这会根据使用的空间提供一个排序(最常用在底部,因此如果滚动,您仍然可以看到主要违规者)列表,例如:

         16  lost+found
         84  daniel
       4284  george
       6308  alice
    4413700  bob
    

    然后您可以在/home/bob 中运行相同的命令:

    cd /home/bob
    du -s * | sort -k1 -n
    

    得到:

        100  src
    4413600  p0rn
    

    因此,您现在知道什么占用了 /home 文件系统上的大部分空间,并且 Bob 很快就会寻找其他工作:-)。

    【讨论】:

    • 我喜欢 du -sh * 人类可读的语法(虽然不利于排序)
    【解决方案3】:

    我的主要命令:

    • vi(我选择的编辑器几乎可以完成所有配置任务)
    • 顶部(列出正在运行的任务,并显示性能统计信息)
    • tar/gzip(压缩/解压缩档案)
    • grep(使用正则表达式查找文件中的文本)
    • ma​​n(命令手册参考)
    • kill(杀死正在运行的进程)
    • chmod(更改和管理权限)

    【讨论】:

      【解决方案4】:

      我经常使用 find 的 -exec 选项。例如,我经常想更改整个目录树的权限,赋予目录执行权限,而不是文件。我分两步完成:

      find root_dir -type d -exec chmod 555 {} \;
      find root_dir -type f -exec chmod 444 {} \;
      

      以上内容将使整个树对每个人都是只读的,但仍然允许任何人 cd 进入任何目录。

      【讨论】:

      • 在 zsh 中:chmod 555 root_dir/**/*(/), chmod 444 root_dir/**/*(.)
      【解决方案5】:

      我在命令行中使用最多的是grep 和各种zsh 好东西,例如

      # count number of lines in all .java and .py files
      wc -l **/*.{java,py}
      

      【讨论】:

        【解决方案6】:
        #!/bin/sh
        ps axxw | grep $1 | grep -v grep | grep -v boost 
        sudo renice -20 `ps axww | grep $1 | grep -v grep | grep -v boost | awk '{print $1}'`
        

        调用脚本boost,我用它来为指定的应用程序提供最高优先级。

        【讨论】:

        • 第三行中的ps axxw'' on the second line was meant to be ps axww''?
        • 好问题。自从我在 MacOSX 机器上开发它以来已经很久了,老实说我不记得了。我现在在一个专门的 Wintel 环境中工作。
        【解决方案7】:

        不完全是常规命令,而是用于自动完成 bash 命令的快捷方式 'Ctrl + r'。

        【讨论】:

          【解决方案8】:

          原题中的命令可以写成,

          grep -RHi "string"
          

          我经常使用 grep -R。当然,find 命令可用于微调要搜索的文件。

          我经常使用 -00 标志来 perl 打印“段落”模式。

          perl -wnl -00 -e '/something:/ and print;'
          

          将字符串更改为其他内容,内联,同时制作原始文件的备份副本(来自 Minimal Perl):

          perl -s -i.bak -wpl 's/old_string/new_string/g;' *.txt
          

          我喜欢并排的差异:

          sdiff -s file1 file2
          

          或语法高亮的差异:

          diff file1 file2 | vim - # or mate - on my Mac
          

          我浏览了我的历史,看看是否还有其他命令,但遗憾的是(??)我的大部分系统维护、管理和编程都是通过自动化工具完成的,最近都是用 Ruby 编写的(puppet、capistrano、一些自制工具等),或与 SCM(git、svn)相关。

          【讨论】:

            【解决方案9】:

            我经常发现自己需要查找包含特定字符串的文件。为此我使用:

            grep -ri 'string'
            

            我需要定期做的事情范围很广,以至于很难挑选出具体的命令。主要是 sed、awk、grep 和 find 的大量组合,其中一些是随机的,直到被投入处理。

            【讨论】:

            • 注意:Cygwin grep 不假定您从“.”递归。 .例如,不区分大小写的递归 grep 从目录 dir 开始查找“foo”的语法是:grep -ri foo dir 或指定匹配 .txt 并显示文件名的文件:grep --include=".txt" -rHi foo 目录
            【解决方案10】:

            我使用who -T | sort 来获取已登录用户的排序列表。另外,为了得到一个排序的组列表(而不是普通的未排序列表),我使用groups | tr ' ' '\n' | sort | tr '\n' ' ' && echo

            【讨论】:

              【解决方案11】:

              我发现nohup 非常方便,用于通过不可靠的连接或花费大量时间完成的事情,即nohup python build_big_db_on_this_remote_server.py

              【讨论】:

                【解决方案12】:

                我喜欢的一个 dos2unix perl 衬里:

                perl -pi -e 's!\r\n!\n!g' << filename >> 
                

                在 unix2dos 中可以通过颠倒替换顺序轻松转换。

                【讨论】:

                  【解决方案13】:

                  我在 linux 中最喜欢的命令是:

                  ps -ax
                  kill [n]
                  

                  另外鲜为人知(且危险)的孩子不要在家里尝试这个:

                  hack [targetPC]
                  nuke [targetPC]
                  sol    <--this is solitaire
                  /.     <--opens up slash dot in IE
                  quote  <--quotes a /. meme from the following list so you can use it to post on /.
                         1 Yes but does it run linux?
                         2 Can you imagine a Beowulf cluster of those
                         3 In Soviet Russia ...
                         4 ...
                         5 Profit.
                  

                  【讨论】:

                    【解决方案14】:

                    查找进程是否正在运行并在树视图中获取 pid:

                    ps afx | grep 'foo'
                    

                    递归查找文件目录中的字符串:

                    grep -r 'foo' *
                    

                    递归地使目录中的所有文件可执行:

                    chmod -R +x *
                    

                    删除文件但保留其存在和权限:

                    cat /dev/null > file
                    

                    只是为了好玩:

                    rm -rf /
                    

                    【讨论】:

                      【解决方案15】:

                      两个强大的命令:
                      wget:下载文件
                      curl:操作 http 标头

                      顺便说一句,您的 find 和 grep 组合不安全,如果文件名包含空格怎么办?安全的方法是这样做:

                      find . -name * -print0  | xargs -0 grep -iH "String"
                      

                      【讨论】:

                      • 不需要使用xargs:find -iname *.java -exec grep -Hn foo {} \;
                      【解决方案16】:

                      #poweroff

                      你说的是电源命令,对吧? ;-P

                      【讨论】:

                        【解决方案17】:

                        我发现

                        sed -i "regexp" $file
                        

                        sed 在文件上非常有用,但不需要将输出放在某个地方然后将其移到源的顶部。

                        grep --color -Rne "regexp" file list
                        

                        执行递归 grep 并突出显示找到的匹配项也很方便。实际上,我编写了一个名为 'svngrep' 的小 shell 函数来跳过我们工作副本中的 .svn 文件,只查看活动代码并提供高亮显示。 Git 和其他人也可以这样做。

                        我有一个包含以下内容的 .bashrc:

                        alias ls="/bin/ls --color"
                        alias ll="ls -l"
                        

                        pgrep 和 pkill 总是派上用场。 awk 是你的朋友。学习它的语法,因为它可以做很多很棒的事情并为您节省很多时间。

                        du -shc *
                        

                        将为您列出您列出的所有文件的大小细分,并显示总数。如果当前目录很大并且它下面的内容可能很大,这对于快速计算非常有用。

                        vim
                        

                        不言自明。

                        screen
                        screen -DR
                        

                        屏幕是 Unix 之神的产物。如果您曾经在机器上使用 SSH 工作,请考虑使用 Screen。它为您提供了一个持久会话,能够创建多个“选项卡”并分离,在您注销后让屏幕继续运行。您可以稍后返回并使用“screen -r”重新连接。如果您的远程会话由于网络问题而启动,您可以重新登录并使用分离-重新连接方法来恢复您的工作,而不会丢失最后一个耗时半小时且您尚未保存的关键编辑。 Screen 无数次地救了我的命。

                        【讨论】:

                          【解决方案18】:

                          我最常用的命令是 ps、lsof(列出打开的文件)、grep / awk / sed / cut(和其他各种行编辑器)以及 netstat。

                          Lsof 是最有用但经常被遗忘的一种。例如:

                          # umount /foo
                          umount: /foo busy
                          
                          lsof | grep /foo
                          
                          1339 /bin/bash ... ... ... cwd ... ... ...
                          

                          好的,所以现在我知道 /foo 很忙,因为有人打开了一个 shell 并坐在 /foo :) 这真的只是冰山一角。知道任何给定进程打开了哪些 fds 也很方便。

                          很多人都使用 find all,此时 slocate 可能会更好,所以不要忘记 slocate :) 如果你发现自己(请原谅双关语)这样做:

                          find / -name foo.txt 
                          

                          ...你最好先使用 slocate。

                          最后,valrgind 通常与编程工具相关联。但是,它对于检测其他程序中的泄漏和其他不稳定行为非常有用。例如,如果您通过某种疯狂的方式设法使 sed 段错误...... valgrind 很适合偷看。

                          【讨论】:

                            【解决方案19】:

                            对于我的 grep-ing,我为这个迷你脚本定义了一个别名。

                            它执行 grep,使用行号递归,忽略二进制文件和大小写。它使用 -v 从我一直存在的 .svn 目录中过滤掉结果。然后它会在结果中为搜索到的关键字着色。

                            egrep -rniI --color "$1" * | egrep -v "\.svn" | egrep --color -iE "$1|"\044
                            

                            【讨论】:

                              猜你喜欢
                              • 2016-03-20
                              • 1970-01-01
                              • 2010-11-22
                              • 1970-01-01
                              • 2012-10-31
                              • 1970-01-01
                              • 1970-01-01
                              • 2019-01-01
                              • 2019-12-12
                              相关资源
                              最近更新 更多