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

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

8
สลับลำดับขององค์ประกอบที่คั่นด้วยจุดในสตริง
ฉันมีสตริงการป้อนข้อมูลเช่น: arg1.arg2.arg3.arg4.arg5 ผลลัพธ์ที่ฉันต้องการคือ: arg5.arg4.arg3.arg2.arg1 มันไม่เสมอ 5 arg's อาจเป็น 2 ถึง 10 ฉันจะทำสิ่งนี้ในสคริปต์ทุบตีได้อย่างไร

5
หนึ่งจะแยกสถานะการออกของคำสั่งลงในตัวแปรได้อย่างไร
ฉันเริ่มเรียนรู้การทุบตีเมื่อสองสามวันก่อน ฉันพยายามรับสถานะทางออกของgrepการแสดงออกเป็นตัวแปรเช่นนี้ check=grep -ci 'text' file.sh และผลลัพธ์ที่ฉันได้รับคือ No command '-ic' found ฉันควรทำด้วยคำสั่งไพพ์หรือไม่?

2
ปัญหาด้านความปลอดภัยและสภาพการแข่งขันในการใช้งาน 'find -exec`' มีอะไรบ้าง?
จากfindหน้าคน : -exec command ; There are unavoidable security problems surrounding use of the -exec action; you should use the -execdir option instead. -execdir command {} + Like -exec, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which …
14 shell  find  security 

2
มีเชลล์ล็อกอินที่ไม่มีการโต้ตอบหรือไม่?
ฉันรู้ว่าความแตกต่างระหว่างเชลล์แบบโต้ตอบ / ไม่โต้ตอบและเปลือกหอยเข้าสู่ระบบ / ไม่ใช่ลงชื่อเข้าใช้เป็นอย่างไร แต่ดูเหมือนว่าในทางปฏิบัติแล้วจะไม่มีเปลือกหอยเข้าสู่ระบบที่ไม่ใช่แบบโต้ตอบเว้นแต่ว่าคุณมี/bin/bash --login some-script.shสคริปต์ในสคริปต์ แปลก ๆ ) สิ่งนี้ถูกต้องหรือเป็นเรื่องธรรมดามากขึ้นหรือไม่
14 shell 

5
ฉันจะค้นหาไดเรกทอรีที่ขาดหายไปเป็นครั้งแรกในเส้นทางที่ยาวได้อย่างไร
ลองนึกภาพฉันมีเส้นทางที่ไม่มีอยู่: $ ls /foo/bar/baz/hello/world ls: cannot access /foo/bar/baz/hello/world: No such file or directory แต่ขอบอกว่า/foo/bar ไม่มีอยู่ มีวิธีที่รวดเร็วสำหรับฉันในการพิจารณาว่าbazเป็นจุดแตกหักในเส้นทางหรือไม่ ฉันกำลังใช้ Bash
14 bash  shell  directory  ls 

8
ตรวจสอบตัวแปรเป็นอาร์เรย์ใน Bourne like shell หรือไม่
ใน Bourne like shell ซึ่งสนับสนุนตัวแปรอาเรย์เราสามารถใช้การวิเคราะห์คำเพื่อตรวจสอบว่าตัวแปรเป็นอาร์เรย์หรือไม่ a=(1 2 3)คำสั่งทั้งหมดด้านล่างนี้ถูกเรียกใช้หลังจากการทำงาน zsh: $ declare -p a typeset -a a a=( 1 2 3 ) bash: $ declare -p a declare -a a='([0]="1" [1]="2" [2]="3")' ksh93: $ typeset -p a typeset -a a=(1 2 3) pdksh และอนุพันธ์: $ typeset -p a set -A a …
14 bash  shell  zsh  ksh  yash 

3
ชื่อไฟล์ 'find -exec' pass มีช่องว่างอย่างไร
หากฉันมีไดเรกทอรีที่มีไฟล์บางไฟล์ที่ชื่อมีช่องว่างเช่น $ ls -1 dir1 file 1 file 2 file 3 ฉันสามารถคัดลอกทั้งหมดไปยังไดเรกทอรีอื่นเช่นนี้ได้สำเร็จ: $ find dir1 -mindepth 1 -exec cp -t dir2 {} + อย่างไรก็ตามการส่งออกของfind dir1 -mindepth 1มีช่องว่างที่ไม่หนี: $ find dir1 mindepth 1 dir1/file 1 dir1/file 3 dir1/file 3 หากฉันใช้print0แทนprintเอาต์พุตยังคงมีช่องว่างที่ไม่ได้ใช้ Escape: $ find dir1 mindepth 1 -print0 dir1/file 1dir1/file 2dir1/file 3 …

9
วิธีเชื่อมโยงคำสั่ง 'date -d @xxxxxx' และ 'find ./' ได้อย่างไร
ฉันมีไดเรกทอรีที่ชื่อ timestamps ให้ในมิลลิวินาทีตั้งแต่ 1970-01-01: 1439715011728 1439793321429 1439879712214 . . และฉันต้องการผลลัพธ์เช่น: 1442039711 Sat Sep 12 08:35:11 CEST 2015 1442134211 Sun Sep 13 10:50:11 CEST 2015 1442212521 Mon Sep 14 08:35:21 CEST 2015 . . ฉันสามารถแสดงรายการไดเรกทอรีทั้งหมดตามคำสั่ง: find ./ -type d | cut -c 3-12 แต่ฉันไม่สามารถใส่เอาต์พุตไปที่คำสั่งถัดไป: date -d @xxxxxxและจัดการกับเอาต์พุต ฉันจะทำสิ่งนี้ได้อย่างไร
14 shell  find  date 

