Apa arti ~ dalam path file?

43

Apa ~artinya dalam path file absolut?

Saya melihat ini di output dari hal-hal seperti membangun skrip tetapi jalurnya tidak ada.

blade34r
sumber
25
Sistem operasi apa?
ChrisF
Bukankah Windows dadu-roll default ?
Pacerier

Jawaban:

35

Biasanya itu berarti direktori home pengguna misalnya ~mike/akan menjadi mikedirektori home pengguna , ~/akan menjadi direktori home Anda sendiri. Namun, tidak jelas bagi saya apakah ~/dan ~mike/harus dianggap absolut atau relatif; tampaknya tergantung pada definisi yang diberikan (jika ada yang bisa membuat referensi otoritatif, silakan kirim komentar).

Perhatikan bahwa saya berbicara tentang sistem berbasis Unix di sini.

Lihat http://en.wikipedia.org/wiki/Home_directory#Unix

Adrian Mouat
sumber
3
Mereka absolut, karena mereka adalah sinonim untuk jalur absolut: pada UNIX, jalur absolut dapat disimpulkan dari isi /etc/loginfile. Perluasan secara tradisional dilakukan oleh shell, tetapi bahasa apa pun yang berpura-pura menjadi "scripting" akan melakukan ini juga.
Charles Stewart
2
+1: Saya tidak tahu tentang ~username/hal itu.
Wuffers
2
Menariknya, Windows PowerShell juga menerima ~sebagai sinonim untuk pengarahan rumah pengguna.
Joey
1
Jeffery Snover mengatakan bahwa PowerShell awalnya berbasis di sekitar VIM / EMACs
Anonymous Type
1
@ Charles Stewart bisa dibilang setidaknya ~ / relatif karena tergantung pada konteks pengguna. Juga beberapa referensi mendefinisikan path absolut sebagai yang diberikan dari root filesystem, yang jelas tidak. Jika Anda memiliki referensi untuk pernyataan Anda, silakan bagikan!
Adrian Mouat
21

Sebenarnya, kedua jawaban oleh Adrian Mouat dan studiohack itu benar.
Dalam sistem operasi dengan konvensi penamaan terbatas (versi Windows / DOS dll ') yang lebih lama menandakan nama panjang.

e.g. "c:\program files\" is equivalent to "c:\progra~1\"

Dalam beberapa sistem operasi (yaitu Unix) itu berarti home-dir (dan mungkin dilihat sebagai jalur absolut tetapi bukan kanonik).
e.g."/a/vol01/usr/mike/" might be shortened to "~/mike/"
* di mana 'usr' adalah direktori home.

Eran
sumber
2
Dalam konteks skrip build, ini mungkin versi Unix-centric.
Charles Stewart
2
Jalur Unix biasanya menggunakan garis miring ke depan daripada garis miring terbalik.
Torben Gundtofte-Bruun
@torbengb, true ... opps
Eran
1
Koreksi kecil untuk jawaban Xenorose yang sebaliknya luar biasa. Nama file seperti "progra ~ 1" bukan untuk OS yang lebih lama. Sistem Windows 7 saya masih menggunakannya. (Lakukan dir / x untuk melihat.) Ini adalah fitur lawas yang mendukung perangkat lunak lama yang tidak tahu tentang nama file yang panjang dalam sistem modern. Perangkat lunak lama menganggap semua nama file mengikuti konvensi 8.3 . Ketika nama file tidak berfungsi dengan konvensi ini, sistem file secara otomatis membuat nama kedua yang kompatibel dengan 8,3.
Isaac Rabinovitch
12

Pada banyak sistem file, nama file akan berisi tilde (~) dalam setiap komponen nama yang terlalu panjang untuk mematuhi aturan penamaan 8,3.

Sumber: Penamaan File, Paths, dan Namespaces - Nama Pendek vs Panjang - MSDN

(Bagian bawah halaman ...)

studiohack
sumber
Hmm, tidak cukup berfungsi untuk nama yang mengandung titik. (mis. 192.168.1.1atau somefile.namewithdot)
Pacerier
5

Dan jika Anda melakukan pemrograman ASP.NET itu berarti tingkat atas situs web; alih-alih menavigasi menggunakan ../../images/some_image.jpg (dan membuat level sarang Anda salah!) Anda bisa mengatakan ~ / images / some_image.jpg

siang dan
sumber
2
/images/some_image.jpgharus membawa Anda ke root situs web mana pun. Fungsi tambahan apa yang disediakan oleh tilde di ASP.NET?
Sonny
7
~ membawa Anda ke root aplikasi web yang tidak sama dengan root situs web jika Anda menggunakan direktori virtual. Misalnya, jika situs web Anda diinstal pada myserver di myapp direktori virtual, ~ / images / myimage.jpg akan beralih ke myserver / myapp / images / myimage.jpg . Lihat msdn.microsoft.com/en-us/library/ms178116.aspx .
MCS
1

Berikut adalah beberapa petunjuk yang dapat membantu Anda mengatasinya dengan lebih baik:

$ readlink -f ~

$ echo $HOME

Catatan: $adalah konvensi untuk menentukan prompt baris perintah pengguna, ini bukan bagian dari perintah.

vtest
sumber
'readlink' tidak dikenali sebagai perintah internal atau eksternal.
Pacerier
@vtest itu karena contoh dalam komentar ini adalah untuk sistem berbasis unix, bukan Windows.
dudewad
-1

Lebih lanjut tentang Windows:

  1. Jika nama file tersembunyi dimulai dengan '~' maka Windows Explorer memprosesnya sebagai file sistem tersembunyi. Info lebih lanjut di Mengapa file tersembunyi dengan tilde terkemuka diperlakukan sebagai super-tersembunyi?

  2. Jika nama file / direktori pendek berisi '~' (seperti "c: \ ololoo ~ 1") dimungkinkan untuk nama panjang yang sesuai dari file / direktori ini melebihi panjang maksimum (MAX_PATH = 260). Pengembang harus menyelesaikan masalah ini dengan awalan "\\? \" (Bahkan pada Windows 10 yang lebih baru karena pengguna dapat menonaktifkan "> 260" - dukungan jalur panjang dengan LongPathsEnabledparameter registri atau dengan kebijakan grup "Aktifkan jalur panjang NTFS" kebijakan). Contoh untuk penyelesaian ini menggunakan C # dapat ditemukan di sumber pustaka ZetaLongPaths .

oshatrk
sumber