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中有一個訊息
訊息
以操作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!') 終
MAC下iterm2下命令列快捷鍵
一開始在使用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