Linux 常用命令
前言
Linux 系统常用命令格式:
$ command [option] [argument1] [argument2] ...
其中 option
以 -
开始,多个 option
可用一个 -
连起来,如: ls -l -a
与 ls -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'
参考
- [1] Linux 常用命令
- [2] 45 个常用Linux 命令,让你轻松玩转Linux!
- [3] Linux 命令大全
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!