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

คำว่า 'เชลล์' หมายถึงคลาสทั่วไปของล่ามคำสั่งแบบโต้ตอบตามข้อความซึ่งส่วนใหญ่มักเกี่ยวข้องกับระบบปฏิบัติการ Unix & Linux สำหรับคำถามเกี่ยวกับการเขียนสคริปต์เชลล์โปรดใช้แท็กเฉพาะเพิ่มเติมเช่น 'bash', 'powershell' หรือ 'ksh' หากไม่มีแท็กเฉพาะควรใช้วิธีแก้ปัญหาแบบพกพา (POSIX-compliant) แม้ว่าจะใช้ 'posix' เพิ่มเติมหรือ 'sh' แทนก็ตาม

10
คำสั่ง eval ใน Bash และการใช้งานทั่วไป
หลังจากอ่านหน้าคนทุบตีและเกี่ยวกับการโพสต์นี้ ฉันยังคงมีปัญหาในการเข้าใจสิ่งที่evalคำสั่งทำและสิ่งที่จะเป็นประโยชน์โดยทั่วไป ตัวอย่างเช่นถ้าเราทำ: bash$ set -- one two three # sets $1 $2 $3 bash$ echo $1 one bash$ n=1 bash$ echo ${$n} ## First attempt to echo $1 using brackets fails bash: ${$n}: bad substitution bash$ echo $($n) ## Second attempt to echo $1 using parentheses fails bash: 1: …
166 linux  bash  shell  scripting  eval 

13
ฉันจะใช้ Ruby สำหรับการเขียนสคริปต์เชลล์ได้อย่างไร
ฉันมีงานการเขียนสคริปต์เชลล์แบบง่าย ๆ ที่ฉันต้องการทำ ตัวอย่างเช่น: การเลือกไฟล์ในไดเรกทอรีการทำงานจากรายการไฟล์ที่ตรงกับนิพจน์ทั่วไป ฉันรู้ว่าฉันสามารถทำสิ่งนี้โดยใช้มาตรฐานทุบตีและ grep แต่ฉันจะดีสามารถแฮ็คสคริปต์อย่างรวดเร็วที่จะทำงานใน windows และ linux โดยไม่ต้องจำกองโปรแกรมบรรทัดคำสั่งและธงเป็นต้น ฉันพยายามทำสิ่งนี้ แต่จบลงด้วยความสับสนว่าฉันควรได้รับข้อมูลเช่นการอ้างอิงไปยังไดเรกทอรีปัจจุบัน ดังนั้นคำถามคือส่วนใดของไลบรารี่ Ruby ที่ฉันต้องรู้ในการเขียนเชลล์สคริป
165 ruby  shell  scripting 


20
ดึงการใช้งาน CPU และการใช้หน่วยความจำของกระบวนการเดียวบน Linux?
ฉันต้องการรับ CPU และการใช้หน่วยความจำของกระบวนการเดียวบน Linux - ฉันรู้จัก PID หวังว่าฉันจะได้รับทุก ๆ วินาทีและเขียนลงใน CSV โดยใช้คำสั่ง 'เฝ้าดู' ฉันสามารถใช้คำสั่งใดเพื่อรับข้อมูลนี้จากบรรทัดคำสั่ง Linux

