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

คำว่า 'เชลล์' หมายถึงคลาสทั่วไปของล่ามคำสั่งแบบโต้ตอบตามข้อความซึ่งส่วนใหญ่มักเกี่ยวข้องกับระบบปฏิบัติการ Unix & Linux สำหรับคำถามเกี่ยวกับการเขียนสคริปต์เชลล์โปรดใช้แท็กเฉพาะเพิ่มเติมเช่น 'bash', 'powershell' หรือ 'ksh' หากไม่มีแท็กเฉพาะควรใช้วิธีแก้ปัญหาแบบพกพา (POSIX-compliant) แม้ว่าจะใช้ 'posix' เพิ่มเติมหรือ 'sh' แทนก็ตาม

5
เหตุใดบางครั้งช่องว่างจึงจำเป็นต้องใช้กับอักขระเมตา
ไม่กี่เดือนที่ผ่านมาฉันสักรอยแยกระเบิดที่แขนของฉันและข้ามช่องว่างเพราะฉันคิดว่ามันดูดีกว่าถ้าไม่มีพวกเขา แต่สำหรับความกลัวของฉันบางครั้ง (ไม่เสมอไป) เมื่อฉันเรียกใช้ในเชลล์มันไม่ได้เริ่มวางระเบิด แต่มันก็แค่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ bash: syntax error near unexpected token `{:' เมื่อวานมันเกิดขึ้นเมื่อฉันพยายามเรียกใช้ในBash shell ของเพื่อนแล้วฉันก็เพิ่มช่องว่างและมันก็ใช้งานได้ทันที:(){ :|:& };:แทนที่จะเป็น:(){:|:&};: ช่องว่างสำคัญหรือไม่ มีรอยสักข้อผิดพลาดทางไวยากรณ์ที่แขนของฉัน?! ดูเหมือนว่าจะทำงานในzshเสมอแต่ไม่ใช่ใน Bash คำถามที่เกี่ยวข้องไม่ได้อธิบายอะไรเกี่ยวกับช่องว่างซึ่งเป็นคำถามของฉันจริงๆ เหตุใดช่องว่างจึงจำเป็นสำหรับ Bash เพื่อให้สามารถแยกวิเคราะห์ได้อย่างถูกต้อง

9
'echo' โดยไม่ขึ้นบรรทัดใหม่ในเชลล์สคริปต์
ฉันมีปัญหากับechoในสคริปต์ของฉัน: echo -n "Some string..." พิมพ์ -n Some string... และย้ายไปยังบรรทัดถัดไป ในคอนโซลมันทำงานได้อย่างถูกต้องโดยไม่ต้องขึ้นบรรทัดใหม่: Some string...
540 shell  command-line  sh 

16
ฉันจะคัดลอกผลลัพธ์ของคำสั่งลงในคลิปบอร์ดได้อย่างไร
ฉันจะไพพ์เอาต์พุตของคำสั่งลงในคลิปบอร์ดของฉันและวางกลับเมื่อใช้เทอร์มินัลได้อย่างไร ตัวอย่างเช่น cat file | clipboard

15
วิธีการล้างผลลัพธ์ก่อนหน้าใน Terminal ใน Mac OS X
ฉันรู้ว่าclearคำสั่งที่ 'ล้าง' หน้าจอปัจจุบัน แต่ทำได้เพียงแค่พิมพ์บรรทัดใหม่จำนวนมากเนื้อหาที่เคลียร์เพิ่งเลื่อนขึ้น มีวิธีการล้างเอาต์พุตก่อนหน้าทั้งหมดจากเทอร์มินัลทั้งหมดหรือไม่เพื่อให้ฉันไม่สามารถเข้าถึงได้แม้จะเลื่อนขึ้นหรือไม่?
523 macos  shell  buffer  clear 

5
คำสั่งไม่พบข้อผิดพลาดในการกำหนดตัวแปร Bash
ฉันมีสคริปต์นี้ชื่อ test.sh: #!/bin/bash STR = "Hello World" echo $STR เมื่อฉันวิ่ง sh test.shฉันจะได้รับสิ่งนี้: test.sh: line 2: STR: command not found ผมทำอะไรผิดหรือเปล่า? ฉันมองไปที่พื้นฐานมาก / ผู้เริ่มต้นบทเรียนการเขียนสคริปต์ทุบตีออนไลน์และนี่คือวิธีที่พวกเขาพูดเพื่อประกาศตัวแปร ... ดังนั้นฉันไม่แน่ใจว่าสิ่งที่ฉันทำผิด ฉันใช้ Ubuntu Server 9.10 /bin/bashและใช่ทุบตีตั้งอยู่ที่

16
Unix shell script ค้นหาว่าไฟล์สคริปต์อยู่ที่ไหน?
โดยทั่วไปฉันจำเป็นต้องเรียกใช้สคริปต์ที่มีเส้นทางที่เกี่ยวข้องกับที่ตั้งไฟล์เชลล์สคริปต์ฉันจะเปลี่ยนไดเรกทอรีปัจจุบันเป็นไดเรกทอรีเดียวกันกับที่ไฟล์สคริปต์อยู่ได้อย่างไร
511 shell  unix 

19
Colorized grep - ดูไฟล์ทั้งหมดด้วยการจับคู่ที่ไฮไลต์
ฉันพบgrep's--color=alwaysธงที่จะเป็นประโยชน์อย่างมาก อย่างไรก็ตาม grep พิมพ์เฉพาะบรรทัดที่มีการจับคู่เท่านั้น (ยกเว้นกรณีที่คุณขอบรรทัดบริบท) เนื่องจากแต่ละบรรทัดที่พิมพ์มีการจับคู่การไฮไลต์ไม่ได้เพิ่มความสามารถให้มากที่สุดเท่าที่จะทำได้ ฉันต้องการcatไฟล์จริงๆและดูไฟล์ทั้งหมดที่มีการจับคู่รูปแบบที่เน้นไว้ มีวิธีที่ฉันสามารถบอก grep ให้พิมพ์ทุกบรรทัดที่อ่านไม่ว่าจะมีการแข่งขันหรือไม่? ฉันรู้ว่าฉันสามารถเขียนสคริปต์เพื่อรัน grep ในทุกบรรทัดของไฟล์ แต่ฉันอยากรู้ว่าสิ่งนี้เป็นไปได้ด้วยมาตรฐานgrepหรือไม่
509 bash  shell  colors  grep 


14
มีวิธีรัดกุมในการตรวจสอบว่าตัวแปรสภาพแวดล้อมถูกตั้งค่าใน Unix shell script อย่างไร
ฉันมีสคริปต์ Unix shell บางตัวที่ฉันต้องตรวจสอบว่าตัวแปรสภาพแวดล้อมบางตัวถูกตั้งค่าก่อนที่ฉันจะเริ่มทำสิ่งต่าง ๆ ดังนั้นฉันจึงทำสิ่งนี้: if [ -z "$STATE" ]; then echo "Need to set STATE" exit 1 fi if [ -z "$DEST" ]; then echo "Need to set DEST" exit 1 fi ซึ่งพิมพ์เยอะมาก มีสำนวนที่สง่างามกว่าสำหรับการตรวจสอบว่าชุดของตัวแปรสภาพแวดล้อมถูกตั้งค่าหรือไม่? แก้ไข: ฉันควรพูดถึงว่าตัวแปรเหล่านี้ไม่มีค่าเริ่มต้นที่มีความหมาย - สคริปต์ควรผิดพลาดหากมีการตั้งค่า
500 bash  unix  shell 

10
OS X: เทียบเท่ากับ wget ของ Linux
ฉันจะทำ HTTP GET จากสคริปต์ Un * x shell บนระบบสต็อก OS X ได้อย่างไร (การติดตั้งซอฟต์แวร์ของบุคคลที่สามไม่ใช่ตัวเลือกเพราะสิ่งนี้จะต้องใช้กับระบบต่าง ๆ มากมายซึ่งฉันไม่สามารถควบคุมได้) ตัวอย่างเช่นถ้าฉันเริ่มเซิร์ฟเวอร์ Mercurial ในพื้นที่ให้บริการ hg : ... $ hg serve จากนั้นจาก Linux ที่มีคำสั่งwgetฉันจะทำ wget: ... $ wget http://127.0.0.1:8000 --2010-12-31 22:18:25-- http://127.0.0.1:8000/ Connecting to 127.0.0.1:8000... connected. HTTP request sent, awaiting response... 200 Script output follows Length: unspecified …
499 macos  shell  unix  http-get 

7
สี Terminal OS X [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน7 ปีที่ผ่านมา ฉันใหม่สำหรับ OS X เพิ่งได้รับ Mac หลังจากทำงานกับ Ubuntu Linux มาระยะหนึ่งแล้ว ท่ามกลางสิ่งต่าง ๆ ที่ฉันพยายามจะหาคือไม่มีสีในหน้าต่างเทอร์มินัลของฉัน - เหมือนกับสีที่แสดง (บน Linux) เมื่อทำงานls -laหรือgit status... ฉันไม่สามารถหาวิธีเปิดใช้งานสีในเปลือกของฉัน
492 macos  shell  terminal  colors 

12
วิธีการใช้ ADB Shell เมื่อเชื่อมต่ออุปกรณ์หลายเครื่อง? ล้มเหลวด้วย“ ข้อผิดพลาด: มากกว่าหนึ่งอุปกรณ์และตัวจำลอง”
$ adb --help ... -s SERIAL use device with given serial (overrides $ANDROID_SERIAL) ... $ adb devices List of devices attached emulator-5554 device 7f1c864e device ... $ adb shell -s 7f1c864e error: more than one device and emulator ?

6
จะอ่านไฟล์ในตัวแปรในเชลล์ได้อย่างไร?
ฉันต้องการอ่านไฟล์และบันทึกเป็นตัวแปร แต่ฉันต้องเก็บตัวแปรไว้และไม่เพียงพิมพ์ไฟล์ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันได้เขียนสคริปต์นี้ แต่มันก็ไม่ใช่สิ่งที่ฉันต้องการ: #!/bin/sh while read LINE do echo $LINE done <$1 echo 11111----------- echo $LINE ในสคริปต์ของฉันฉันสามารถให้ชื่อไฟล์เป็นพารามิเตอร์ดังนั้นหากไฟล์มี "aaaa" ตัวอย่างเช่นมันจะพิมพ์ออกมานี้: aaaa 11111----- แต่นี่แค่พิมพ์ไฟล์ลงบนหน้าจอและฉันต้องการบันทึกลงในตัวแปร! มีวิธีง่าย ๆ ในการทำเช่นนี้?
489 shell  unix  sh 


5
วิธีกำหนดชื่อสำหรับหน้าจอ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน6 ปีที่ผ่านมา ฉันใช้screenเครื่องมือมัลติเพล็กเซอร์บนเชลล์คำสั่งและเปิดหน้าจอเป็นจำนวนมาก ฉันลืมกระบวนการ ID ที่เชื่อมโยงกับงานใด ฉันต้องการตั้งชื่อหน้าจอ แต่ไม่พบตัวเลือกใน manpage ขณะนี้รายการหน้าจอมีลักษณะดังนี้: There are screens on: 5422.pts-1.aws1 (Detached) 5448.pts-1.aws1 (Detached) 5027.pts-1.aws1 (Detached) 3 Sockets in /var/run/screen/S-sb. และฉันต้องการที่จะเห็นสิ่งนี้: There are screens on: 5422.logCleanWorker (Detached) 5448.overNightLongTask(Detached) 5027.databaseOverNightLongTask (Detached) 3 Sockets in /var/run/screen/S-sb. ฉันจะทำสิ่งนี้ได้อย่างไร
471 linux  unix  shell  gnu-screen 

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