คำถามติดแท็ก bash

คำถามเฉพาะของ Bourne อีกครั้งของเชลล์ใน GNU เมื่อเทียบกับเชลล์ Bourne / POSIX อื่น ๆ สำหรับคำถามเกี่ยวกับเชลล์ Unix โดยทั่วไปให้ใช้ / เชลล์แท็กแทน

2
การรวมอาร์กิวเมนต์ bash เข้ากับสตริงเดี่ยวด้วยช่องว่าง
ฉันพยายามที่จะเข้าร่วมการขัดแย้งทั้งหมดเพื่อฟังก์ชั่น Bash เป็นหนึ่งสายเดียวที่มีช่องว่างแยกแต่ละอาร์กิวเมนต์ ฉันต้องมีสตริงที่มีคำพูดเดียวรอบสตริงทั้งหมด นี่คือสิ่งที่ฉันมี ... $array=("$@") str="\'" for arg in "${array[@]}"; do let $str=$str+$arg+" " done let $str=$str+"\'" เห็นได้ชัดว่านี่ใช้งานไม่ได้ แต่ฉันสงสัยว่ามีวิธีที่จะบรรลุเป้าหมายนี้หรือไม่?

3
วิธีคัดลอกไฟล์จากโฟลเดอร์ที่ไม่มีโฟลเดอร์นั้น
ฉันพยายามที่จะคัดลอกไฟล์และโฟลเดอร์ย่อยจากโฟลเดอร์โดยไม่ต้องตัวเอง ยกตัวอย่างเช่นโฟลเดอร์มีต่อไป: | file1.txt | file2.txt | subfolder1 การดำเนินการคำสั่งถัดไปให้ผลลัพธ์ที่ผิด: sudo cp -r /home/username/A/ /usr/lib/B/ ผลที่ได้คือ /usr/lib/B/A/...copied files... แทน.. /usr/lib/B/...copied files... ฉันจะไปถึงที่คาดหวังได้อย่างไรโดยไม่มีโฟลเดอร์ต้นทาง
39 bash  command-line  cp 

5
สามารถทุบตีเขียนในกระแสข้อมูลของตนเองได้หรือไม่
เป็นไปได้ในเปลือกbashแบบโต้ตอบเพื่อป้อนคำสั่งที่แสดงผลข้อความบางส่วนเพื่อให้ปรากฏที่พรอมต์คำสั่งถัดไปราวกับว่าผู้ใช้พิมพ์ข้อความนั้นในพรอมต์นั้นหรือไม่ ฉันต้องการให้sourceสคริปต์ที่จะสร้างบรรทัดคำสั่งและส่งออกเพื่อให้ปรากฏเมื่อพรอมต์ส่งกลับหลังจากสคริปต์สิ้นสุดลงเพื่อให้ผู้ใช้สามารถเลือกที่จะแก้ไขมันก่อนที่จะกดenterเพื่อรันมัน สามารถทำได้ด้วยxdotoolแต่จะใช้ได้เฉพาะเมื่อเครื่องอยู่ในหน้าต่าง X และเมื่อติดตั้งแล้ว [me@mybox] 100 $ xdotool type "ls -l" [me@mybox] 101 $ ls -l <--- cursor appears here! สิ่งนี้สามารถทำได้โดยใช้ bash เท่านั้น?
39 bash 

4
ใช้ความแตกต่างระหว่างไฟล์โลคัลและรีโมต
ฉันเชื่อมต่อกับโฮสต์ผ่านทางsshและฉันต้องการเปรียบเทียบ (สมมติว่าdiff) ไฟล์ config บางไฟล์เทียบกับโฮสต์อื่นในโฮสต์อื่นเข้าถึงได้ผ่านทางsshโดยไม่ต้องดาวน์โหลดไฟล์ระยะไกลด้วยตนเองก่อนที่จะเรียกใช้ diff
39 bash  ssh  diff 

