1. 程式人生 > >Mac下使用命令列或指令碼刪除檔案到廢紙簍

Mac下使用命令列或指令碼刪除檔案到廢紙簍

mac刪除檔案有兩種方式:
1. 使用Finder的“移到廢紙簍”功能
2. 使用rm命令
第二種方式刪除的檔案,不能在廢紙簍中找到,也就是所謂的“徹底刪除了”
但是我們在使用terminal的時候,一般都會使用rm刪除檔案,那要是刪錯了不就完了?而且我們的mac上本身又自帶了廢紙簍,為什麼不能將兩者結合起來呢?於是我做了一些探究

Mac廢紙簍的真實面目

$ ls ~/.Trash

你會發現,~/.Trash目錄就是廢紙簍
但是它只是一個普通的目錄,只是Finder將刪除的檔案移動到了這個目錄而已,不相信?接著往下看

~/.Trash的本質只是資料夾

$ cd ~
$ echo "666666"
>> wantodel.txt $ mv wantodel.txt ~/.Trash

此時開啟你的廢紙簍一看,裡面有一個wantodel.txt檔案,但是你無法將它還原到原處,也就是沒有記錄你的完整操作行為
這裡寫圖片描述

Finder是如何記錄完整操作行為的呢?

最有可能是通過資料庫來存放的,而非日誌的形式
因為我grep了整個磁碟都沒找到相關的檔案

最好的幫手是Finder

既然~/.Trash只是普通資料夾,那我們單純使用linux命令是無法達到目的的了。
牛頓說過要站在巨人的肩膀上,我們現在已知Finder可以達到預期目的,如果我們能呼叫或是告訴Finder的我們要做什麼,並且它也願意做,不就可以達到目的了麼?
在window中有一個訊息

的概念,意思是一個應用程式A可以對另一個應用程式B傳送訊息以操作B來完成某項指定的任務,那Mac種是否也有這種或是類似這種的機制呢?
答案是AppleScript,是一種指令碼語言,可以用來控制Mac上的應用程式。
最後附上使用shell通知Finder程式移動檔案廢紙簍的樣例程式碼

#!/bin/bash
fp=/absolute/path/to/file
osascript << EOF
tell application "Finder"
    posix path of ((delete posix file "${fp}") as unicode text)
end tell
EOF

相關推薦

Mac使用命令指令碼刪除檔案紙簍

mac刪除檔案有兩種方式: 1. 使用Finder的“移到廢紙簍”功能 2. 使用rm命令 第二種方式刪除的檔案,不能在廢紙簍中找到,也就是所謂的“徹底刪除了” 但是我們在使用terminal的

