C/C++调用mac命令以及常用mac命令
使用system()
函数或者创建子进程执行外部命令。
1)system() 函数
属性 | 描述 |
---|---|
原型 | int system(const char * command) |
功能 | 执行 shell(Linux/Unix系统) 命令, 参数字符串command为命令名 |
说明 | 在Linux/Unix系统中, system函数会调用fork函数产生子进程, 由子进程来执行command命令, 命令执行完后随即返回原调用的进程 |
头文件 | stdlib.h |
返回值 | 命令执行成功返回0 ,执行失败返回 -1 |
使用代码:
#include <stdlib.h> int main() { // 调用ls命令,列出当前目录下的文件和文件夹 system("ls"); return 0; }
2)创建子进程
在Unix-like系统中,可以使用 fork()
和 exec()
系列函数创建子进程来执行外部命令。相比 system()
更强的控制能力,但也更复杂。
使用代码:
#include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { pid_t pid = fork(); if (pid == 0) { // 子进程 execlp("ls", "ls", NULL); } else { // 父进程 wait(NULL); } return 0; }
2、Mac的简单介绍以及
Mac是由苹果公司(Apple Inc.)开发的一系列个人电脑,运行着苹果公司专有的操作系统macOS(之前称为OS X)。Mac以其优雅的设计、直观的用户界面、优秀的构建质量和强大的性能而闻名。它广泛应用于创意和专业领域,如图形设计、视频编辑和音乐制作。
1)文件系统
路径 | 说明 |
---|---|
/ |
整个文件系统的起点,所有文件和文件夹的根目录。 |
/Applications |
存放系统级应用程序的目录。用户安装的大多数应用程序通常放在这里。 |
/Users |
包含所有用户的个人文件夹,每个用户的家目录通常位于此处(如/Users/username )。 |
~ 或 /Users/username |
当前用户的个人空间,包含文档、下载、音乐、图片等。 |
/System |
包含Mac OS的核心组件。普通用户通常没有权限修改此目录下的内容。 |
/Library |
存放系统级别的应用程序支持文件和库文件。 |
~/Library |
存放用户级别的应用程序支持文件和设置。通常在Finder中默认隐藏。 |
/tmp 或 /var/tmp |
用于存放临时文件的目录。系统可能会定期清理这些目录。 |
/bin , /sbin , /usr/bin , /usr/sbin |
包含大多数系统命令和程序的目录。 |
/dev |
包含系统中所有设备和驱动的特殊文件。 |
/Volumes |
在桌面上看到的所有硬盘都挂载在此目录下。例如,USBHD的移动硬盘在桌面上显示为硬盘图标,在终端中可通过ls /Volumes/USBHD 查看其内容。 |
/System/Library/Extensions |
驱动所在的位置。 |
/Users/用户名 |
用户文件夹的位置。 |
/Users/用户名/Desktop |
桌面的位置。 |
* |
文件通配符,用于匹配多个文件。 |
2)如何进入命令行操作模式
再图形界面下,用finder 打开 应用程序 》实用程序》终端
如果连图形界面都进不去,例如安错显示驱动,开机时按 F8,用-s
参数启动,然后输入命令 mount -uw /
3)获得权限
为了防止误操作破坏系统,再用户状态下时没有权限操作系统重要文件的,所以先要取得root权限
sudo -s
然后输入密码,输入密码时没有任何回显,连星号都没有,只管输完回车即可。
3、基本常用命令
1)列出文件
ls是最基本的命令,用于列出目录内容。
命令 | 描述 |
---|---|
ls -a |
列出所有文件(包括隐藏文件)。 |
ls -l |
显示详细列表视图,包括文件的权限、所有者、大小和最后修改时间。 |
ls -lh |
以人类可读的格式显示文件大小。 |
ls -lt |
按时间排序,最近修改的文件先显示。 |
ls -R |
递归列出所有子目录。 |
2)拷贝文件
命令 | 描述 |
---|---|
cp [源文件] [目标位置] |
拷贝文件或目录到新位置。 |
cp -i [源文件] [目标位置] |
拷贝文件之前提示。当目标文件存在时,会询问是否覆盖。 |
cp -r [源目录] [目标位置] |
递归拷贝整个目录及其内容。 |
cp -a [源文件/目录] [目标位置] |
归档拷贝,保留原文件的所有属性,同时也递归拷贝。 |
cp -v [源文件] [目标位置] |
拷贝时显示详细信息。 |
cp -n [源文件] [目标位置] |
不覆盖目标位置已存在的文件。 |
3)删除文件
命令 | 描述 |
---|---|
rm [文件名] |
删除指定的文件。 |
rm -f [文件名] |
强制删除指定的文件,不会询问确认。 |
rm -r [目录名] |
递归删除指定目录及其下所有文件和子目录。 |
rm -rf [目录名] |
强制递归删除指定目录及其下所有文件和子目录,不会询问确认。 |
rm -i [文件名] |
删除前会提示用户确认。 |
rmdir [空目录名] |
删除空目录。如果目录不为空,该命令将失败。 |
注意:rm
命令在Mac OS中非常强大,使用时需特别小心,尤其是带有-r
和-f
选项的命令,因为它们可以删除大量的文件和目录,且不可恢复。
4)移动文件
命令 | 描述 |
---|---|
mv [原文件路径] [目标路径] |
移动文件或文件夹到新的位置。 |
mv [文件名1] [文件名2] [目标目录] |
同时移动多个文件到指定目录。 |
mv -i [原文件路径] [目标路径] |
在覆盖文件之前提示用户。 |
mv -n [原文件路径] [目标路径] |
不覆盖已存在的目标文件。 |
mv -v [原文件路径] [目标路径] |
移动文件时显示详细信息。 |
5)更改文件权限
命令 | 描述 |
---|---|
chmod [权限] [文件名] |
更改文件或目录的权限。 |
chmod 755 [文件名] |
设置文件或目录的权限为755 (即所有者可读写执行,其他人可读执行)。 |
chmod +x [文件名] |
为文件添加执行权限。 |
chmod -R 755 [目录名] |
递归地将一个目录及其所有子目录和文件的权限设置为755 。 |
chmod u=rwx,g=rx,o=r [文件名] |
设置文件或目录的权限, 其中所有者(u)有读写执行(rwx)权限, 组(g)有读执行(rx)权限, 其他人(o)有读(r)权限。 |
chmod go-w [文件名] |
移除组(g)和其他人(o)的写(w)权限。 |
6)更改文件属主
命令 | 描述 |
---|---|
sudo chown 用户名 文件名 |
将指定文件的所有权更改为指定用户。 |
sudo chown 用户名:用户组 文件名 |
同时更改文件的所有者和所属用户组。 |
sudo chown -R 用户名 目录名 |
递归地更改指定目录及其中所有文件的所有者。 |
sudo chown -v 用户名 文件名 |
更改文件所有者,并显示详细信息。 |
sudo chown --reference=参考文件 目标文件 |
将目标文件的所有者 和用户组更改为参考文件的所有者和用户组。 |
7)文本编辑
描述 |
|
---|---|
nano |
一个简单的文本编辑器,适用于快速编辑文件。 |
vi 或 vim |
功能更强大的文本编辑器,具有多种编辑和自定义功能。 |
cat |
用于查看文件内容,也可用于连接多个文件。 |
more |
分页显示文本文件内容,适用于查看较长的文件。 |
less |
类似于more ,但提供更多的控制和导航功能。 |
head |
显示文件的开始部分(默认前10行)。 |
tail |
显示文件的结尾部分(默认最后10行),常用于查看日志文件。 |
grep |
在文件中搜索特定的文本字符串或模式。 |
sed |
流编辑器,用于对文本进行强大的处理,如替换、删除、插入等。 |
awk |
功能强大的文本处理工具,适用于模式匹配和数据重组。 |
touch |
创建一个新的空文件或更新现有文件的时间戳。 |
wc |
计算文件中的行数、单词数和字符数。 |
8)运行脚本命令
命令 | 描述 |
---|---|
./script.sh |
运行当前目录下名为script.sh 的脚本。 |
sh script.sh |
使用sh 命令解释器运行脚本。 |
bash script.sh |
使用bash 命令解释器运行脚本。 |
source script.sh |
在当前shell会话中执行脚本中的命令(相当于. )。 |
python script.py |
使用Python解释器运行Python脚本。 |
chmod +x script.sh |
使脚本文件script.sh 变为可执行文件。 |
nohup ./script.sh & |
使用nohup 运行脚本,并使其在后台持续运行。 |
./script.sh > output.txt |
运行脚本并将输出重定向到文件output.txt 。 |
./script.sh 2> error.txt |
运行脚本并将错误信息重定向到文件error.txt 。 |
./script.sh &> output.txt |
运行脚本并将标准输出 和错误输出都重定向到文件 output.txt 。 |
crontab -e |
编辑cron作业,定时运行脚本。 |
open -a Terminal script.sh |
使用Terminal应用程序打开并运行脚本。 |
9)用 Tab 键自动补齐命令
命令 | 描述 | 使用Tab键自动补齐示例 |
---|---|---|
cd |
更改当前目录 | 输入cd /Us 后按Tab键,自动补齐为cd /Users/ |
更多命令参考文档: