cd -
dapat beralih antara direktori saat ini dan direktori sebelumnya.
Tampaknya saya telah melihat -
digunakan sebagai argumen untuk perintah lain sebelumnya, meskipun saya tidak ingat apakah -
artinya sama dengan cd
.
Saya menemukan itu -
tidak berhasil ls
.
Apakah -
hanya digunakan dengan cd?
cd
adalah builtin, bukan perintah eksternal (juga tidak akan ada cara bahkan berfungsi sebagai satu).cd -
dengan demikian merupakan fitur level shell.git checkout -
untuk beralih ke cabang sebelumnya-
Digunakan dengan builtin lain dengan cara yang sama?pushd
, ya. Kalau tidak, arti "direktori sebelumnya" bukanlah standar yang sangat berguna.Jawaban:
The POSIX pedoman sintaks utilitas (khusus # 13) menentukan bahwa untuk utilitas yang mengharapkan nama file untuk membaca dari,
-
berarti input standar, dan untuk utilitas yang mengharapkan nama file untuk menulis untuk,-
berarti output standar. Misalnya,cat somefile -
menyalin kontensomefile
ke output standarnya, diikuti oleh apa yang dibacanya pada input standarnya.Pedoman ini tidak berlaku untuk
cd
perintah karena tidak membaca atau menulis ke file.cd
melakukan sesuatu yang berbeda: argumennya-
berarti "direktori sebelumnya". Perintahcd -
ini setara dengancd "$OLDPWD" && pwd
. Perilaku ini khusus untukcd
perintah, dan untuk perintah yang terinspirasi langsung sepertipushd
.Perhatikan bahwa itu
-
adalah operan, bukan opsi. Hanya argumen yang dimulai dengan-
dan bukan hanya pilihan-
atau--
opsi. Implikasi utama dari menjadi seorang operan adalah hal--
itu tidak memengaruhi makna khususnya. Misalnya,cd -- -P
perubahan ke subdirektori yang dipanggil-P
, tetapicd -- -
sama dengancd -
, tidak berubah menjadi direktori yang disebut-
. Demikian pula,cat -- -
tidak membaca dari file yang dipanggil-
tetapi dari input standar.sumber
-
didefinisikan dalam Pedoman Sintaks POSIX Utility sebagai input standar:Anda dapat melihat definisi ini untuk utilitas yang beroperasi dengan file untuk membaca atau menulis.
cd
bukan milik utilitas ini, jadi-
dalam cd tidak mengikuti pedoman ini.Selain itu, POSIX juga didefinisikan
-
memiliki arti tersendiri dengan cd :sumber
cd -
sebenarnya adalah singkatancd "$OLDPWD" && pwd
, di mana$OLDPWD
diset setiap kali Anda mengubah direktori ke direktori yang baru Anda masuki.Penanganan
-
tergantung pada aplikasi. Beberapa aplikasi digunakan-
untuk menandakanSTDIN
, misalnyagrep
,awk
Aplikasi lain dapat digunakan
-
sebagai singkatan untuk apa pun yang mereka pilih, karena jawaban Michael menentukan, dengansu
,-
adalah singkatan--login
sumber
Meskipun Michael menyebutkan bahwa
su
dan aplikasi lainnya dapat menggunakan-
berarti apapun yang mereka inginkan (dibaca dari stdin umum), Git tidak digunakan-
dengan cara yang sama dengan bagaimanacd
melakukan , untuk mengubah cabang.sumber
Program apa pun dapat digunakan
-
sebagai argumen, untuk berarti apa pun yang mereka inginkan. Salah satu contoh umum adalahsu
, yang digunakan-
sebagai singkatan untuk--login
. Satu-satunya konvensi yang dapat saya pikirkan adalah bahwa program yang membaca dari file sering digunakan-
untuk berarti "membaca dari stdin" , tetapi sepenuhnya tergantung pada programsumber
Menambahkan dua sen saya di sini. Saya menggunakan '-' untuk memberi tahu alat ps2pdf untuk membaca dari input standar, seperti yang disarankan beberapa orang sebelumnya:
One-liner di atas membuat versi pdf dari halaman manual untuk ls di direktori saat ini.
Semoga seseorang menemukan itu berguna :).
sumber
Sebagaimana dijawab oleh gnouc ,
-
memiliki arti tersendiri dalamcd
.Namun, Anda dapat mereplikasi perilaku
-
di program lain menggunakan~-
. Sebagai contoh:sumber