Zauważ, że nie ma czegoś takiego jak polecenie powłoki linii . Istnieje wiele aplikacji powłoki dostępnych dla systemu Linux.
Stéphane Chazelas
Odpowiedzi:
21
Jest bardzo podobny do backticks ''.
Nazywa się to podstawieniem poleceń ( specyfikacja POSIX ) i wywołuje podpowłokę. Polecenie w nawiasach klamrowych $()lub między nimi (``) jest wykonywane w podpowłoce, a dane wyjściowe są następnie umieszczane w pierwotnym poleceniu.
W przeciwieństwie do backticksa, $(...)forma może być zagnieżdżona. Możesz więc użyć podstawienia polecenia w innym podstawieniu.
Istnieją również różnice w zakresie znaków ucieczkowych w obrębie podstawienia. Wolę $(...)formę.
W POSIX lub POSIX-jak muszli ( ksh, bash, ash, zsh, yash...), to jest jak ``: wewnętrzna komenda $()jest wykonywana i zastąpione przez standardowe wyjście. Dzielenie słów i generowanie nazw plików jest wykonywane, chyba że $()znajduje się w cudzysłowie. A zatem
chmod 777 $(pwd)
należy zastąpić:
chmod 777"$(pwd)"
aby uniknąć podziału słów i generowania nazw plików w bieżącej ścieżce katalogu roboczego.
Lub nawet lepiej (z wyjątkiem niektórych powłok, takich jak zsh, w przypadku zmiany nazwy katalogu):
chmod 777"$PWD"
Since $PWDjest specjalną zmienną, która przechowuje ścieżkę do bieżącego katalogu roboczego w powłokach POSIX.
Lub nawet lepiej:
chmod 777.
Ponieważ .wpis w bieżącym katalogu jest dowiązaniem twardym do samego katalogu.
To $()służy do wykonywania polecenia głównie wewnątrz innego polecenia.
chmod 777 $(pwd)
pwdpolecenie podaje bieżący katalog roboczy. Kiedy więc wszystko zostanie wykonane, dane wyjściowe pwd zastąpią jego pozycję i będą służyć jako argument chmod, w wyniku czego cały twój obecny katalog roboczy otrzyma pozwolenie, 777które, jak sądzę, nigdy nie powinno być używane w środowisku produkcyjnym;).
Odpowiedzi:
Jest bardzo podobny do backticks ''.
Nazywa się to podstawieniem poleceń ( specyfikacja POSIX ) i wywołuje podpowłokę. Polecenie w nawiasach klamrowych
$()
lub między nimi (``) jest wykonywane w podpowłoce, a dane wyjściowe są następnie umieszczane w pierwotnym poleceniu.W przeciwieństwie do backticksa,
$(...)
forma może być zagnieżdżona. Możesz więc użyć podstawienia polecenia w innym podstawieniu.Istnieją również różnice w zakresie znaków ucieczkowych w obrębie podstawienia. Wolę
$(...)
formę.źródło
echo `echo \`echo foo\`` bar
W POSIX lub POSIX-jak muszli (
ksh
,bash
,ash
,zsh
,yash
...), to jest jak``
: wewnętrzna komenda$()
jest wykonywana i zastąpione przez standardowe wyjście. Dzielenie słów i generowanie nazw plików jest wykonywane, chyba że$()
znajduje się w cudzysłowie. A zatemnależy zastąpić:
aby uniknąć podziału słów i generowania nazw plików w bieżącej ścieżce katalogu roboczego.
Lub nawet lepiej (z wyjątkiem niektórych powłok, takich jak zsh, w przypadku zmiany nazwy katalogu):
Since
$PWD
jest specjalną zmienną, która przechowuje ścieżkę do bieżącego katalogu roboczego w powłokach POSIX.Lub nawet lepiej:
Ponieważ
.
wpis w bieżącym katalogu jest dowiązaniem twardym do samego katalogu.źródło
To
$()
służy do wykonywania polecenia głównie wewnątrz innego polecenia.pwd
polecenie podaje bieżący katalog roboczy. Kiedy więc wszystko zostanie wykonane, dane wyjściowe pwd zastąpią jego pozycję i będą służyć jako argumentchmod
, w wyniku czego cały twój obecny katalog roboczy otrzyma pozwolenie,777
które, jak sądzę, nigdy nie powinno być używane w środowisku produkcyjnym;).źródło