mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 19:47:45 +00:00
Merge pull request #2622 from tertsdiepraam/ls/special-chars-in-double-quotes
`ls`: always use single quotes when `$`, `\` or ` are present in a filename
This commit is contained in:
commit
ff5607c363
1 changed files with 34 additions and 1 deletions
|
@ -287,7 +287,7 @@ pub(super) fn escape_name(name: &OsStr, style: &QuotingStyle) -> String {
|
||||||
show_control,
|
show_control,
|
||||||
} => {
|
} => {
|
||||||
let name = name.to_string_lossy();
|
let name = name.to_string_lossy();
|
||||||
let (quotes, must_quote) = if name.contains('"') {
|
let (quotes, must_quote) = if name.contains(&['"', '`', '$', '\\'][..]) {
|
||||||
(Quotes::Single, true)
|
(Quotes::Single, true)
|
||||||
} else if name.contains('\'') {
|
} else if name.contains('\'') {
|
||||||
(Quotes::Double, true)
|
(Quotes::Double, true)
|
||||||
|
@ -694,4 +694,37 @@ mod tests {
|
||||||
);
|
);
|
||||||
check_names("name#", vec![("name#", "shell"), ("name#", "shell-escape")]);
|
check_names("name#", vec![("name#", "shell"), ("name#", "shell-escape")]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_special_chars_in_double_quotes() {
|
||||||
|
check_names(
|
||||||
|
"can'$t",
|
||||||
|
vec![
|
||||||
|
("'can'\\''$t'", "shell"),
|
||||||
|
("'can'\\''$t'", "shell-always"),
|
||||||
|
("'can'\\''$t'", "shell-escape"),
|
||||||
|
("'can'\\''$t'", "shell-escape-always"),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
check_names(
|
||||||
|
"can'`t",
|
||||||
|
vec![
|
||||||
|
("'can'\\''`t'", "shell"),
|
||||||
|
("'can'\\''`t'", "shell-always"),
|
||||||
|
("'can'\\''`t'", "shell-escape"),
|
||||||
|
("'can'\\''`t'", "shell-escape-always"),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
check_names(
|
||||||
|
"can'\\t",
|
||||||
|
vec![
|
||||||
|
("'can'\\''\\t'", "shell"),
|
||||||
|
("'can'\\''\\t'", "shell-always"),
|
||||||
|
("'can'\\''\\t'", "shell-escape"),
|
||||||
|
("'can'\\''\\t'", "shell-escape-always"),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue