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

แท็กนี้เป็นเอกสิทธิ์สำหรับคำถามการเขียนโปรแกรมที่เกี่ยวข้องโดยตรงกับ Unix; ปัญหาซอฟต์แวร์ทั่วไปควรถูกนำไปยังไซต์ Unix & Linux Stack Exchange หรือไปยัง Super User ระบบปฏิบัติการ Unix เป็นระบบปฏิบัติการอเนกประสงค์ที่พัฒนาโดย Bell Labs ในช่วงปลายทศวรรษ 1960 และปัจจุบันมีอยู่ในหลายเวอร์ชั่น

13
ค้นหาและแทนที่ไฟล์และไฟล์เขียนทับไม่ทำงาน แต่จะลบไฟล์
ฉันต้องการเรียกใช้ค้นหาและแทนที่ไฟล์ HTML ผ่านบรรทัดคำสั่ง คำสั่งของฉันมีลักษณะเช่นนี้: sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html > index.html เมื่อฉันเรียกใช้และดูไฟล์ในภายหลังมันว่างเปล่า มันลบเนื้อหาของไฟล์ของฉัน เมื่อฉันเรียกใช้หลังจากเรียกคืนไฟล์อีกครั้ง: sed -e s/STRING_TO_REPLACE/STRING_TO_REPLACE_IT/g index.html stdoutเป็นเนื้อหาของแฟ้มและค้นหาและแทนที่ได้รับการดำเนินการ ทำไมสิ่งนี้จึงเกิดขึ้น

19
เครื่องมือทุบตีเพื่อรับบรรทัดที่ n จากไฟล์
มีวิธี "แบบบัญญัติ" หรือไม่? ฉันใช้head -n | tail -1ซึ่งทำเคล็ดลับ แต่ฉันสงสัยว่ามีเครื่องมือทุบตีที่แยกเส้น (หรือช่วงบรรทัด) จากไฟล์ โดย "canonical" ฉันหมายถึงโปรแกรมที่มีหน้าที่หลักทำเช่นนั้น
604 bash  shell  unix  awk  sed 

8
วิธีการดำเนินการ OR แบบลอจิคัลในเชลล์สคริปต์
ฉันพยายามตรวจสอบสภาพง่าย ๆ แต่ดูเหมือนจะไม่ทำงาน ถ้า$#เท่ากับ0หรือมากกว่า1นั้นจงทักทาย ฉันได้ลองใช้ไวยากรณ์ต่อไปนี้โดยไม่ประสบความสำเร็จ: if [ "$#" == 0 -o "$#" > 1 ] ; then echo "hello" fi if [ "$#" == 0 ] || [ "$#" > 1 ] ; then echo "hello" fi
571 bash  unix  if-statement  sh 

6
ฉันจะรับ cURL เพื่อไม่แสดงแถบความคืบหน้าได้อย่างไร
ฉันพยายามใช้ cURL ในสคริปต์และทำให้มันไม่แสดงแถบความคืบหน้า ฉันได้พยายาม-s, -silent, -Sและ-quietตัวเลือก แต่ไม่มีของพวกเขาทำงาน นี่เป็นคำสั่งทั่วไปที่ฉันได้ลอง: curl -s http://google.com > temp.html ฉันเพิ่งได้รับแถบความคืบหน้าเมื่อกดไปที่ไฟล์ดังนั้นจึงcurl -s http://google.comไม่มีแถบความคืบหน้า แต่curl -s http://google.com > temp.htmlจะมี
562 linux  bash  unix  scripting  curl 

9
ฉันจะเขียน stderr ไปยังไฟล์ในขณะที่ใช้“ tee” กับไพพ์ได้อย่างไร?
ฉันรู้วิธีใช้teeเพื่อเขียนผลลัพธ์ ( STDOUT) ของaaa.shถึงbbb.outในขณะที่ยังคงแสดงใน terminal: ./aaa.sh | tee bbb.out ฉันจะเขียนSTDERRไฟล์ที่ชื่อccc.outในขณะที่ยังคงแสดงไฟล์ได้อย่างไร
541 linux  bash  unix 

22
ฉันจะแยกช่วงของเส้นที่กำหนดไว้ล่วงหน้าจากไฟล์ข้อความบน Unix ได้อย่างไร
ฉันมีการถ่ายโอนข้อมูล SQL บรรทัด ~ 23000 ที่มีฐานข้อมูลหลายค่าที่คุ้มค่าของข้อมูล ฉันต้องการแยกส่วนที่แน่นอนของไฟล์นี้ (เช่นข้อมูลสำหรับฐานข้อมูลเดียว) และวางไว้ในไฟล์ใหม่ ฉันรู้ทั้งหมายเลขเริ่มต้นและจุดสิ้นสุดของข้อมูลที่ฉันต้องการ ไม่มีใครรู้คำสั่ง Unix (หรือชุดคำสั่ง) เพื่อแยกทุกบรรทัดจากไฟล์ระหว่างพูดบรรทัด 16224 และ 16482 แล้วเปลี่ยนเส้นทางพวกเขาเป็นไฟล์ใหม่?

8
จะพิมพ์ XML จากบรรทัดคำสั่งได้อย่างไร
ที่เกี่ยวข้อง: ฉันจะพิมพ์ JSON in (unix) shell script ได้อย่างไร มีเชลล์สคริปต์ (unix) เพื่อจัดรูปแบบ XML ในรูปแบบที่มนุษย์อ่านหรือไม่ โดยพื้นฐานแล้วฉันต้องการให้มันแปลงค่าต่อไปนี้: <root><foo a="b">lorem</foo><bar value="ipsum" /></root> ... เป็นอะไรเช่นนี้: <root> <foo a="b">lorem</foo> <bar value="ipsum" /> </root>
528 xml  unix  command-line 

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

10
จะแบ่งไฟล์ข้อความขนาดใหญ่เป็นไฟล์ขนาดเล็กลงด้วยจำนวนบรรทัดเท่ากันได้อย่างไร
ฉันมีไฟล์ข้อความธรรมดาขนาดใหญ่ (ตามจำนวนบรรทัด) ที่ฉันต้องการแยกเป็นไฟล์ขนาดเล็กลงเช่นกันตามจำนวนบรรทัด ดังนั้นหากไฟล์ของฉันมีประมาณ 2M บรรทัดฉันต้องการแยกมันเป็น 10 ไฟล์ที่มี 200k lines หรือ 100 ไฟล์ที่มี 20k lines (บวกหนึ่งไฟล์ที่มีส่วนที่เหลือการแบ่งเท่ากันไม่สำคัญ) ฉันสามารถทำสิ่งนี้ได้อย่างง่ายดายใน Python แต่ฉันสงสัยว่ามีวิธีใดในการทำเช่นนี้โดยใช้ bash และ unix utils (ซึ่งต่างจากการวนซ้ำด้วยตนเอง
515 bash  file  unix 

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


2
เหตุใด ENOENT จึงหมายถึง“ ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”
อะไรENTในค่าเฉลี่ยENOENT? ไม่ควรเกิดข้อผิดพลาด: ไม่พบไฟล์หรือโฟลเดอร์ เพิ่งจะตั้งชื่อตามENOFILE? มีเรื่องราวหรือเหตุผลหรือไม่?
507 c  linux  unix 


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 


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