\curl -L https://get.rvm.io | bash -s stable
ทำไมคำสั่งเริ่มต้นด้วย\?
นี่คือเว็บไซต์ที่ฉันเห็น
\curl -L https://get.rvm.io | bash -s stable
ทำไมคำสั่งเริ่มต้นด้วย\?
นี่คือเว็บไซต์ที่ฉันเห็น
คำตอบ:
alias curl='curl --some --default --options'
หากคุณมีนามแฝงอยู่curlและคุณไม่ต้องการใช้งานการใส่แบ็กสแลชข้างหน้าจะเป็นการปิดใช้งานนามแฝงและรันไบนารี curl โดยตรง
โปรดทราบว่าสิ่งนี้ใช้ได้เฉพาะกับเชลล์แบบโต้ตอบเท่านั้น ชื่อแทนจะไม่มีผลในสคริปต์ดังนั้นจึงไม่จำเป็นต้องมี
\curlไม่บายพาสเปลือกใด ๆฟังก์ชั่นcurlการตั้งชื่อ สำหรับสิ่งนั้นคุณสามารถใช้คำสั่งในตัวของ bash command:command curl ...
\curl ...คือcommand curl ...
dash(และอาจเป็นหอยอื่น ๆ ถึงแม้ว่าคุณจะถูกต้องหากbashไม่มีexpand_aliases) จะขยายนามแฝงในสคริปต์
ข้อมูลจำเพาะเชลล์ (Bourne / POSIX) ระบุว่าการแทนที่สมนามในเชลล์แบบโต้ตอบถูกระงับเมื่ออักขระใด ๆ ของคำสั่งถูกอ้างถึง แบ็กสแลชเป็นวิธีหนึ่งในการทำเช่นนั้น แต่ก็มีวิธีอื่น ๆ ที่รู้จักกันดีในการอ้างถึง: ราคาเดียวและสองครั้ง ทั้งหมดต่อไปนี้จะระงับการทดแทนนามแฝง:
\curl
cur\l
\c\u\r\l
"c"url
"curl"
"c""u""r""l"
'curl'
'cu'"rl"
การใช้\curlเป็นวิธีที่พบได้บ่อยและอ่านง่ายที่สุด เนื่องจากนี่เป็นคุณสมบัติมาตรฐานคุณจึงสามารถคาดหวังได้ว่ามันจะทำงานได้ในทุกเชลล์ของ Bourne-Heritage
\curlดูเหมือนคำสั่ง TeX เล็กน้อยใช่ไหม? :-)
\curlข้ามนามแฝงที่มีชื่อเดียวกัน ทราบว่ามีเพียงนามแฝงจะข้ามวิธีนี้ไม่ได้เปลือกฟังก์ชั่น ; command curl ...จะช่วยให้มั่นใจได้ว่าจะผ่านได้เช่นกัน
command() { echo "Not command, lol!"; } ; command -V echo ; \command -V echo ; \command command echo "This is command! (masking despair)"พิมพ์Not command, lol!x 3
command ตัวเองด้วยฟังก์ชั่นเปลือกคุณจะเอาชนะกลไก สิ่งที่แสดงให้เห็นตัวอย่างของคุณคือการที่\ ไม่บายพาสฟังก์ชั่นตามที่ระบุไว้ ตัวอย่างการไม่เอาชนะตนเอง: date() { echo 'not date'; }; date; command date. หากคุณกำลังกังวลเกี่ยวกับอันตรายยุ่งเกี่ยวกับcommandดูstackoverflow.com/a/35931876/45375
commandที่จะไม่ถูกแทนที่ จากลิงค์ของคุณเอง:Thus, with no control over the execution environment, you cannot write shell scripts that are fully immune to tampering, unless you know that your code will be executed by dash, ksh, or bash (with the workaround in place)
shopt -s expand_aliasesก่อนใช้นามแฝง