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

เชลล์เป็นอินเตอร์เฟสบรรทัดคำสั่งของ Unix คุณสามารถพิมพ์คำสั่งในเชลล์แบบโต้ตอบหรือเขียนสคริปต์เพื่อทำงานอัตโนมัติ ใช้แท็กนี้สำหรับคำถามที่ใช้กับ / bin / sh และเชลล์ที่เข้ากันได้มากที่สุด (ash, bash, ksh, zsh, …) สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาดโปรดตรวจสอบใน http://shellcheck.net ก่อนโพสต์ที่นี่

12
เป็นวิธีที่ดีในการกรองไฟล์ข้อความเพื่อลบบรรทัดว่างอะไร
ฉันมีไฟล์. csv (สำหรับ mac) ที่มีบรรทัดว่างมากมายเช่น: "1", "2", "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum ","2","3","4" "1", "2", "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum …

3
สคริปต์ของฉันจะรู้ได้อย่างไรเมื่อฉันอยู่ในคอนโซลเสมือนกับ xterm
สคริปต์บางส่วนของฉัน (การเปลี่ยนคีย์แมปการเพิ่มคีย์สาธารณะ) จำเป็นต้องดำเนินการแตกต่างกันเมื่ออยู่ในคอนโซลเสมือนและใน xterm รหัสที่แท้จริงคืออะไร #!/bin/ksh if [[ in_a_virtual_console ]]; then ... else ... fi

3
การปิดเชลล์ทำได้อย่างปลอดภัยเพียงแค่คลิก“ X” หรือใช้“ ctrl + d”
การปิดเชลล์ทำได้อย่างปลอดภัยเพียงแค่คลิก "X" หรือใช้ "ctrl + d" ในขณะที่ล็อกอินด้วยรูทด้วย su หรือปลอดภัยกว่าหรือไม่ถ้าต้องการปิดโดยการพิมพ์ "exit" มีความแตกต่าง (การรักษาความปลอดภัยที่ชาญฉลาด) หรือเหมือนกันและมันไม่สำคัญว่าคุณจะใช้วิธีใด?

5
แปลง sysuptime ของ linux เป็นรูปแบบวันที่อย่างดี
ฉันต้องการที่จะแสดง/proc/uptimeในรูปแบบที่ดีเป็น: DD:HH:MM:SS /proc/uptime ให้เวลากับระบบเป็นวินาทีมีโซลูชันมาตรฐานที่แปลงวินาทีเป็นรูปแบบนี้หรือไม่?
11 shell  time  uptime 

4
makefile สามารถตรวจพบว่าคำสั่งมีอยู่ในเครื่องโลคอลได้อย่างไร
ฉันเริ่มใช้โหมดองค์กรเพื่อวางแผนงานของฉันในระบบสไตล์GTD การวางทุกไฟล์องค์กรลงในไดเรกทอรีของโฟลเดอร์Dropboxฉันเรียกใช้ emacs เพื่อแก้ไข / จัดการไฟล์เหล่านี้จากเครื่องที่แตกต่างกันสามเครื่อง: Cygwin, Mac OS X และ Debian เมื่อฉันใช้MobileOrgเพื่อเข้าถึงไฟล์ org เหล่านี้จาก iPad ของฉันchecksums.datไฟล์จะต้องได้รับการอัปเดตเมื่อมีการเปลี่ยนแปลง md5sum *.org > checksums.datซึ่งสามารถทำได้โดยการทำงาน ปัญหาคือมีคำสั่งต่างกันสามคำสั่งสำหรับmd5sum: md5sum.exeใน Cygwin, md5ใน Mac OS X และmd5sumใน Debian สถานการณ์ที่เหมาะสมที่สุดคือ makefile ซึ่งเก็บไว้ใน Dropbox foder ตรวจพบคำสั่งที่มีอยู่ในเครื่องปัจจุบันและเรียกใช้คำสั่งนั้นเพื่อทำการดำเนินการตรวจสอบ md5
11 shell  make  hashsum 

