вы можете пропустить расширение php php-gd
, попробуйте установить его с помощью sudo apt install php-gd
или sudo yum install php-gd
или любым другим способом, подходящим для вашей ОС или метода установки
Сделать исполняемый файл:
chmod + x file
Найти местоположение perl:
which perl
Это иногда должно возвращать что-то вроде
/ bin / perl / usr / local / bin
Затем в первой строке вашего скрипта добавьте:
#! "path" / perl с указанным выше путем, например,
#! / bin / perl
Затем вы можете выполнить file
./ file
Могут быть некоторые проблемы с PATH, поэтому вы можете захотеть изменить и это ...
Это действительно не так уж важно. Вы можете просто сделать скрипт с помощью одной команды:
chmod a+x *.pl
И запустить скрипт после создания файла perl. Кроме того, вы можете открыть файл с помощью команды, подобной этой:
touch filename.pl && chmod a+x filename.pl && vi filename.pl # choose your favorite editor
Похоже, вы хотите создать ссылки с истекающим сроком действия,
http://www.ioncannon.net/s3/21/creating-s3-urls-that-expire-using-php /
Затем вы можете сгенерировать их на лету и предоставлять в виде перенаправлений через ваше приложение. Так что кто-то просит, http://images.mydomain.com/img123.jpg
и вы генерируете красивый, автоматически истекающий URL-адрес s3, http://mydomain.s3.amazonaws.com/T154456.jpg?AWSAccessKeyId=1ESOMESPECIALIDJJAKJ6RA82&Expires=1241372284&Signature=ddfr%2BlkoSEPAL%2BGbMwlMzj6qll, вы автоматически перенаправили в свой аккаунт 12B-пользователя. таким образом, даже если пользователь смотрит на источник HTML, он видит только URL, возвращающийся на ваш сайт, но когда они нажимают на ссылку, они перенаправляются на Amazon, поэтому вам не нужно беспокоиться о прокси запрос через ваш сервер и поглощение ненужной пропускной способности.
Варианты его изменения: (а) взломать ваш собственный мод gedit или (б) найти текстовый редактор, который позволяет вам устанавливать предпочтения для прав доступа по умолчанию для новых файлов. (Извините, я не знаю ни одного.)В свете этого, действительно не так уж и плохо иметь chmod для ваших файлов, верно?
Нет необходимости взламывать ваш редактор или переключать редакторы.
Вместо этого мы можем придумать сценарий для просмотра ваших каталогов разработки и файлов chmod по мере их создания. Это то, что я сделал в прилагаемом скрипте bash. Возможно, вы захотите прочитать комментарии и отредактировать раздел «config» в соответствии с вашими потребностями, тогда я бы предложил поместить его в каталог $ HOME / bin / и добавить его выполнение в ваш файл $ HOME / .login или аналогичный файл. Или вы можете просто запустить его из терминала.
Этот скрипт требует inotifywait, который входит в пакет inotify-tools в Ubuntu,
sudo apt-get install inotify-tools
Предложения / изменения / улучшения приветствуются.
#!/usr/bin/env bash
# --- usage --- #
# Depends: 'inotifywait' available in inotify-tools on Ubuntu
#
# Edit the 'config' section below to reflect your working directory, WORK_DIR,
# and your watched directories, WATCH_DIR. Each directory in WATCH_DIR will
# be logged by inotify and this script will 'chmod +x' any new files created
# therein. If SUBDIRS is 'TRUE' this script will watch WATCH_DIRS recursively.
# I recommend adding this script to your $HOME/.login or similar to have it
# run whenever you log into a shell, eg 'echo "watchdirs.sh &" >> ~/.login'.
# This script will only allow one instance of itself to run at a time.
# --- config --- #
WORK_DIR="$HOME/path/to/devel" # top working directory (for cleanliness?)
WATCH_DIRS=" \
$WORK_DIR/dirA \
$WORK_DIR/dirC \
" # list of directories to watch
SUBDIRS="TRUE" # watch subdirectories too
NOTIFY_ARGS="-e create -q" # watch for create events, non-verbose
# --- script starts here --- #
# probably don't need to edit beyond this point
# kill all previous instances of myself
SCRIPT="bash.*`basename $0`"
MATCHES=`ps ax | egrep $SCRIPT | grep -v grep | awk '{print $1}' | grep -v $$`
kill $MATCHES >& /dev/null
# set recursive notifications (for subdirectories)
if [ "$SUBDIRS" = "TRUE" ] ; then
RECURSE="-r"
else
RECURSE=""
fi
while true ; do
# grab an event
EVENT=`inotifywait $RECURSE $NOTIFY_ARGS $WATCH_DIRS`
# parse the event into DIR, TAGS, FILE
OLDIFS=$IFS ; IFS=" " ; set -- $EVENT
E_DIR=$1
E_TAGS=$2
E_FILE=$3
IFS=$OLDIFS
# skip if it's not a file event or already executable (unlikely)
if [ ! -f "$E_DIR$E_FILE" ] || [ -x "$E_DIR$E_FILE" ] ; then
continue
fi
# set file executable
chmod +x $E_DIR$E_FILE
done
What you describe is the correct way to handle this.
You said that you want to stay in the GUI. You can usually set the execute bit through the file properties menu. You could also learn how to create a custom action for the context menu to do this for you if you're so inclined. This depends on your desktop environment of course.
If you use a more advanced editor, you can script the action to happen when the file is saved. For example (I'm only really familiar with vim), you could add this to your .vimrc to make any new file that starts with "#!/*/bin/*
" executable.
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod +x <afile> | endif | endif