Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

3
ในสคริปต์ bash shell ให้เขียน a for loop ที่วนซ้ำค่าสตริง
ใน bash ฉันรู้ว่ามันเป็นไปได้ที่จะเขียนforloop ซึ่งตัวแปรควบคุมการiวนซ้ำนั้นวนซ้ำตามจำนวนเต็มที่ระบุ ตัวอย่างเช่นฉันสามารถเขียน bash shell script ที่พิมพ์จำนวนเต็มระหว่าง 1 ถึง 10: #!/bin/bash for i in {1..10} do echo $i done เป็นไปได้หรือไม่ที่จะวนซ้ำตัวแปรการควบคุมลูปที่เป็นสตริงแทนถ้าฉันจัดเตรียมรายการสตริง? ตัวอย่างเช่นสมมติว่าฉันมีสตริงfnameที่แสดงชื่อไฟล์ ฉันต้องการเรียกชุดคำสั่งสำหรับแต่ละชื่อไฟล์ ตัวอย่างเช่นฉันอาจต้องการพิมพ์เนื้อหาของการfnameใช้คำสั่งเช่นนี้: #!/bin/bash for fname in {"a.txt", "b.txt", "c.txt"} do echo $fname done กล่าวอีกนัยหนึ่งในการทำซ้ำครั้งแรกfnameควรมีค่าfname="a.txt"ในขณะที่การทำซ้ำครั้งที่สองfnameควรมีค่าfname="b.txt"และอื่น ๆ น่าเสียดายที่ดูเหมือนว่าไวยากรณ์ข้างต้นไม่ถูกต้องนัก ฉันต้องการได้รับผลลัพธ์: a.txt b.txt c.txt แต่เมื่อฉันลองรหัสข้างต้นฉันได้ผลลัพธ์นี้: {a.txt, b.txt, c.txt} คุณช่วยฉันในการกำหนดไวยากรณ์ที่ถูกต้องเพื่อที่ฉันจะสามารถเปลี่ยนค่า / เนื้อหาของตัวแปรได้fnameหรือไม่? …
24 bash  shell-script  for 

6
ฉันจะทำให้โปรแกรมหลามทำงานอย่างไรเช่นเครื่องมือยูนิกซ์ที่เหมาะสม?
ฉันมีสคริปต์ Python อยู่สองสามตัวและฉันก็กำลังเขียนมันใหม่ ฉันมีปัญหาเดียวกันกับพวกเขาทั้งหมด ฉันไม่เห็นได้ชัดว่าจะเขียนโปรแกรมอย่างไรเพื่อให้พวกเขาทำตัวเหมือนเครื่องมือยูนิกซ์ที่เหมาะสม เพราะสิ่งนี้ $ cat characters | progname และนี่ $ progname characters ควรสร้างผลลัพธ์เดียวกัน สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถพบได้ใน Python คือไลบรารี fileinput น่าเสียดายที่ฉันไม่เห็นวิธีเขียนสคริปต์ Python ของฉันอีกครั้งซึ่งทั้งหมดมีลักษณะดังนี้: #!/usr/bin/env python # coding=UTF-8 import sys, re for file in sys.argv[1:]: f = open(file) fs = f.read() regexnl = re.compile('[^\s\w.,?!:;-]') rstuff = regexnl.sub('', fs) f.close() print rstuff …

3
วิธีที่รวดเร็วในการคัดลอกไฟล์ขนาดใหญ่บน LAN
ฉันมีปัญหากับ NFS และฉันต้องการลองใช้ TCP แบบเก่าธรรมดา ฉันไม่รู้ว่าจะเริ่มจากตรงไหน ฉลาดหลักแหลมฉันใช้สายเคเบิลอีเธอร์เน็ตข้ามเครือข่ายสองเน็ตบุ๊ค เพื่อเครือข่ายพวกเขาฉันพิมพ์ $ sudo ifconfig eth0 192.168.1.1 up && ping -c 10 -s 10 192.168.1.2 && sudo /etc/init.d/nfs-kernel-server start ในเน็ตบุ๊กแรกและ $ sudo ifconfig eth0 192.168.1.2 up $ ping -c 10 -s 10 192.168.1.1 $ mount /mnt/network1 ในวินาที โดยที่/mnt/network1ระบุไว้ใน / etc / fstab เป็น 192.168.1.1:/home …

