В вашей строке даты отсутствует день, поэтому вы можете сами добавить день и указать формат, в котором он находится сейчас, чтобы создать объект даты. Затем вы можете отобразить этот объект даты в любом формате:
$From = "January, 2018";
$From = DateTime::createFromFormat('d, M, Y','1,'.$From);
$From = $From->format('Y-m-d');
// Outputs 2018-01-01
Подробнее о createFromFormat можно прочитать здесь: http://php.net/manual/en/datetime.createfromformat.php [111 ]
Псевдонимы зависят от оболочки - в данном случае, скорее всего, от bash. Чтобы выполнить псевдоним, вам нужно выполнить bash, но псевдонимы загружаются только для интерактивных оболочек (точнее, .bashrc
будет читаться только для интерактивной оболочки).
bash -i запускает интерактивную оболочку (и исходники .bashrc). bash -c cmd запускает cmd .
Соедините их вместе:
bash -ic cmd запускает cmd в интерактивной оболочке, где cmd может быть функцией / псевдонимом bash, определенным в вашем .bashrc
.
find -name \*bar\* | xargs bash -ic gi foo
должен делать то, что вы хотите.
Изменить: я вижу, вы пометили вопрос как «tcsh», поэтому решение, специфичное для bash, неприменимо. С tcsh вам не нужен -i
, поскольку он, кажется, читает .tcshrc, если вы не укажете -f
.
Попробуйте следующее:
find -name \*bar\* | xargs tcsh -c gi foo
Это сработало для моего базового тестирования .
Простое решение в Вас случай состояло бы в том, чтобы развернуть Ваш встроенный псевдоним. Но это допустимо для csh/tcsh только.
find -name \*bar\* | xargs `alias gi` foo
для удара это будет более хитрым, не настолько удобным, но все еще могло бы быть полезным:
find -name \*bar\* | xargs `alias gi | cut -d "'" -f2` foo
Превратите "gi" в сценарий вместо
, например, в / home / $ USER / bin / gi
:
#!/bin/sh
exec /bin/grep -i "$@"
не забудьте отметить исполняемый файл.
Предложение здесь состоит в том, чтобы избежать xargs и использовать цикл «while read» вместо xargs:
find -name \*bar\* | while read file; do gi foo "$file"; done
См. Принятый ответ в ссылке выше для уточнения решения с пробелами или новой строкой в именах файлов.
Для tcsh (который не имеет функций) вы можете использовать:
gi foo `find -name "*bar*"`
Для bash / ksh / sh вы можете создать функцию в оболочке.
function foobar
{
gi $1 `find . -type f -name "*"$2"*"`
}
foobar foo bar
Помните, что использование обратных кавычек в оболочке более выгодно, чем использование xargs с нескольких точек зрения. Поместите функцию в свой .bashrc.
Используя Bash, вы также можете указать количество args, передаваемых вашему псевдониму (или функции), следующим образом:
alias myFuncOrAlias='echo' # alias defined in your ~/.bashrc, ~/.profile, ...
echo arg1 arg2 | xargs -n 1 bash -cil 'myFuncOrAlias "$1"' arg0
(должно работать для tcsh аналогичным образом)
# alias definition in ~/.tcshrc
echo arg1 arg2 | xargs -n 1 tcsh -cim 'myFuncOrAlias "$1"' arg0 # untested