Wie zeige ich den vollständigen Pfad einer Datei einschließlich des vollständigen Dateinamens im Mac OSX-Terminal an?

'ls' kann den Dateinamen anzeigen, z. B.

ls config.inc.php
config.inc.php 

'pwd' zeigt den vollständigen Pfad des aktuellen Ordners an, z. B.

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Gibt es einen Befehl, der sie zusammenstellen kann und zeigen könnte:

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php
Author: Rob L, 2014-02-15

8 answers

Benutze realpath

Z.B.:

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

, Antwortete hier auf stackoverflow: https://stackoverflow.com/a/3915075/441960

Stellen Sie sicher, dass Sie die Coreutils auf Homebrew herunterladen, da sie nicht standardmäßig auf allen Macs installiert sind:

brew install coreutils

Zu Ihrer Information, meine Version von macOS (OSX):

$ 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
 10
Author: Purplejacket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-30 16:24:03

Von hier: https://stackoverflow.com/a/4031502/804713

Macports und Homebrew stellen ein Coreutils-Paket mit Greadlink bereit (GNU readlink). kredit an Michael Kallweit Post in mackb.com

Brew install coreutils

Greadlink -f Datei.txt

 34
Author: stephenbez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:50

Es gibt viele Möglichkeiten, das zu tun; Hier ist ein Beispiel, das für Sie funktionieren kann:

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

Wenn Sie weitere Beispiele wünschen, gibt es eine Reihe von dieser Beitrag bei Stackoverflow.

 22
Author: yoonix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 11:33:49

Führen Sie unter Mac OSX die folgenden Schritte aus:

]}

  1. cd in das Verzeichnis der Zieldatei.
  2. Geben Sie einen der folgenden Terminalbefehle ein.
Terminal
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. Ersetzen Sie file.txt durch Ihren tatsächlichen Dateinamen.
  2. Drücken Sie Enter.
 11
Author: Mowzer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-24 06:12:55

Sie können auch den Befehl" Suchen " verwenden, um alle Dateien mit vollständigem Pfad aufzulisten:

find DirectoryName -type f

Oder nur das Folgende:

find . -type f
 4
Author: Mireia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-01-22 10:07:23

Mochte keine der gegebenen Lösungen, also machte ich meine eigene basierend auf https://stackoverflow.com/a/22684652/953327

Create alias, der einfach ein Funktionsaufruf ist, der pwd und ls $1 kombiniert. Sie können dies dann zu Ihrem .bash_profile hinzufügen, wenn Sie möchten.

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

Anwendungsbeispiel:

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

Ich habe lsf für "Liste voll" oder "Liste Datei", macht Sinn für mich, aber fühlen Sie sich frei zu ändern.


Update (Danke @santiago-arizti) Um verwenden zu können dies mit relativen Pfaden (zB lsf ../../readme.md)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
 3
Author: FGreg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-26 22:12:13

Im Folgenden wird eine Datei im Arbeitsverzeichnis gefunden, die mit file.txt übereinstimmt, und ihr absoluter Pfad zurückgegeben

find `pwd` -name file.txt
 2
Author: mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-02-07 00:12:06

Ich wollte mehr als Sie brauchten, ich musste auch nach Dateien in einem relativen Verzeichnis fragen können, wie ../../readme.md, und das Ergebnis sollte ungefähr /Users/santi/readme.md

Also habe ich ein (ausführbares) Skript in einem Ordner erstellt, der Teil des $PATH namens lsf mit folgendem Inhalt ist:

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

So können Sie es wie folgt verwenden:

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

Keine Parameter gibt Ihnen Warnung

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

Gefälschte Verzeichnis gibt Ihnen Warnung (wegen dirname)

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

Gefälschte Datei aber real directory warnt nicht (Sie können bei Bedarf Validierung hinzufügen)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md 
/Users/santi/p/fakefile.md
 2
Author: santiago arizti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-26 22:18:13