3
กฎสำหรับเรียกใช้ subshell ใน Bash?
ฉันดูเหมือนจะเข้าใจผิดกฎของ Bash ในการสร้าง subshell ฉันคิดว่าวงเล็บจะสร้าง subshell เสมอซึ่งจะทำงานเหมือนกระบวนการของตัวเอง อย่างไรก็ตามนี่ไม่ใช่กรณี ใน Code Snippet A (ด้านล่าง) sleepคำสั่งที่สองไม่ได้ทำงานในเชลล์แยกต่างหาก (ตามที่กำหนดโดยpstreeเทอร์มินัลอื่น) อย่างไรก็ตามใน Code Snippet B sleepคำสั่งที่สองจะทำงานในเชลล์แยกต่างหาก ความแตกต่างเพียงอย่างเดียวระหว่างตัวอย่างก็คือตัวอย่างที่สองมีสองคำสั่งภายในวงเล็บ มีใครบ้างที่โปรดอธิบายกฎสำหรับตอนที่สร้าง subshells รหัส SNIPET A: sleep 5 ( sleep 5 ) รหัส SNIPET B: sleep 5 ( x=1 sleep 5 )

8
ภาษาสคริปต์สากลสำหรับ Linux คืออะไร?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 7 ปีที่ผ่านมา เรากำลังเขียนสคริปต์สำหรับระบบ Linux มีการถกเถียงกันว่าภาษาสคริปต์ Linux ที่ใช้กันทั่วไปจะเป็นภาษาใด Bash, SH, Posix? อะไร?