2
ไปป์สำหรับเอาท์พุตป้องกันการแก้ไขตัวแปรท้องถิ่น
ฉันพยายามเขียนฟังก์ชั่นทุบตีง่ายๆที่ใช้เป็นอาร์กิวเมนต์จำนวนไฟล์และ / หรือไดเรกทอรี มันควรจะ: มีคุณสมบัติชื่อไฟล์อย่างเต็มที่ เรียงพวกเขา ลบรายการซ้ำ พิมพ์ทั้งหมดที่มีอยู่จริง ส่งคืนจำนวนไฟล์ที่ไม่มีอยู่ ฉันมีสคริปต์ที่เกือบจะทำในสิ่งที่ฉันต้องการ แต่ก็ล้มเหลวในการเรียงลำดับ ค่าส่งคืนของสคริปต์ตามที่ถูกต้อง แต่ผลลัพธ์ไม่ได้ (ไม่ได้เรียงลำดับและทำซ้ำ) ถ้าฉันบรรทัดเหล่า| sort -uคำสั่งตามที่ระบุเอาท์พุทที่ถูกต้อง 0แต่ค่าตอบแทนอยู่เสมอ ยินดีต้อนรับโซลูชัน NB ที่เรียบง่ายในการแก้ปัญหา แต่เป็นคำถามเกี่ยวกับสาเหตุที่เกิดขึ้นในรหัสที่ฉันมี นั่นคือเหตุใดการเพิ่มไพพ์จึงดูเหมือนว่าจะหยุดสคริปต์ที่เพิ่มค่าตัวแปรr? นี่คือสคริปต์: function uniqfile { local r=0 for arg in "$@" do readlink -e "$arg" || (( ++r )) done #| sort -u ## remove that comment return …

2
จะทำให้ตัวแปรเชลล์ที่ส่งออกเป็นแบบถาวรได้อย่างไร?
export LD_PRELOAD=/usr/lib/libtsocks.so ไม่เป็นไรที่ฉันจะส่งออกด้วยวิธีนี้ แต่ฉันจะทำให้มันถาวรได้อย่างไร ฉันต้องการให้ LD_PRELOAD ยังคงมีการเปลี่ยนแปลงหลังจากรีบูต ฉันใช้ Ubuntu และ Fedora
11 linux  shell 

2
ใช้ไฟล์ HERE และเปลี่ยนเส้นทางผลลัพธ์ของคำสั่ง
ฉันมีรหัสต่อไปนี้ในสคริปต์ชุด: mpirun -np 6 ./laplace <<END 100 100 100 0.01 100 3 2 1 END | tail -n 1 > output แต่มันไม่ทำงาน สิ่งที่ฉันต้องการให้ทำคือใช้ไฟล์ HERE เป็นอินพุตไปยังคำสั่ง mpirun จากนั้นไพพ์เอาต์พุตไปยังคำสั่ง tail อย่างไรก็ตามฉันคิดว่าสิ่งที่ไฟล์ HERE และส่วนท้ายของเอาต์พุตกำลังสับสน ฉันควรเขียนสิ่งนี้อย่างไรเพื่อให้เป็นไปตามที่ฉันต้องการ?

7
`คำสั่ง '
มีคำสั่งที่สามารถใช้เพื่อเน้น (กับสีข้อความตัวหนาหรือกลับ - / เบื้องหน้า) สายอักขระที่เฉพาะเจาะจงใน stdin ในขณะที่ผ่านสายทั้งหมดเพื่อ stdout? ฉันกำลังคิดที่จะสร้างมันแต่ฉันจะใช้มันถ้ามันมีอยู่แล้ว คุณสมบัติที่พึงประสงค์: สตริงเน้นที่แยกจากกันจะถูกเน้นด้วยวิธีที่แตกต่างกันโดยอัตโนมัติ ตัวอย่างเช่นสตริงแรกจะถูกเน้นด้วยสีแดงที่สองในสีเขียวที่สามในสีฟ้าโดยไม่มีการกำหนดค่าด้วยตนเอง ตรวจจับการสนับสนุนสีและย้อนกลับไปที่วิธีการเน้นตัวหนา / กลับ / / อื่น ๆ ที่มีอยู่ อนุญาตให้จับคู่ของนิพจน์ทั่วไปและสตริงตัวอักษร ทำสิ่งที่ฉลาดกว่าโดยเฉพาะถ้าการจับคู่ซ้อนทับกันเช่น "foobar" และ "barbar" ไม่มีการแก้ไขใด ๆ ระหว่าง stdin และ stdout ยกเว้นการเพิ่มรหัสสี

5
ไม่สามารถ ssh ในเครื่องระยะไกลโดยใช้เชลล์สคริปต์ใน Crontab
ด้านล่างเป็นสคริปต์ที่ฉันพยายามเรียกใช้ซึ่งทำงานโดยไม่มีปัญหาใด ๆ for i in `seq 200 2100` do usr=(`ssh -t -t -o ConnectTimeout=60 machine$1 finger | tail -1 | awk '{print$1}'`) echo $usr done แต่เมื่อฉันเพิ่มลงใน crontab มันไม่ได้ให้ผู้ใช้ 22 12 * * * sh /home/subrahmanyam/Scripts/who.sh กรุณาให้ความคิดของคุณ ..... อาจเป็น cron อสูรกำลังทำงานดังนั้นเราจำเป็นต้องรวมไบนารีบางอย่าง ... ?

1
ฉันจะเปลี่ยนเส้นทางเอาต์พุตไปยัง cd ได้อย่างไร
เป็นไปได้ไหมที่จะเปลี่ยนทิศทางเอาต์พุตของคำสั่งไปcd? ตัวอย่างเช่นฉันค้นหาไดเรกทอรีโดยใช้locateและได้รับเส้นทางไป ตอนนี้แทนที่จะเขียนcdเส้นทางฉันสามารถเปลี่ยนเส้นทางไปยังlocateผลลัพธ์ได้cdหรือไม่ ฉันลองสิ่งนี้: $ locate Descargas | grep Descargas$ /home/oliver/Descargas $ locate Descargas | grep Descargas$ | cd $ locate Descargas | grep Descargas$ > cd $ locate Descargas | grep Descargas$ < cd /home/oliver/Descargas $ ไม่มีโชค. สิ่งนี้อาจไม่มีประโยชน์เป็นพิเศษ แต่ฉันอยากรู้

5
วิธีการส่งผ่านผลลัพธ์ของ "find" เป็นรายการไฟล์?
สถานการณ์คือฉันมีเครื่องเล่น MP3 mpg321ที่ยอมรับรายการของไฟล์เป็นข้อโต้แย้ง ฉันเก็บเพลงของฉันไว้ในไดเรกทอรีที่ชื่อ "เพลง" ซึ่งมีอีกไม่กี่ไดเรกทอรี ฉันแค่ต้องการเล่นทั้งหมดดังนั้นฉันจึงรันโปรแกรมด้วย mpg321 $(find /music -iname "*\.mp3") . ปัญหาคือชื่อไฟล์บางชื่อมีช่องว่างในนั้นและโปรแกรมแบ่งชื่อเหล่านั้นออกเป็นส่วนเล็ก ๆ และบ่นเกี่ยวกับไฟล์ที่หายไป การตัดผลลัพธ์ของfindคำพูดใน mpg321 "$(find /music -iname "*\.mp3")" ไม่ช่วยเพราะจะกลายเป็น "ชื่อไฟล์" ขนาดใหญ่ซึ่งไม่พบ ฉันจะทำสิ่งนี้ได้อย่างไร หากเป็นเช่นนั้นฉันกำลังใช้bashงาน แต่จะเปลี่ยนเป็นzshเร็ว ๆ นี้

4
ล้อมตัวเลขทั้งหมดใน JSON ด้วยเครื่องหมายคำพูด
มีข้อมูล JSON ซึ่งมีค่าตัวเลขบางค่า จะแปลงตัวเลขทั้งหมดเป็นสตริงได้อย่างไร? (ห่อด้วยคำพูด) ตัวอย่าง: { "id":1, "customer":"user", "plate":"BMT-216-A", "country":"GB", "amount":1000, "pndNumber":20000, "zoneNumber":4 } ควรกลายเป็น { "id":"1", "customer":"user", "plate":"BMT-216-A", "country":"GB", "amount":"1000", "pndNumber":"20000", "zoneNumber":"4" }
11 shell  json  jq 

1
การใช้วงเล็บปีกกา {} เป็นอาร์กิวเมนต์ของคำสั่งและตัวเลือกต่างๆ
ตัวอย่าง ฉันเพิ่งพบตัวอย่างของการใช้วงเล็บปีกกาคู่{}โดยไม่มีอะไรในระหว่างวงเล็บเปิดและปิดเป็นอาร์กิวเมนต์ของคำสั่งและแม้แต่กับตัวเลือก: cat foo | xargs -I{} echo {} find . -size 0 -exec rm -i {} \; ไม่มีเอกสารประกอบ ปัญหาของฉันคือฉันไม่สามารถหาเอกสารในGNU Bash Manualที่อธิบายการใช้งาน{}ในบริบทเช่นในตัวอย่างข้างต้น ผมไม่คิดว่ามันเป็นขยายตัวพารามิเตอร์${}เพราะเครื่องหมายดอลลาร์ต้องนำหน้าวงเล็บปิดล้อมในการขยายตัวพารามิเตอร์ในขณะที่ มันไม่สามารถเป็นส่วนขยายรั้งได้เช่นกันเพราะใช้รูปแบบของ{x..y[..incr]}ที่ไหนxและyไม่จำเป็น นอกจากนี้ยังไม่สามารถจัดกลุ่มคำสั่งได้เนื่องจาก{}ใช้เป็นอาร์กิวเมนต์ คำถาม วงเล็บปีกกาคู่คู่{}หมายถึงอะไรโดยทั่วไปในฐานะอาร์กิวเมนต์สำหรับคำสั่งใด ๆ ที่ยอมรับมัน ฉันจะหาเอกสารที่อธิบายการใช้งานของ{}อาร์กิวเมนต์ได้ที่ไหน
11 bash  shell 

2
เชลล์ posix: รายการพิมพ์ของชื่อตัวแปรสภาพแวดล้อม (ไม่มีค่า)
ในวิธีที่เข้ากันได้กับ posix ที่ทำงานกับการใช้งานหลายอย่างฉันจะพิมพ์รายการตัวแปรสภาพแวดล้อมที่กำหนดไว้ในปัจจุบันโดยไม่มีค่าได้อย่างไร ในการใช้งานบางอย่าง (mksh, freebsd / bin / sh) เพียงแค่ใช้exportด้วยตัวเองจะพอดีกับการเรียกเก็บเงิน: $ export FOO2 FOO แต่สำหรับการปรับใช้อื่น ๆ (bash, zsh, dash) exportก็แสดงค่าเช่นกัน ด้วย bash ตัวอย่างเช่น: $ export export FOO2='as df\ asdk=fja:\ asd=fa\ asdf' export FOO='sjfkasjfd kjasdf:\ asdkj=fkajdsf:\ :askjfkajsf=asdfkj:\ safdkj' $ printenv | sed -n l FOO2=as\tdf\$ asdk=fja:\$ asd=fa\$ asdf$ FOO=sjfkasjfd kjasdf:\$ …

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