一、前言
本文主要总结了工作中常用的linux指令,有遇到新的命令会不定期更新。
二、系统监控和进程管理指令
2.1 ps命令
作用:查看当前进程信息。
常用选项:
- -e: 显示所有进程,包括其他用户的进程。
- -f: 显示更详细的进程信息,包括父进程 ID (PPID)、启动时间等。
- -u: 显示进程的用户名和内存使用情况。
- -aux: 组合选项,显示所有用户的详细进程信息。
- –sort: 根据指定字段对进程进行排序,例如 --sort=-%mem 按内存使用率降序排列。
例子:
root@lubancat-vm:/home/lubancat# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.8 0.3 169040 12708 ? Ss 12:51 0:03 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 12:51 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 12:51 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 12:51 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 12:51 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I< 12:51 0:00 [netns]
root 7 0.0 0.0 0 0 ? I 12:51 0:00 [kworker/0:0-rcu_par_gp]
root 8 0.0 0.0 0 0 ? I< 12:51 0:00 [kworker/0:0H-events_highpri]
名词解释:
USER:进程的所有者(启动该进程的用户)。
PID:进程 ID(Process ID),是系统分配给每个进程的唯一标识符。
%CPU:进程占用 CPU 的百分比。表示该进程在最近一段时间内对 CPU 的使用率。
%MEM:进程占用内存的百分比。表示该进程使用的物理内存占总内存的比例。
VSZ:虚拟内存大小(Virtual Memory Size),单位是 KB。表示进程占用的虚拟内存总量,包括正在使用的内存、已分配但未使用的内存,以及交换到磁盘的内存。
RSS:常驻内存大小(Resident Set Size),单位是 KB。表示进程当前实际占用的物理内存(不包括交换到磁盘的部分)。
TTY:进程关联的终端(Terminal)。
- ? 表示进程没有关联到任何终端(通常是后台进程或系统守护进程)。
- pts/0 或 tty1 表示进程关联到具体的终端。
STAT:进程的状态(Process State)。
常见的状态包括:
- R(Running):进程正在运行或可运行(在运行队列中)。
- S(Sleeping):进程正在等待某个事件完成(通常是 I/O 操作)。
- D(Uninterruptible Sleep):进程正在等待 I/O 操作,且不能被中断。
- Z(Zombie):僵尸进程,表示进程已终止,但其父进程尚未回收它。
- T(Stopped):进程被信号暂停(例如按 Ctrl+Z )。
- <:高优先级进程。
- N:低优先级进程。
- +:前台进程组中的进程。
- s:会话领导者(Session Leader)。
- l:多线程进程。(小写的L)
START:进程启动的时间。格式通常是 HH:MM:SS(小时:分钟:秒)。
TIME:进程占用 CPU 的总时间。格式是 HH:MM:SS,表示进程从启动到现在累计使用的 CPU 时间。
COMMAND:启动进程的命令名称或命令行。如果是用 ps aux 命令,会显示完整的命令行;如果是 ps -ef,则可能只显示命令名称。
2.2 top命令
作用:常用的分析性能的工具。
例子:
进程 USER PR NI VIRT RES SHR CPU %MEM TIME+ COMMAND 2257 wlc-work 20 0 46124 4192 3320 R 1.0 0.2 0:01.01 top 1 root 20 0 159832 8972 6556 S 0.0 0.4 0:04.40 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 5 root 20 0 0 0 0 I 0.0 0.0 0:00.14 kworker/0:0-eve 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kb 7 root 20 0 0 0 0 I 0.0 0.0 0:00.00 kworker/u256:0- 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0
名词解释:
PR: 进程的优先级。PR 是 “priority” 的缩写。进程的优先级决定了它在 CPU 调度中的优先顺序。数值越小,优先级越高。
NI: 进程的 “nice” 值。nice 值用于调整进程的优先级。数值范围是 -20 到 19,-20 表示最高优先级,19 表示最低优先级。nice 值越低,进程优先级越高。
VIRT: 进程使用的虚拟内存总量,单位通常为 KB 或 MB。它包括进程的代码、数据、共享库和文件映射等所占用的内存。
RES: 进程的常驻内存集(resident set size),即实际驻留在内存中的物理内存量。它不包括交换空间或虚拟内存。
SHR: 进程共享的内存大小,单位为 KB 或 MB。这个值表示该进程所使用的、可以被其他进程共享的内存区域(如共享库)。
CPU:当前进程占用的 CPU 百分比。这表示该进程使用的 CPU 时间的比率。比如,100% 表示进程正在占用一个完整的 CPU 核心。
%MEM:进程占用的物理内存的百分比,表示该进程使用的内存占系统总内存的比例。
TIME+:进程的总 CPU 时间,通常表示为分钟:秒的格式,显示进程自启动以来所消耗的 CPU 时间。
COMMAND:显示进程的命令名,即运行该进程的程序名称。通常是可执行文件的名称。
2.3 kill命令
作用:向指定的进程发送信号,常用于结束不再需要的进程或是停止占用过多资源的进程。尽管它叫做 “kill”,但它不仅仅是杀死进程,还可以发送多种信号来控制进程的行为。
基本用法:
kill <pid>
参数:
pid:进程的进程号。
该命令默认会发送一个SIGTERM信号(编号15),它请求进程优雅的终止。进程可以选择响应该信号并清理资源后退出。
SIGKILL (9):强制杀死进程,不允许进程进行任何清理。此信号不能被捕获或忽略,是一个“硬杀”命令。
kill -9 <pid>
使用 kill -9 强制结束进程时,进程没有机会进行清理操作,可能会导致数据丢失或文件损坏。因此,在可能的情况下,建议先使用默认的 SIGTERM 信号(kill )。
其他的信号的作用可以自行去搜索。
killall 进程名
假如你要杀死进程名为firework的进程,可以使用:
killall firework
2.4 shutdown命令
作用:用于安全地关闭或重启计算机。
基本用法:
shutdown [选项] [时间] [消息]
常用选项:
- -h 或 --halt :关闭系统。
- -r 或 --reboot :重启系统。
- -c 或 --cancel :取消已计划的关机或重启。
- -P 或 --poweroff :关闭系统并断电(默认行为)。
- -k :发送警告消息但不实际关机。
- -t <秒> :指定延迟时间后执行操作。(中间有个空格)
时间参数:
- now :立即执行。
- +<分钟> :指定分钟后执行,如 +5 表示5分钟后。
- HH:MM :在指定时间执行,格式为24小时制。
消息参数:
- 可选的广播消息,通知所有用户。
例子:
#立刻关机
shutdown -h now#五分钟之后关机
shutdown -h +5#晚上22点关机
shutdown -h 22:00#取消计划
shutdown -c#五分钟之后发送警告
shutdown -k +5 "系统即将关闭"
三、文件和目录管理指令
3.1 cd命令
作用:改变当前工作目录。
基本用法:
cd …:切换到当前目录的上级目录。
cd ~:切换到用户的主目录。
cd ./:保持当前目录。
cd -:切换到上一个工作目录。
cd /:切换到根目录。
3.2 ls命令
作用:列出目录中的文件和子目录。
基本用法:
ls [选项] [目录或文件]
- 若不指定目录或文件,默认列出当前目录的内容。
- 若指定目录,则列出该目录的内容。
- 若指定文件,则显示该文件的信息。
常用选项:
- -l :以长格式显示详细信息,包括文件类型、权限、链接数、所有者、组、大小、修改时间等。(小写的L)
- -a :显示所有文件,包括隐藏文件(以 . 开头的文件)。
- -h :与 -l 一起使用时,以易读的格式显示文件大小(如 KB、MB)。
- -r :反向排序。
- -t :按修改时间排序,最新文件在前。
- -R :递归列出子目录内容。
- -S :按文件大小排序,最大文件在前。
- –color :彩色显示输出,通常不同类型文件会有不同颜色。
3.3 mkdir命令
作用:创建一个或多个空目录
基本用法:
mkdir [选项] 目录名
- 目录名:要创建的目录名称,可以是相对路径或绝对路径。
- 可以同时创建多个目录,用空格分隔。
常用选项:
- -p :递归创建目录。如果父目录不存在,会自动创建。
- -m :设置目录的权限模式(如 mkdir -m 755 dirname )。
- -v :显示创建目录的详细信息(verbose)。
例子:
#创建一个空目录
mkdir test#在已有的new目录中创建一个新的test目录并给它777权限
mkdir -m 777 /home/new/test#递归创建目录,new可以不存在
mkdir -p /home/new/test#创建目录并给权限
mkdir -p -m 777 路径
3.4 cat 命令
作用:查看、创建、合并和复制文件内容。cat命令适合查看小文件,大文件建议使用less或者more。主要是和重定向命令配合使用。
基本用法:
cat [选项] [文件]
- -n :显示行号。
- -b :显示非空行的行号。
- -s :压缩连续空行为一行。
- -A :显示所有字符,包括特殊字符(如换行符、制表符等)。
例子:
#查看文件内容
cat file.txt#显示行号
cat -n file.txt
#或者
nl file.txt#合并文件
cat file1.txt file2.txt > combined.txt#创建文件
cat > newfile.txt#复制文件
cat file.txt > copy.txt#显示特殊字符
cat -A file.txt
3.5 cp命令
作用:复制文件或目录。
基本用法:
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
- 源文件:要复制的文件或目录。
- 目标文件:复制后的文件或目录名称。
- 目标目录:将源文件复制到指定目录中。
常用选项:
- -r 或 -R :递归复制目录及其内容(用于复制目录)。
- -i :交互模式,覆盖前提示确认。
- -f :强制复制,覆盖目标文件时不提示。
- -v :显示复制过程的详细信息(verbose)。
- -p :保留文件的属性(如权限、时间戳等)。
- -a :归档模式,相当于 -dpR ,保留所有文件属性和递归复制目录。
- -u:仅当源文件比目标文件新时才复制(更新模式)。
例子:
#复制目录
cp -rf dir1 dir2#交互模式 如果flie2已经存在则会提示你是否覆盖
cp -i file1 file2#保留文件属性 复制文件并保留权限、时间戳等属性
cp -p file1 file2
3.6 mv命令
作用:移动或重命名文件和目录。
基本用法:
mv [选项] 源文件或目录 目标文件或目录
常用选项:
- -i :交互式操作,覆盖前提示确认。
- -f :强制操作,直接覆盖不提示。
- -v :显示详细操作信息。
- -n :不覆盖已存在文件。
- -u :仅在源文件比目标文件新或目标文件不存在时移动。
注意事项:
- 如果目标路径是目录,文件或目录会被移动到该目录下。
- 如果目标路径是文件名,文件或目录会被重命名或覆盖。
- 使用 -i 选项可避免意外覆盖文件。
3.7 rm命令
作用:删除文件或目录。
基本用法:
rm [选项] 文件或目录
常用选项:
- -f :强制删除,忽略不存在的文件,不提示确认。
- -i :交互式删除,删除前提示确认。
- -r 或 -R :递归删除目录及其内容。
- -v :显示详细操作信息。
- -d :删除空目录。
3.8 chmod命令
作用:用于更改文件或目录的权限。
基本用法:
chmod [选项] 模式 文件或目录
权限表示:
- 符号模式:使用 u(用户)、g(组)、o(其他)、a(所有)与 +(添加)、-(移除)、-(设置)结合 -(读)、w(写)、x(执行)来设置权限。
- 数字模式:使用三位或四位八进制数表示权限,每位分别代表用户、组、其他的权限。
常用选项:
- -R:递归更改目录及其内容的权限。
- -v :显示详细操作信息。
- -c :仅在更改时显示信息。
- -f :忽略错误信息。
例子:
1.符号模式:
#添加执行权限
chmod u+x file.txt#移除写权限
chmod g-w file.txt#设置读写权限
chmod o=rw file.txt
2.数字模式:
#设置权限为 rwxr-xr-- 用户:rwx,组:r-x,其他:r--
chmod 754 file.txt#递归更改权限
chmod -R 755 dir1
3.9 ln命令
作用:创建文件或目录的链接,分为硬链接和符号链接(软链接)。
基本用法:
ln [选项] 源文件或目录 目标文件或目录
常用选项:
- -s :创建符号链接(软链接)。如果不带改参数就默认硬链接。
- -f :强制创建链接,覆盖已存在的目标文件。
- -v :显示详细操作信息。
- -i :交互式操作,覆盖前提示确认。
软链接:
符号链接,它包含了到原文件的路径信息。类似window的快捷方式。是一个独立的文件,存储源文件的路径。
特性:
(1)软链接有自己的文件属性及权限等;
(2)可对不存在的文件或目录创建软链接;
(3)软链接可交叉文件系统;
(4)软链接可对文件或目录创建;
(5)创建软链接时,链接计数 i_nlink 不会增加;
(6)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
创建软链接:
#创建file文件的软链接 并命名为link
ln -s file link
硬链接:
硬链接是一种特殊的文件链接方式,其本质是为文件创建了一个额外的“入口”。
特性:
- 共享 inode 和数据块:硬链接与源文件共享相同的 inode 和数据块,这意味着它们指向的是同一个文件内容。
- 基于已存在文件创建:硬链接只能针对已存在的文件进行创建,无法对尚未创建的文件或目录进行硬链接操作。
- 文件系统限制:硬链接不能跨越不同的文件系统。如果源文件和目标链接位于不同的文件系统中,硬链接将无法创建。
- 仅适用于文件:硬链接只能对普通文件创建,不能对目录创建硬链接。这是因为目录的结构和文件不同,目录需要维护其自身的层级关系。
- 删除不影响其他链接:删除一个硬链接文件不会影响其他具有相同 inode 的文件。只要还有其他硬链接存在,文件内容仍然可以被访问。
- 修改同步性:修改其中一个硬链接文件的内容,其他所有硬链接文件的内容也会同步更新,因为它们共享同一个数据块。
- 文件大小一致:由于硬链接与源文件共享数据块,因此它们的文件大小始终保持一致。
创建硬链接:
#为file.txt 创建一个硬链接 file_hardlink.txt
ln file.txt file_hardlink.txt
3.10 pwd命令
作用:显示当前工作目录的绝对路径。
基本用法:
pwd [选项]
常用选项:
- -L, --logical:显示逻辑路径,即当前目录的符号链接路径(默认行为)。如果当前目录是通过符号链接访问的,pwd -L 会显示符号链接的路径。
- -P, --physical:显示物理路径,即当前目录的实际路径,忽略任何符号链接。如果当前目录是通过符号链接访问的,pwd -P 会显示最终的目标路径。
四、文件查找和文本处理指令
4.1 grep命令
作用:在文件中搜索匹配特定模式的文本行,并将结果输出到标准输出(通常是终端)。
基本用法:
grep [选项] 搜索模式 [文件名]
常用选项:
- -i:忽略大小写,进行不区分大小写的搜索。
- -v:反向搜索,输出不匹配搜索模式的行。
- -n:在输出中显示匹配行的行号。
- -c:统计匹配行的数量,而不是输出匹配的行。
- -l:只列出包含匹配行的文件名,而不是输出匹配的行。
- -r** 或 ****-R**:递归搜索目录中的所有文件。
- -w:仅匹配整词,避免部分匹配。
- -e:指定多个搜索模式,可以多次使用 -e 来指定多个模式。
- -o:仅输出匹配的部分,而不是整行。
例子:
#搜索目录example中文件包含 "error" 或 "warning" 的行
grep -e "error" -e "warning" -r example/#搜索error所在的文件
grep -lr "error" example
4.2 find命令
作用:在目录树中查找文件和目录。
基本用法:
find [路径] [选项] [表达式]
- 路径:指定查找的起始目录,默认为当前目录 (.)。
- 选项:控制find的行为。
- 表达式:定义查找条件。
常用选项:
1.按名称查找
- -name:按文件名查找(区分大小写)。
- -iname:按文件名查找(不区分大小写)。
find /path/to/search -name "filename"
2.按类型查找
- -type f:查找文件。
- -type d:查找目录。
find /path/to/search -type f
3.按大小查找
- -size +100M:查找大于 100MB 的文件。
- -size -100M:查找小于 100MB 的文件。
find /path/to/search -size +100M
4.按时间查找
- -mtime -7:查找过去 7 天内修改的文件。
- -mtime +7:查找 7 天前修改的文件。
- -atime:按访问时间查找。
- -ctime:按状态变更时间查找。
find /path/to/search -mtime -7
5.执行操作
- -exec:对查找到的文件执行命令,{}代表当前文件,;表示命令结束。
find /path/to/search -name "*.log" -exec rm {} \;
6.组合条件
- -and:逻辑与(默认)。
- -or:逻辑或。
- -not:逻辑非。
find /path/to/search -name "*.txt" -and -size +1M
最常用的起始也就前面两种用法。
4.3 tar命令
作用:用于文件打包和压缩。
基本用法:
tar [选项] [输出文件] [输入文件或目录]
- 选项:控制tar的行为(如创建、提取、压缩等)。
- 输出文件:生成的归档文件名(如.tar、.tar.gz等)。
- 输入文件或目录:需要打包的文件或目录。
常用参数选项:
- -c --create:创建新的归档文件,即打包,打包的意思就是说把一堆文件打包成一个文件。
- -x --extract:解压文件。
- -v --verbose:可视化,显示详细的tar处理的文件信息的过程。
- -f --file:要操作的文件名。
- -z:通过gzip来进行压缩或解压缩(.tar.gz或.tgz)。
- -j:通过bzip2来归档压缩文件(.tar.bz2)。
- -J:使用xz压缩工具压缩成.xz文件(.tar.xz)。
- -t --list:列出归档文件中的内容。
- -r:向归档文件中追加文件。
- -C --directory=DIR:解压文件至指定的目录,如果是解压到当前目录,可以不加-C。
例子:
#解压到指定目录
tar -xzvf archive.tar.gz -C /path/to/directory#查看文件中的内容
tar -tzvf archive.tar.gz#追加文件
tar -rvf archive.tar newfile#打包并压缩
tar -czvf archive.tar.gz file1 file2 dir1#解压
tar -xzvf archive.tar.gz
常用压缩格式对比
格式 | 命令选项 | 压缩率 | 速度 | 文件扩展名 |
---|---|---|---|---|
gzip | -z | 中等 | 较快 | .tar.gz |
bzip2 | -j | 较高 | 较慢 | .tar.bz2 |
xz | -J | 最高 | 最慢 | .tar.xz |
4.4 head命令
作用:显示文件的开头部分(默认显示前 10 行)。它通常用于快速查看文件的内容,而不需要加载整个文件。
基本用法:
head [选项] [文件]
常用选项:
选项 | 说明 |
---|---|
-n <行数> | 显示文件的前 <行数>行(例如 -n 20)。 |
-c <字节数> | 显示文件的前 <字节数>字节。 |
-q | 不显示文件名(静默模式)。 |
-v | 总是显示文件名(默认行为)。 |
例子:
#显示前十行
head filename.txt#显示前N行
head -n N filename.txt#显示前N个字节
head -c N filename.txt#显示多个文件的前N行,并在每个文件内容前显示文件名。
head -n N file1.txt file2.txt#静默模式(不显示文件名)
head -q -n N file1.txt file2.txt#从标准输入读取数据 通过管道将cat的输出传递给head,显示前10行。
cat filename.txt | head -n 10
4.5 tail命令
作用:用于显示文件的末尾部分(默认显示最后 10 行)。它通常用于查看日志文件或实时监控文件内容的变化。
基本用法:
tail [选项] [文件]
常用选项:
选项 | 说明 |
---|---|
-n <行数> | 显示文件的最后 <行数>行(例如 -n 20)。 |
-c <字节数> | 显示文件的最后 <字节数>字节。 |
-f | 实时跟踪文件内容的变化(常用于日志监控)。 |
-q | 不显示文件名(静默模式)。 |
-v | 总是显示文件名(默认行为)。 |
例子:
#显示文件的最后十行
tail filename.txt#实时显示文件内容的变化
tail -f /var/log/syslog
4.6 wc命令
作用:主要用于统计文件的行数、单词数和字节数等信息。默认会同时统计行数、单词数和字节数。
基本用法:
wc [选项] 文件名
常用选项:
- -c:统计文件的字节数。
- -l:统计文件的行数。
- -w:统计文件的单词数。
- -m:统计文件的字符数(包括换行符等)。
- -L:统计文件中最长行的长度。
4.7 tee命令
作用:将标准输入(stdin)的内容同时输出到标准输出(stdout)和一个或多个文件中。它的名字来源于管道(pipeline)中的“T”型分叉,表示数据流的分流。
基本用法:
command | tee [选项] 文件名
常用选项:
- -a:追加模式(append)。如果不使用-a选项,tee默认会覆盖文件内容。
- -i:忽略中断信号(ignore interrupt signals)。即使接收到中断信号(如 Ctrl+C),tee也会继续运行。
例子:
#一个命令 ls -l,我们希望将它的输出保存到文件 output.txt 中,同时在终端上显示
ls -l | tee output.txt#如果希望将输出追加到文件中,而不是覆盖文件
ls -l | tee -a output.txt
五、网络相关命令
5.1 ping命令
作用:用于测试主机之间的网络连接是否正常。它通过发送 ICMP(Internet Control Message Protocol)回显请求消息来检查目标主机是否可达,并测量往返时间(Round-Trip Time, RTT)。
基本用法:
ping [选项] 目标主机
常用选项:
- -c <次数>:指定发送 ICMP 回显请求的次数。默认情况下,ping会一直发送请求,直到用户手动终止(按 Ctrl+C)。
- -i <间隔>:指定发送请求的时间间隔(秒)。默认间隔为 1 秒。
- -I <网卡名>:指定发送ICMP请求的网络接口。
- -t :设置数据包的生存时间(Time To Live,TTL)。默认值通常为 64 或 128,具体取决于操作系统。
- -s <字节数>:指定发送的数据包大小(不包括 IP 和 ICMP 头)。默认大小为 56 字节。
- -W <超时时间>:设置等待目标主机响应的超时时间(秒)。默认值为 1 秒。
- -a:在发送回显请求时,同时发送警告音(仅限某些系统)。
- -q:安静模式,只显示简要信息。
例子:
#从 eth0 网络接口向目标 IP 地址 114.114.114.114 发送 5 次 ICMP 回显请求。每次请求之间的时间间隔为 5 秒。
ping -i 5 -c 5 -I eth0 114.114.114.114
5.2 ifconfig命令
作用:它是用于配置和显示网络接口的网络参数的工具。它允许用户查看网络接口的状态、配置 IP 地址、启用或禁用接口等。
基本用法:
ifconfig [接口名称] [选项] [参数]
常用选项和参数:
- 无参数:显示所有网络接口的配置信息。
- 接口名称:指定要操作的网络接口(如eth0、wlan0、lo等)。
- up:启用指定的网络接口。
- down:禁用指定的网络接口。
- inet:配置接口的 IPv4 地址。
- netmask:设置子网掩码。
- broadcast:设置广播地址。
- hw ether:设置硬件地址(MAC 地址)。
- mtu:设置最大传输单元(MTU)。
例子:
#查看特定网络接口的配置信息
ifconfig eth0#启用/禁用网络接口
ifconfig eth0 up/down#配置网络接口的 IP 地址
ifconfig eth0 192.168.1.101 netmask 255.255.255.0#设置广播地址
ifconfig eth0 broadcast 192.168.1.255#设置 MAC 地址
ifconfig eth0 hw ether 00:11:22:33:44:55#设置 MTU
ifconfig eth0 mtu 1400
六、程序和软件安装管理
6.1 install命令
作用:它是用于安装或复制文件到指定位置,并且可以同时设置文件的权限、所有者和所属组等属性。它通常用于脚本中,用于自动化安装程序或配置文件的部署。
基本用法:
install [选项] 源文件 目标文件
install [选项] 源文件... 目标目录
常用选项:
- -d或–directory:创建目录,而不是复制文件。如果目录已存在,不会报错。
- -m或–mode=模式:设置文件的权限(如0755)。
- -o或–owner=所有者:设置文件的所有者。
- -g或–group=组:设置文件的所属组。
- -t或–target-directory=目录:指定目标目录。
- -b或–backup:如果目标文件已存在,创建备份文件(默认备份方式为简单备份)。
- -S或–suffix=后缀:指定备份文件的后缀(与-b选项一起使用)。
- -p或–preserve-timestamps:保留源文件的时间戳。
- -C或–compare:在安装前比较源文件和目标文件,如果内容相同则不覆盖。
- -v或–verbose:显示详细信息。
例子:
下面是Makefile中比较常用的三种语句。
#将 sourcefile 复制到 /path/to/destination,并设置文件权限为 0755
install -m 0755 sourcefile /path/to/destination#创建目录 /path/to/newdir,如果目录已存在,不会报错
install -d /path/to/newdir#复制文件并保留时间戳
install -p sourcefile /path/to/destination
6.2 which命令
作用:用于查找并显示可执行文件(命令)的完整路径。
基本用法:
which [选项] 命令名
常用选项:
- 无参数:直接查找并显示指定命令的路径。
- -a:显示所有匹配的路径。默认情况下,which只显示第一个匹配的路径。
- -s:静默模式,不输出任何内容,只返回状态码(成功返回 0,失败返回非 0)。
- -q:安静模式,仅输出匹配的路径数量。
- -u:显示别名或函数的定义(如果命令是别名或函数)。
- -m:显示所有匹配的路径,包括别名和函数。
- -p:显示路径,但不检查文件是否存在。
- -i:忽略大小写。
注意事项:
- 环境变量PATH:
- which命令依赖于环境变量PATH来查找命令。如果某个命令不在PATH中,which将无法找到它。
- 可以通过echo $PATH查看当前的PATH环境变量。
- 别名和函数:
- 如果某个命令是别名或函数,which可以通过-u或-m选项显示其定义。