Linux 常用命令

  • 作者:约克
  • 原文地址:
  • 文章版权归作者所有,转载请注明出处!

前言

Linux 系统常用命令格式:

$ command  [option]  [argument1]  [argument2]  ...

其中 option- 开始,多个 option 可用一个 - 连起来,如: ls -l -als -la 的效果是一样的。

一,帮助命令

1.1. man

获取相关命令的帮助信息

  • 实例

    $ man ls

二,文件操作

2.1. cat

用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

  • 语法

    $ cat [选项] 文件
  • 常用选项

    -n 或 --number:由 1 开始对所有输出的行数编号。
    -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
    -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
    -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
    -E 或 --show-ends : 在每行结束处显示 $。
    -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
    -A, --show-all:等价于 -vET。
    -e:等价于"-vE"选项;
    -t:等价于"-vT"选项;
  • 实例

    # 把 test.log 的文件内容加上行号后输入 test1.log 这个文件里。
    $ cat -n test.log  test1.log
    # 把文件filel和文件file2的内容合并起来,放入文件file3中。
    $ cat file1 file2 > file3

2.2. clear

清除屏幕上的信息,它类似于DOS中的 cls 命令。 清屏后,提示符移动到屏幕左上角。

  • 语法

    $ clear

2.3. chmod

chmod 用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。 该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含 数字的数字设定法。

2.3.1. 文字设定法

  • 语法

    $ chmod [who] [+ | - | =] [mode] 文件名
  • 常用选项

    操作对象who可是下述字母中的任一个或者它们的组合:
      u 表示“用户(user)”,即文件或目录的所有者。
      g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
      o 表示“其他(others)用户”。
      a 表示“所有(all)用户”。它是系统默认值。
    操作符号可以是:
      + 添加某个权限。
      - 取消某个权限。
      = 赋予给定权限并取消其他所有权限(如果有的话)。
    设置 mode 所表示的权限可用下述字母的任意组合:
      r 可读。
      w 可写。
       x 可执行。
      X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
      s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
            方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
      t 保存程序的文本到交换设备上。
      u 与文件属主拥有一样的权限。
      g 与和文件属主同组的用户拥有一样的权限。
      o 与其他用户拥有一样的权限。
    文件名:以空格分开的要改变权限的文件列表,支持通配符。
  • 实例

    # 使同组和其他用户对文件 fileName 有读权限。
    $ chmod g+r, o+r fileName

2.3.2. 数字设定法

数字设定法,可将其相加,其顺序是(u)(g)(o)。例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

r:读权限,用数字4表示
w:写权限,用数字2表示
x:执行权限,用数字1表示
-:删除权限,用数字0表示
  • 语法

    $ chmod [mode] 文件名
  • 实例

    # 即设定文件 test.txt 的属性为:-rw-r--r-- 文件属主(u)inin 拥有读、写权限 与文件属主同组人用户(g) 拥有读权限 其他人(o) 拥有读权限 
    $ chmod 644 test.text

2.4. chown

更改某个文件或目录的属主和属组。

  • 语法

    $ chown [选项] [所有者][:[组]] 文件
  • 常用选项

    -R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。
    -v 显示chown命令所做的工作。
  • 实例

    # 把目录 /test 及其下的所有文件和子目录的属主改成 user_00,属组改成 guest
    $ chown -R user_00:guest /test

2.5. copy

该命令的功能是将给出的文件或目录拷贝到另一文件或目录中

  • 语法

    $ cp [选项] 源文件或目录 目标文件或目录
  • 常用选项

    -a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,
        其作用等于dpR选项的组合。
    -d 拷贝时保留链接。
    -f 删除已经存在的目标文件而不提示。
    -i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。
        回答y时目标文件将被覆盖,是交互式拷贝。
    -p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
    -r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。
        此时目标文件必须为一个目录名。
    -l 不作拷贝,只是链接文件。
  • 实例

    # % 将 /usr/xu 目录中的所有文件及其子目录拷贝到目录 /usr/liu 中。
    $ cp -r /usr/xu/ /usr/liu/

2.6. diff

该命令的功能为逐行比较两个文本文件,列出其不同之处

  • 语法

    $ diff [选项] file1 file2
  • 常用选项

    -b 忽略行尾的空格,而字符串中的一个或多个空格符都视为相等。
    -c 采用上下文输出格式(提供三行上下文)。
    -C n 采用上下文输出格式(提供 n 行上下文)。
    -e 产生一个合法的 ed 脚本作为输出。
    -r 当 file1 和 file2 是目录时,递归作用到各文件和目录上。

2.7. find

