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

Come mostrare il percorso completo di un file incluso il nome completo del file nel terminale Mac OSX?

‘ls’ può mostrare il nome del file, ad esempio

ls config.inc.php
config.inc.php

‘pwd’ mostra il percorso completo della cartella corrente, ad esempio

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

C'è un comando che può metterli insieme, sarebbe in grado di mostrare:

&001

Risposte (8)

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

Da qui https://stackoverflow.com/a/4031502/804713 &003

macports e homebrew forniscono un pacchetto coreutils contenente greadlink (GNU readlink). credito a Michael Kallweitt post in mackb.com

brew install coreutils

greadlink -f file.txt

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

Ci sono molti modi per farlo; ecco un esempio che potrebbe funzionare per voi:

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

Se volete altri esempi, ce n'è un mazzo su this post at stackoverflow.

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

In Mac OSX, eseguire i seguenti passi:

  1. cd nella directory del file di destinazione.
  2. file.txt nella directory del file di destinazione. 3. Digitare uno dei seguenti comandi del terminale. Terminale
ls "`pwd`/file.txt"
echo $(pwd)/file.txt
  1. 1. Sostituire &007 con il nome del file effettivo.
  2. Digitare uno dei seguenti comandi del terminale
  3. Premere Invio.
3
3
3
2019-10-17 22:23:18 +0000

Utilizzare realpath

Ad esempio:

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

Rispondere qui su stackoverflow: https://stackoverflow.com/a/3915075/441960 &003

FYI, la mia versione di 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

Non mi piaceva nessuna delle soluzioni date, così ho creato la mia basata su https://stackoverflow.com/a/22684652/953327

Create alias che è semplicemente una chiamata di funzione che combina pwd e ls $1. Potete poi aggiungerlo al vostro .bash_profile se lo scegliete.

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

Esempio di utilizzo:

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

Ho scelto lsf per “elenco completo” o “file elenco”, per me ha senso ma sentitevi liberi di modificare.


Aggiornamento (Grazie @santiago-arizti) Per poterlo utilizzare con i relativi percorsi (ad es. 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

Volevo più di quello che serve, avevo bisogno di poter chiedere anche dei file in una directory relativa, come ../../readme.md, e il risultato dovrebbe essere qualcosa come /Users/santi/readme.md

Così ho creato uno script (eseguibile) in una cartella che fa parte del $PATH chiamato lsf con i seguenti contenuti:

#!/bin/bash
F=${1:?'usage lsf ../../readme.md'}
( cd $(dirname "$F") && echo $(pwd)/$(basename "$F") )
``` ```
santi@santis-mac:~/p/dir1/dir2$ lsf ../../readme.md 
/Users/santi/p/readme.md

Quindi si può usare in questo modo:

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

Nessun parametro dà un avvertimento

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

Fake directory dà un avvertimento (a causa di dirname)

&001 &001

Fake file ma la directory reale non avverte (si può aggiungere la validazione se necessario)

&001

2
2
2
2018-01-22 10:07:23 +0000

È inoltre possibile utilizzare il comando “trova” per elencare tutti i file con il percorso completo:

find DirectoryName -type f

o solo i seguenti:

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

Di seguito è riportato un file all'interno della directory di lavoro che corrisponde a file.txt e restituisce il suo percorso assoluto

find `pwd` -name file.txt