作者 主題: 如何在指令中使用跳脫字元 及「./」的問題  (閱讀 642 次)

0 會員 與 1 訪客 正在閱讀本文。

weberhwang

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
大家好
我的linux系統環境如下
kernel版本:
Linux AcqCP-U 3.10.0-514.26.1.el7.x86_64 #1 SMP Tue Jun 20 01:16:02 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

Linux版本:
Red Hat Enterprise Linux Server release 7.3 (Maipo)

下面問題想請大家解惑一下
(1)由於我在linux上面試寫C語言,例如 source為 switch30.c,但我在compile的時候,不小心把它編譯成 -switch30
gcc -o -switch30 switch30.c
這時我發現,想用 rm -switch30 時,因為「-」的關係,會被認為誤使用了不正確的rm參數,
請問要如何下指令才能刪掉 -switch30 這個檔?

(2)假如在當前目錄下,存在switch30這個編譯好的c語言檔案
以dos的經驗來說,直接輸入switch30就可以執行
但在linux的系統下,就一定要輸入「./switch30」
不太能了解「./」在linux中的意思,為何一定要加上它才能run C的程式?


netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
用絕對路經,或當.前目錄:rm ./-xxxxx
也可以用 -- 來處理: rm -- -xxxxx

./ 就是當前工作目錄,因爲 linux 執行命令的時候會去找 $PATH 環境變數裏面的目錄去找相關執行檔,一般來說 $PATH 不建議包含 ./ 的,從嚴格的安全行爲守則來看的確如此。

weberhwang

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
感謝,都試過,可行。
可以請教一下關於「--」的用法嗎?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
這個要瞭解一下 command line 格式會比較容易懂。
您可以先搜尋一下 "shell 十三問",關於命令行的部份有提到...
簡單來說, -- 後面的都歸類爲 argument, 而不會當作 option 來處理。