From 393cb7ca6f9bdf455796cc9096c2bb2ee975b654 Mon Sep 17 00:00:00 2001 From: JT <547158+jntrnr@users.noreply.github.com> Date: Thu, 17 Feb 2022 12:49:20 -0500 Subject: [PATCH] Treat `ls` for absolute paths as-is (#4513) * Absolute paths in ls are treated as-in * Better fix --- crates/nu-command/src/filesystem/ls.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/crates/nu-command/src/filesystem/ls.rs b/crates/nu-command/src/filesystem/ls.rs index 87cddb16f..7fa545b35 100644 --- a/crates/nu-command/src/filesystem/ls.rs +++ b/crates/nu-command/src/filesystem/ls.rs @@ -71,7 +71,7 @@ impl Command for Ls { let cwd = current_dir(engine_state, stack)?; let pattern_arg = call.opt::>(engine_state, stack, 0)?; - let (path, p_tag) = match pattern_arg { + let (path, p_tag, absolute_path) = match pattern_arg { Some(p) => { let p_tag = p.span; let mut p = PathBuf::from(p.item); @@ -101,13 +101,14 @@ impl Command for Ls { } p.push("*"); } - (p, p_tag) + let absolute_path = p.is_absolute(); + (p, p_tag, absolute_path) } None => { if is_empty_dir(current_dir(engine_state, stack)?) { return Ok(Value::nothing(call_span).into_pipeline_data()); } else { - (PathBuf::from("./*"), call_span) + (PathBuf::from("./*"), call_span, false) } } }; @@ -151,7 +152,7 @@ impl Command for Ls { let display_name = if short_names { path.file_name().map(|os| os.to_string_lossy().to_string()) - } else if full_paths { + } else if full_paths || absolute_path { Some(path.to_string_lossy().to_string()) } else if let Some(prefix) = &prefix { if let Ok(remainder) = path.strip_prefix(&prefix) {