it-swarm-id.com

Bagaimana saya bisa mendapatkan direktori kerja saat ini?

Saya ingin memiliki skrip yang mengambil direktori kerja saat ini ke variabel. Bagian yang membutuhkan direktori adalah seperti ini dir = pwd. Itu hanya mencetak pwd bagaimana cara saya mendapatkan direktori kerja saat ini menjadi sebuah variabel?

205
Interesting...

Tidak perlu melakukan itu, itu sudah di variabel:

$ echo $PWD
/home/terdon

Variabel PWD adalah didefinisikan oleh POSIX dan akan bekerja pada semua shell yang sesuai dengan POSIX:

PWD

Ditetapkan oleh Shell dan oleh utilitas cd. Dalam Shell nilai harus diinisialisasi dari lingkungan sebagai berikut. Jika nilai untuk PWD diteruskan ke Shell di lingkungan ketika dieksekusi, nilai tersebut adalah pathname absolut dari direktori kerja saat ini yang tidak lebih dari {PATH_MAX} byte termasuk terminasi null byte, dan nilainya tidak mengandung komponen apa pun yang dot atau dot-dot, maka Shell harus mengatur PWD ke nilai dari lingkungan. Jika tidak, jika nilai untuk PWD diteruskan ke Shell di lingkungan ketika dieksekusi, nilai tersebut adalah pathname absolut dari direktori kerja saat ini, dan nilai tidak mengandung komponen yang titik atau titik-titik, maka nilai tidak ditentukan apakah Shell menetapkan PWD ke nilai dari lingkungan atau menetapkan PWD ke pathname yang akan dihasilkan oleh pwd -P. Jika tidak, utilitas sh menetapkan PWD ke pathname yang akan di-output oleh pwd -P. Dalam kasus di mana PWD diatur ke nilai dari lingkungan, nilai tersebut dapat berisi komponen yang merujuk ke file tautan simbolik tipe. Dalam kasus di mana PWD diatur ke pathname yang akan dihasilkan oleh pwd -P, jika ada izin yang tidak mencukupi pada direktori kerja saat ini, atau pada induk dari direktori itu, untuk menentukan seperti apa pathname itu, nilai PWD adalah tidak ditentukan. Tugas untuk variabel ini dapat diabaikan. Jika aplikasi menetapkan atau menghapus nilai PWD, perilaku utilitas cd dan pwd tidak ditentukan.


Untuk jawaban yang lebih umum, cara untuk menyimpan output dari suatu perintah dalam suatu variabel adalah dengan melampirkan perintah dalam $() atau ` ` (Backticks):

var=$(command)

atau

var=`command`

Dari keduanya, $() lebih disukai karena lebih mudah untuk membangun perintah kompleks seperti command0 $(command1 $(command2 $(command3))).

305
terdon

dir=$(pwd)

Ini lebih portabel dan lebih disukai daripada metode backticks.

Menggunakan $() memungkinkan Anda membuat sarang perintah

mis .: mech_pwd=$(pwd; echo in $(hostname))

30
Govind Kailas

Anda dapat menggunakan variabel lingkungan $PWD, atau tulis sesuatu seperti:

dir=`pwd`
11
chrk

Anda perlu menggunakan substitusi perintah untuk menyimpan output dari perintah pwd ke variabel. Substitusi perintah dapat menggunakan karakter backticks atau dolar. Seperti ini:

$ mkdir "/tmp/new dir"
$ cd "/tmp/new dir"
$ CWD="$(pwd)"
$ echo $CWD
/tmp/new dir
$ cd ~
$ echo $CWD
/tmp/new dir
$ pwd
/home/ja
5

Nilai direktori kerja saat ini dapat berbeda. Jika Anda menggunakan tautan simbolis untuk mendapatkan direktori saat ini, pwd akan memberikan hasil yang berbeda dari/usr/bin/pwd. Karena Anda menggunakan bash, saya akan menggunakan:

dir=$(/usr/bin/pwd)

atau sesuai komentar:

dir=$(pwd -P)

karena saya tidak suka mengutip kembali karena mereka tidak bisa bersarang.

1
Robert Jacobs