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/

 更多命令参考文档:C/C++调用mac命令以及常用mac命令-CJavaPy

posted @ 2024-01-26 00:11  leviliang  阅读(90)  评论(0编辑  收藏  举报