خط فرمانگنو/لینوکس
جانشینی فرمان (Command Substitution) در لینوکس

جانشینی فرمان به ما اجازه میدهد تا از خروجی یک فرمان بهعنوان یک بسط استفاده کنیم:
جانشینی فرمان (Command Substitution)
1 2 |
[me@linuxbox ~]$ echo $(ls) Desktop Documents ls-output.txt Music Pictures Public Templates Videos |
مثالی دیگر:
1 2 |
[me@linuxbox ~]$ ls -l $(which cp) -rwxr-xr-x 1 root root 71516 2012-12-05 08:58 /bin/cp |
در اینجا ما نتایج فرمان which cp را بهعنوان یک آرگومان به فرمان ls دادیم که درنتیجه آن لیستی از برنامههای cp بدون دانستن نام مسیر کامل آن را دریافت کنیم. ما فقط به فرمانهای ساده محدود نیستیم. میتوانیم از پایپلاین نیز استفاده کنیم.
به مثال زیر دقت کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
[me@linuxbox ~]$ file $(ls /usr/bin/* | grep zip) /usr/bin/bunzip2: symbolic link to `bzip2' /usr/bin/bzip2: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV ), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped /usr/bin/bzip2recover: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped /usr/bin/funzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV ), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped /usr/bin/gpg-zip: Bourne shell script text executable /usr/bin/gunzip: symbolic link to `../../bin/gunzip' /usr/bin/gzip: symbolic link to `../../bin/gzip' /usr/bin/mzip: symbolic link to `mtools' |
در این مثال نتایج پایپلاین (Pipeline) تبدیل به لیست آرگومان فرمان file شدند.
سینتکسی جایگزین برای جانشینی فرمانها در برنامههای شل (Shell) قدیمیتر وجود دارد که در Bash نیز پشتیبانی میشوند. این سینتکس از کاراکترهای بککوتیشن (Back Qutes) به جای عملگر $ استفاده میکند.
مثال زیر گویاست:
1 2 |
[me@linuxbox ~]$ ls -l `which cp` -rwxr-xr-x 1 root root 71516 2012-12-05 08:58 /bin/cp |