Squeak.ru - шаблоны программирования

превратить все файлы в папке в псевдонимы функций с помощью bash

У меня есть папка с файлами python. Я хочу превратить их в функции, которые я могу вызывать в bash. Этот следующий однострочный текст загружается в моем текстовом файле профиля при входе в систему bash, но он не работает. Как я могу это исправить?

for i in `ls ~/Dropbox/Documents/tools/python`; do 
  fullfilename=$(basename "$i");
  filename="${fullfilename%.*}";
  $("alias $filename='/usr/local/bin/python3.3 ~/Dropbox/Documents/tools/python/$fullfilename '");
done

РЕДАКТИРОВАТЬ: по рекомендации Ливиу Чирку я удалил " до и после команды псевдонима. Теперь новый код:

for i in `ls ~/Dropbox/Documents/tools/python`; do 
  fullfilename=$(basename "$i");
  filename="${fullfilename%.*}";
  $(alias $filename='/usr/local/bin/python3.3 ~/Dropbox/Documents/tools/python/$fullfilename ');
done

Теперь я получаю эту ошибку:

$ findfactors 40
-bash: findfactors: command not found
05.07.2014

Ответы:


1

Три шага, чтобы сделать скрипты Python исполняемыми из bash.

Во-первых, в начале каждого файла в этом каталоге добавьте следующую строку, чтобы сообщить bash, какой интерпретатор использовать.

#!/usr/local/bin/python3.3 

Во-вторых, сделайте все эти файлы исполняемыми.

chmod u+x ~/Dropbox/Documents/tools/python/*

В-третьих, добавьте этот каталог в свой PATH. Этот входит в ~/.bashrc, а два других одноразовые.

export PATH=$PATH:$HOME/Dropbox/Documents/tools/python
05.07.2014
  • Я бы проголосовал, но у меня недостаточно репутации; отличное решение в стиле unix по сравнению с моей уродливой попыткой! 05.07.2014
  • @ Мика, не беспокойся. Наслаждайтесь своим новым удобством скрипта Python! :) 05.07.2014
  • Иногда #!/usr/bin/env python3.3 предпочтительнее #!/usr/local/bin/python3.3. Первый будет использовать PATH для поиска python3.3, а второй использует жестко закодированное местоположение. 05.07.2014

  • 2

    Похоже, вам нужно удалить " из команды псевдонима.

    Пытаться

    $(alias $filename='/usr/local/bin/python3.3 ~/Dropbox/Documents/tools/python/$fullfilename ');
    

    Вместо

    $("alias $filename='/usr/local/bin/python3.3 ~/Dropbox/Documents/tools/python/$fullfilename '");
    
    05.07.2014
  • Рассмотрите возможность переноса этого кода в ~/.bashrc. Также следуйте советам Мерлина 1) и 2). 05.07.2014
  • по какой причине я должен использовать ~/.bashrc вместо /etc/profile? также у меня есть textmate; превратить файл python в исполняемый файл так же просто, как перейти к началу файла, ввести py, нажать вкладку и сохранить: D 05.07.2014
  • /etc/profile — общесистемный конфигурационный файл — обычно его следует оставлять нетронутым. Кроме того, вам нужно будет позаботиться о PATH. В любом случае, вы дали мне хорошую идею для моего .vimrc - спасибо :) 05.07.2014
  • Я не знаю, откуда взялся этот код, и я его не понимаю, но он у меня в /etc/profile:if [ -x /usr/libexec/path_helper ]; then eval `/usr/libexec/path_helper -s` fi if [ "${BASH-no}" != "no" ]; then [ -r /etc/bashrc ] && . /etc/bashrc fi; это то, что вы подразумеваете под заботой о PATH? 05.07.2014
  • Вы начали две темы обсуждения в одном комментарии. Мой также отмечает начало ответа на вашу тему textmate-path-to-binaries :) извините, если я вас запутал 05.07.2014

  • 3

    Вы имеете в виду что-то вроде

    for i in "$HOME"/Dropbox/Documents/tools/python/*; do 
      fullfilename="$(basename "$i")"
      filename="${fullfilename%.*}"      
      alias "$filename"="/usr/local/bin/python3.3 ~/Dropbox/Documents/tools/python/$fullfilename" 
    done
    
    05.07.2014
  • -bash: псевдоним: =/usr/local/bin/python3.3 ~/Dropbox/Documents/tools/python/$fullfilename: не найден -bash: псевдоним: =/usr/local/bin/python3.3 ~/Dropbox /Документы/инструменты/python/$fullfilename: не найдено 05.07.2014
  • @Mica Попробуй еще раз, поменял переменную местами 05.07.2014
  • Новые материалы

    Очистить файлы Program .cache в Ubuntu 20.10
    Очистите кеш за несколько простых шагов! GNU / Linux реализовал эффективное управление хранилищем для своих пользователей. Но заметили ли вы, что в вашей системе Linux заканчивается место,..

    Использование Node.js для чтения действительно больших файлов (часть 1)
    В этом сообщении в блоге есть интересный источник вдохновения. На прошлой неделе кто-то на одном из моих каналов в Slack опубликовал тестовое задание, которое он получил на должность..

    Введение в градиентный спуск и обратное распространение
    Введение в градиентный спуск и обратное распространение Как машинное обучение? Машинное обучение ( ML ) - это исследование компьютерных алгоритмов, которые автоматически улучшаются по..

    Шаблон CQRS — C#
    Этот архитектурный шаблон в основном говорит о том, что мы можем использовать одну модель для операций чтения, а другую — для операций записи. Звучит хорошо, но реализовать его может быть..

    Освоение функций потерь в машинном обучении для регрессии: полное руководство по оптимизации…
    Введение: Функция потерь является важным компонентом алгоритмов машинного обучения и статистических моделей. Его роль заключается в измерении несоответствия между прогнозируемым выходом модели и..

    10 языков программирования, которые изменят мир в 2023 году
    Мир программирования постоянно развивается, и востребованные языки постоянно меняются. Однако есть несколько языков, которые выдержали испытание временем и по-прежнему очень ценны для изучения в..

    Чем заняться в наших библиотеках (апрель 2023 г.)
    В апреле этого года мы празднуем обучение по-разному — от принятия позитивного и устойчивого мышления до понимания и сохранения местных популяций пчел, а также изучения новейших и новейших..