Ubuntu 命令建立(刪除檔案(夾)

很多時候我們都會在終端進行檔案/資料夾的建立與刪除 使用快捷鍵ctrl + alt + t 開啟終端: 建立檔案: touch a.txt 建立資料夾: mkdir NewFolder 刪除檔案:

Mac命令安裝指定版本的lua,然後c++,lua相互互動

1.lua下載地址 2.build lua檔案 /Users/jianan/Downloads/lua-5.3.3 make macosx 3.安裝 make macosx install 4

Linux/Mac命令批量修改資料夾名

一般來說在linux/unix下命令列更強大, windows上可以裝cygwin來模擬各種命令的執行. 比如我們的目標是將當前目錄中的所有的org資料夾改名為com, 包括子目錄中的資料夾. 我們一步一步來. find . -name org 這個

mac 命令安裝mysql

1.使用brew 安裝 brew install mysql 擴充套件 brew info mysql(軟體) 可以檢視安裝的軟體啟動 資料庫服務 mysql.server start2.安裝好後登入資料庫mysql -u root -p show databases;sho

Mac 命令使用Cmake與PlistCpp開源庫的使用

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. Plist::dictionary_type dict

mac 命令執行 emulator -avd 命令時提示/emulator/qemu/darwin-x86_64/qemu-system-x86_64 沒有該命令或者目錄

ERROR:./android/qt/qt_setup.cpp:28:Qt library not found ../emulator/qemu/darwin-x86_64/qemu-system-x86_64 沒有該命令或者目錄 其實之前一直是好的,只是剛剛升級as後就

Mac命令安裝ipa包

如果提示沒有ideviceinstaller這個命令,那麼就需要先安裝這個命令了。執行以下命令來安裝ideviceinstaller工具brew install ideviceinstaller正常情況稍等一會就安裝好了。如果又提示brew命令找不到的話,那麼就需要安裝mac包管理工具(brew)執行以下命令

Mac OS命令使用SublimeText開啟文字檔案

Step1. 安裝Sublime Text編輯器 可直接到以下網址下載dmg安裝檔案: Sublime Text 3 Step2. 新增命令列別名 開啟使用者配置檔案 vim ~/.bash_profile 新增如下alias alias subl="'/Ap

Mac終端命令執行Python指令碼檔案

主要分為以下四步: 首先,在python檔案裡首行新增#!/usr/bin/env python #!/usr/bin/env python print('hello, world!') 終

MACiterm2命令快捷鍵

一開始在使用iterm2時不太習慣,打了很長的命令後,想編輯非常不順手,今天特意整理了一下iterm2在mac下的一些快捷鍵,方便命令列編輯;(希望今後有機會可以嘗試命令列下的vim模式) 標籤 新建標籤:command + t 關閉標籤:command + w 切換標籤:

Mac OS X 命令編譯錯誤: ld: library not found for -lcrt1.10.6.o

在 Mac OS X 的 10.8.3 的版本中,使用命令列執行 configure 時,生成下面的錯誤: WenBi-MacBook:tcpdump-4.4.0 wenbi$ ./configure checking build system type... x86

Windows的通過命令批量重新命名檔案

        今天在工作時遇到了一個情況,通過高速掃描器掃描的檔案是以圖片的形式儲存到本地硬碟上的,但是掃描器給圖片命的名就很混亂,並不是我想要的。作為一個強迫症,於是就想到了手動把這些名字改過來。但是這一整個資料夾6、700張圖片,一個一個地F2去重新命名工作了也是蠻嚇人

ffmpeg linux命令將h264檔案轉換成MP4格式

 先交叉編譯./configure --disable-yasm --enable-gpl --enable-nonfree --prefix=/ud/build/lq_work/arm_ffmpeg211 --enable-cross-compile --cross-pre

mac 使用命令,對遠端伺服器進行檔案更新

目的:更新伺服器檔案A 1、遠端傳輸檔案 A.zip   在本地A檔案的父級資料夾下執行 scp ./A.zip 遠端伺服器使用者名稱@遠端伺服器IP:/要放置的資料夾目錄/   然後要輸入伺服器登陸密碼,進行檔案傳輸 2、登入遠端伺服器   ssh 遠端伺服器使用者名稱@IP地址 -p 埠號   輸入密碼

windows命令呼叫R指令碼

1、將R.exe所在路徑加到環境變數path下,路徑一般為C:\Program Files\R\R-3.0.1\bin 2、在windows 命令列中敲入 呼叫命令:r CMD BATCH D:\RWORKSPACE\CMD_TEST.R  (注意 CMD BATCH 都要

windows 命令+winscp 實現與linux的遠端檔案傳輸

安裝WinSCP WinSCP 是一個 Windows 環境下使用的 SSH 的開源圖形化 SFTP 客戶端。同時支援 SCP 協議。它的主要功能是在本地與遠端計算機間安全地複製檔案,並且可以直接編輯檔案。 - 下載:https://winscp.net/e

windows命令終端使用rz,sz上傳/下載檔案引數詳解

rz命令: (X) = option applies to XMODEM only (Y) = option applies to YMODEM only (Z) = option applies to ZMODEM only -+, --appe

MAC系統 命令(terminal)FQ(教程)

命令列FQ前提: 用的是shadowsocks,vim操作,大寫 I 是 插入(insert首字母)編寫操作,按ESC退出  ,然後 :wq 儲存退出 1. brew install privoxy2.vim /usr/local/etc/privoxy/config   加入配置項   listen-add

Windows 使用命令編譯C/C++檔案

對於一些比較小的測試程式來說,使用IDE編譯太費時間,這篇部落格簡單介紹一下如何在安裝了Visual Studio系列的Windows上使用原生的編譯工具來編譯C/C++。 Visual Studio自帶的用於編譯C/C++的工具是cl.exe,連結目標檔案使用link.e