在目录结构中搜索文件,并执行指定的操作。

  • 语法

    $ find [起始目录] 寻找条件 操作
  • 常用选项

    # 以名称和文件属性查找。
        -name '字串'  查找文件名匹配所给字串的所有文件,字串内可用通配符 *、?、[ ]。
        -lname '字串' 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符 *、?、[ ]。
        -gid n          查找属于ID号为 n 的用户组的所有文件。
        -uid n          查找属于ID号为 n 的用户的所有文件。
        -group '字串' 查找属于用户组名为所给字串的所有的文件。
        -user '字串'  查找属于用户名为所给字串的所有的文件。
        -empty          查找大小为 0的目录或文件。
        -path '字串'  查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。
        -perm 权限    查找具有指定权限的文件和目录,权限的表示可以如711,644。
        -size n[bckw] 查找指定文件大小的文件,n 后面的字符表示单位,缺省为 b,代表512字节的块。
        -type x   查找类型为 x 的文件,x 为下列字符之一:
    # 以时间为条件查找
        -amin n  查找n分钟前被访问过的所有文件。
        -atime n 查找n天前被访问过的所有文件。
        -cmin n  查找n分钟前文件状态被修改过的所有文件。
        -ctime n 查找n天前文件状态被修改过的所有文件。
        -mmin n  查找n分钟前文件内容被修改过的所有文件。
        -mtime n 查找n天以前文件内容被修改过的所有文件。
    # 可执行的操作
        -exec 命令名称 {}  对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。
            {}表示命令的参数即为所找到的文件;命令的末尾必须以“ \;”结束。
        -ok 命令名称 {}   对符合条件的文件执行所给的Linux 命令,与exec不同的是,
            它会询问用户是否需要执行该命令。
  • 实例

    # 查找当前目录中所有以main开头的文件,并显示这些文件的内容。
    $ find . -name ‘main*' -exec more {} \;

2.8. grep

强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。

  • 语法

    $ grep [选项] [查找模式] [文件名1,文件名2,……]
  • 常用选项

    -E 每个模式作为一个扩展的正则表达式对待。
    -F 每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式。
    -b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量。
    -c 只显示匹配行的数量。
    -i 比较时不区分大小写。
    -h 在查找多个文件时,指示grep不要将文件名加入到输出之前。
    -l 显示首次匹配串所在的文件名并用换行符将其隔开。
    当在某文件中多次出现匹配串时,不重复显示此文件名。
    -n 在输出前加上匹配串所在行的行号(文件首行行号为1)。
    -v 只显示不包含匹配串的行。
    -x 只显示整行严格匹配的行。
    -e expression 指定检索使用的模式。用于防止以“-”开头的模式被解释为命令选项。
    -f expfile 从expfile文件中获取要搜索的模式,一个模式占一行。
    -r 递归搜索
    --color=auto 将找到的关键词部分加上颜色显示
  • 实例

    # 将 /etc/passwd 文件中出现 root 的行取出来,关键词部分加上颜色显示。
    $ grep "root" /etc/passwd --color=auto
    # “*”用来生成一个文件名列表,包含当前目录下所有的文件
    $ grep data *

2.9. ln

该命令在文件之间创建链接。

  • 语法

    $ ln [参数] [源文件或目录] [目标文件或目录]
  • 常用选项

    -b 删除,覆盖以前建立的链接
    -d 允许超级用户制作目录的硬链接
    -f 强制执行
    -i 交互模式,文件存在则提示用户是否覆盖
    -n 把符号链接视为一般目录
    -s 软链接(符号链接)
    -v 显示详细的处理过程
  • 实例

    # 为当前目录下的文件 lunch 创建了一个符号链接 /home/xu。
    ln -s lunch /home/xu

2.10. mv

将一个档案移至另一档案,或将数个档案移至另一目录。

  • 语法

    $ mv [选项] 源文件或目录 目标文件或目录
  • 常用选项

    -b  当遇到要覆盖其他文件或目录时,将自动备份,备份文件名为
        原文件名加上 -S 参数指定的字符串,若未设置则加上“~”
    -i  若目的地已有同名档案,则先询问是否覆盖旧档
    -f  若目的地已有同名档案,直接覆盖旧档而不备份
    -u  当要覆盖的文件或目录比源文件要新,则不覆盖目标文件;
    -S  <字符串>  指定备份文件名后要加上的字符串。
  • 实例

    # 将所有的 .js 文件移至 src 子目录中。
    $ mv -i *.js src

2.11. tail

示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

  • 语法

    $ tail [必要参数] [选择参数] [文件]
  • 常用选项

    -f 循环读取
    -q 不显示处理信息
    -v 显示详细的处理信息
    -c <数目> 显示的字节数
    -n <行数> 显示行数
    --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
    -q, --quiet, --silent 从不输出给出文件名的首部
    -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
  • 实例

    # 循环查看文件内容
    $ tail -f web-access.log

2.12. wc

用来显示文件所包含的行、字和字节数。

  • 语法

    $ wc [选项] [文件]
  • 常用选项

    -c 统计字节数
    -l 统计行数
    -m 统计字符数,这个标志不能与 -c 标志一起使用
    -w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
    -L 打印最长行的长度
  • 实例

    # 统计test文件行号
    $ wc -l test.txt
    $ cat test.txt | wc -l

三,压缩备份

3.1. tar

