我试图使用一个路径并用bash中的波形符替换主目录,我希望用必要的外部程序完成它.有没有办法只用bash来做到这一点.我有
${PWD/#$HOME/\~}
Run Code Online (Sandbox Code Playgroud)
但那不太对劲.它需要转换:
/home/alice to ~
/home/alice/ to ~/
/home/alice/herp to ~/herp
/home/alicederp to /home/alicederp
Run Code Online (Sandbox Code Playgroud)
作为一个感兴趣的注释,继承人在转换提示符中的\ w值时bash源如何做到这一点:
/* Return a pretty pathname. If the first part of the pathname is
the same as $HOME, then replace that with `~'. */
char *
polite_directory_format (name)
char *name;
{
char *home;
int l;
home = get_string_value ("HOME");
l = home ? strlen (home) : 0;
if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] …Run Code Online (Sandbox Code Playgroud) 我正在使用NH Criteria检索实体并将选择性字段投影到自定义类(有点像将数据投影到ViewModel上以便在MVC视图上显示).
使用ProjectionList很容易:
var emailCriteria = mSession.CreateCriteria<Email>();
emailCriteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Subject"), "Subject")
);
emailCriteria.SetResultTransformer(Transformers.AliasToBean<EmailDataModel>());
var result = emailCriteria.List<EmailDataModel>();
Run Code Online (Sandbox Code Playgroud)
但是,我的实体包含一个集合,我也希望将它带回来,并将其作为集合投影到我的自定义类中.
我的域模型看起来(简化形式)如下:
public class Email {
public string Subject
public List<EmailAttachment> Attachments
etc...
}
public class EmailAttachment {
public UploadedFile File
}
public class UploadedFile {
public string Filename
public UploadedFileData Data
}
public class UploadedFileData {
public byte[] Data
}
Run Code Online (Sandbox Code Playgroud)
这是我要投影到的"数据模型"类:
public class EmailDataModel {
public string Subject
public List<EmailAttachmentDataModel> Attachments
}
public class EmailAttachmentDataModel {
public string Filename
public byte[] Data …Run Code Online (Sandbox Code Playgroud)