Linux 常用命令笔记(附使用例子)

使用 VPS 需要掌握一些基础 Linux 命令,本页总结 Linux 那些高频使用命令,以便新手收藏使用。文中示例命令有用 <> 尖括号,作为突出显示之用,实际使用中并不用附带。如需了解命令参数详情,请查看 man 手册内容。

常用基础类

cd (进入目录)

cd 用来改变工作目录。通过 cd 命令,可以访问指定目录,前进到子目录、后退到父目录,返回到起始目录等。

说明 命令
进入指定目录 cd <目录路径>
进入根目录 cd /
返回用户目录 cd ~
返回上一层目录 cd ..
返回上次所处目录 cd -
输出当前目录路径 pwd

ls (列出文件)

ls 用于列出目录文件。单纯用 ls 命令会列出目录下的文件和文件夹,但不显示特殊文件,例如以 . 开头的文件。若要显示全部文件,请附加 -a 参数。

说明 命令
列出全部内容及文件属性 ls -al
按字母顺序倒序排列 ls -r
按文件日期倒序排列 ls -t
按文件大小顺序排列 ls -S
迭代显示所有子目录 ls -R
列出指定目录下的文件 ls -al <路径>

cp (拷贝文件)

cp 命令用于复制文件或目录。如果目标文件已存在,cp 默认覆盖原来内容,但相关的方式、所有者和组不改变。

说明 命令
拷贝文件到指定目录(多个文件用空格隔开) cp <文件名> <目标路径>
创建文件副本到当前目录 cp <文件名> <备份文件名>
拷贝整个目录(目标路径最后一级不要带/斜杠) cp -r <目录名> <目标路径>
拷贝目录下某一类型文件 cp *.<文件后缀名> <目标路径>
拷贝过程中显示进度信息 cp -v <目录名> <目标路径>
拷贝文件时保留日期权限等信息 cp -p <文件名> <目标路径>
拷贝目录时保留日期权限等信息 cp -a <目录名> <目标路径>
删除目标目录下同名文件再拷贝 cp --remove-destination <文件名> <目标路径>
若存在问题文件,可附加-f参数强制覆盖 cp -f <文件名> <目标路径>

mv (移动及重命名)

mv 命令用来移动文件/目录。如果移动目标在同目录下,它则起重命名的效果(如果需要批量重命名文件,另一个 rename 命令更好用,例如将目录下所有 .txt 后缀文件改为 .log,命令只需 rename .txt .log *.txt)。

说明 命令
移动文件(多个文件以空格相隔,也可用通配符批量选择) mv <文件名> <目标路径>
移动目录 mv <目录名> <目标路径>
只在原始文件比目标文件新的情况下移动 mv -uv <文件名> <目标路径>
移动覆盖目标文件前创建备份(后缀文件为备份) mv -bv <文件名> <目标路径>

rm (删除文件)

rm 命令用于删除文件、目录或符号链接等对象。新手使用建议附加 -i 参数,这样删除前需要经过确认,避免误删文件。

说明 命令
删除文件(多个用空格间隔) rm <文件名>
强制删除并忽略提示信息 rm -f <文件名>
删除文件夹 rm -r <目录名>
显示删除过程信息 rm -rv <目录名>
强制删除特殊目录 rm --no-preserve-root <目录名>

cat (查看文件)

cat 命令用作读取文件内容,将内容输出到标准设备。支持一次读取多个文件,适用于任何类型的数据文件。

说明 命令
查看文件内容(可用空格间隔打开多个文件,但内容是连续输出的) cat <文件名>
内容显示行号(还有一个-b参数是在空格行不显示行号) cat -n <文件名>
分页显示内容(当内容太长时,可结合less命令分页显示。用PageUpPageDown上下翻页,按q退出) cat <文件名> | less
将内容输出到文件(将>改为>>可以把文件内容追加到已存在文件的尾部。多文件还可结合sort命令排序) cat File.txt > NewFile.txt
创建文件,输入内容后按Ctrl+D保存退出 cat >NewFile.txt

vi (编辑文件)

vi是 Linux 内置基础编辑器。要编辑修改文件,先运行 vi <文件名>,然后按 ia 进入插入模式,修改内容后按 Esc,接着输入 :wq 保存退出,若不保存退出则用 :q! 指令。

以上是基本用法,为满足日常使用需求,有必要掌握下面常用命令(在命令模式下使用,也就是编辑模式下要先按 Esc)。

