Вопрос просто задан неправильно. Вы не делаете псевдоним, который принимает параметры, потому что alias
просто добавляет второе имя для того, что уже существует. Функцией, требуемой OP, является команда function
для создания новой функции. Вам не нужно псевдонизировать функцию, поскольку функция уже имеет имя.
Я думаю, вы хотите что-то вроде этого:
function trash() { mv "$@" ~/.Trash; }
Вот и все! Вы можете использовать параметры $ 1, $ 2, $ 3 и т. Д. Или просто использовать их все с помощью $ @
Попробуйте использовать IgnoreList.Ignore ; bundles.IgnoreList.Ignore(...)
.
Я улучшил хорошее предложение Jon Malcolm (и некоторые обновления Satpal здесь ), чтобы исправить несколько недостатков, которые у него были:
1) Он нарушает поведение по умолчанию пакеты с «.min». файлы
2) Он не позволяет использовать шаблоны поиска, но только файлы, которые должны быть исключены
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Optimization;
public static class BundleExtentions
{
public static Bundle IncludeDirectoryWithExclusion(this Bundle bundle, string directoryVirtualPath, string searchPattern, bool includeSubDirectories, params string[] excludePatterns)
{
string folderPath = HttpContext.Current.Server.MapPath(directoryVirtualPath);
SearchOption searchOption = includeSubDirectories
? SearchOption.AllDirectories
: SearchOption.TopDirectoryOnly;
HashSet<string> excludedFiles = GetFilesToExclude(folderPath, searchOption, excludePatterns);
IEnumerable<string> resultFiles = Directory.GetFiles(folderPath, searchPattern, searchOption)
.Where(file => !excludedFiles.Contains(file) && !file.Contains(".min."));
foreach (string resultFile in resultFiles)
{
bundle.Include(directoryVirtualPath + resultFile.Replace(folderPath, "")
.Replace("\\", "/"));
}
return bundle;
}
private static HashSet<string> GetFilesToExclude(string path, SearchOption searchOptions, params string[] excludePatterns)
{
var result = new HashSet<string>();
foreach (string pattern in excludePatterns)
{
result.UnionWith(Directory.GetFiles(path, pattern, searchOptions));
}
return result;
}
}
Пример использования, который у меня есть, заключается в том, чтобы включить все библиотеки из папки lib, начиная с угловым, но исключая все языковые скрипты (потому что только один будет добавлен на основе языка в отдельном пакете позже):
bundles.Add(new Bundle("~/bundles/scripts")
.Include("~/wwwroot/lib/angular/angular.js") // Has to be first
.IncludeDirectoryWithExclusion("~/wwwroot/lib", "*.js", true, "*.locale.*.js"));
Это будет вести себя правильно, если у вас есть угловые.min.js и angular.js и добавьте unminified версию в отладку и используя существующий .min.js в выпуске.
Метод расширения может быть тем, что вам нужно здесь:
public static class BundleExtentions
{
public static Bundle IncludeDirectoryWithExclusion(this StyleBundle bundle, string directoryVirtualPath, string searchPattern, params string[] toExclude)
{
var folderPath = HttpContext.Current.Server.MapPath(directoryVirtualPath);
foreach (var file in Directory.GetFiles(folderPath, searchPattern))
{
if (!String.IsNullOrEmpty(Array.Find(toExclude, s => s.ToLower() == file.ToLower())))
{
continue;
}
bundle.IncludeFile(directoryVirtualPath + "/" + file);
}
return bundle;
}
И тогда использование должно быть:
bundles.Add(new StyleBundle("~/Content/themes/default/css")
.IncludeDirectoryWithExclusion("~/Content/themes/Default", "*.css", "file-you-dont-want.css"));
На данный момент я не на ПК, поэтому вышеуказанное не проверено, но должно предоставить вам шаблон для вашего решения.
Вот еще один метод расширения, который перегружает существующие методы IncludeDirectory
и поддерживает поиск подкаталогов.
public static class BundleExtensions
{
public static Bundle IncludeDirectory(
this Bundle bundle,
string directoryVirtualPath,
string searchPattern,
params string[] filesToExclude)
{
return IncludeDirectory(bundle, directoryVirtualPath, searchPattern, false, filesToExclude);
}
public static Bundle IncludeDirectory(
this Bundle bundle,
string directoryVirtualPath,
string searchPattern,
bool searchSubdirectories,
params string[] filesToExclude)
{
var physicalPath = HttpContext.Current.Server.MapPath(directoryVirtualPath);
return bundle.Include(Directory
.EnumerateFiles(physicalPath, searchPattern, searchSubdirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
.Select(physicalFileName => physicalFileName.Replace(physicalPath, directoryVirtualPath).Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar))
.Where(virtualFileName => !filesToExclude.Contains(virtualFileName))
.ToArray());
}
}