看板 MAC 關於我們 聯絡資訊
如題,命令列下切換常用子目錄 從前 dos 時代是有人出過這種小工具的,所以有這需求似乎不用交代 我的狀況是公司的專案,放置的子目錄深度很深 目前的做法: 打開繪圖介面的 finder,慢慢找到內部子目錄,然後按滑鼠右鍵開命令列 但我自己習慣的做法是用專案名打個批次檔 比如 iLife 專案: touch iLife //建檔 open -a TextEdit iLife //文字編輯檔案 cd /project/iLife //只打一行,切換子目錄;存檔退出 chmod a+x iLife //改變為可執行屬性 iLife //執行,神奇的是不會切換子目錄 . iLife //用另一種方式執行,可以了!! 以上,想請教的是用 . 去執行就可以,怎麼會這樣? 另外這似乎是比較偏命令列的討論,如果跑錯板尚請告知,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.16.80 ※ 文章網址: https://www.ptt.cc/bbs/MAC/M.1435375315.A.451.html
A4P8T6X9: 有宣告他是 bash shell? 06/27 11:32
謝謝你開了第一槍 大致搜尋了板上,我以為我問這個是跑錯板 答:沒,我就只有打那麼一行 cd 如果在第一行加入 #!/bin/bash 結果並沒差別 各種 shell 的差異我知道不多,也覺得學下去沒完沒了 所以這問題如果挨罵'你自己不去研究' 我也認了 其實 cd 切換都有成功,只是有一個會退回原子目錄 why? :P ※ 編輯: HuangJC (223.137.16.80), 06/27/2015 11:46:53
sonyu: 直接執行是再開一個 shell, 裡面做 cd, 不影響原本的 06/27 11:53
sonyu: . = source, 形同在目前 shell 裡 cd 06/27 11:54
原來如此,所以一直都有差別! 挺糟啊,之前我只要發現可以執行,都會懶得打一點 另外,直接執行無法有打一點的效果? 那我乾脆用 alias 組一些變化出來還比較好用 因為我常要切換的子目錄可不只一個.. ※ 編輯: HuangJC (223.137.16.80), 06/27/2015 11:59:27
sonyu: 命令打在目前的 shell 跟開出來的 subshell 的差別 06/27 12:08
sonyu: 目的是影響 shell 環境時 (cd, env, function, alias) 06/27 12:08
sonyu: 在 subshell 執行,執行完就結束,原本的 shell 不受影響 06/27 12:08
sonyu: 因此影響目前 shell => source 06/27 12:11
When a script is run using source it runs within the existing shell 懂了後才看懂這句翻譯 一向我把 source 理解成 執行 然後我就奇怪這指令怎麼命名的 source 是 來源 執行? 如果是我設計,指令會取名為 excute 無法理解,所以電腦的英文根本是另一套文化 ※ 編輯: HuangJC (223.137.16.80), 06/27/2015 12:18:13
sonyu: 最終目的是開非 shell 的程式(eg gvim) 還是會直接執行 06/27 12:16
sonyu: 可以讓該程式需要的環境不會汙染原本 shell 06/27 12:18
sonyu: 如果只是要切換目前 shell 的目錄,用 alias 應該就可以了 06/27 12:18
alias 失敗了,因為我的子目錄含空白 後來用 function 做出來了 :) iLife() { cd /Product/i\ Life } 像這個 iLife function 就是切子目錄到 '/Product/i Life' 那 alias 怎麼下呢? 空白弄死我了 XD ※ 編輯: HuangJC (223.137.16.80), 06/27/2015 12:55:15
andy13579372: 空白前面加反斜線 06/27 13:18
加了,在 function 的例子裡有用,在 alias 沒用
andy13579372: 另外一種方式是用symbolic link做捷徑 "ln -S my/d 06/27 13:18
andy13579372: ir/i\ Life 06/27 13:18
andy13579372: ln -S my/dir/i\ Life 06/27 13:19
symbol link 要小心用啊 我曾想過把所有常見子目錄建在 ~ 目錄上 然後只要一層深度的 cd 就切過去了 但 os 現在會以為我在哪裡? 其他相關相對存取有用嗎? 太複雜了啦... ※ 編輯: HuangJC (223.137.16.80), 06/27/2015 14:25:37
andy13579372: 噢噢抱歉我好像有些沒看清楚 我剛試了alias如果加 06/27 19:47
andy13579372: 雙引號應該可以 06/27 19:47
andy13579372: alias ilife="cd i\ Life" 06/27 19:47
peacedove: 這動作感覺alias比較符合你的需求 06/27 21:43
Neisseria: source 或 alias 都可達成需求,看那種比較符合習慣 06/28 11:48