说明 命令
快速定位内容行 打开文件时直达第 50 行:vi +50 <文件名>
在命令模式下则先按:,然后输入行数回车
显示行号 :set nu
搜索关键词(按n浏览下个匹配项。:set hlsearch命令可高亮显示匹配项) :/关键词
替换关键词(例如将abc替换为xyz。若只需替换一次,则去掉g参数) :s/abc/xyz/g
光标快捷键 k上移一行(如5k则上移5行)
j下移一行(如5j则下移5行)
h左移一个字符(如5h则左移5个字符)
l右移一个字符(如5l则右移5个字符)
0移至该行行首
$移至该行行尾
nG移至第 n 行
G移至最后一行
{移到上一段
}移到下一段
编辑快捷键 i在光标位置之前输入
a在光标位置之后输入
I在光标位置行首输入
A在光标位置行尾输入
o在光标所在行之后添加一行
O在光标所在行之前添加一行
删除快捷键 dd删除光标所在行(如50dd则从当前行开始删除50行)
d$删除光标所在位置直至行尾
d^删除光标所在位置直至行首

mkdir (创建目录)

mkdir 命令用来创建文件夹目录,可以创建一个或多个目录,操作者必须拥有对父级目录的写入权限。

说明 命令
在当前工作目录下创建新目录(多个用空格隔开) mkdir <目录名>
在指定路径创建新目录,添加-p参数可在缺失中间路径情况下归递创建 mkdir -p <目录路径>
创建目录的同时设置权限 mkdir -m 755 <目录名>

find (查找文件)

find 命令用于搜索目录(包含子目录)下的文件。可以按多种搜索条件进行查找,例如关键词、类型、修改时间等。find 旧版本可能不打印查询结果,需附加 -print 参数显示。

说明 命令
按文件名搜索(多目录用空格隔开。当前目录用.点号表示路径) find <目录路径> -name <关键词>
仅搜索普通文件,排除目录、特殊文件、符号链接等 find . -name '<关键词>' -type f
按文件类型搜索(灵活善用通配符可以使搜索范围收窄) find <目录路径> -name "*.txt"
按更新时间列出文件(-mtime单位为天,-mmin单位为分钟。-10代表10天内,+10代表10天前) find <目录路径> -mtime -10
按文件大小查找(c为字节数,k为千字节,b为512字节。-+表示小于和大于。示例列出大于10MB文件) find <目录路径> -size +10240k
按文件权限查找(示例列出755权限文件) find <目录路径> -perm 755
按文件所属用户组查找 find <目录路径> -group <组名称>

grep (关键词查找所属文件)

grep 命令根据所给出的关键词,在文件或目录中查找内容所属文件,并输出符合条件的内容行。配合正则表达式还可实现更灵活强大的搜索。

说明 命令
在指定文件内搜索(-i忽略大小写,-n显示内容行号。-C 3显示关键词前后3行内容) grep -in -C 3 "<关键词>" <文件名>
在多个文件内搜索(例如批量选择名称file_开头的文件) grep "<关键词>" file_*
按单词模式搜索,而非简单匹配字符 grep -iw "<关键词>" <文件名>
在指定目录下搜索,搜索包含子目录(当前目录用*星号表示路径) grep -r "<关键词>" <目录路径>
同时搜索多个关键词 grep -E "<关键词1>|<关键词2>" <文件名>
查询含有搜索内容的文件路径 grep -l "<关键词>" <文件名>
查询匹配内容行的总数 grep -c "<关键词>" <文件名>
排除关键词反向搜索,输出不包含关键词的所有行 grep -v "<关键词>" <文件名>
在命令输出中过滤显示(例如在ifconfig结果里输出网卡IPv4信息) ifconfig | grep -w "inet"

以下是grep使用正则表达式搜索例子。

说明 命令
仅输出符合条件的内容(例如只输出以hi开头bye结束的内容) grep -o "hi.*bye" <文件名>
搜索特殊字符内容(例如搜索IP地址,由于带点号,需要转义输入) grep "127\.0\.0\.1" <文件名>
匹配行头关键词(例如显示8月31号开头的内容,查看日志时经常这样用) grep "^Aug 31" <文件名>
匹配行尾关键词(与^相反,$用来匹配行尾字符。例如显示行末带terminating.的内容) grep "terminating.$" <文件名>
查询文件里的空行数 grep -c "^$" <文件名>
查询带空格的关键词(例如以hi开头,紧接至少有1个空格,以bye结尾的内容。若只匹配1个空格或没有空格,请用 \?表示。空格可换为其它字符,这里仅举例说明\+\?用法) grep "hi \+bye" <文件名>
搜索与数字混合的内容(同样在查看日志时经常用到,例如显示有哪些错误重试事件。示例查询以times结束,前面有空格和数字的内容。-B 1为显示前1行内容) grep -B 1 "[0-9]\+ times" <文件名>

wget (下载文件)

wget是广泛使用的下载工具,支持通过 FTP、HTTP、HTTPS 协议下载文件。wget 可能需要手动安装,安装如下。

Linux发行版 安装命令
CentOS yum install wget
Ubuntu & Debian apt-get install wget
Fedora dnf install wget
Arch Linux pacman -S wget
Gentoo emerge --ask net-misc/wget

