Я все еще обожаю причуды сценариев оболочки, но я чувствую, что мне становится немного более комфортно с ним.
Я пытался создать псевдоним для создания tar-файла, который мне нужно создавать часто, но он всегда дает мне tar-ошибки. Так же, как тест, я попытался создать простую оболочку, но она не работает:
function eztar(){ if [ -d $1 ] then export QTAR="$1.tar"; tar –cvf ${QTAR} "$1/"; else echo "Missing directory name"; fi } >eztar mydir tar: invalid option -- '' Try `tar --help' or `tar --usage' for more information.
Опция -cvf в этом случае как-то съедается?
Во всяком случае, вот еще один.
У меня была проблема, когда у Apache закончилась память. Я обнаружил, что слишком много неудачных выходов заставляют семафор заполняться, поэтому, чтобы исправить это, я обнаружил, что мне понравился сценарий, и я попытался заставить его работать в псевдониме. (Кстати, есть ли лучший способ сделать это?) Я думаю, мне нужно включить это в функцию, потому что, когда я проверяю псевдонимы, цикл for расширился до списка текущих семафоров, чего я не хотел.
alias semfix='eval "for i in `ipcs -s # grep apache # awk '{print $2}'` ; do ipcrm -s $i; done";'
Я изучаю, что не могу просто создать псевдоним или функцию обертки из всего на Unix!
Нет ничего плохого в вашей первой функции, кроме опечатки.
Символ перед cvf
не является минус- cvf
.
Вы используете std. US 101 клавиатура клавиатуры?
Взяв это полностью (минус является необязательным для большинства переключателей tar), и функция работает нормально.
Или же вы можете исправить это с помощью правильного -cvf
Кроме того, нет необходимости в export
export приводит к тому, что переменная среды имеет большую настойчивость, чем требуется в такой функции.
Я предлагаю вам ознакомиться с руководством Advanced Bash-Scripting Guide
Посмотрите на let
, local
и export
.
Посмотрите, как они меняются, когда использовать тот или иной.
Да, вы должны попробовать и переписать второй как функцию.
Менее вложенные цитаты и трубопроводы, в процессе обучения, облегчат выполнение функций записи и псевдонимов.
Один лайнер приходит позже 🙂
Попробуйте использовать tar
без знака минус, т.е. просто tar cfv
Это оригинальный, теперь нестандартный формат.