1.终端重要命令

  • 查找操作

    • find {{path}} -name {{file-name}} - 在path目录下查找名为file-name的文件。
      • find ./ -name "*.[ch]" - 查找当前目录下的.c和.h文件
    • grep "int i" {{file-name}} - 查找文件fileint i的位置。
      • note:这里没有限定单词边界。
    • grep "\bint i\b" {{file-name}} - 查找文件fileint i的位置。注意这里
      • \b \b - 单词边界。
      • note:这里限定单词边界。
    • find ./ -name "*.[ch]" | xargs grep "#include" | sort | uniq - 列出.c.h文件中所有被包含过的头文件。 eXtended ARGumentS:xargs - sort是排序,uniq是去除相同的。
      • 推广:可以据此查找任意文件中的任意一段代码。
    • grep -r 'hello' ./递归地在当前目录下查找’hello’,若查找内容中有同类型引号,则在前加\
    • find ./ -name 'dir'在当前目录下查找名字为dir的目录。./代表当前目录。
    • find ./ -name '*.*' | xargs grep 'hello' | sort | uniq在当前目录下查找所有文件中的hello
    • 通配符
      • *为任意长度的任意字符串
      • ?为任意一个字符
      • []为集合中的任意一个字符
      • {}括号拓展。例如echo Hello-{a,bb,cc}-{1,2}
  • 统计操作

    • df -h - 查看磁盘分区的使用情况。df:disk free
    • wc {{file}} - 统计文件的行数/单词数/字符数
      • wc -l {{file}} - 统计文件的行数
      • wc -w {{file}} - 统计文件的单词数
      • wc -c {{file}} - 统计文件的字符数
    • strace {{program}} - system call trace, 记录程序运行过程中的系统调用信息
      • strace ls。查看ls命令的系统调用信息。
      • 通过观察程序运行过程中发生的系统调用,可以大致了解程序关键行为。
    • ltrace {{program}} - library call trace, 记录程序运行过程中的库调用信息
  • 文件操作

    • sudo apt-get install {{tool-name}} - 一键下载安装新工具
    • wget {{http://www.xxx.com//abc.zip}} - 网站下载文件
    • iconv -f uft-8 -t gbk {{file-name}} - 将文件file的格式进行转换,例子中是从uft-8转换到gbk
    • 比较两个文件是否完全相同
      • 文本文件的比较: vimdiff {{file1}} {{file2}}
      • 非文本文件的比较: diff {{file1}} {{file2}}
      • 很大的文件: md5sum {{file1}} {{file2}} - 两个文件的md5码不一样,就肯定不是同一个文件。
    • rm -rf ./*删除当前目录下的所有文件。
    • cat {{file}}打印文件中的内容。
    • echo "" > {{file}}清空文件。
    • echo "abc" >> {{file}}将”abc”追加到文件内。
    • touch {{file}}创建文件。
    • tree显示当前目录下的目录树。
    • rm ./*.txt删除当前目录下的所有.txt文件。
    • a,b y *复制a到b行的内容到系统剪切板
      • *为系统剪切板,y为复制
    • chmod 777后接对应操作获取文件权限。
    • chmod -R 777 *对当前目录下的所有文件获取权限。去掉-R就只限于当前目录。
    • tar -xzvf 压缩文件名.tar.gz解压.tar.gz文件。
    • tar -xvf 压缩文件名.tar.bz2解压.tar.bz文件。
    • cat 压缩文件名.tar.bz2.parta* > 压缩文件名.tar.bz2将parta*分离压缩文件合并成完整的压缩文件。
    • cp -r dirA dirB复制目录A到目录B
  • 任务管理

    • 推荐方法gnome-system-monitor - 打开任务栏图形界面。
  • 命令管理

    • history - 查看历史命令
    • !{{number}} - 执行历史命令中的第number条命令
    • !! - 执行上一条命令
    • !{{string}} - 执行最近的以string开头的命令
    • !{{string}}:p - 打印最近的以string开头的命令,但不执行
    • !{{string}}:s/{{old}}/{{new}} - 执行最近的以string开头的命令,将其中的old替换为new
    • !{{string}}:gs/{{old}}/{{new}} - 执行最近的以string开头的命令,将其中的old全部替换为new
    • !{{number}}:p - 打印历史命令中的第number条命令,但不执行
    • !{{number}}:s/{{old}}/{{new}} - 执行历史命令中的第number条命令,将其中的old替换为new
    • !{{number}}:gs/{{old}}/{{new}} - 执行历史命令中的第number条命令,将其中的old全部替换为new

2..sh文件重要命令(基本所有操作与终端一致)

  • 脚本指定

    • #!/bin/bash - 指定脚本解释器为bash
  • 变量更改

    • export {{variable}}={{value}} - 将变量variable的值设置为value
      • echo - 打印变量variable的值
    • export {{variable}}="${{variable}}:=/usr/local}" - 如果变量variable未定义,则将其值设置为/usr/local
      • echo - 打印变量variable的值
    • expr ${{variable}} + 1 - 将变量的值加1
    • x分别取a到z的值,然后执行do中的语句。
      for x in {a..z}
      do
          echo $x
      done
  • 参数获取

    • $1获取第一个参数
    • $2获取第二个参数
    • $#获取参数个数
    • $@获取所有参数
    • $0获取脚本名称
    • $?获取上一条命令的返回值
    • $$$$获取当前进程的进程号
    • $!获取上一条命令的进程号
  • 函数调用