如何将文件作为可执行文件发送? (没有吉特)

如何将文件作为可执行文件发送? (没有吉特)

我看到有一个与此类似的问题,但该答案与 Git 相关,我在这里没有使用它。

我经常制作一些小脚本,然后发送给命令行技能非常有限的其他人来运行。有没有办法打包我的脚本,以便用户不需要更改我的可执行文件的权限?我尝试打包我的脚本,以便第一个可执行脚本更改所有其他脚本的权限,但此时我无法找到一种方法来以用户不必提供它的方式发送第一个脚本执行权限即chmod +x First_script

我是否因为没有解决方案而遇到了这堵墙?

答案1

一种简单的方法是制作 tarball,即压缩tar档案。如果您使用 root 权限创建它,并且用户也使用 root 访问权限提取内容,则应保留权限。

例子

sudo -cvzf filename.tar.gz directory  # create a compressed tar archive of the directory and its content

cd /to-where-you-want-it-extracted
sudo -xvzf filename.tar.gz            # extract the content from the archive

有详细信息man tar,您可以tar通过互联网找到很好的教程。

答案2

您可以将脚本(此时具有可执行权限)包装为相关操作系统的包格式。

然后您的用户只需安装该软件包即可自动获得适当的权限。

辩论是针对基于 Debian 的操作系统上的这个问题的简单解决方案。

答案3

命令sharseeman shar就是为了做这种事情而发明的。

man shar, 或https://manpages.ubuntu.com/manpages/bionic/en/man1/shar.1.html

描述

   shar creates "shell archives" (or shar files) which are in text format and can be emailed.
   These  files  may be unpacked later by executing them with /bin/sh.  The resulting archive
   is sent to standard out unless the -o option is given.  A wide range of  features  provide
   extensive flexibility in manufacturing shars and in specifying shar "smartness".  Archives
   may be fairly simple (--vanilla-operation) or essentially a mailable tar archive.

例子

   The first shows how to make a shell archive out of all C program sources.  The second
   produces a shell archive with all .c and .h files, which unpacks silently.  The third
   gives a shell archive of all uuencoded .arc files, into numbered files starting from
   arc.sh.01.  The last example gives a shell archive which will use only the file names at
   unpack time.

       shar *.c > cprog.shar
       shar -Q *.[ch] > cprog.shar
       shar -B -l28 -oarc.sh *.arc
       shar -f /lcl/src/u*.c > u.sh

相关内容