5
วิธีทำให้ `xargs 'ไม่สนใจการออกจากเด็กและดำเนินการต่อไป
บางครั้งฉันทำงานนานมากในxargsชั่วข้ามคืนและมันน่ารำคาญจริง ๆ ที่ค้นพบในตอนเช้าที่xargsเสียชีวิตตรงกลางตัวอย่างเช่นเกิดจากความผิดพลาดในการแบ่งเซ็กเมนต์ในกรณีพิเศษหนึ่งกรณีเช่นเดียวกับที่เกิดขึ้นในคืนนี้ หากแม้กระทั่งxargsเด็กหนึ่งคนถูกฆ่าก็จะไม่ดำเนินการอินพุตอีกต่อไป: คอนโซล 1: [09:35:48] % seq 40 | xargs -i --max-procs=4 bash -c 'sleep 10; date +"%H:%M:%S {}";' xargs: bash: terminated by signal 15 09:35:58 3 09:35:58 4 09:35:58 2 <Exit with code 125> คอนโซล 2: [09:35:54] kill 5601 ฉันสามารถป้องกันไม่ให้xargsหยุดเพื่อประมวลผลอินพุตอีกต่อไปเมื่อกระบวนการลูกตายและดำเนินการแทนต่อไปได้หรือไม่?
24 kill  xargs  signals 

4
ทดสอบการอนุญาตที่มีประสิทธิภาพของไฟล์สำหรับผู้ใช้
เป็นไปได้หรือไม่ที่จะทดสอบการอนุญาตที่มีประสิทธิภาพของไฟล์สำหรับผู้ใช้ที่เฉพาะเจาะจง? ปกติแล้วฉันจะทำสิ่งนี้su userแล้วเข้าถึงไฟล์ แต่ตอนนี้ฉันต้องการทดสอบสิ่งนี้กับผู้ใช้ที่ไม่มีเชลล์ (เช่นผู้ใช้ระบบ)

2
GNU emacs vs. XEmacs
หลังจากใช้ Vim ในช่วงสองสามปีที่ผ่านมาฉันเปลี่ยนไปใช้ emacs ซึ่งเป็นส่วนหนึ่งของ "การออกไปข้างนอกเพื่อความสะดวกสบายของคุณ" ในปี 2012 แม้ว่าฉันจะใช้ GNU Emacs ตลอด 10 วันที่ผ่านมา แต่ฉันอยากรู้เกี่ยวกับ XEmacs และฉันสงสัยว่ามันต่างจาก GNU Emacs หรือไม่ จากหน้า Wikipedia : หนึ่งในความขัดแย้งหลักที่เกี่ยวข้องกับมุมมองที่แตกต่างกันของการกำหนดลิขสิทธิ์ [ ... ] คุณลักษณะใหม่ในตัวแก้ไขทั้งสองจะแสดงในอีกไม่ช้าก็เร็ว นอกจากนี้นักพัฒนาหลายคนสนับสนุนทั้งสองโครงการ ฉันได้รับความประทับใจว่าความแตกต่างระหว่างทั้งสองส่วนใหญ่เป็นประวัติศาสตร์และปรัชญา (ไม่ใช่กรณีของ FSF เสมอไป) อะไรคือเหตุผลในทางปฏิบัติที่จะเลือกหนึ่งมากกว่าวันนี้ในปี 2012? นี่คือตัวอย่างของการเปรียบเทียบที่ฉันสนใจ: คุณสมบัติ : มีคุณสมบัติใด ๆ ในหนึ่ง แต่ไม่ (หรืออย่างน้อยไม่สามารถใช้ได้ง่าย) ในอื่น ๆ ? ชุมชน : ชุมชนใดที่กระตือรือร้นและสร้างสรรค์มากขึ้น? ปล่อยรอบ …
24 emacs  xemacs 

3
tar cvf หรือ tar -cvf?
ฉันได้เรียนรู้การใช้ tar โดยไม่มี '-' สำหรับตัวเลือกเช่นtar cvfz dir.tar.gz Directory/แต่เมื่อเร็ว ๆ นี้ฉันมีtar -czvfไวยากรณ์แตกต่างกันเล็กน้อย(ฉันคิดว่า 'f' ต้องเป็นตัวเลือกสุดท้ายในกรณีนี้) ทั้งทำงานบน linux และ Mac OS มีไวยากรณ์ที่แนะนำหรือไม่ถ้าไม่มี '-' ซึ่งพกพาสะดวกกว่าในรสชาติ unix หรือไม่?

1
ฉันจะติดตั้ง g ++ บน RHEL6 ได้อย่างไร
ดูเหมือนว่าคำถามนี้จะถูกถามที่นี่แล้ว แผนกไอทีของฉันติดตั้งระบบปฏิบัติการดังนั้นฉันไม่รู้วิธีลงทะเบียนอย่างถูกต้อง แต่ฉันมีสิทธิ์เข้าถึงรูต มีวิธีรับแพ็คเกจเดียวกันโดยใช้ที่เก็บ CentOS หรือไม่ ฉันต้องการติดตั้ง IceWM แต่ไม่มีคอมไพเลอร์ฉันไม่สามารถสร้างมันเองได้
24 rhel 

2
ช่วงหลายช่วงของไฟล์ตามลำดับคำใน zsh
ฉันต้องการระบุช่วงของไฟล์ (ตามลำดับพจนานุกรม) ด้วยจำนวนเต็มสองจำนวน (เช่น 2 ถึง 57) ใน zsh โดยการวนรอบ ตัวอย่างเช่น: "เลือกไฟล์ 2 ถึง 57 ตามลำดับคำศัพท์ภายใต้พา ธ ที่ตรงกับรูปแบบการวนลูป ฉันคิดว่าการใช้วงเล็บเหลี่ยมจะทำได้ for x in /foo/bar/*[2-57]; do print $x; done แต่เห็นได้ชัดว่า zsh คิดว่าฉันขอไฟล์2ไป5(หรือสิ่งที่ต้องการ) แทนไฟล์ไป2 57ความคิดใด ๆ ฉันจะทำสิ่งนี้ได้อย่างไร
24 zsh  wildcards 

2
ทำไม Unix ถึงจัดเก็บการประทับเวลาในจำนวนเต็มที่ลงนามแล้ว?
ทำไมจำนวนเต็มที่ลงนามจึงถูกใช้เพื่อแทนการประทับเวลา? มีจุดเริ่มต้นที่ชัดเจนในปี 1970 ที่แสดงเป็น 0 ดังนั้นทำไมเราต้องใช้ตัวเลขก่อนหน้านั้น มีการใช้การประทับเวลาเชิงลบทุกที่หรือไม่
24 timestamps 

3
สลับสีของหน้าต่างที่ใช้งานอยู่
บางครั้งฉันทำงานในที่มีแสงน้อยและฉันจำเป็นต้องสลับสีหน้าต่างเฉพาะเพื่อลดอาการปวดตาของฉัน นี่อาจเป็นโปรแกรมดู PDF ของฉันไปยังหน้าเว็บสำหรับงานอ้างอิง ฉันรู้วิธีพลิกหน้าจอทั้งหมด: xcalib -invert -alter แต่ฉันไม่สามารถหาหน้าคนใด ๆ หรือโพสต์เอกสารวิธีการสลับหน้าต่างเดียวเท่านั้น ฉันทำสิ่งนี้มาก่อน แต่ไม่สามารถหาวิธีได้ แปลก! ค้นหา repos สำหรับเครื่องมือ xorg อื่น ๆ ที่ฉันพบ xpdf มันมีการสนับสนุนกลับกัน แต่จะไม่ช่วยอะไรเลยนอกจากการดู pdf ฉันไม่ได้ใช้การแต่งเพลงดังนั้นโปรดอย่าแนะนำ Compiz ฉันใช้ Openbox WM ขอบคุณทุกคน ปรับปรุง แทนที่จะใช้เครื่องมือเอนกประสงค์ทั่วไปเพื่อคว่ำหน้าต่างใด ๆ ฉันมุ่งเน้นการค้นหาวิธีการสลับสีสำหรับแท็บ Google Chrome แทน ฉันพบColor Bookmarkletsคุณลากไปยังแถบเครื่องมือของเบราว์เซอร์และกดเพื่อเปลี่ยนเนื้อหาของหน้าเว็บเพื่อกลับสี (กลับด้านสว่าง)

3
ขึ้นบรรทัดใหม่ในชื่อไฟล์
ฉันเข้าใจและยอมรับหลักฐานว่าการเขียนสคริปต์เชลล์1 แบบป้องกันเป็นเรื่องที่รอบคอบและในระยะยาวจะมีความยั่งยืนมากขึ้น คำตอบมากมายสำหรับคำถามเกี่ยวกับการประมวลผลข้อความที่นี่เป็นไปตามหลักการนี้โดยสร้างเป็นคำตอบที่อาจเกิดขึ้นสำหรับชื่อไฟล์นอกรีต ที่อาจมีช่องว่างขีดกลางและบรรทัดใหม่ บรรทัดใหม่ที่แพร่หลายในชื่อไฟล์เป็นอย่างไร โดยเฉพาะ: แอปพลิเคชันใด ๆ ที่สร้างชื่อไฟล์ที่มีบรรทัดใหม่เป็นค่าเริ่มต้นหรือไม่ มีสถานการณ์ใดบ้างที่ต้องการสร้างชื่อไฟล์ดังกล่าว หรือพวกเขาส่วนใหญ่เป็นตัวอย่างของข้อผิดพลาดของผู้ใช้? [1] ความหมายการวางแผนและการจัดการสถานการณ์และภาระผูกพันที่เป็นไปได้ในวงกว้างที่สุด ... คำถามที่ได้รับแรงบันดาลใจจากความคิดเห็น (ค่อนข้างน่าตำหนิ) ในคำถามนี้


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