Pagina 1 di 1

cat, xzcat e path relativi non funzionanti

Inviato: mar 2 feb 2016, 10:25
da conraid
È da tanto tempo che ho notato questa cosa, ma mi dimentico sempre di chiedere. O di cercare su web.

In pratica se uso un link simbolico, dopo i path relativi non funzionano per cat e xzcat

Mi spiego.
Ho un link simbolico /usr/src/linux che punta ai sorgenti del kernel, che sono, in questo caso, in /usr/src/kernel/linux-4.4

Bene. Ecco il risultato

Codice: Seleziona tutto

root@blackstar:/usr/src# cd linux
root@blackstar:/usr/src/linux# xzcat ../patch-4.4.1.xz 
xzcat: ../patch-4.4.1.xz: File o directory non esistente
Stessa cosa per cat.

Se invece vado in un percorso senza link simbolici tutto ok. Per es.

Codice: Seleziona tutto

root@blackstar:/usr/src# cd kernel
root@blackstar:/usr/src/linux# xzcat ../patch-4.4.1.xz 
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 3a4abfc44f5e..136ba17d2da0 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
[...]
Naturalmente se uso il percorso assoluto va

Codice: Seleziona tutto

root@blackstar:/usr/src/linux# xzcat /usr/src/patch-4.4.1.xz
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 3a4abfc44f5e..136ba17d2da0 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-usb
[...]
Secondo voi è un bug o è voluta questa cosa?

Re: cat, xzcat e path relativi non funzionanti

Inviato: mar 2 feb 2016, 14:38
da brg
Se ho capito il problema, la cosa è voluta. Considera i collegamenti simbolici come degli alias, in questo caso /usr/src/linux è in tutto e per tutto un alias di /usr/src/kernel/linux-4.4. La cosa che vuoi fare te dovrebbe essere consentita usando hard links, ma il loro uso per le directory è fortemente sconsigliato e tipicamente disabilitato in quanto può provocare seri problemi all'integrità del file-system.

Re: cat, xzcat e path relativi non funzionanti

Inviato: mar 2 feb 2016, 16:40
da conraid
Tra l'altro ho visto che non funzionano in pratica tutti i comandi

Codice: Seleziona tutto

conraid@blackstar:/usr/src/linux$ xzcat ../patch-4.4.1.xz      
cat: ../patch-4.4.1.xz: File o directory non esistente
conraid@blackstar:/usr/src/linux$ patch -i ../patch-4.4.1.xz 
patch: **** Can't open patch file ../patch-4.4.1.xz : No such file or directory
conraid@blackstar:/usr/src/linux$ ls -l ../patch-4.4.1.xz 
ls: impossibile accedere a ../patch-4.4.1.xz: File o directory non esistente
conraid@blackstar:/usr/src/linux$ file ../patch-4.4.1.xz  
../patch-4.4.1.xz: cannot open `../patch-4.4.1.xz' (No such file or directory)
quindi è una caratteristica del sistema.

Re: cat, xzcat e path relativi non funzionanti

Inviato: mar 2 feb 2016, 18:54
da targzeta
Non torna. Cosa ti ritornano i comandi

Codice: Seleziona tutto

cd /usr/src/linux
ls ..
Anzi torna, tu sei in /usr/src/kernel/linux-4.4 mentre la patch è in /usr/src/, come puoi trovarla sotto '../'? Quando fai cd ti sposti di fatto nella directory di destinazione!

Emanuele

Re: cat, xzcat e path relativi non funzionanti

Inviato: mer 3 feb 2016, 12:40
da conraid
Hai ragione.
ls .. da il contenuto di /usr/src/kernel

Codice: Seleziona tutto

conraid@blackstar:/usr/src/linux$ ls ..
build  linux-4.3  linux-4.4  patches  stable
conraid@blackstar:/usr/src/linux$ pwd
/usr/src/linux
conraid@blackstar:/usr/src/linux$
ma come vedi pwd da /usr/src/linux

però infatti

Codice: Seleziona tutto

conraid@blackstar:/usr/src/linux$ xzcat ../../patch-4.4.1.xz 
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb
index 3a4abfc44f5e..136ba17d2da0 100644
--- a/Documentation/ABI/testing/sysfs-bus-usb
+++ b/Documentation/ABI/testing/sysfs-bus-us
però se uso il TAB per completare il comando lo completa solo con ../patc... e non con ../../patch...

Insomma, non c'è uniformità di gestione della cosa tra i vari comandi.

Comunque ho capito, thanks.

Re: cat, xzcat e path relativi non funzionanti

Inviato: mer 3 feb 2016, 21:25
da targzeta
Non ho capito la tua risposta Corrado. Comunque il tuo comando pwd è, probabilmente, quello builtin nella shell. Se dai /bin/pwd avrai il risultato corretto. Puoi anche usare 'pwd -P' per avere il path reale.

Emanuele

Re: cat, xzcat e path relativi non funzionanti

Inviato: gio 4 feb 2016, 8:04
da conraid
targzeta ha scritto:Non ho capito la tua risposta Corrado.
Che il completamente automatico non tiene conto del path reale, ma mi hai risposto con l'altro esempio. Anche quello è della bash.

Ora cerco se si può configurare la bash con il path reale.

Re: cat, xzcat e path relativi non funzionanti

Inviato: gio 4 feb 2016, 9:28
da conraid
Allora, per i comandi builtin basta impostare "set -P" e dopo hanno comportamento con path reali.

Per l'autocompletamento non sono riuscito a trovare una impostazione. Leggendo in rete alcuni fanno script appositi, ma non ho ancora provato. Se avete suggerimenti sono ben accetti.