Возможно ли создавать команды, помещать их в один файл и запускать без & ldquo; ./& rdquo ;? [Дубликат]

Вы можете использовать dconf-editor для добавления городов.

com->canonical->indicator->datetime->locations

Изменить места:

locations = ['Europe/Moscow Moscow', 'America/Los_Angeles Santa Clara']

Подробнее здесь. Доступные временные интервалы здесь и здесь.

1
задан 11 January 2015 в 18:49

3 ответа

Вам нужно добавить ./ для запуска команд из сценариев в локальном каталоге, потому что команды, которые не содержат / в их имени, просматриваются только в каталогах, упомянутых в значении $PATH. Обычно это значение содержит только абсолютные пути и, в частности, не содержит путь ., так что текущий рабочий каталог не просматривается. Это хорошая вещь, потому что в противном случае можно попытаться обмануть пользователей при выполнении сценариев, не намереваясь сделать это, поставив скрипты с именами, совпадающими с общими командами, такими как ls в определенных каталогах; также обычно не очень удобно делать определенные команды видимыми только тогда, когда текущий каталог имеет определенное значение.

Естественным решением является наличие определенного каталога, в котором вы размещаете частные команды, которые вы хотите использовать для вызова и обеспечения того, чтобы (абсолютное) имя этого каталога происходило в $PATH. Традиционным местом для такого каталога является $HOME/bin.

4
ответ дан 24 May 2018 в 00:15
  • 1
    +1, не ставьте. в вашей $ PATH. Просто попросите укусить архив tar, в котором есть файл с именем ls, содержащий rm -rf $HOME. Таким образом, вы стреляете себе в ногу, когда-нибудь глядя на файлы, вам не следует доверять. – Peter Cordes 11 January 2015 в 18:14

У меня есть куча псевдонимов и функций оболочки, определенных в моем ~/.bashrc

alias ll='ls -lh'
alias li='ls -lhi'
alias lll='ls -lhL'
alias l='ll'
complete -F _longopt l ll lll li  # this doesn't actually work

psg(){ ps aux | grep ${*:-$USER} | grep -v grep; }
psgw(){ ps auxww | grep ${*:-$USER} | grep -v grep; }

# expand aliases for sudo
alias sudo='sudo '
alias imv='imv -i'
alias mv='mv -i'
alias cp='cp -i'
alias rm='rm -i'
alias prealloc-mv='rsync --remove-source-files --sparse --preallocate -aH'
alias m=less
export LESS=iMRj5
alias j='jobs -l'
alias dr='disown -r'

cmpll() { ll "$@"; cmp "$@" && echo identical; }
findll() { find "$@" -exec ls -dlh --color=auto {} +; }
findinamell() {
    local i  args=()
    for i in "$@";do
            args+=( '-iname' )
            args+=( "*$i*" )
    done
    findll "${args[@]}";
}

Как указывали другие, ~/bin по умолчанию находится в вашем $PATH, если он существует, поэтому вы можете поместить вещи, которые слишком велики для функции псевдонима или оболочки. У меня на самом деле есть несколько действительно небольших скриптов в моем ~/bin, IDK, почему я решил сделать их файлами вместо псевдонимов. Найдите «ИСТОРИЯ КОМАНДЫ» на странице man bash для получения более подробной информации о том, как интерпретируются команды. man bash.

Если я готовлю некоторые команды, которые применимы только к чему-то, над чем я работаю в определенном каталоге, я мог бы разместить команды в файле там и запустить его с помощью ./do-stuff.sh. Ваши пальцы привыкнут быстро набирать ./. Вы также можете сохранить текстовый файл полезных команд, которые вы использовали, а также описание того, что они делают. Я делаю это иногда, когда не думаю, что стоит потратить время на то, чтобы превратить его в функцию или скрипт, который принимает параметры, но вместо этого просто вставьте его и отредактируйте по мере необходимости. например для воспроизведения аудиокниг я часто использую:

mpl() { t=2200; mplayer -ss $(($t * ($1%2))) -endpos $(($t+5)) disc$(printf '%02d' $((1 + $1/2)))-38.mp3; date; }; mpl 4

(это воспроизводит 2200 секунд звука, начиная с начала ($ 1 нечетного) или 2200 секунд в одном из многих пронумерованных дорожек. В основном, отобразите линейный индекс в набор аудиофайлов, каждый из которых содержит два длинных фрагмента прослушивания.)

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

Я уверен, что есть много хороших вещей, если вы google, но, вероятно, есть тонна устаревшие и менее полезные вещи, и я не хочу тратить время на оценку руководства прямо сейчас.

0
ответ дан 24 May 2018 в 00:15

Вы всегда можете найти это в каталоге bin. Или, скажем, это сценарий, который находится по адресу /home/user/Desktop/hello.sh, вы можете открыть ~ / .bashrc и добавить к нему

    hello() {
    '/home/user/Desktop/hello.sh'
    }

Затем вы можете выполнить ' привет "в терминале, и он должен работать отлично.

0
ответ дан 24 May 2018 в 00:15

Другие вопросы по тегам:

Похожие вопросы: