Làm cách nào để hiển thị đường dẫn đầy đủ của tệp bao gồm tên tệp đầy đủ trong thiết bị đầu cuối Mac OSX?


40

'ls' có thể hiển thị tên tệp, vd

ls config.inc.php
config.inc.php 

'pwd' hiển thị đường dẫn đầy đủ của thư mục hiện tại, vd

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Có một lệnh có thể đặt chúng lại với nhau, sẽ có thể hiển thị:

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php

Câu trả lời:


31

Từ đây: https://stackoverflow.com/a/4031502/804713

macports và homebrew cung cấp gói coreutils chứa greadlink (GNU readlink). tín dụng cho bài viết của Michael Kallweitt trên mackb.com

ủ cài đặt coreutils

greadlink -f file.txt


1
Điều này đã khiến tôi phát điên. Tôi đã suy nghĩ tại sao -fsẽ không hoạt động trên non-GNU và làm thế nào để nó hoạt động. Những công việc này. Cảm ơn
sdkks

1
Lưu ý rằng điều này cũng hoạt động cho các thư mục
Paul Razvan Berg

20

Có nhiều cách để làm điều đó; đây là một ví dụ có thể phù hợp với bạn:

claw:~ jonv$ echo `pwd`/`ls config.in.php`
/Users/jonv/config.in.php

Nếu bạn muốn có nhiều ví dụ hơn, có một bó trên bài đăng này tại stackoverflow.


1
Tuy nhiên, hầu hết các câu trả lời hay trong stackoverflow.com/questions/5265702/ đều không hoạt động tốt trên OS X.
Quentin Pradet

9

Trong Mac OSX, hãy thực hiện các bước sau:

  1. cd vào thư mục của tập tin đích.
  2. Nhập một trong hai lệnh đầu cuối sau.
Thiết bị đầu cuối
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Thay thế file.txtbằng tên tập tin thực tế của bạn.
  2. Nhấn Enter.

2

Bạn cũng có thể sử dụng lệnh "find" để liệt kê tất cả các tệp có đường dẫn đầy đủ:

find DirectoryName -type f

hoặc chỉ sau đây:

find . -type f

1
Điều này không trả về đường dẫn tuyệt đối (dường như là điều OP đang tìm kiếm)
Ad N

2

Không thích bất kỳ giải pháp nào được đưa ra nên tôi đã tự tạo ra dựa trên https://stackoverflow.com/a/22684652/953327

Tạo bí danh đơn giản là một lời gọi hàm kết hợp pwdls $1. Sau đó, bạn có thể thêm nó vào .bash_profilenếu bạn chọn.

alias lsf='function _lsf(){ echo "$(pwd)/$(ls $1)"; };_lsf'

Ví dụ sử dụng:

lsf registry.lock
-> /tmp/registry.lock

Tôi đã chọn lsf"danh sách đầy đủ" hoặc "danh sách tập tin", có ý nghĩa với tôi nhưng cảm thấy tự do để sửa đổi.


Cập nhật (Cảm ơn @ santiago-arizti) Để có thể sử dụng điều này với các đường dẫn tương đối (ví dụ lsf ../../readme.md)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'

Tôi cần phải gọi tôi như thế này lsf ../../readme.mdvì vậy tôi đã thay đổi phiên bản của bạn một chútalias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
santiago arizti

hy vọng bạn không phiền, tôi đã thêm câu trả lời của riêng mình nhưng với một kịch bản trong thư mục $ PATH thay vì aliase
santiago arizti

2

Tôi muốn nhiều hơn bạn cần, tôi cũng cần có thể hỏi về các tệp trong một thư mục tương đối ../../readme.md, và kết quả sẽ giống như/Users/santi/readme.md

Vì vậy, tôi đã tạo một tập lệnh (thực thi) trong một thư mục là một phần của lệnh $PATHđược gọi lsfvới nội dung sau:

#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )

Vì vậy, bạn có thể sử dụng nó như thế này:

santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md 
/Users/santi/p/readme.md

Không có thông số nào cho bạn cảnh báo

santi@santis-mac:~/p/dir1/dir2$ lsf
/Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md

Thư mục giả mạo cho bạn cảnh báo (vì dirname)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakedir/readme.md
/Users/santi/bin/lsf: line 5: cd: ../../fakedir: No such file or directory

Tệp giả nhưng thư mục thực không cảnh báo (bạn có thể thêm xác thực nếu bạn cần)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md 
/Users/santi/p/fakefile.md

1

Sau đây sẽ tìm thấy một tập tin trong thư mục làm việc phù hợp file.txtvà trả về đường dẫn tuyệt đối của nó

find `pwd` -name file.txt

Hoàn hảo. 654321
Jan Kyu Peblik

1

Sử dụng realpath

Ví dụ:

$ realpath README.md 
/Users/joe/my/long/directory/structure/README.md

Đã trả lời ở đây trên stackoverflow: https://stackoverflow.com/a/3915075/441960

FYI, phiên bản MacOS (OSX) của tôi:

$ uname -a
Darwin my-machine 18.7.0 Darwin Kernel Version 18.7.0: Tue Aug 20 16:57:14 PDT 2019; root:xnu-4903.271.2~2/RELEASE_X86_64 x86_64
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.