用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的。

  • 语法

    $ tar [必要参数] [选择参数] [文件]
  • 常用选项

    -A 新增压缩文件到已存在的压缩
    -B 设置区块大小
    -c 建立新的压缩文件
    -d 记录文件的差别
    -f <备份文件>或--file=<备份文件> 指定备份文件。
    -r 添加文件到已经压缩的文件
    -u 添加改变了和现有的文件到已经存在的压缩文件
    -x 从压缩的文件中提取文件
    -t 显示压缩文件的内容
    -z 支持gzip解压文件
    -j 支持bzip2解压文件
    -Z 支持compress解压文件
    -v 显示操作过程
    -l 文件系统边界设置
    -k 保留原有文件不覆盖
    -m 保留文件不被覆盖
    -W 确认压缩文件的正确性
  • 实例

    # 仅打包,不压缩!
    $ tar -cvf test.tar test.log 
    # 打包后,以 gzip 压缩 
    $ tar -zcvf test.tar.gz test.log 
    # 打包后,以 bzip2 压缩
    $ tar -jcvf test.tar.bz2 test.log
    # 解压文件
    $ tar -xzvf test.tar.gz

3.2. zip

zip 命令,类似于 Windows 系统中的 winzip 压缩程序

  • 语法

    $ zip [选项] 压缩包名 源文件或源目录列表
  • 常用选项

    -r	递归压缩目录,及将制定目录下的所有文件以及子目录全部压缩。
    -m	将文件压缩之后,删除原始文件,相当于把文件移到压缩文件中。
    -v	显示详细的压缩过程信息。
    -q	在压缩的时候不显示命令的执行过程。
    -压缩级别	压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好。
    -u	更新压缩文件,即往压缩文件中添加新文件。
  • 实例

    # 将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:
    $ zip -qr html.zip /home/html
    # 从压缩文件 cp.zip 中删除文件 a.c
    $ zip -dv cp.zip a.c

3.3. unzip

  • 语法

    $ unzip [选项] 压缩包
  • 常用选项

    -c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
    -f 更新现有的文件。
    -l 显示压缩文件内所包含的文件。
    -p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
    -t 检查压缩文件是否正确。
    -u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
    -v 执行是时显示详细的信息。
  • 实例

    # 查看压缩文件中包含的文件
    $ unzip -l abc.zip 
    # 查看压缩文件目录信息,但是不解压该文件。
    $ unzip -v abc.zip

四,磁盘操作

4.1. df

显示指定磁盘文件的可用空间。

  • 语法

    $ df [选项] [文件]
  • 常用参数

    -a 全部文件系统列表
    -h 方便阅读方式显示
    -H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
    -i 显示inode信息
    -k 区块为1024字节
    -l 只显示本地文件系统
    -m 区块为1048576字节
    --no-sync 忽略 sync 命令
    -P 输出格式为POSIX
    --sync 在取得磁盘信息前,先执行sync命令
    -T 文件系统类型
  • 实例

    # 显示指定磁盘使用情况
    $ df -f

4.2. du

显示每个文件和目录的磁盘使用空间。

  • 语法

    $ du [选项] [文件]
  • 常用参数

    -a或-all 显示目录中个别文件的大小。
    -b或-bytes 显示目录或文件大小时,以byte为单位。
    -- -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    -k或--kilobytes 以KB(1024bytes)为单位输出。
    -m或--megabytes 以MB为单位输出。
    -s或--summarize 仅显示总计,只列出最后加总的值。
    -h或--human-readable 以K,M,G为单位,提高信息的可读性。
    -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
    -L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
    -S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
    -X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
    --exclude=<目录或文件> 略过指定的目录或文件。
    -D或--dereference-args 显示指定符号链接的源文件大小。
    -H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
    -l或--count-links 重复计算硬件链接的文件。
  • 实例

    # 显示指定目录
    $ du test
    # 显示文件所占空间
    $ du test.log

五,网络通信

5.1. ping

ping 命令用于检测主机

  • 语法

    ping [选项] 主机名称或IP地址
  • 常用选项

    -d 使用Socket的SO_DEBUG功能。
    -c<完成次数> 设置完成要求回应的次数。
    -f 极限检测。
    -i<间隔秒数> 指定收发信息的间隔时间。
    -I<网络界面> 使用指定的网络接口送出数据包。
    -l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
    -n 只输出数值。
  • 实例

    # 检测是否与主机连通
    $ ping www.qq.com 
    # 指定接收包的次数
    $ ping -c 2 www.qq.com

5.2. netstat

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

  • 语法

    $ netstat [选项]
  • 常用选项

    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态
    
    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。
  • 实例

    # 列出所有端口
    $ netstat -a | more
    # 列出所有 tcp 端口 netstat -at
    $ netstat -at
    # 列出所有 udp 端口 netstat -au
    $ netstat -au
    # 列出所有处于监听状态的 Sockets
    $ netstat -l
    $ netstat -lt
    # 找出程序运行的端口
    $ netstat -ap | grep ssh
    # 找出运行在指定端口的进程
    $ netstat -an | grep ':80'

参考


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!