4
ฉันกำลังใช้เชลล์ตัวไหนอยู่?
เมื่อฉันรันecho $SHELLเอาต์พุตบอกว่า/bin/tcshซึ่งหมายความว่าฉันกำลังใช้tcshเชลล์ แต่ตัวอย่างเช่นเมื่อฉันออกคำสั่งต่อไปนี้ alias emacs 'emacs -nw' ฉันได้รับข้อผิดพลาดต่อไปนี้: bash: alias: emacs: not found bash: alias: emacs -nw: not found และเมื่อฉันออกalias emacs="emacs -nw"มันทำงานได้ดี! นี้จะทำให้เกิดความสับสนตั้งแต่ผมทำงานแต่คำสั่งจะถูกตีความโดยtcshbash อะไรคือเหตุผล?
39 bash  tcsh 

3
วิธีการ SSH ในไดเรกทอรีเฉพาะหรือไม่
ฉันลงชื่อเข้าใช้เซิร์ฟเวอร์บ่อยครั้งจากนั้นใส่ซีดีในไดเรกทอรีเฉพาะ เป็นไปได้หรือไม่ที่จะทำให้คำสั่งทั้งสองนี้เป็นหนึ่งเดียวได้ง่ายขึ้น? ssh bob@foo cd /home/guest ฉันต้องการหลีกเลี่ยงการเปลี่ยนแปลงอะไรใน 'foo' ถ้าเป็นไปได้เพราะฉันจะต้องล้างมันด้วยผู้ดูแลเซิร์ฟเวอร์ ฉันใช้ทุบตี แต่ฉันเปิดให้คำตอบในกระสุนอื่น ๆ
39 bash  ssh 


4
/ dev / tcp ฟังแทนฟัง nc
ด้วยผู้ฟัง netcat เช่น: nc -l <port> < ~/.bashrc ฉันสามารถคว้า. bashrc ของฉันบนเครื่องใหม่ (ไม่มีncหรือ LDAP) ด้วย: cat < /dev/tcp/<ip>/<port> > ~/.bashrc คำถามของฉันคือ: มีวิธีที่จะเลียนแบบความสามารถของnc -l <port>ในบรรทัดแรกของฉันด้วย / dev / tcp แทนที่จะเป็นnc? เครื่องที่ฉันทำงานอยู่นั้นมีสภาพแวดล้อมของห้องแล็บ / แซนด์บ็อกซ์ที่แข็งมาก RHEL (ไม่มี ssh, no nc, ไม่มี LDAP, yum, ฉันไม่สามารถติดตั้งซอฟต์แวร์ใหม่และพวกเขาไม่ได้เชื่อมต่อกับอินเทอร์เน็ต)

5
วิธีลบข้อความต้อนรับ“ คุณมีจดหมาย”
เมื่อฉันเปิด terminal ของฉันมันบอกว่า "คุณมีอีเมล" ทุกคนมีความคิดว่าทำไม? ฉันใช้ OS X แต่เนื่องจากมันใช้ Unix และอาศัยไฟล์เช่น bashrc, bash_profile เป็นต้นฉันคิดว่ามีคนที่นี่อาจรู้จักและฉันไม่แน่ใจว่ามันเป็นปัญหาเฉพาะของแพลตฟอร์ม!
39 bash  terminal  login  email 


3
แปลงอาร์เรย์เป็นอาร์กิวเมนต์ของคำสั่งหรือไม่?
ฉันมีอาร์เรย์ของ "ตัวเลือก" ของคำสั่ง my_array=(option1 option2 option3) ฉันต้องการเรียกคำสั่งนี้ในสคริปต์ทุบตีโดยใช้ค่าจากอาร์เรย์เป็นตัวเลือก ดังนั้นcommand $(some magic here with my_array) "$1"กลายเป็น: command -option1 -option2 -option3 "$1" ฉันจะทำมันได้อย่างไร เป็นไปได้ไหม?
39 bash  parameter  array 

