UNIX 笔记
文章平均质量分 63
UNIX 相关的内容就在该专栏,包括但不限于 Linux 各种发行版(包括 WSL)、macOS、bash、原理等 UNIX 相关的内容。
需要注意的是,虽然软件的使用教程以及排错方法也在该专栏,但是还是请查看专栏《软件/程序教程》,一些小问题可以查看专栏《非硬件小问题》。
zhonguncle
居高才能临下,深入才能浅出(这话是谁说的呢?肯定不是鲁迅)
展开
-
在Mac终端命令行中允许下载的应用程序运行
在 macOS 上,很多时候下载一个程序之后会弹出弹窗:询问或不允许使用该应用程序。偶尔一个手动确定就行,但是如果有一大堆这样的程序,或者只能使用终端,那么就非常麻烦了。这时候目录下所有的应用程序都确定过了,再使用应用程序就不会弹窗了,希望能帮到有需要的人~原创 2024-01-18 12:40:39 · 816 阅读 · 0 评论 -
APFS 文件系统探究
本文的创作初衷是因为我发现从底层详解 APFS 的资料很少,所以自己来进行了一些探究。APFS 的每个容器是按照顺序排列在硬盘里的,并不会有空隙,这与 Windows 的 GPT 分区不一样。这也是为什么 Windows 上你只能扩展或调整最后一个分区的大小,而不能调整前面的盘(APFS 的空闲空间是在各个卷之间共同分享的,所以扩展起来很容易,如下图)。以及为什么 macOS 上新建 APFS 分区的时候需要很久很久(因为要把其他分区的文件挪到合适的地方)。原创 2023-08-14 08:53:38 · 1284 阅读 · 0 评论 -
如何在macOS上使用最新版的Bison来构建项目,而不是Xcode工具链内嵌的2.3版本
在很多项目的编译中需要使用 Bison,而且版本需要至少为 3.0,不然会出现以下错误。安装了最新版的 Bison,但是还是会有这个问题。这样就可以正常构建了。希望能帮到有需要的人~的时候会先搜索到这个新的。可以看到这样的语句,就知道位置了。最前面,这样 SHELL 搜索。不敢在解决方案之前,你要知道。第一种方法使用以下语句来添加。安装的一般就在这个路径)放到。构建项目的时候直接设置。或者设置环境变量,再让。原创 2023-09-03 06:29:00 · 1199 阅读 · 0 评论 -
如何在Mac VM Fusion上安装和使用Plan 9
我在 Mac 上使用 VM Fusion 安装 Plan 9 的时候遇到了很多问题,官方文档和有些前两年的国外的一些博客并没有写清楚,甚至出现了“误导”的情况(有些情况变了)。所以来写本文帮助其他也遇到的问题的人。如果你能看到这篇博客,说明你大概知道 Plan 9 是个什么系统,这里也不赘述,直接开始。你可以按照步骤一步步来,重点部分我用小标题标出了。原创 2023-04-20 18:32:08 · 472 阅读 · 0 评论 -
Mac printf处理参数的奇特之处(macOS中,printf使用%d输出一个浮点数会发生什么情况?)
说这段代码在 x86(IA-32)上运行时,输出为0;在 x86-64 上运行时,每次输出是一个不同的数。然后我就非常好奇为什么?因为0很好理解,但是 64 位为什么是不同的数呢?其实盲猜都能猜个大概,和地址有关呗(一般冒出来奇奇怪怪数都是和地址有关,“跑错地方了”),但是盲猜很容易翻车,还是要验证一下。先看看网上有没有人研究过。后来查了一下发现,这个问题的原型最早能追溯到近 20 年前,不过那时候由于都是 32 位机器,所以还好。原创 2024-07-26 19:53:53 · 982 阅读 · 0 评论 -
命令行如何批量将“作者-标题-日期”名称格式的文件放入到对应的“作者”目录下
最近归档下载视频的时候,发现下载文件名设置成作者-标题-日期.mp4这样的格式了,如我是作者-这是一个视频-2024-05-20 21-05-28.mp4。归档则需要改成作者/日期.mp4这样的格式,也就是在作者目录下存放日期.mp4的视频文件。可以看到,日期有两个部分,其中的时间部分我觉得可以使用rename去除,因为有空格后续处理比较麻烦,而且这些视频不太会出现一天多条的情况。实在遇到这种情况手动确认更好一些。原创 2024-05-30 19:04:58 · 211 阅读 · 0 评论 -
在终端中按照特定格式文本和增序数字(基于时间)重命名目录下所有文件的命令(使用rename)
最近备份,需要大量导出 iPhone 和 iPad 上的照片,但是常有重名文件,这让人很烦,因为重名文件往往后面有一个。这让人很烦,因为文件名会误导人。所以我就想批量将其按照时间顺序重命名。的后缀(如果是拷贝到外接硬盘则会显示。希望能帮到有需要的人~原创 2024-03-23 12:54:25 · 281 阅读 · 0 评论 -
《硬件历险》之Mac抢救出现问题的时间机器硬盘中的数据
本文虽然使用“抢救”一词,但是运气比较好,远没有达到访问和修改底层的信息来抢救的地步。如果你是需要通过访问和修改底层信息来抢救数据,建议阅读刘伟的《数据恢复技术深度揭秘(第二版)》或者寻找专业人士的帮助。《数据恢复技术深度揭秘(第二版)》并没有提及如何修复现在 macOS 使用的 APFS,最新只有 HFS+。APFS 的结构要复杂一些,但是也是个尝试。原创 2024-03-14 20:24:22 · 1032 阅读 · 0 评论 -
Mac上.bashrc转.zshrc时,设置PATH环境变量注意事项
由于最近系统坏了刚好就升级了,也就打算使用新的 zsh 了,反正平时在 WSL 和树莓派上用的都是 bash。按理来说应该没有什么困难,但是有些细节需要记录一下,防止后续一些东西的更新比较麻烦。这样的方法来激活配置文件中的更新(在 bash 中可以),必须使用。中,也无法使用(很神奇的一点)。但是其他内容可以使用双引号。环境变量的时候不能使用双引号来包裹路径。看到了添加的地址已经存在于环境变量。希望能帮到有需要的人~此外需要注意不能使用。原创 2024-03-12 11:39:49 · 969 阅读 · 0 评论 -
如何使用C/C++刷新修改已经打印显示在终端上的内容
写本文的起源是因为在安装一些工具的时候,发现在终端上并行安装的情况下,显示安装信息是会修改之前已经打印出来的内容,这是怎么做到的呢?抱着对这个问题的好奇我进行了一些探索。原创 2023-10-14 08:02:54 · 2732 阅读 · 1 评论 -
如何在Mac终端上,从底层按照字节用十六进制查看某个硬盘的内容(使用dd和hexdump实现winhex的功能,所以其他系统也可以使用这个方法)
首先需要强调:这种方法不能保证所有的硬盘都可以查看,有些硬盘由于一些原因会显示“Resource busy”,比如说时间机器的硬盘,内置硬盘等。其他系统也可以使用这种方法,区别在于硬盘设备的路径,Linux 一般是在。希望能帮到有需要的人~原创 2023-07-05 14:52:12 · 825 阅读 · 0 评论 -
Mac如何在终端使用diskutil命令装载和卸载推出外接硬盘
最近用 macOS 装载外接硬盘的时候,使用mount死活装不上,很多文章也没详细的讲各种情况,所以就写一篇博客来记录一下。mount和umount是在 macOS 上是不能用的,如果使用会显示未知特殊文件或者没有权限,如果给umount加上sudo就会显示Resource busy,提示使用diskutil unmount,提示一下,这里的路径可以不写,直接写diskutil unmount disk3s2也可以。如果你知道硬盘或卷宗名称,那么可以直接使用名称加载或者卸载,如下:原创 2023-07-05 14:49:41 · 5157 阅读 · 6 评论 -
如何将已经安装的 WSL(Ubuntu)移动到其他的盘或位置
研究了一下,发现并没有完美的实现方法,但是有一个勉强可以算作方法的方法(为什么不是完美的后面细说)。导出目前的 WSL 为一个压缩包(压缩包是因为命令限制,而且可以加快移动速度。并且由于 C 盘爆满,可以直接导出到目标盘)。再导入之前压缩好的 WSL 压缩包。需要注意一点:之所以说这种方法不完美,是因为会丢失所有关联的数据和软件。因为我们的目的,那么需要注销并卸载之前的 WSL 来空出原本快满空间。wsl --unregister 已安装的WSL名称而这个命令就会导致丢失所有相关数据、设置和软件。原创 2022-09-16 16:41:47 · 8459 阅读 · 4 评论 -
在Ubuntu服务器上,安装和使用Nginx和PHP7,以及部分排错方法
最近需要研究一下 PHP 语言,但是发现 PHP 不同于 Python、JavaScript 等脚本语言可以直接在本地查看,而是需要在服务区上运行。这就需要搭建一个环境来学习。当然有很多网站也提供了已经搭建好的网站,但是因为我觉得既然要学习,这也是需要学习的东西。不然在别人搭建好的地方练的炉火纯青,结果自己在服务器上弄的时候,“门”都进不去,那就极度尴尬了。这里使用的是 Ubuntu 20.04.4 LTS,腾讯轻量云服务器。计划安装 PHP7 和使用 Nginx。第一步当然是实现服务器框架,这里使用 Ng原创 2022-06-25 21:45:00 · 2508 阅读 · 0 评论 -
如何在 WSL 访问 Windows 中的文件
首先进入 WSL,然后进根目录/,使用ls可以看到一个名为mnt的目录(mnt 是 mount 加载的缩写)。在这里可以看到各种盘,例如c表示 C 盘,d表示 D 盘。然后我们就可以进入不同的盘来对文件进行操作了。...原创 2022-05-12 02:44:17 · 6616 阅读 · 0 评论 -
Mac 上,Xcode 导致“系统数据”占用太大
今天突然发现系统占用居然有一百多个g,所以打算清理一下。经过排查发现是 Xcode 导致的。(一般软件缓存会放在~/Library下,所以找出这个目录下最大的文件即可)这里提一嘴,macOS Monterey 在“存储空间”-“管理”里新增了一个“开发者”分类,可以用于清理一些模拟器和缓存,如下(但是很明显这里它还是没让我直接清理这部分内容):占用最大的目录是~/Library/Developer/Xcode/UserData/Previews/Simulator Devices,高达72.4 GB(这原创 2022-05-06 14:17:11 · 4881 阅读 · 0 评论 -
Linux 和 macOS 中,常见的 man pages 本质是什么格式的文件?以及如何写一个 man page
前言在 Linux 和 macOS 中,经常需要使用man xxx来查看一个程序、系统调用等的介绍和使用方法。而这个界面一般被称为man page。但是我很好奇:man page是一个什么格式的文件?如何编写它?它一般存放在什么地方?man程序如何读取它们?man page可以说是 UNIX 和 Linux 的一个很重要的部分了,想要深入了解 UNIX 和 Linux 的话,我觉得这是需要了解的一部分内容。接下来就来逐一研究解释这些问题。相信当你读完这篇博客之后,你会对man程序和man原创 2022-04-16 05:09:14 · 1085 阅读 · 0 评论 -
macOS 汇编指南
现在很多汇编的学习资料、途径和工具都是关于 Windows 下的,所以这里来介绍一下 macOS 上学习使用汇编需要的资料和工具。为什么需要学习汇编(使用途径)汇编是计算机的“魔法”,虽然做个只会高级语言的“战士”也可以,但是当给“武器”附魔之后,战斗力也会大大增加(当然也有“玩火自焚”的)。在现代,学习汇编之后的使用途径有几种:直接用汇编指令写程序的代码,然后使用汇编器(Assembler)汇编成程序(这种学习的过程中可能使用比较多,在实际情况下很少用,因为太复杂了)。用在 C 语言代码中,提原创 2022-04-15 00:33:24 · 7094 阅读 · 1 评论 -
Windows如何安装WSL(中途退出后遇到bug该怎么办)
适用于 Linux 的 Windows 子系统,被简称为WSL。安装方式很简单。如果你是第一次安装,打开Windows PowerShell(推荐使用Windows Termianl,可以使用商店下载安装),输入以下命令会自动安装Ubuntu:wsl --install但是如果你觉得太慢关掉了,或者出现问题退出了,或者想安装其他的Linux发行版的话,那么就需要使用以下方式。首先使用以下命令查看可安装的Linux发行版列表:wsl --list --online结果如下:以下是可安装的有效原创 2022-03-22 04:32:21 · 11370 阅读 · 3 评论 -
sqlite命令行使用方法
最近为了省钱,就打算使用开源免费的sqlite来做数据库。并且由于个人习惯,所以偏爱命令行。这里就来记录一下如何使用命令行来使用sqlite。安装的话,macOS自带sqlite3,Linux可以使用软件包(apt-get或者yum下载)。sqlite互动操作小介绍这里介绍一下数据库之外的一些小操作。以macOS为例,打开“终端”之后,输入以下命令来打开一个数据库(没有的话会新建一个):sqlite3 名称.db这时候就会进入sqlite操作界面,如下:$ sqlite3 test.sql原创 2022-02-13 18:58:29 · 3334 阅读 · 0 评论 -
使用 Mac Terminal 终端查看系统进程占用的CPU内存等信息
在Linux上可以使用free命令做到查看内存占用等信息,但是Mac上没有free命令。我们可以使用top命令达到相同的目的,并且可以实时更新数据。例如我们想要查看所有信息,可以使用以下命令:top -d效果如下:使用top -h或者man top可以获取更多使用方式。...原创 2022-02-01 11:09:04 · 6139 阅读 · 0 评论 -
Mac缓解或关闭鼠标加速
Mac上鼠标会有加速,就是鼠标移动的越快,移动距离就越远。如果是Windows设备刚转Mac或者是Windows和Mac一起用可能会非常难受。首先苹果搞这个是苹果鼠标移动距离单位是像素,并且Mac分辨率都很高,例如iMac的5k像素数就已经差不多是4k的两倍了,如果没有加速的话,在27英寸大小的5k屏幕移动光标会很慢很慢。所以如果你使用的不是24英寸4k或者27英寸5k再或者32英寸6k级别的屏幕(也就是说如果你使用的是除了ultrafine4k、5k或者iMac 4k 5k、XDR这五款显示器,需要同时考原创 2021-12-28 16:53:20 · 20288 阅读 · 16 评论 -
time命令以及结果解读(查看某命令花费的时间)
time命令可以查看一个进程的执行时间(某些Shell不能使用time命令,而是使用自己内建的计时程序)。如果我们想查看一个命令花费的时间就可以使用time。使用方式很简单time的参数就是我们需要查看花费时间的命令,如下:$ time cc test.creal 0m8.106suser 0m0.972ssys 0m0.767s这里解释一下输出的结果:real:时钟时间(Clock time),有时被称为墙时钟时(wall clock time),是进程运行花费的时间总和,这个时间取原创 2021-12-28 11:48:07 · 1650 阅读 · 0 评论 -
macOS在终端上如何直接使用脚本或者下载的程序
我们在macOS上,使用终端运行脚本或者下载的程序的时候,可能需要使用显式路径(也就是带上路径名),而不能直接用名称使用。例如我们在网络上下载了ffmpeg程序,放在桌面上,就必须使用`./Desktop/ffmpeg`来使用,如果直接输入`ffmpeg`,就会显示`-bash: /Users/xxx/Desktop/bin/ffmpeg: No such file or directory`。这是因为我们的脚本或者程序所在的位置不在环境变量`$PATH`包含的路径中,这个问题是所有类UNIX系统都会遇到的原创 2021-12-22 07:12:28 · 1688 阅读 · 0 评论 -
macOS上如何安装(不需要编译安装或者brew)、使用ffmpeg转码的教程,以及如何使用硬件加速
最近要将mkv格式转为mp4格式,由于compressor不支持mkv,所以就打算用ffmpeg来转,但是由于视频文件巨大,简单的命令太慢了,所以就想用硬件加速,但是由于macOS的特殊性,官网上给出硬件加速的方法不管用,所以就研究了一下不过需要注意的是,加速转码的画质可能会不如直接转码,但是除非大码率转码,不然的话二者画质没有任何区别。如果很担心这个问题,但是又需要加速,视频是h264或者h265/HEVC编码的视频,可以使用-preset veryslow选项来缓和一下,如下:./ffmpeg -,原创 2021-12-21 06:38:41 · 3692 阅读 · 3 评论 -
如何使用树莓派(其他Linux设备也同理)搭建个人Git远程仓库
首先我们要分析一下问题,实现一个Git远程仓库服务器要知道:如何配置Git服务器端。如何连接远程仓库。如何从远程仓库push、pull、fetch等操作。分析完发现蛮简单的,我们一步步来,首先是配置。刚才我们搞定了需要准备的目录、文件和密钥。但是由于我们自己就是管理员,那么我们就需要复制公钥,在服务器端(也就是树莓派上)将其添加到我们之前创建的树莓派上用户`git`的`authorized_keys`空白文件中,这里可原创 2021-12-19 05:31:41 · 1028 阅读 · 0 评论 -
在Windows和Linux中,如何批量按照某种规律修改文件名
由于下载的很多资源的名称都有一些奇奇怪怪的平台前缀,存储备份的时候就想弄掉这些前缀,美观一些。所以需要一个方法来实现批量并且快速处理。这显然是图形界面无法做到的,就必须使用命令行了。为了多平台都会用,就研究了Windows和Linux两个平台的操作方法,macOS可以使用Linux的方法。需要注意的是,使用命令做这些之前最好先将两个文件移到单独的文件夹下,然后对他们做实验,以免更加乱糟糟的了!!!WindowsWindows中,命令提示符批量修改文件名称比较麻烦,我会写一篇单独的博客。但是Window原创 2021-11-18 18:04:36 · 978 阅读 · 0 评论 -
UNIX文件系统相关笔记
第三部分就是i-list所在的位置,这是一个文件定义(file definitions)的列表。每个文件定义是一个64字节大小的结构,被称为i-node(这就是stat查看文件的时候,很常见的inode了)。一个i-node包含13个硬盘地址,最开始的十个地址直接指明了文件最开始的十个块。如果文件大于10个块(也就是5120字节),第十一个字节地址将指出一个块包含该文件接下来128个块的地址,也就是70656字节。如果文件还是大,那么第十二个地址会指出128个块的地址,这128个块每个再指向128个块,这时原创 2021-11-01 23:36:57 · 326 阅读 · 0 评论 -
Linux——如何直接使用脚本(配置$PATH变量中包含的所有bin目录)
在Linux中,我们写了一个脚本就得使用显式路径来使用该脚本,例如:./helloworld。如果直接输入helloworld,会提示Command 'pc' not found,这样非常不方便。这种情况出现的原因是因为系统会自动搜索$PATH变量中包含的所有bin目录来查找需要使用的命令。我们查看$PATH变量,可以看到:$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/l原创 2021-10-24 15:52:26 · 2681 阅读 · 0 评论 -
bash脚本——将命令结果输出给变量,及需要注意的地方(“bad substitution”报错)
今天练习写脚本的时候,遇到一个问题——怎么将命令输出的结果赋值给变量。查阅之后发现有两种方法:NAME='command [option] argument'!!!这个已经不可以使用了!!!以及NAME=$(command [option] argument)需要注意的是:实际测试之后发现在Ubuntu 20.04.1 LTS上,第一个已经不可以使用了,如果使用echo来查看变量会发现输出是command [option] argument。我看有一种说法是Ubuntu的bash被软链接到d原创 2021-10-24 14:54:55 · 6052 阅读 · 0 评论 -
Linux——提供环境变量的脚本.bashrc内容和注释
这个文件里写着一些命令来改变环境中的变量。更改完之后需要重启shell来激活更改。# ~/.bashrc: executed by bash(1) for non-login shells.# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # ~/.bashrc: 被未登录到shells通过bash使用。(就是预先设定的环境变量)# 查看 /usr/share/doc/bash/examples/s原创 2021-06-08 13:58:20 · 3381 阅读 · 0 评论 -
Linux——花括号{}扩展(brace expansion)以及需要注意的问题
花括号扩展可以让我们按照花括号里的模式创建一连串字符串。例如:echo Love_{a,b,c}_Forever可以看到打印了:Love_a_Forever Love_b_Forever Love_c_Forever由于默认模式下,不能忽略空格,这里使用_代替空格。这里的开头部分Love_被称为前导字符(preamble),结尾部分_Forever被称为附言(postscript)。我们还可以按顺序输出设定范围内的字母或者数字,例如:echo {1..10}终端里将打印出:1 2原创 2021-04-25 13:37:06 · 837 阅读 · 0 评论 -
GunPG使用教程(含密钥生成删除以及文件加密解密签名)
GunPG是一个开源免费的加密解密的GPG软件,使用命令行,在Windows、Linux、macOS、Android等平台上都有。如果Mac平台需要可视化的操作方式,那么可以使用GPGTools,是一款收费的商业软件,官网地址是:https://gpgtools.org继续介绍GunPG,这里先列一下GunPG官网:https://www.gnupg.org,包含各种版本的GunPG以及使用手册。下载GunPG使用之前当然是获得GunPG,将其安装在自己的电脑上,方法有两种:官网下载以及命令行下载。原创 2021-04-15 00:54:31 · 8846 阅读 · 0 评论 -
Linux——find -type命令
find -type命令查找某一类型的文件,后面跟着不同的字母表示不同的文件类型查询manual如下:字母文件类型bblock (buffered) specialdcharacter (unbuffered) specialcdirectory(目录)pnamed pipe (FIFO)(命名管道)lsymbolic link; this is never true if the -L option or the -follow option is原创 2021-03-13 17:19:26 · 12606 阅读 · 2 评论
分享