Linux 系统常用命令格式:
$ command [option] [argument1] [argument2] ...
其中 option
以 -
开始,多个 option
可用一个 -
连起来,如: ls -l -a
与 ls -la
的效果是一样的。
获取相关命令的帮助信息
实例
$ man ls
用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
语法
$ 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
清除屏幕上的信息,它类似于DOS中的 cls 命令。 清屏后,提示符移动到屏幕左上角。
语法
$ clear
chmod 用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。 该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含 数字的数字设定法。
语法
$ 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
数字设定法,可将其相加,其顺序是(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
更改某个文件或目录的属主和属组。
语法
$ chown [选项] [所有者][:[组]] 文件
常用选项
-R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。
-v 显示chown命令所做的工作。
实例
# 把目录 /test 及其下的所有文件和子目录的属主改成 user_00,属组改成 guest
$ chown -R user_00:guest /test
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中
语法
$ cp [选项] 源文件或目录 目标文件或目录
常用选项
-a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,
其作用等于dpR选项的组合。
-d 拷贝时保留链接。
-f 删除已经存在的目标文件而不提示。
-i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。
回答y时目标文件将被覆盖,是交互式拷贝。
-p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。
此时目标文件必须为一个目录名。
-l 不作拷贝,只是链接文件。
实例
# % 将 /usr/xu 目录中的所有文件及其子目录拷贝到目录 /usr/liu 中。
$ cp -r /usr/xu/ /usr/liu/
该命令的功能为逐行比较两个文本文件,列出其不同之处
语法
$ diff [选项] file1 file2
常用选项
-b 忽略行尾的空格,而字符串中的一个或多个空格符都视为相等。
-c 采用上下文输出格式(提供三行上下文)。
-C n 采用上下文输出格式(提供 n 行上下文)。
-e 产生一个合法的 ed 脚本作为输出。
-r 当 file1 和 file2 是目录时,递归作用到各文件和目录上。
在目录结构中搜索文件,并执行指定的操作。
语法
$ 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 {} \;
强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。
语法
$ 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 *
该命令在文件之间创建链接。
语法
$ ln [参数] [源文件或目录] [目标文件或目录]
常用选项
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
实例
# 为当前目录下的文件 lunch 创建了一个符号链接 /home/xu。
ln -s lunch /home/xu
将一个档案移至另一档案,或将数个档案移至另一目录。
语法
$ mv [选项] 源文件或目录 目标文件或目录
常用选项
-b 当遇到要覆盖其他文件或目录时,将自动备份,备份文件名为
原文件名加上 -S 参数指定的字符串,若未设置则加上“~”
-i 若目的地已有同名档案,则先询问是否覆盖旧档
-f 若目的地已有同名档案,直接覆盖旧档而不备份
-u 当要覆盖的文件或目录比源文件要新,则不覆盖目标文件;
-S <字符串> 指定备份文件名后要加上的字符串。
实例
# 将所有的 .js 文件移至 src 子目录中。
$ mv -i *.js src
示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
语法
$ 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
用来显示文件所包含的行、字和字节数。
语法
$ wc [选项] [文件]
常用选项
-c 统计字节数
-l 统计行数
-m 统计字符数,这个标志不能与 -c 标志一起使用
-w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
-L 打印最长行的长度
实例
# 统计test文件行号
$ wc -l test.txt
$ cat test.txt | wc -l
用来压缩和解压文件。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
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
语法
$ unzip [选项] 压缩包
常用选项
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
实例
# 查看压缩文件中包含的文件
$ unzip -l abc.zip
# 查看压缩文件目录信息,但是不解压该文件。
$ unzip -v abc.zip
显示指定磁盘文件的可用空间。
语法
$ 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
显示每个文件和目录的磁盘使用空间。
语法
$ 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
ping 命令用于检测主机
语法
ping [选项] 主机名称或IP地址
常用选项
-d 使用Socket的SO_DEBUG功能。
-c<完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-I<网络界面> 使用指定的网络接口送出数据包。
-l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
实例
# 检测是否与主机连通
$ ping www.qq.com
# 指定接收包的次数
$ ping -c 2 www.qq.com
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'