zoukankan      html  css  js  c++  java
  • Linux常用命令大全

    由于linux常用于服务器等重大场合,所以对linux命令也需熟悉,下面对常用命令进行总结

    rm

    相关命令:rmdir
    用法:rm [选项]... 文件...
    删除 (unlink) 文件。

      -f, --force           强制删除。忽略不存在的文件,不提示确认
      -i                    在删除前需要确认
      -I                    在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
                            示内容更少,但同样可以阻止大多数错误发生
          --interactive[=WHEN]      根据指定的WHEN 进行确认提示:never,once (-I),
                                    或者always (-i)。如果此参数不加WHEN 则总是提示
          --one-file-system         递归删除一个层级时,跳过所有不符合命令行参
                                    数的文件系统上的文件
          --no-preserve-roo 不特殊对待"/"
          --preserve-root   不允许删除"/"(默认)
      -d, --dir 删除空目录
      -r, -R, --recursive   递归删除目录及其内容
      -v, --verbose         详细显示进行的步骤
          --help            显示此帮助信息并退出
          --version         显示版本信息并退出

    默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
    的目录,以及其下所有的内容。

    要删除第一个字符为"-"的文件 (例如"-foo"),请使用以下方法之一:
      rm -- -foo
      rm ./-foo

    请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
    该文件的内容无法还原,请考虑使用shred。

    VI:
    进入vi后的,内部命令

    移动光标类命令

    h :光标左移一个字符
    l :光标右移一个字符
    space:光标右移一个字符
    Backspace:光标左移一个字符
    k或Ctrl+p:光标上移一行
    j或Ctrl+n :光标下移一行
    Enter :光标下移一行
    w或W :光标右移一个字至字首
    b或B :光标左移一个字至字首
    e或E :光标右移一个字至字尾
    ) :光标移至句尾
    ( :光标移至句首
    }:光标移至段落开头
    {:光标移至段落结尾
    nG:光标移至第n行首
    n+:光标下移n行
    n-:光标上移n行
    n$:光标移至第n行尾
    H :光标移至屏幕顶行
    M :光标移至屏幕中间行
    L :光标移至屏幕最后行
    0:(注意是数字零)光标移至当前行首
    $:光标移至当前行尾

    屏幕翻滚类命令

    Ctrl+u:向文件首翻半屏
    Ctrl+d:向文件尾翻半屏
    Ctrl+f:向文件尾翻一屏
    Ctrl+b;向文件首翻一屏
    nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

    插入文本类命令

    i :在光标前
    I :在当前行首
    a:光标后
    A:在当前行尾
    o:在当前行之下新开一行
    O:在当前行之上新开一行
    r:替换当前字符
    R:替换当前字符及其后的字符,直至按ESC键
    s:从当前光标位置处开始,以输入的文本替代指定数目的字符
    S:删除指定数目的行,并以所输入文本代替之
    ncw或nCW:修改指定数目的字
    nCC:修改指定数目的行

    删除命令

    ndw或ndW:删除光标处开始及其后的n-1个字
    do:删至行首
    d$:删至本行尾
    dG:删至文件行尾
    ndd:删除当前行及其后n-1行
    x或X:删除一个字符,x删除光标后的,而X删除光标前的
    Ctrl+u:删除输入方式下所输入的文本

    cp

    相关命令:scp
    用法:cp [选项]... [-T] 源文件 目标文件
     或:cp [选项]... 源文件... 目录
     或:cp [选项]... -t 目录 源文件...
    将源文件复制至目标文件,或将多个源文件复制至目标目录。


    长选项必须使用的参数对于短选项时也是必需使用的。
      -a, --archive 等于-dR --preserve=all
          --attributes-only 只拷贝文件属性,不拷贝文件内容
          --backup[=CONTROL 为每个已存在的目标文件创建备份
      -b 类似--backup 但不接受参数
          --copy-contents 在递归处理是复制特殊文件内容
      -d 等于--no-dereference --preserve=links
      -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项
    存在时则不需再选此项)
      -i, --interactive 覆盖前询问(使前面的 -n 选项失效)
      -H 跟随源文件中的命令行符号链接
      -l, --link 链接文件而不复制
      -L, --dereference 总是跟随符号链接
      -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
      -P, --no-dereference 不跟随源文件中的符号链接
      -p 等于--preserve=模式,所有权,时间戳
          --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果
    可能保持附加属性:环境、链接、xattr 等
      -c                           same as --preserve=context
          --sno-preserve=属性列表 不保留指定的文件属性
          --parents 复制前在目标目录创建来源文件路径中的所有目录
      -R, -r, --recursive 递归复制目录及其子目录内的所有内容
          --reflink[=WHEN] 控制克隆/CoW 副本。请查看下面的内如。
          --remove-destination 尝试打开目标文件前先删除已存在的目的地
    文件 (相对于 --force 选项)
          --sparse=WHEN 控制创建稀疏文件的方式
          --strip-trailing-slashes 删除参数中所有源文件/目录末端的斜杠
      -s, --symbolic-link 只创建符号链接而不复制文件
      -S, --suffix=后缀 自行指定备份文件的后缀
      -t,  --target-directory=目录 将所有参数指定的源文件/目录
                                               复制至目标目录
      -T, --no-target-directory 将目标目录视作普通文件
      -u, --update                 copy only when the SOURCE file is newer
                                     than the destination file or when the
                                     destination file is missing
      -v, --verbose                explain what is being done
      -x, --one-file-system        stay on this file system
      -Z, --context=CONTEXT        set security context of copy to CONTEXT
          --help 显示此帮助信息并退出
          --version 显示版本信息并退出


    默认情况下,源文件的稀疏性仅仅通过简单的方法判断,对应的目标文件目标文件也
    被为稀疏。这是因为默认情况下使用了--sparse=auto 参数。如果明确使用
    --sparse=always 参数则不论源文件是否包含足够长的0 序列也将目标文件创文
    建为稀疏件。
    使用--sparse=never 参数禁止创建稀疏文件。


    当指定了--reflink[=always] 参数时执行轻量化的复制,即只在数据块被修改的
    情况下才复制。如果复制失败或者同时指定了--reflink=auto,则返回标准复制模式。


    备份文件的后缀为"~",除非以--suffix 选项或是SIMPLE_BACKUP_SUFFIX
    环境变量指定。版本控制的方式可通过--backup 选项或VERSION_CONTROL 环境
    变量来选择。以下是可用的变量值:


      none, off       不进行备份(即使使用了--backup 选项)
      numbered, t     备份文件加上数字进行排序
      existing, nil   若有数字的备份文件已经存在则使用数字,否则使用普通方式备份
      simple, never   永远使用普通方式备份


    有一个特别情况:如果同时指定--force 和--backup 选项,而源文件和目标文件
    是同一个已存在的一般文件的话,cp 会将源文件备份。

    grep

    相关命令:fgrep
    grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。Linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

    grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。

    grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

    grep --help
    匹配模式选择:
     -E, --extended-regexp     扩展正则表达式egrep
     -F, --fixed-strings       一个换行符分隔的字符串的集合fgrep
     -G, --basic-regexp        基本正则
     -P, --perl-regexp         调用的perl正则
     -e, --regexp=PATTERN      后面根正则模式,默认无
     -f, --file=FILE           从文件中获得匹配模式
     -i, --ignore-case         不区分大小写
     -w, --word-regexp         匹配整个单词
     -x, --line-regexp         匹配整行
     -z, --null-data           一个 0 字节的数据行,但不是空行

    杂项:
     -s, --no-messages         不显示错误信息
     -v, --invert-match        显示不匹配的行
     -V, --version             显示版本号
     --help                    显示帮助信息
     --mmap                use memory-mapped input if possible

    输入控制:
     -m, --max-count=NUM       匹配的最大数
     -b, --byte-offset         打印匹配行前面打印该行所在的块号码。
     -n, --line-number         显示的加上匹配所在的行号
     --line-buffered           刷新输出每一行
     -H, --with-filename       当搜索多个文件时,显示匹配文件名前缀
     -h, --no-filename         当搜索多个文件时,不显示匹配文件名前缀
     --label=LABEL            print LABEL as filename for standard input
     -o, --only-matching       只显示一行中匹配PATTERN 的部分
     -q, --quiet, --silent      不显示任何东西
     --binary-files=TYPE   假定二进制文件的TYPE 类型;
                                          TYPE 可以是`binary', `text', 或`without-match'
     -a, --text                匹配二进制的东西
     -I                        不匹配二进制的东西
     -d, --directories=ACTION  目录操作,读取,递归,跳过
     -D, --devices=ACTION      设置对设备,FIFO,管道的操作,读取,跳过
     -R, -r, --recursive       递归调用
     --include=PATTERN     只查找匹配FILE_PATTERN 的文件
     --exclude=PATTERN     跳过匹配FILE_PATTERN 的文件和目录
     --exclude-from=FILE   跳过所有除FILE 以外的文件
     -L, --files-without-match 匹配多个文件时,显示不匹配的文件名
     -l, --files-with-matches  匹配多个文件时,显示匹配的文件名
     -c, --count               显示匹配的行数
     -Z, --null                在FILE 文件最后打印空字符

    文件控制:
     -B, --before-context=NUM  打印匹配本身以及前面的几个行由NUM控制
     -A, --after-context=NUM   打印匹配本身以及随后的几个行由NUM控制
     -C, --context=NUM         打印匹配本身以及随后,前面的几个行由NUM控制
     -NUM                      根-C的用法一样的
     --color[=WHEN],
     --colour[=WHEN]       使用标志高亮匹配字串;
     
     -U, --binary               使用标志高亮匹配字串;
     -u, --unix-byte-offsets   当CR 字符不存在,报告字节偏移(MSDOS 模式)
    
    

    tar

    相关命令:unzip,bzip2,gunzip,tar,rar,gzip
     tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
     
     主操作模式:

     -A, --catenate, --concatenate   追加 tar 文件至归档
     -c, --create               创建一个新归档
     -d, --diff, --compare      找出归档和文件系统的差异
     --delete               从归档(非磁带!)中删除
     -r, --append               追加文件至归档结尾
     -t, --list                 列出归档内容
     --test-label           测试归档卷标并退出
     -u, --update               仅追加比归档中副本更新的文件
     -x, --extract, --get       从归档中解出文件

    yum

    相关命令:apt-get,pacman,rpm
    yum 命令:用于添加/删除/更新RPM包,自动解决包的依赖问题以及系统更新升级

    参数

    -e [error level], --errorlevel=[error level] 错误输出级别
    -q, --quiet 安静的操作
    -t 忽略错误
    -R[分钟] 设置等待时间
    -y 自动应答yes
    --skip-broken 忽略依赖问题
    --nogpgcheck 忽略GPG验证

    check-update 检查可更新的包
    clean all 清除全部
    clean packages 清除临时包文件(/var/cache/yum 下文件)
    clean headers 清除rpm头文件
    clean oldheaders 清除旧的rpm头文件
    deplist 列出包的依赖
    list 可安装和可更新的RPM包
    list installed 已安装的包
    list extras 已安装且不在资源库的包
    info 可安装和可更新的RPM包 信息
    info installed 已安装包的信息(-qa 参数相似)
    install[RPM包] 安装包
    localinstall 安装本地的 RPM包
    update[RPM包] 更新包
    upgrade 升级系统
    search[关键词] 搜索包
    provides[关键词] 搜索特定包文件名
    reinstall[RPM包] 重新安装包
    repolist 显示资源库的配置
    resolvedep 指定依赖
    remove[RPM包] 卸载包

    rpm

    相关命令:apt-get,yum,pacman
    rpm是一个功能十分强大的软件包管理系统,它使得在Linux下安装、升级和删除软件包的工作变得容易,并且具有查询、验证软件包的功能。与图形化工具相比,使用命令行可以获得更大的灵活性。以下的例子都以example-1.2.3-1.i386.rpm代表对象软件包的名称

    参数与选项


    一、安装选项

    命令格式:

    rpm -i ( or --install) options file1.rpm ... fileN.rpm

    参数:

    file1.rpm ... fileN.rpm 将要安装的RPM包的文件名

    详细选项:

    -h (or --hash) 安装时输出hash记号 (``#'')
    --test 只对安装进行测试,并不实际安装。
    --percent 以百分比的形式输出安装的进度。
    --excludedocs 不安装软件包中的文档文件
    --includedocs 安装文档
    --replacepkgs 强制重新安装已经安装的软件包
    --replacefiles 替换属于其它软件包的文件
    --force 忽略软件包及文件的冲突
    --noscripts 不运行预安装和后安装脚本
    --prefix 将软件包安装到由 指定的路径下
    --ignorearch 不校验软件包的结构
    --ignoreos 不检查软件包运行的操作系统
    --nodeps 不检查依赖性关系
    --ftpproxy 用 作为 FTP代理
    --ftpport 指定FTP的端口号为

    通用选项

    -v 显示附加信息
    -vv 显示更加详细的信息
    --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安
    装程序都会安装到这个目录下
    --rcfile 设置rpmrc文件为

    --dbpath 设置RPM 资料库存所在的路径为

    Linux除了上述重要命令外,还有两个重要的东西,那就是重定向跟管道,下面来介绍一下这两个重要内容

    1.标准输入和输出

    linux中给出了三种有关设备:

    标准输入:stdin ,由0表示,默认接受来自键盘的输入
    标准输出:stdout,由1表示,默认输出到终端窗口
    标准错误:stderr,由2表示,默认输出到终端窗口

    stdout就是输出正确的信息,stderr就是输出的错误提示信息。
    重定向和管道就是为了重定向这些输入和输出的。

    2.重定向

    重定向有多种形式,可以重定向输出到文件,可以重定向输出到下个命令,可以重定向输入到命令来被使用。

    1)重定输出向到文件

    >:把stdout重定向到文件,文件内容会被覆盖
    >>:把stdout重定向到文件,文件内容不会被覆盖,而是在原有基础上追加内容
    2>:把stderr重定向到文件,进行覆盖。
    2>>:把stderr重定向到文件,进行追加。
    &>or >& or 2>&1:把stdout和stderr作为同一个数据流重定向到文件
    &>>:把stdout和stderr就是进行重定向追加了
    (程序命令;程序命令;...):配合上述格式,可以合并多个程序命令的stdout和stderr来覆盖或追加

    为了防止误操作来把文件给覆盖掉,造成数据丢失,可以通过set 命令来禁止和允许>的覆盖操作:

    set -C:禁止将内容覆盖
    set +C:允许覆盖

    注意:stdout和stderr分开输出到不同文件时,必须是stdout在前,stderr在后,也就是2>2>>2>&1都需要在正确输出的后面。
    具体的写法如下:

    command > /path/to/file.out 2> /path/to/error.out
    command >> /path/to/file.all.out 2>>/path/to/error.out
    command > /path/to/file.all.out 2>&1 == command &> /path/to/file.all.out == command >& /path/to/file.all.out

    2)重定向输入到命令

    使用 <来重定向文件导向给stdin。
    某些命令能够接收从文件中导入的stdin
    例如:

    使用<<终止词来重定向从键盘上输入的多行内容导向给stdin。
    直到终止词位置的所有文件都发送给stdin。

    3.管道

    管道符号“|”用来连接命令:

    command 1 | command 2 | command 3 | ...
    上述是将command 1的stdout 发送给command 2的stdin,command 2 的stdout 发送给command 3的stdin,最后command 3的会在当前shell进程的子shell进程中执行出来。
    系统默认不支持stderr进行管道转发,但可以利用2>&1|& 来实现。
    例如:

    管道中的-符号的用法:
    tar -cvf - /home |tar -xvf -
    这条命令是将/home里的文件打包,但打包的数据没有记录到某个文件,而是直接传送到stdout,经过管道后,将打包的数据送给tar -xvf来执行,后面的这个-就是取的前面的stdout,这样就不需要使用临时的文件了。

    4.重定向到多个目标:tee

    tee命令可以用到管道中,来保存管道不同阶段的输出,可以用于复杂管道的故障排除,同时查看和记录阶段输出。

    tee - read from standard input and write to standard output and files
    tee [OPTION]... [FILE]...
    -a, --append:追加数据到文件
    -i, --ignore-interrupts : 忽略中断符号

    例如:
    command 1 | tee -a file | command 2
    把command 1的stdout保存到file中,并且再作为command 2的stdin

  • 相关阅读:
    mysql之优化器、执行计划、简单优化
    一条查询sql的执行流程和底层原理
    mysql建立索引,实际工作中建立索引的示例
    explain命令---查看mysql执行计划
    mysql 一些知识点
    开发中一些快捷键的使用
    simple-rpc
    maven
    数组合并排序
    SpringMVC配制全局的日期格式
  • 原文地址:https://www.cnblogs.com/sank/p/11049653.html
Copyright © 2011-2022 走看看