下面是 wget 使用示例。

说明 命令
下载单个文件(默认保存在当前目录下) wget <下载链接>
下载多个文件(将下载链接写入文件,一行一个,然后读取文件下载) wget -i <下载列表文件>
忽略检查SSL证书,避免本机未安装证书情况下无法下载 wget --no-check-certificate <下载链接>
设置下载文件名(避免因动态下载链接导致的文件名混乱) wget -O <文件名> <下载链接>
分段续传下载,当意外中断后重复相同下载命令即可恢复,不必重新下载 wget -c <下载链接>
放置后台下载,运行tail -f wget-log命令可查看下载进度 wget -b <下载链接>
限制下载速度(例如将速率上限设置为500k) wget --limit-rate=500k <下载链接>
设置重试次数,默认下载遇到问题会重试20次,可为任务自定义重试次数 wget --tries=50 <下载链接>
设置下载大小限额,例如总大小达到100m时自动退出(仅适用于归递下载) wget -Q100m -i <下载列表文件>
将下载日志信息保存到文件 wget -o <日志文件名> <下载链接>
目录下若存在同名文件,不覆盖文件 wget -nc <下载链接>
ftp身份认证下载(安全起见,下载后建议删除命令历史记录和wge日志文件) wget --ftp-user=<用户名> --ftp-password=<密码> <下载链接>
使用wget组合命令下载拷贝网页 wget -r -p -np -k <网页链接>
-r, --recursive(指定递归下载)
-k, --convert-links(将页面里的链接转换为相对链接即本地链接)
-p, --page-requisites(下载所有的图片等页面显示所需的内容)
-np, --no-parent(不追溯至父级)
--reject=txt(排除某类型文件,例如txt文件)
待递归下载完毕,在当前目录会自动生成下载目录

kill (结束进程)

kill 命令用于终止正在运行的程序进程,要结束一个进程首先需知道其 PID 标识。PID 可以通过 pstop 命令查询,为更快定位程序通常和 grep 命令组合使用。

说明 命令
查询程序PID标识,并结束该进程(多个进程用空格隔开) # 查询程序 PID
ps -ef | grep <程序关键词>
# 结束进程(-9意思是杀死进程,kill 缺省值为终止进程,前者较彻底。kill -l查看更多参数)
kill -9 <PID>
根据程序名称结束进程,而不是PID(同时结束相同名称程序) killall -9 <程序关键词>
结束所有进程(慎用) kill -9 -1

ps (查询进程)

之前提及过 ps 命令,这是一个查询活动进程状态的常用命令,有着相当多的选项参数,下面罗列几个主要用法。

说明 命令
显示所有进程 ps -e -f
显示特定用户拥有的进程(以root为例) ps -f -l -u root
搜索指定进程,例如nginx ps -A | grep nginx
查询进程运行时间 ps -e -o pid,etime,comm
查询内存占用前5的进程 ps aux --sort=-pmem | head -n 6
查看进程父子层级 ps -e -f --forest

tar (打包解压)

tar 命令可以将指定目录和文件打包,或从压缩档解压出文件,在备份传输文件时非常有用。下面示例默认使用 gzip 压缩算法(速度较快)。

说明 命令
打包文件 tar -zcvf backup.tgz 打包目录或文件路径
打包文件(压缩包内不带路径前缀,如路径/home/wwwroot/example.com,压缩包只显示example.com目录) tar -zcvf backup.tgz -C /home/wwwroot example.com
打包文件(同时保留文件属性) tar -zcpvf backup.tgz 打包目录或文件路径
打包文件(压缩档名称加上时间戳) tar -czvf backup-$(date +%Y%m%d_%H%M%S).tgz 打包目录或文件路径
解压文件 tar -zxvf backup.tgz
查看文件 tar -ztvf backup.tgz

未完待续……

说明 命令
修改 root 密码 passwd root
将文件夹权限改为 WWW 用户组 chown -R www 路径
导出 MySQL 数据库 mysqldump -uroot -p数据库密码 数据库名称 > /root/文件名$(date +”%Y%m%d”).sql
查看 CentOS 发行版信息 rpm -q centos-release
查看网络流量 iftop
查询内存占用最多的前 10 个进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -10
查询 CPU 占用最多的前 10 个进程 ps auxw|head -1;ps auxw|sort -rn -k3|head -10
查询虚拟内存占用最多的前 10 个进程 ps auxw|head -1;ps auxw|sort -rn -k5|head -10
crontab 定时任务时间格式 */1 * * * *(每隔1分钟)
0 * * * *(每隔1小时)
0 0 * * *(每隔1天)
0 0 * * 0(每隔1周)
0 0 1 * *(每隔1月)
0 0 1 1 *(每隔1年)
未完待续……