4
การแก้ไขที่อยู่ MAC จากที่อยู่ IP ใน Linux
ฉันต้องเขียนสคริปต์ทุบตีซึ่งฉันต้องสร้างไฟล์ที่เก็บรายละเอียดของที่อยู่ IP ของโฮสต์และการจับคู่กับที่อยู่ MAC ที่สอดคล้องกัน มีวิธีใดที่เป็นไปได้ที่ฉันสามารถค้นหาที่อยู่ MAC ของโฮสต์ (ระยะไกล) ใด ๆ เมื่อมีที่อยู่ IP ของโฮสต์อยู่

5
แทนที่บรรทัดใหม่ทั้งหมดเป็นช่องว่างยกเว้นบรรทัดสุดท้าย
ฉันจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างได้อย่างไรยกเว้นขึ้นบรรทัดใหม่ล่าสุด ฉันสามารถแทนที่บรรทัดใหม่ทั้งหมดเป็นที่ว่างโดยใช้trแต่ฉันจะทำอย่างไรกับข้อยกเว้นบางอย่าง?

15
เชลล์เชิงอ็อบเจ็กต์สำหรับ * ระวัง
คำนำ: ฉันรักการทุบตีและไม่มีความตั้งใจที่จะเริ่มโต้เถียงหรือสงครามศักดิ์สิทธิ์และหวังว่านี่จะไม่ใช่คำถามที่ไร้เดียงสาอย่างยิ่ง คำถามนี้ค่อนข้างเกี่ยวข้องกับโพสต์นี้ใน superuser แต่ฉันไม่คิดว่า OP รู้จริง ๆ ว่าเขาขออะไร ฉันใช้ bash บน FreeBSD, linux, OS X และ cygwin บน Windows ฉันเคยมีประสบการณ์มากมายกับ PowerShell บน Windows เมื่อเร็ว ๆ นี้ มีเชลล์สำหรับ * nix, มีอยู่แล้วหรือในงานที่เข้ากันได้กับ bash แต่เพิ่มเลเยอร์ของสคริปต์เชิงวัตถุลงในมิกซ์หรือไม่ สิ่งเดียวที่ฉันรู้ว่าใกล้เข้ามาคือคอนโซลหลาม แต่เท่าที่ฉันสามารถบอกได้ว่ามันไม่ได้ให้การเข้าถึงสภาพแวดล้อมเชลล์มาตรฐาน ตัวอย่างเช่นผมไม่สามารถเพียงcd ~และlsจากนั้นchmod +x fileภายในคอนโซลหลาม ฉันจะต้องใช้หลามเพื่อทำงานเหล่านั้นมากกว่าไบนารียูนิกซ์มาตรฐานหรือโทรไบนารีโดยใช้รหัสหลาม มีเชลล์อยู่จริงหรือไม่?

6
ทำไมเราต้องใช้คำสั่ง“ at” ใน Linux?
ฉันกำลังศึกษาโค้ดที่ใช้atคำสั่ง ฉันมองไปรอบ ๆ และพบว่ามันถูกใช้เพื่อเรียกใช้งานแบ็ตช์ มันถูกใช้เพื่อกำหนดเวลางาน มันถูกกำหนดให้เป็นอินพุตคำสั่งและเวลาสัมพันธ์หรือสัมบูรณ์ ดังนั้นคำถามแรกของฉันคือ: ทำไมatคำสั่งใช้? ภายใต้สถานการณ์ใดที่เราต้องใช้at? ฉันพบมันเมื่อมีรหัสสคริปต์ทุบตีพยายามถอนการติดตั้งซอฟต์แวร์และเมื่อมีการเริ่มบริการพื้นหลังบางอย่าง คำถามที่สองของฉัน: อะไรคือความแตกต่างระหว่างการมีคำสั่งที่ดำเนินการเป็นงานแบทช์และมีคำสั่งดำเนินการในการเรียกคำสั่งโดยตรง (หรือใน subshell)?
38 bash  at 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.