2013-06-11 129 views
0

我在linux中編寫了一個名爲cleanup的shell腳本。我是新手,我正在從書中學習。它告訴我保存在/ usr/local/bin目錄的文件/文件,但是當我運行下面的命令,我得到這個錯誤:Shell腳本使可執行文件成爲本機命令

$ cp cleanup /usr/local/bin/ 

cp: cannot create regular file `/usr/local/bin/cleanup': Permission denied

我不知道怎麼寫該文件夾中文件。下面是清理的代碼:

#!/bin/bash 
# Proper header for a Bash script. 
# Cleanup, version 2 
# Run as root, of course. 
# Insert code here to print error message and exit if not root. 

# Variables are better than hard-coded values. 
cat ./hello > cleaning 
echo "Logs cleaned up." 
exit 
# The right and proper method of "exiting" from a script. 
# A bare "exit" (no parameter) returns the exit status 
#+ of the preceding command. 

你能幫我把文件複製到/ usr/local/bin目錄/ 我這樣做是因爲它的可執行文件,如果我把它放在上面提到的文件夾,我可以像本地命令一樣運行文件的名稱。 我在Ubuntu的終端工作...如果它有所作爲,請告訴我。

+0

你知道「拒絕權限」是什麼意思嗎? (嚴重問題) – liori

+2

你可能最好將它放在本地目錄(如/ home/you/bin)中,並將該目錄放入PATH中,這樣你就不必擔心進入/ usr /本地/ bin,或爲其他用戶創建隨機新命令。 –

回答

0

linux中的/usr/local/bin/目錄是一個受保護的目錄。它包含許多可執行文件,因此必須對可能導致安全問題的文件進行保護。

因此,目錄的寫入權限僅限於root用戶。

您可以通過使用sudo command.Use須藤在cp命令前,像sudo cp ....。爲此獲得root權限,你必須是一個管理員用戶

如果您不是一個管理員用戶,你會得到一個錯誤消息,您必須以root或任何其他管理員用戶身份登錄才能執行復制。

複製完文件後,請務必檢查文件的權限。它必須具有執行權限。您可以使用sudo chmod +x <filename>分配執行權限。

+0

非常感謝你......它終於有效。 – user2438113

+0

我可以問你別的嗎? – user2438113

+0

我有一個文件夾,我需要清理一些文件,而不是所有的文件。因此,在腳本中,我會轉到需要進行更改的文件夾。然後,我想以文件夾中包含的所有文件夾和文件的名稱進行操作。然後我想檢查每個文件是否是日誌文件並清理它。如果它不是一個文件,而是一個文件夾,那麼進入該文件夾並執行相同的操作。有什麼建議麼? – user2438113