6
การเปรียบเทียบสตริงใน bash [[: ไม่พบ
ฉันพยายามเปรียบเทียบสตริงในทุบตี ฉันได้พบคำตอบเกี่ยวกับวิธีการที่จะทำมันในStackOverflow ในสคริปต์ที่ฉันพยายามฉันใช้รหัสที่ส่งโดย Adam ในคำถามที่กล่าวถึง: #!/bin/bash string='My string'; if [[ "$string" == *My* ]] then echo "It's there!"; fi needle='y s' if [[ "$string" == *"$needle"* ]]; then echo "haystack '$string' contains needle '$needle'" fi ฉันได้ลองวิธีการจากubuntuforumsที่คุณสามารถหาได้ในโพสต์ที่ 2 if [[ $var =~ regexp ]]; then #do something fi ในทั้งสองกรณีฉันได้รับข้อผิดพลาด: [[: not …

12
ดูผลลัพธ์เต็มรูปแบบของคำสั่ง PS
เมื่อฉันรันps -auxคำสั่งบนเซิร์ฟเวอร์ linux ของฉันซึ่งฉันเชื่อมต่อโดยใช้ putty กระบวนการจำนวนน้อยเกินไปที่จะพอดีกับความกว้างหน้าต่างปัจจุบันของฉัน มีทางเลือกอื่นหรือไม่? - อัปเดต - ฉันขอโทษสำหรับการลดระดับฉันคิดว่าคนอื่นจะไม่พบคำตอบที่เป็นประโยชน์เช่นกันดังนั้นฉันจึงลดระดับ นี่คือข้อมูลที่คุณขอ hadoop-user@hadoop-desk:~$ echo $TERM xterm hadoop-user@hadoop-desk:~$ stty -a speed 38400 baud; rows 47; columns 158; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; …
163 linux  bash  shell  process 


22
ฉันจะลบบรรทัดใหม่ได้อย่างไรถ้าเป็นอักขระตัวสุดท้ายในไฟล์
ฉันมีไฟล์บางไฟล์ที่ฉันต้องการลบขึ้นบรรทัดใหม่หากเป็นอักขระตัวสุดท้ายในไฟล์ od -cแสดงให้ฉันเห็นว่าคำสั่งที่ฉันเรียกใช้นั้นเขียนไฟล์ด้วยการขึ้นบรรทัดใหม่: 0013600 n t > \n ฉันได้ลองเล่นเล่ห์เหลี่ยมเล็กน้อย แต่สิ่งที่ดีที่สุดที่ฉันคิดได้คือไม่ได้เล่นเล่ห์เหลี่ยม: sed -e '$s/\(.*\)\n$/\1/' abc ความคิดใด ๆ วิธีการทำเช่นนี้?
162 linux  perl  shell  awk  sed 

7
แปลงอาร์กิวเมนต์บรรทัดคำสั่งเป็นอาร์เรย์ใน Bash
ฉันจะแปลงอาร์กิวเมนต์บรรทัดคำสั่งเป็นอาร์เรย์สคริปต์ทุบตีได้อย่างไร ฉันต้องการสิ่งนี้: ./something.sh arg1 arg2 arg3 และแปลงเป็น myArray=( arg1 arg2 arg3 ) เพื่อให้ฉันสามารถใช้ myArray เพื่อใช้ในสคริปต์ต่อไป โพสต์ SO ก่อนหน้านี้ใกล้เข้ามา แต่ไม่ได้เข้าไปในวิธีการสร้างอาร์เรย์: ฉันจะแยกอาร์กิวเมนต์บรรทัดคำสั่งใน Bash ได้อย่างไร ฉันต้องการแปลงอาร์กิวเมนต์เป็นอาร์เรย์สคริปต์ทุบตีปกติ ฉันรู้ว่าฉันสามารถใช้ภาษาอื่น (Python เป็นต้น) แต่ต้องทำอย่างนี้ในการทุบตี ฉันเดาว่าฉันกำลังมองหาฟังก์ชั่น "ผนวก" หรืออะไรที่คล้ายกัน? อัปเดต: ฉันต้องการถามวิธีตรวจสอบข้อโต้แย้งที่เป็นศูนย์และกำหนดค่าอาร์เรย์เริ่มต้นและด้วยคำตอบด้านล่างทำให้สามารถใช้งานได้: if [ "$#" -eq 0 ]; then myArray=( defaultarg1 defaultarg2 ) else myArray=( "$@" ) fi
162 arrays  bash  shell 

10
วิธีการส่งข้อมูลไปยังคลิปบอร์ดท้องถิ่นจากเซสชัน SSH ระยะไกล
Borderline ServerFault คำถาม แต่ฉันกำลังเขียนโปรแกรมเชลล์สคริปดังนั้นฉันลองที่นี่ก่อน :) * nixes ส่วนใหญ่มีคำสั่งที่จะให้คุณไพพ์ / เปลี่ยนทิศทางเอาต์พุตไปยังโลคัลคลิปบอร์ด / วางบอร์ดและดึงจากเดียวกัน บน OS X คำสั่งเหล่านี้คือ pbcopy, pbpaste มีการทำซ้ำฟังก์ชันการทำงานนี้ในขณะที่ SSHed ไปยังเซิร์ฟเวอร์อื่นหรือไม่ นั่นคือ, ฉันกำลังใช้คอมพิวเตอร์ A. ฉันเปิดหน้าต่างเทอร์มินัล ฉัน SSH กับคอมพิวเตอร์ B ฉันเรียกใช้คำสั่งบนคอมพิวเตอร์ B เอาต์พุตของ Computer B ถูกเปลี่ยนเส้นทางหรือคัดลอกไปยังคลิปบอร์ดของ Computer A โดยอัตโนมัติ และใช่ฉันรู้ว่าฉันทำได้เพียงแค่ตัวสั่น (shudder) ใช้เมาส์เพื่อเลือกข้อความจากคำสั่ง แต่ฉันคุ้นเคยกับเวิร์กโฟลว์ของการส่งออก pipping โดยตรงไปยังคลิปบอร์ดที่ฉันต้องการเหมือนกันสำหรับเซสชันระยะไกลของฉัน รหัสมีประโยชน์ แต่วิธีการทั่วไปนั้นก็น่าชื่นชมเช่นกัน
161 linux  macos  unix  shell  clipboard 

9
วิธีลบบรรทัดที่ปรากฏในไฟล์ B จากไฟล์ A อื่น?
ฉันมีไฟล์ขนาดใหญ่A (ประกอบด้วยอีเมล) หนึ่งบรรทัดสำหรับแต่ละเมล ฉันยังมีไฟล์ Bอีกอันที่มีเมลอีกชุดหนึ่ง ฉันจะใช้คำสั่งใดเพื่อลบที่อยู่ทั้งหมดที่ปรากฏในไฟล์ B จากไฟล์ A ดังนั้นว่าไฟล์ที่มีอยู่: A B C และไฟล์ B บรรจุอยู่: B D E จากนั้นไฟล์ A ควรจะเหลือด้วย: A C ตอนนี้ฉันรู้ว่านี่เป็นคำถามที่อาจจะได้รับการถามบ่อยขึ้น แต่ผมพบว่าเพียงหนึ่งคำสั่งออนไลน์ที่ให้ฉันข้อผิดพลาดที่มีตัวคั่นที่ไม่ดี ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก! ใครบางคนจะมากับซับในที่ฉลาด แต่ฉันไม่ใช่ผู้เชี่ยวชาญเชลล์
160 linux  shell  sed  diff  grep 

9
กำลังดำเนินการ Shell Scripts จาก OS X Dock?
ฉันจะตั้งค่าเชลล์สคริปต์ให้ดำเนินการจาก Dock Mac OSX ได้อย่างไร ดูเหมือนว่าการสร้างทางลัดจะเป็นการเปิดไฟล์ในโปรแกรมแก้ไขของฉัน มีการตั้งค่าสถานะที่ฉันต้องการตั้งค่าบางแห่งเพื่อบอกให้เรียกใช้แทนที่จะเปิดเพื่อแก้ไขหรือไม่
160 macos  shell 

6
เหตุใด $$ จึงส่งคืนรหัสเดียวกันกับกระบวนการหลัก
ฉันมีปัญหากับ Bash และฉันไม่รู้ว่าทำไม ภายใต้เปลือกฉันป้อน: echo $$ ## print 2433 (echo $$) ## also print 2433 (./getpid) ## print 2602 "getpid" เป็นโปรแกรม C เพื่อรับ pid ปัจจุบันเช่น: int main() { printf("%d", (int)getpid()); return 0; } สิ่งที่ทำให้ฉันสับสนคือ: ฉันคิดว่า "(คำสั่ง)" เป็นกระบวนการย่อย (ฉันใช่มั้ย) และฉันคิดว่า pid ของมันควรจะแตกต่างจาก pid ของผู้ปกครอง แต่พวกเขาเหมือนกันทำไม ... เมื่อฉันใช้โปรแกรมของฉันเพื่อแสดง pid ระหว่างวงเล็บ, pid ที่มันแสดงนั้นแตกต่างกันใช่ไหม? …
160 bash  shell  pid  subshell 

12
วิธีการดีบักสคริปต์ทุบตี? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ มีวิธีการดีบักสคริปต์ทุบตีหรือไม่? เช่นบางอย่างที่พิมพ์บันทึกการดำเนินการเช่น "การโทรสาย 1", "การโทร 2 บรรทัด" เป็นต้น
159 bash  shell 

21
วิธีการดึงข้อมูลพา ธ สัมบูรณ์ที่สัมพันธ์กัน
มีคำสั่งให้ดึงเส้นทางสัมบูรณ์ที่กำหนดเส้นทางสัมพัทธ์หรือไม่? ตัวอย่างเช่นฉันต้องการ $ line มีเส้นทางที่แน่นอนของแต่ละไฟล์ใน dir ./etc/ find ./ -type f | while read line; do echo $line done
159 bash  shell  path  absolute 

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