2014-02-15 00:30:37 +0000 2014-02-15 00:30:37 +0000
43
43

Hoe toon je het volledige pad van een bestand inclusief de volledige bestandsnaam in Mac OSX terminal?

‘ls’ kan de bestandsnaam tonen, bv.

ls config.inc.php
config.inc.php

‘pwd’ toon huidige map volledig pad, bv.

pwd
/Application/XAMPP/xamppfiles/phpmyadmin

Is er een commando kan ze samenvoegen, zou kunnen tonen:

/Application/XAMPP/xamppfiles/phpmyadmin/config.inc.php
``` &001

Ответы (8)

31
31
31
2015-09-18 19:36:53 +0000

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

macports en homebrew zorgen voor een coreutils pakket met greadlink (GNU readlink). credit naar Michael Kallweitt post in mackb.com

brew install coreutils

greadlink -f file.txt

20
20
20
2014-02-15 00:55:03 +0000

Er zijn vele manieren om dat te doen; hier is een voorbeeld dat voor u kan werken:

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

Als u meer voorbeelden wilt, zijn er een heleboel op deze post bij stackoverflow.

9
9
9
2016-03-24 06:12:55 +0000

Doe in Mac OSX de volgende stappen:

  1. cd in de directory van het doelbestand.
  2. Typ een van de volgende terminalopdrachten. Terminal ls "`pwd`/file.txt" echo $(pwd)/file.txt

  3. file.txt in de directory van het doelbestand. Vervang &007 door uw eigenlijke bestandsnaam.

    1. Druk op Enter.
3
3
3
2019-10-17 22:23:18 +0000

Gebruik realpath

Bijv.:

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

Antwoord hier op stackoverflow: https://stackoverflow.com/a/3915075/441960 ](https://stackoverflow.com/a/3915075/441960)

FYI, mijn versie van 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
3
3
3
2019-01-25 01:03:16 +0000

Ik hield niet van een van de gegeven oplossingen, dus heb ik mijn eigen gebaseerd op https://stackoverflow.com/a/22684652/953327

Maak een alias die gewoon een functie-aanroep is die pwd en ls $1 combineert. Je kunt dit dan toevoegen aan je .bash_profile als je daarvoor kiest.

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

Voorbeeld van gebruik:

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

Ik koos lsf voor “list full” of “list file”, is voor mij logisch maar voel je vrij om dit aan te passen.

  • *

Update (Bedankt @santiago-arizti) Om dit te kunnen gebruiken met relatieve paden (bijv. lsf ../../readme.md)

alias lsf='function _lsf(){ (cd $(dirname "$1") && echo $(pwd)/$(basename "$1")) };_lsf'
2
2
2
2019-07-26 22:18:13 +0000

Ik wilde meer dan je nodig had, ik moest ook kunnen vragen naar bestanden in een relatieve directory, zoals ../../readme.md, en het resultaat zou iets moeten zijn als /Users/santi/readme.md

Dus heb ik een (uitvoerbaar) script gemaakt in een map die deel uitmaakt van de $PATH genaamd lsf met de volgende inhoud:

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

zodat je het zo kunt gebruiken:

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

Geen parameters geeft je een waarschuwing santi@santis-mac:~/p/dir1/dir2$ lsf /Users/santi/bin/lsf: line 3: 1: usage lsf ../../readme.md

Fake directory geeft je een waarschuwing (vanwege dirname)

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

Fake file maar echte directory waarschuwt niet (je kunt validatie toevoegen als je dat nodig hebt)

santi@santis-mac:~/p/dir1/dir2$ lsf ../../fakefile.md 
/Users/santi/p/fakefile.md
2
2
2
2018-01-22 10:07:23 +0000

U kunt ook het “vind”-commando gebruiken om alle bestanden met een volledig pad op te sommen:

find DirectoryName -type f

of alleen het volgende:

find . -type f
1
1
1
2019-02-07 00:12:06 +0000

Het volgende zal een bestand vinden in de werkmap die overeenkomt met file.txt en het absolute pad

find `pwd` -name file.txt
``` teruggeven