Pipa dengan perintah ls

1

Ketika saya ingin tahu apakah suatu perintah adalah tautan atau tidak, saya memang suka mengikuti.

$ which locate
/usr/bin/locate
$ ls -l /usr/bin/locate
lrwxrwxrwx 1 root root 24  5月  3  2012 /usr/bin/locate -> /etc/alternatives/locate

Apakah mungkin untuk menulis dengan menggunakan pipa satu baris? Saya mencoba which locate | ls -l. Tapi itu tidak berhasil.

ironsand
sumber

Jawaban:

2

Anda dapat menggunakan xargs untuk meneruskan hasil dari satu perintah ke perintah lain ...

yang menemukan | xargs ls -al

Bill Heller
sumber
Terima kasih! Saya pikir xargs hanya digunakan ketika argumen terlalu panjang.
ironsand
Yakin! Itu punya banyak kegunaan berguna. Anda hanya meneruskan satu argumen ke sana pada satu waktu di sini, tetapi Anda dapat mengontrol bagaimana beberapa argumen diteruskan ke perintah target. Secara default, beberapa argumen akan ditafsirkan sebagai "ls -al arg1 arg2 arg3" tetapi menambahkan flag -n1 membatasinya ke satu argumen yang menghasilkan "ls -al arg1; ls -al arg2; ..." Gunakan flag -t untuk bereksperimen dan lihat output dari perintah yang dihasilkan xargs.
Bill Heller
2

Anda juga bisa melakukannya

ls -l `which locate`

Juga, (setidaknya di linux), lihat di:

namei `which locate`
DictatorBob
sumber
Saya tidak tahu perintah namei. Terima kasih!
ironsand
2

readlink akan mencetak target tautan, atau tidak ada (dan menghasilkan false) jika subjeknya bukan tautan.

which locate | xargs readlink
Andrew Schulman
sumber
Saya selalu menggunakan ls -l untuk menemukan sumber tautan. Terima kasih atas info Anda!
ironsand