3
จะลบคอลัมน์หรือหลายคอลัมน์ออกจากไฟล์โดยใช้คำสั่ง shell ได้อย่างไร
ไฟล์ของฉัน ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID -------- -------- -------- -------- -------- -------- ---- ------ 15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP 15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP 15MinAvg …

3
เตรียมคำตอบสำหรับคำถามของคำสั่ง
สมมติว่าฉันต้องการเขียนเชลล์สคริปต์ที่รันเพียงคำสั่งเดียว แต่คำสั่งนี้ออกแบบมาไม่ดี ไม่มีตัวเลือกบรรทัดคำสั่งใด ๆ แทนที่จะถามคำถามและรอการป้อนข้อมูลจากผู้ใช้ มีวิธีการเตรียมข้อมูลนี้ในสคริปต์หรือไม่ดังนั้นคำถามจะได้รับคำตอบโดยอัตโนมัติหรือไม่

4
echo $ -1 แสดงอะไร
อะไรการส่งออกของecho $-1, echo $-2, echo $-3.. หมายความว่าอย่างไร ในหนึ่งในกล่อง Linux ของฉันมันแสดงให้ฉัน: echo $-1 imsBEl1 echo $-2 imsBEl2 และในอีกกล่อง Linux มันแสดง: echo $-1 himBH1 echo $-2 himBH2 พวกเขากำลังทำแผนที่ไปยังตำแหน่งหน่วยความจำบางอย่างหรืออย่างอื่น?
14 shell  echo  parameter 

2
มีการตรวจสอบการสะกดคำที่ทราบถึง Markdown หรือไม่?
ฉันต้องการใช้เครื่องตรวจคำสะกดเหนือบทความของฉันก่อนที่จะเผยแพร่ ฉันคิดว่าใช้ได้aspellแต่ไม่ควรลองตรวจสอบการบล็อกรหัส: asdfasdfa adsfa sdfa text to check adsfasd f ``` a wild code block appeared! thisHas quiteOften() some strings.that should NOT get changed ``` and also `inlined code` should not get checked การตรวจสอบการสะกดคำโดยใช้บรรทัดคำสั่งมีอยู่สำหรับ Linux ที่รับรู้ถึง Markdown และละเว้นการบล็อกโค้ดหรือไม่ ฉันต้องสามารถเรียกใช้สิ่งนี้ในโหมดแบตช์สำหรับหลายไฟล์ (คะแนนโบนัสถ้าคุณรู้ว่ามีความเข้าใจ LaTeX จริง ๆaspell -tไม่ไม่ทำงานไม่สมบูรณ์)


8
การตั้งค่าที่แนะนำสำหรับสภาพแวดล้อมการเขียนโปรแกรมแบบข้อความที่มีน้ำหนักเบาเป็นพิเศษใน linux
ฉันกำลังมองหาคำแนะนำสำหรับการตั้งค่าสำหรับความต้องการเฉพาะของฉัน ฉันไม่ได้ทำลินุกซ์มามากตั้งแต่เรียนจบและอยากกลับมาเป็นงานอดิเรก ฉันมีฮาร์ดแวร์ที่ไม่แรงเกินไป (RAM 512 MB, single core) ฉันต้องการทำทุกอย่างผ่านเชลล์และโปรแกรมแก้ไขข้อความเช่นเสียงเรียกเข้า เป้าหมายของฉันคือไม่เคยแตะเมาส์ ฉันต้องการความสามารถในการเปิดเชลล์หลาย ๆ ตัวพร้อมกันหนึ่งตัวกำลังเรียกใช้เว็บเซิร์ฟเวอร์หนึ่งที่เรียกใช้เป็นกลุ่มเรียกใช้แอปพลิเคชันของฉันสร้างไปป์ไลน์และอีกหนึ่งคำสั่งสำหรับ ad-hoc เชลล์คำสั่งเช่น wget grepping และ untarring เป็นต้น สามารถเปิดเชลล์ใหม่และสลับระหว่างเชลล์ได้อย่างรวดเร็วด้วยคีย์บอร์ด แต่ถึงแม้ว่าฉันต้องการเชลล์หลายตัว แต่ฉันไม่ต้องการสภาพแวดล้อมเดสก์ทอปแบบกราฟิก ฉันไม่ต้องการถูกล่อลวงให้ใช้เมาส์ ส่วนหนึ่งของจุดประสงค์ของฉันคือการบังคับตัวเองให้เรียนรู้วิธีใช้บรรทัดคำสั่งในการทำงานต่างๆ ฉันยังต้องการที่จะใช้ประโยชน์จากจอภาพขนาดใหญ่ของฉันโดยใช้เสียงเรียกเข้าพร้อมกับคอลัมน์สองร้อยคอลัมน์ที่ลดลง เป็นไปได้ไหม

3
เหตุใด $ SHELL จึงไม่เปลี่ยนแปลงเมื่อฉันเรียกใช้เชลล์ใหม่
$ echo $SHELL /bin/bash $ /bin/ksh93 $ echo $SHELL /bin/bash $ file /bin/ksh93 /bin/ksh93: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped $ getent passwd test111 test111:x:1008:1008:,,,:/tmp:/bin/ksh93 $ ssh test@localhost test@localhost's password: $ echo $SHELL /bin/ksh93 $ bash $ echo $SHELL …

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