Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell脚本,使可执行文件成为本机命令_Shell - Fatal编程技术网

Shell脚本,使可执行文件成为本机命令

Shell脚本,使可执行文件成为本机命令,shell,Shell,我在linux中编写了一个名为cleanup的shell脚本。我是新来的,我正在从一本书中学习。它告诉我将文件保存在/usr/local/bin/中,但是当我运行以下命令时,我得到了这个错误: cp:无法创建常规文件“/usr/local/bin/cleanup”:权限 否认 我不知道如何把文件写到那个文件夹里。以下是清理代码: #!/bin/bash # Proper header for a Bash script. # Cleanup, version 2 # Run as root, o

我在linux中编写了一个名为cleanup的shell脚本。我是新来的,我正在从一本书中学习。它告诉我将文件保存在/usr/local/bin/中,但是当我运行以下命令时,我得到了这个错误:

cp:无法创建常规文件“/usr/local/bin/cleanup”:权限 否认

我不知道如何把文件写到那个文件夹里。以下是清理代码:

#!/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的终端工作……如果有什么不同,请告诉我。

linux中的
/usr/local/bin/
目录是受保护的目录。它包含许多可执行文件,因此必须对可能造成安全问题的文件进行保护

因此,对目录的写入权限仅限于根用户

您可以使用
sudo
命令获得root权限。在
cp
命令前面使用sudo,如
sudo cp….
。为此,您必须是管理员用户

如果您不是管理员用户,您将收到一条错误消息,您必须以root用户或任何其他管理员用户身份登录才能执行复制


复制文件后,请确保检查文件的权限。文件必须具有执行权限。您可以使用
sudo chmod+x

分配执行权限。您知道“权限被拒绝”是什么意思吗?(严肃的问题)您最好将它放在本地目录(如/home/You/bin)中,并将该目录放在您的路径中,这样您就不必担心进入/usr/local/bin,或者为其他用户创建随机的新命令。非常感谢…它终于起作用了。我可以问你一些其他问题吗?我有一个文件夹,我需要清理一些文件,而不是所有文件。因此,在脚本中,我转到需要更改的文件夹。然后不知何故,我想把文件夹中包含的所有文件夹和文件的名称都记下来。然后我想检查每个文件是否是日志文件,并清理它。如果它不是一个文件,而是一个文件夹,那么进入文件夹并做同样的事情。有什么建议吗?如果您的日志文件有某种通用扩展名,比如.log,那么您可以执行,
find-输入f | grep\.log$| xargs
好的,这很有意义,那么文件夹呢?我如何知道它是否是文件夹。
#!/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.