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

เชลล์คือซอฟต์แวร์ที่ช่วยให้ผู้ใช้โต้ตอบกับระบบปฏิบัติการโดยปกติแล้วพิมพ์ที่บรรทัดคำสั่ง

2
การเขียนเชลล์สคริปต์ที่จะทำงานบนเชลล์ใด ๆ (ใช้หลายบรรทัด Shebang?)
ฉันเพิ่งเริ่มเข้าใจเชลล์สคริปต์มากขึ้นและฉันก็แค่โยนสคริปต์ลงในไฟล์ทำเครื่องหมายchmod +xและทำทุกอย่างแล้ว/path/to/script.shให้ล่ามทุกตัวที่เป็นค่าเริ่มต้นมีทางด้วยซึ่งฉันคิดว่าเป็น zsh เพราะนั่นคือสิ่งที่ ฉันใช้เปลือกของฉัน เห็นได้ชัดว่ามันก็ดูเหมือนว่ามันเป็นเพียง/bin/shโดยค่าเริ่มต้นแม้ว่าผมจะรันสคริปต์จาก zsh พรอมต์เพราะผมเริ่มวางสิ่ง zsh zsh /path/to/script.shเฉพาะในสคริปต์ของฉันและมันก็ล้มเหลวถ้าฉันทำงาน เพื่อให้ตรงประเด็นนี่คือคำถามของฉัน: เชลล์ตัวไหนรันสคริปต์เมื่อไม่มีบรรทัด shebang ( #!/path/to/shell) ที่จุดเริ่มต้น? ฉันถือว่า/bin/shแต่ฉันไม่สามารถยืนยันได้ อะไรคือ "แนวทางปฏิบัติที่ดีที่สุด" ในแง่ของการเขียนเชลล์สคริปต์ที่จะทำงานบนแพลตฟอร์มใด ๆ (ตกลงนี่เป็นแบบปลายเปิด) เป็นไปได้ไหมที่จะเขียนสคริปต์ที่พยายามใช้ zsh และกลับไปใช้ทุบตีหาก zsh ไม่พร้อมใช้งาน? ฉันได้ลองใส่ Shebang สองบรรทัดเช่นด้านล่าง แต่มันก็ผิดพลาดbad interpreter: /bin/zsh: no such file or directoryถ้าฉันลองมันบนเครื่องที่ไม่มี zsh #!/bin/zsh #!/bin/bash

5
จะตัดไฟล์ให้มีขนาดที่กำหนดภายใต้ Linux ได้อย่างไร
ฉันต้องการลดขนาดไฟล์โดยใช้กำลังดุร้ายนั่นคือฉันไม่สนใจที่เหลือฉันแค่ต้องการตัดไฟล์พูดครึ่งแล้วทิ้งส่วนที่เหลือ สิ่งแรกที่มาคิดเป็นของ Perl ตัด ฉันกำลังติดตามตัวอย่างในหน้านั้นและทำสิ่งเดียวกัน: seq 9 > test.txt ls -l test.txt perl -we 'open( FILE, "< ./test.txt" ) && truncate( FILE, 8 ) && close(FILE);' แต่ไฟล์ยังคงมีขนาดเท่ากัน: $ ls -lgG test.txt -rw-rw---- 1 18 2013-08-08 09:49 test.txt ฉันจะทำงานนี้ได้อย่างไร
19 linux  ubuntu  shell  perl 

7
คำสั่ง Linux เพื่อค้นหาไฟล์ที่เปลี่ยนแปลงในไม่กี่วินาทีที่ผ่านมา
ฉันต้องการคำสั่ง Linux เพื่อค้นหาไฟล์ที่เปลี่ยนแปลงในไม่nกี่วินาทีที่ผ่านมา มีเชลล์สคริปต์หรือเครื่องมืออื่น ๆ ที่ฉันสามารถเรียกใช้จากอินเตอร์เฟสบรรทัดคำสั่งหรือ GUI ได้หรือไม่?
19 linux  bash  shell  find 

6
วิธีการ“ เลิกทำ” คำสั่ง unzip?
ฉันใช้ "unzip XXX.zip" เพื่อแยกไฟล์ zip โชคไม่ดีฉันทำผิด ตอนนี้ฉันต้องการลบไฟล์และไดเรกทอรีทั้งหมดที่สร้างโดย "unzip" ฉันจะยกเลิกมันได้อย่างไร
19 linux  shell 

6
เหตุใดฉันจึงไม่สามารถเน้นข้อความในโปรแกรมจำลองเทอร์มินัล linux ด้วยปุ่ม shift + arrow
นี่คือแป้นพิมพ์ลัดแก้ไขข้อความมาตรฐานที่ฉันใช้อย่างต่อเนื่องทุกครั้งที่แก้ไขข้อความในแอปพลิเคชัน linux อื่น ๆ นอกเหนือจากเทอร์มินัลอีมูเลเตอร์: ลูกศรซ้าย + ขวาเพื่อเลื่อนไปทางซ้าย + ขวา ctrl + arrow เพื่อย้ายทั้งคำ home / end เพื่อย้ายไปที่ start / end of line ctrl + c / ctrl + v เพื่อคัดลอก / วาง [เทอร์มินัลบางตัวสามารถใช้ shift-ctrl-C / shift-ctrl-V; นี่เป็นตัวแทนที่ดี] Shift + arrow เพื่อเน้นข้อความ Shift + ctrl + arrow เพื่อไฮไลต์ทั้งคำ ฉันไม่เคยพบการรวมกันของ shell …

3
การตั้งค่า pipefail สำหรับคำสั่ง piped เดียว
ฉันต้องการรันคำสั่งเชลล์ piped จำนวนหนึ่งจากสคริปต์ที่ไม่ใช่ BASH (เช่นสคริปต์ PHP) ดังนี้: command1 | command2 | command3 ดังนั้นหากcommand1ล้มเหลวด้วยรหัสออกที่ไม่ใช่ศูนย์คำสั่งอื่น ๆ ก็จะล้มเหลวเช่นกัน จนถึงตอนนี้สิ่งที่ฉันเกิดขึ้นคือ: set -o pipefail && command1 | command2 | command3 แม้ว่ามันจะทำงานได้ดีจากเทอร์มินัล แต่จะสร้างสิ่งนี้หากเรียกใช้งานจากสคริปต์: sh: 1: set: ตัวเลือกที่ผิดกฎหมาย -o pipefail

7
มีเปลือกยูนิกซ์ที่ทำหน้าที่เหมือนกันหรือไม่?
ฉัน (จริงๆ) มือใหม่ที่จะเขียนโปรแกรมใช้งานได้ (อันที่จริงมีเพียงการติดต่อกับมันโดยใช้ python) แต่ดูเหมือนว่าจะเป็นวิธีที่ดีสำหรับงานที่ต้องทำรายการมากในสภาพแวดล้อมของเชลล์ ฉันชอบทำสิ่งนี้: $ [ git clone $host/$repo for repo in repo1 repo2 repo3 ] มี Unix shell ใดบ้างที่มีคุณสมบัติประเภทนี้? หรือบางทีคุณสมบัติบางอย่างเพื่อให้เข้าถึงเชลล์ได้ง่าย (คำสั่ง, env / vars, readline, ฯลฯ ... ) จากภายใน python (ความคิดคือการใช้ล่ามแบบโต้ตอบของงูใหญ่แทนการทุบตี) แก้ไข: บางทีตัวอย่างเปรียบเทียบจะชี้แจง สมมติว่าฉันมีรายการประกอบด้วยdir / file : $ FILES=( build/project.rpm build/project.src.rpm ) และฉันต้องการทำงานง่าย ๆ : คัดลอกไฟล์ทั้งหมดไปยังdist …
18 shell  unix 

9
วิธีดึงข้อมูลพา ธ สัมบูรณ์ของไฟล์ที่กำหนดเองจาก OS X
ฉันกำลังมองหาคำสั่งง่าย ๆ ที่สามารถใช้ภายใน Bash เพื่อค้นหาพา ธ สัมบูรณ์และ canonicalized ไปยังไฟล์บน OS X (คล้ายกับ `` readlink -f'` ภายใต้ Linux) ตัวอย่างเซสชั่นทุบตีต่อไปนี้อธิบายยูทิลิตี้ [ที่สมมติขึ้น] ที่เรียกว่า `` abspath '' ซึ่งแสดงพฤติกรรมที่ต้องการ: $ pwd /Users/guyfleegman $ ls -lR drwxr-xr-x 4 guyfleegman crew 136 Oct 30 02:09 foo ./foo: -rw-r--r-- 1 guyfleegman crew 0 Oct 30 02:07 bar.txt lrwxr-xr-x …

10
ชื่อแทนคำสั่งในพร้อมท์คำสั่ง?
ฉันจะสร้างสมนามคำสั่งใน 'พร้อมท์คำสั่งของ Windows อย่างที่ฉันต้องการได้bashอย่างไร ฉันพบข้อมูลเกี่ยวกับdoskeyในฟอรัมดังนั้นฉันสามารถทำสิ่งที่ชอบ: doskey ls=dir /b ... และตอนนี้คำสั่งก็lsทำตัวคล้ายlsกับยูนิกซ์อีกเล็กน้อย (ฉันพิมพ์lsบ่อย ๆcmdมันไม่ตลกเลย) แต่ฉันจะทำให้เรื่องนี้ติดระหว่างเซสชันได้อย่างไร cmd.exeมันจะหายไปในครั้งต่อไปที่ผมเปิด (มีบางอย่างเช่น.bash_profile)

4
ฉันจะรวม stdout และ stderr สำหรับกระสุนต่างๆได้อย่างไร
ฉันรู้คำตอบสำหรับเชลล์บางตัวเช่นcmd.exeคุณสามารถ: some.exe > out.txt 2>&1 คุณจะประสบความสำเร็จเช่นเดียวกันสำหรับกระสุนอื่น ๆ ได้อย่างไร (bash, ksh, tcsh, powershell, ฯลฯ )

4
ป้องกันการรันงาน linux ที่จะถูกฆ่าหลังจากออกจากระบบ SSH
ฉันมีงานคอมพิวเตอร์ใช้งานอยู่สองสามวันบนเซิร์ฟเวอร์ linux ผ่านการเชื่อมต่อ SSH ไม่ได้อยู่ในพื้นหลังดังนั้นการเชื่อมต่อ SSH จึงถูกระงับงาน ฉันต้องการรีสตาร์ทเครื่องโลคัล (ไม่ใช่เซิร์ฟเวอร์) ที่ฉันได้เปิดเซสชัน ssh แต่ต้องการให้งานทำงานต่อไป เป็นไปได้ไหม?
18 linux  ssh  shell  kill 

3
ฉันจะตรวจสอบ ulimit สำหรับผู้ใช้รายอื่นและเปลี่ยนไฟล์ที่เปิดอยู่ได้อย่างไร?
ฉันมีกระบวนการที่ทำงานเป็นผู้ใช้เกียร์และฉันต้องการเปลี่ยนopen filesเพื่อหลีกเลี่ยงข้อผิดพลาดที่น่ารังเกียจนี้: ข้อผิดพลาด 2014-09-12 17: 49: 14.000000 [หลัก] ยอมรับ (ไฟล์เปิดมากเกินไป) -> libgearman-server / gearmand.cc: 788 ฉันจะเรียกใช้ ulimit ในฐานะผู้ใช้รายอื่นบน Ubuntu และเปลี่ยนไฟล์ที่เปิดได้อย่างไร ขณะนี้ฉันไม่ได้เข้าสู่ระบบในฐานะคนขับ แต่ฉันมีสิทธิ์เข้าถึงรูท ฉันพยายามทำสิ่งนี้: su gearman --shell /bin/bash --command "ulimit -n" ตามที่แนะนำที่นี่แต่ไม่มีอะไรออกรับ: $ su gearman --shell /bin/bash --command "ulimit -n" Password: $
18 shell  ulimit 

2
Shell SIGKILL การทำพวงกุญแจ
ฉันจะตั้งค่าการผูกกุญแจเพื่อส่งSIGKILLงานเบื้องหน้าปัจจุบันได้อย่างไร ผมรู้อยู่แล้วว่าCtrl+ Cเป็นSIGINTและCtrl+ คือ\ SIGQUITฉันต้องการตัวเลือกที่รุนแรงกว่านี้ มีอะไรที่ไม่สามารถจัดการได้อย่างจริงจังเกี่ยวกับเรื่องนี้?

3
วิธีลบไฟล์ในบรรทัดคำสั่งด้วยนิพจน์ทั่วไป
ช่วยบอกว่าฉันมี 20 ไฟล์ชื่อ FOOXX โดยที่ XX คือจำนวนไฟล์เช่น 01, 02 เป็นต้น ในตอนนี้ถ้าฉันต้องการลบไฟล์ทั้งหมดที่ต่ำกว่าหมายเลข 10 มันเป็นเรื่องง่ายและฉันก็ใช้ไวด์การ์ดเช่น rm FOO0 * อย่างไรก็ตามหากฉันต้องการลบไฟล์ในช่วงที่ระบุเช่น 13-15 นี่จะยากขึ้น rm FPP [13-15] ไม่ทำงานและถามฉันว่าฉันต้องการลบไฟล์ทั้งหมดหรือไม่ Likewse rm FOO1 [3-5] ต้องการลบไฟล์ทั้งหมดที่ขึ้นต้นด้วย FOO1 ดังนั้นวิธีที่ดีที่สุดในการลบช่วงของไฟล์เช่นนี้คืออะไร? ฉันได้ลองทั้ง bash และ zsh แล้วและฉันไม่คิดว่าพวกเขาจะแตกต่างกันมากนักสำหรับงานพื้นฐานเช่นนี้?
18 linux  bash  shell  regex  zsh 

4
ฉันจะเรียกใช้กล่องโต้ตอบคุณสมบัติไฟล์จากบรรทัดคำสั่งได้อย่างไร
มันง่ายในการเขียนโปรแกรมด้วย ShellExecute เพื่อระบุpropertiesคำกริยาเมื่อสั่งให้ Windows เปิดไฟล์ แต่สามารถทำได้จาก command line หรือ run box? เป็นการดีที่ฉันต้องการทำสิ่งนี้โดยไม่มีโปรแกรมหรือสคริปต์ภายนอก ดูเหมือนว่าจะเป็นไปได้โดยการโทรShellExecuteโดยใช้rundll32.exeแต่ไม่มีพารามิเตอร์ที่เหมาะสม

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