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

Korn shell (ksh) เป็นเชลล์ที่มีคุณสมบัติการเขียนสคริปต์ขั้นสูงซึ่งมักพบได้ใน unices เชิงพาณิชย์และระบบ BSD บางระบบ แต่ไม่ค่อยได้ใช้บน Linux

11
ลบบรรทัดแรกของไฟล์
ฉันจะลบบรรทัดแรกของไฟล์และเก็บการเปลี่ยนแปลงได้อย่างไร ฉันลองมัน แต่มันจะลบเนื้อหาทั้งหมดของไฟล์ $sed 1d file.txt > file.txt
110 shell-script  sed  ksh 

4
ทำไมการขยายพารามิเตอร์ด้วยช่องว่างโดยไม่ใส่เครื่องหมายอัญประกาศทำงานในวงเล็บสอง“ [[” แต่ไม่อยู่ในเครื่องหมายวงเล็บ”“”
ฉันสับสนกับการใช้วงเล็บเดียวหรือสองครั้ง ดูรหัสนี้: dir="/home/mazimi/VirtualBox VMs" if [[ -d ${dir} ]]; then echo "yep" fi มันทำงานได้อย่างสมบูรณ์แม้ว่าสตริงจะมีช่องว่าง แต่เมื่อฉันเปลี่ยนเป็นวงเล็บเดี่ยว: dir="/home/mazimi/VirtualBox VMs" if [ -d ${dir} ]; then echo "yep" fi มันบอกว่า: ./script.sh: line 5: [: /home/mazimi/VirtualBox: binary operator expected เมื่อฉันเปลี่ยนเป็น: dir="/home/mazimi/VirtualBox VMs" if [ -d "${dir}" ]; then echo "yep" fi มันใช้งานได้ดี ใครสามารถอธิบายสิ่งที่เกิดขึ้น? เมื่อใดที่ฉันควรกำหนดเครื่องหมายคำพูดคู่ล้อมรอบตัวแปร"${var}"เพื่อป้องกันปัญหาที่เกิดจากช่องว่าง
85 bash  quoting  ksh  test 


8
อะไรคือความแตกต่างระหว่าง $ * และ $ @
พิจารณารหัสต่อไปนี้: foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 มันเอาท์พุท: 1 2 3 4 1 2 3 4 ฉันใช้ Ksh88 แต่ฉันสนใจเชลล์ทั่วไปอื่น ๆ ด้วย หากคุณทราบถึงความพิเศษใด ๆ ของเชลล์ที่เฉพาะเจาะจงโปรดอย่าพูดถึงมัน ฉันพบ follwing ในหน้าคน Ksh บน Solaris: ความหมายของ $ * และ …
72 shell  quoting  ksh  arguments 

4
เปลือก ksh93 ตายหรือไม่
ใน 2013-01-10 Glenn Fowler โพสต์สิ่งนี้ในรายชื่อผู้รับจดหมายของผู้ใช้ ast : AT&T ให้การสนับสนุนซอฟต์แวร์ OpenSouce น้อยมากซึ่งเป็นสาเหตุที่ทำให้เรามีผู้คนจำนวนไม่มากที่เกี่ยวข้องกับซอฟต์แวร์ AST ที่มีขนาดใหญ่ของเรา ทั้งๆที่นี้ksh, nmake, vczip, UWINและเครื่องมือ AST อื่น ๆ ยังคงถูกนำมาใช้ในหลายโครงการของ AT & T ปรากฎว่าซอฟต์แวร์ไม่ใช่สิ่งเดียวที่ขาดการสนับสนุน: ทั้ง dgk (David Korn) (เพื่อน AT&T, อายุ 36 ปี) และ gsf (Glenn Fowler) (เพื่อน AT&T, 29 ปีแห่งการให้บริการ) ถูกยกเลิกโดยมีผลตั้งแต่เดือนตุลาคม 10. พันธมิตรหลักคนที่สามของเรา Phong Vo (เพื่อน AT&T อายุ …

5
รับขนาดด้วยไฟล์ du เท่านั้น
ฉันจะรับขนาดของไฟล์ทั้งหมดและไฟล์ทั้งหมดในไดเรกทอรีย่อยโดยใช้คำสั่ง du ได้อย่างไร ฉันพยายามใช้คำสั่งต่อไปนี้เพื่อให้ได้ขนาดของไฟล์ทั้งหมด (และไฟล์ในไดเรกทอรีย่อย) find . -type f | du -a แต่นี่จะพิมพ์ขนาดโฟลเดอร์เช่นกัน ฉันจะรับรายการขนาดไฟล์และไฟล์ทั้งหมดในไดเรกทอรีย่อยได้อย่างไร ฉันยังพยายามexec flagแต่ผมไม่แน่ใจว่าจะเข้ามาในท่อส่งออกคำสั่งอื่นหลังจากที่มันรันผลของการเข้าสู่finddu ระบบปฏิบัติการคือ AIX 6.1 ที่มี ksh เชลล์
49 files  find  disk-usage  aix  ksh 

6
เมื่อใดที่คุณใช้การขยายรั้ง
ฉันเข้าใจว่าการขยายรั้งคืออะไร แต่ฉันไม่รู้ว่าจะใช้งานได้อย่างไร คุณจะใช้เมื่อไหร่? กรุณาสอนตัวอย่างที่สะดวกและน่าทึ่งให้ฉันถ้าคุณมีเคล็ดลับของคุณเอง

3
การส่งออกตัวแปรที่มีจุด (.) อยู่ในนั้น
วิธีการส่งออกตัวแปรที่มีจุดอยู่ในนั้น ฉันได้รับ 'ชื่อตัวแปรที่ไม่ถูกต้อง' เมื่อพยายาม: export my.home=/tmp/someDir -ksh: my.home=/tmp/someDir: invalid variable name แม้แต่การหลบหนี metacharacter dot (.) ก็ไม่ได้ช่วยเช่นกัน $ export my\.home=/tmp/someDir export: my.home=/tmp/someDir: is not an identifier

3
การใช้ sed เพื่อระบายสีเอาต์พุตจากคำสั่งบน solaris
ฉันมีสคริปต์ ksh ที่ต้องทำงานกับทั้ง linux และ solaris ฉันกำลังพยายามระบายสีผลลัพธ์ของคำสั่งเฉพาะ ใช้งานได้กับ linux (โดยเฉพาะ RHEL6) แต่ไม่ใช้กับ Solaris (SunOS 5.10) คำสั่งบน linux (ผลลัพธ์ "test" เป็นสีแดงที่ถูกต้อง): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test คำสั่งเกี่ยวกับโซลาริส (ผลลัพธ์ "การทดสอบ" ไม่มีสี) [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m มีวิธีการสร้างคำสั่งนี้ว่าเอาท์พุทเป็นสีแดงโดยไม่ต้องรหัสดิบในการส่งออก? ฉันไม่สามารถเปลี่ยนคำสั่ง 'echo' ได้เพราะนั่นเป็นเพียงการกรอกคำสั่งที่ฉันใช้อยู่



3
ลบไฟล์ทั้งหมดที่สร้างขึ้นก่อนวันที่กำหนด
ฉันมีไดเรกทอรีที่มีไฟล์จำนวนมาก (เช่นบันทึกสำหรับทุกวันของปี) ฉันต้องการลบไฟล์ทั้งหมดที่สร้างขึ้นก่อนหน้านี้ว่า 22/11 ฉันจะบรรลุสิ่งนั้นได้อย่างไร ฉันจะต้องใช้findexec แล้ว-rmหรือไม่ ฉันใช้ ksh
26 shell  files  find  ksh 

2
มีปัญหากับเครื่องหมายขีดคั่นในฟังก์ชันนามแฝงและไฟล์เรียกทำงานหรือไม่?
ในการทดสอบของฉัน (ใน Bash และ Z Shell) ฉันไม่เห็นปัญหาเกี่ยวกับการกำหนดฟังก์ชั่นหรือชื่อแทนหรือสคริปต์เชลล์ปฏิบัติการที่มียัติภังค์ในชื่อ แต่ฉันไม่มั่นใจว่าสิ่งนี้จะใช้ได้ในทุกเชลล์และทุกกรณี . เหตุผลที่ฉันต้องการทำเช่นนี้ก็คือยัติภังค์พิมพ์ได้ง่ายกว่าขีดล่างและเร็วกว่าและราบรื่นกว่า เหตุผลหนึ่งที่ฉันลังเลที่จะเชื่อว่ามันไม่ใช่ปัญหาคือในบางภาษา (ตัวอย่างเช่นทับทิม) ยัติภังค์จะถูกตีความว่าเป็นเครื่องหมายลบแม้ไม่มีที่ว่างรอบ ๆ มันจะไม่แปลกใจเลยถ้าบางสิ่งเช่นนี้อาจเกิดขึ้นในหอยบางตัวซึ่งยัติภังค์ถูกตีความว่าเป็นการส่งสัญญาณตัวเลือกแม้ไม่มีพื้นที่ อีกเหตุผลที่ฉันสงสัยอยู่เล็กน้อยว่าตัวแก้ไขข้อความของฉันทำให้ไวยากรณ์ที่เน้นสำหรับฟังก์ชันกับยัติภังค์เพิ่มขึ้น (แต่แน่นอนว่าเป็นไปได้ทั้งหมดที่เป็นเพียงข้อบกพร่องในการเน้นการกำหนดค่าไวยากรณ์สำหรับเชลล์สคริปต์) มีเหตุผลใดที่จะหลีกเลี่ยงยัติภังค์หรือไม่?
25 bash  shell  zsh  ksh  csh 

4
การเรียกใช้งานฟังก์ชั่นที่ผู้ใช้กำหนดในการค้นหา -exec call
ฉันใช้ Solaris 10 และฉันได้ทดสอบสิ่งต่อไปนี้ด้วย ksh (88), bash (3.00) และ zsh (4.2.1) รหัสต่อไปนี้ไม่ได้ให้ผลลัพธ์ใด ๆ : function foo { echo "Hello World" } find somedir -exec foo \; การค้นหาไม่ตรงกับหลายไฟล์ (ดังแสดงโดยแทนที่-exec ...ด้วย-print) และฟังก์ชั่นการทำงานอย่างสมบูรณ์แบบเมื่อถูกเรียกออกไปข้างนอกจากการfindโทร นี่คือสิ่งที่man findหน้าพูดเกี่ยวกับ-exec: คำสั่ง -exec จริงถ้าคำสั่งดำเนินการส่งกลับ ค่าศูนย์เป็นสถานะออก จุดจบของ คำสั่งจะต้องคั่นด้วยการหลบหนี อัฒภาค (;) อาร์กิวเมนต์คำสั่ง {} คือ แทนที่ด้วยชื่อพา ธ ปัจจุบัน หากว่า อาร์กิวเมนต์สุดท้ายของ -exec คือ …

6
วิธีรับการตอบกลับจาก URL ใด ๆ
ฉันถูกขอให้เขียนเชลล์สคริปต์เพื่อตรวจสอบว่า URL เป็น UP / ทำงานหรือไม่สำหรับโครงการของฉัน ฉันพยายามค้นหาคำแนะนำทางอินเทอร์เน็ต แต่สิ่งที่ฉันได้รับคือการตรวจสอบว่ามี URL อยู่หรือไม่ wgetครั้งแรกที่ผมพยายามกับ wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^ /' if [ $? -ne 0 ] then echo "Server is UP" else echo "Server is down" fi curlพยายามต่อไปของฉันอยู่กับ curl -ivs https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html# if [ $? -ne 0 ] then echo "Server …

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