Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

8
คำสั่ง shell เพื่อรับขนาดพิกเซลของรูปภาพ
มีคำสั่งเชลล์ที่ส่งคืนขนาดพิกเซลของรูปภาพหรือไม่ ฉันพยายามผลิต gif แบบเคลื่อนไหวโดยเริ่มจาก gif ต่าง ๆ ที่มีขนาดต่างกันโดยใช้convert(เช่นconvert -delay 50 1.gif 2.gif -loop 0 animated.gif) ปัญหาคือการแปลงภาพซ้อนทับโดยใช้ขนาดภาพแรกเป็นขนาดของภาพเคลื่อนไหว gif และเนื่องจากมีขนาดแตกต่างกันผลที่ได้คือความยุ่งเหยิงโดยมีบิตของเฟรมเก่าที่แสดงภายใต้ภาพใหม่

10
จะตรวจสอบได้อย่างไรว่าไพพ์นั้นว่างเปล่าและเรียกใช้คำสั่งกับข้อมูลหากไม่มีหรือไม่
ฉันไพพ์บรรทัดในสคริปต์ทุบตีและต้องการตรวจสอบว่าไพพ์มีข้อมูลหรือไม่ก่อนป้อนเข้าโปรแกรม กำลังค้นหาฉันพบtest -t 0แต่มันใช้งานไม่ได้ที่นี่ ส่งคืนค่าเท็จเสมอ ดังนั้นจะแน่ใจได้อย่างไรว่าท่อมีข้อมูลหรือไม่ ตัวอย่าง: echo "string" | [ -t 0 ] && echo "empty" || echo "fill" เอาท์พุท: fill echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill" เอาท์พุท: fill ซึ่งแตกต่างจากวิธีมาตรฐาน / มาตรฐานเพื่อทดสอบว่าก่อนหน้านี้ท่อที่ผลิตได้หรือไม่ อินพุตจะต้องเก็บรักษาไว้เพื่อส่งผ่านไปยังโปรแกรม นี่เป็นการสรุปวิธีการไพพ์เอาท์พุทจากโปรเซสหนึ่งไปยังอีกโปรเซสเท่านั้น ซึ่งมุ่งเน้นการส่งอีเมล
42 bash  shell  pipe 

4
ความแตกต่างระหว่าง / tmp และ / run คืออะไร
ตามที่FHS-3.0 , /tmpเป็นไฟล์ชั่วคราวและ/runสำหรับข้อมูลตัวแปรเวลาทำงาน ข้อมูล/runจะต้องลบที่บูตต่อไปซึ่งไม่จำเป็นสำหรับการ/tmpแต่ยังคงโปรแกรมจะต้องไม่คิดว่าข้อมูลใน/tmpจะสามารถใช้ได้ในช่วงเริ่มต้นโปรแกรมถัดไป ทั้งหมดนี้ดูเหมือนจะค่อนข้างคล้ายกับฉัน ดังนั้นความแตกต่างระหว่างสองคืออะไร เกณฑ์ใดที่โปรแกรมควรตัดสินใจว่าจะนำข้อมูลชั่วคราวไปไว้ใน/tmpหรือ/runไม่ ตามที่ FHS: โปรแกรมอาจมีไดเรกทอรีย่อยของ/run; สิ่งนี้ได้รับการสนับสนุนสำหรับโปรแกรมที่ใช้มากกว่าหนึ่งไฟล์รันไทม์ สิ่งนี้บ่งชี้ว่าความแตกต่างระหว่าง "โปรแกรมระบบ" และ "โปรแกรมทั่วไป" ไม่ใช่เงื่อนไขและไม่ใช่อายุการใช้งานของโปรแกรม (เช่นกระบวนการที่ใช้เวลานานและระยะสั้น) แม้ว่าจะไม่ได้ให้เหตุผลต่อไปนี้ใน FHS แต่/runก็ยังได้รับการแนะนำให้รู้จักกับปัญหาที่/varติดตั้งสายเกินไปดังนั้นจึงจำเป็นต้องมีลูกเล่นสกปรกเพื่อให้/var/runมีเร็วพอ แต่ตอนนี้มี/runการแนะนำและให้คำอธิบายใน FHS มีดูเหมือนจะไม่เป็นเหตุผลที่ชัดเจนที่จะมีทั้งและ/run/tmp
42 linux  files  filesystems  fhs 

9
ไม่สามารถหยุดสคริปต์ทุบตีด้วย Ctrl + C
ฉันเขียนสคริปต์ทุบตีง่าย ๆ ด้วยวนสำหรับพิมพ์วันที่และ ping ไปยังเครื่องระยะไกล: #!/bin/bash while true; do # *** DATE: Thu Sep 17 10:17:50 CEST 2015 *** echo -e "\n*** DATE:" `date` " ***"; echo "********************************************" ping -c5 $1; done เมื่อฉันเรียกใช้จากเทอร์มินัลฉันไม่สามารถหยุดมันCtrl+Cได้ ดูเหมือนว่าจะส่ง^Cไปยังเทอร์มินัล แต่สคริปต์ไม่หยุด MacAir:~ tomas$ ping-tester.bash www.google.com *** DATE: Thu Sep 17 23:58:42 CEST 2015 *** ******************************************** PING …
42 bash  terminal  signals 

4
การแชร์เดสก์ท็อปของคุณกับ Google แฮงเอาท์จอภาพสองจอและ GNOME Shell
ฉันมีแล็ปท็อปที่มีหน้าจอในตัวและจอภาพที่แนบมา เมื่อฉันเริ่มแฮงเอาท์วิดีโอของ Google และแชร์เดสก์ท็อปของฉันฉันต้องการที่จะแชร์เฉพาะหน้าจอที่แนบมา แต่ฉันไม่รู้ว่าจะทำอย่างไร ตอนนี้ฉันมีจอภาพสองจอ: LVDS1สอดคล้องกับหน้าจอแล็ปท็อปของฉันซึ่งกำหนดค่าเป็นหน้าจอรองและDP1เป็นหน้าจอหลักของฉัน แต่ปัญหายังคงอยู่หากฉันเปลี่ยนหน้าจอแล็ปท็อปเป็นหน้าจอหลัก $ xrandr Screen 0: minimum 320 x 200, current 3286 x 1468, maximum 8192 x 8192 LVDS1 connected 1366x768+1920+700 (normal left inverted right x axis y axis) 344mm x 194mm 1366x768 60.06*+ 1024x768 60.00 800x600 60.32 56.25 640x480 59.94 VGA1 disconnected (normal …

9
วิธีการเปลี่ยนชื่อไฟล์หลายไฟล์โดยแทนที่สตริงในชื่อไฟล์? สายนี้มี“ #”
https://serverfault.com/questions/70939/how-to-replace-a-text-string-in-multiple-files-in-linux https://serverfault.com/questions/228733/how-to-rename-multiple-files-by-replacing-word-in-file-name https://serverfault.com/questions/212153/replace-string-in-files-with-certain-file-extension https://serverfault.com/questions/33158/searching-a-number-of-files-for-a-string-in-linux บทความที่กล่าวถึงเหล่านี้ล้วนตอบคำถามของฉัน อย่างไรก็ตามไม่มีพวกเขาทำงานให้ฉัน ฉันสงสัยว่าเป็นเพราะสตริงที่ฉันพยายามแทนที่มีหมายเลขอยู่ มีวิธีพิเศษในการแก้ไขปัญหานี้หรือไม่? ฉันมีไฟล์รูปภาพที่มีéแทนที่ด้วย # U00a9 ระหว่างการย้ายข้อมูลไซต์ มีลักษณะเช่นนี้: Lucky-#U00a9NBC-80x60.jpg Lucky-#U00a9NBC-125x125.jpg Lucky-#U00a9NBC-150x150.jpg Lucky-#U00a9NBC-250x250.jpg Lucky-#U00a9NBC-282x232.jpg Lucky-#U00a9NBC-300x150.jpg Lucky-#U00a9NBC-300x200.jpg Lucky-#U00a9NBC-300x250.jpg Lucky-#U00a9NBC-360x240.jpg Lucky-#U00a9NBC-400x250.jpg Lucky-#U00a9NBC-430x270.jpg Lucky-#U00a9NBC-480x240.jpg Lucky-#U00a9NBC-600x240.jpg Lucky-#U00a9NBC-600x250.jpg Lucky-#U00a9NBC.jpg และฉันต้องการเปลี่ยนมันเป็นอย่างนี้: Lucky-safeNBC-80x60.jpg Lucky-safeNBC-125x125.jpg Lucky-safeNBC-150x150.jpg Lucky-safeNBC-250x250.jpg Lucky-safeNBC-282x232.jpg Lucky-safeNBC-300x150.jpg Lucky-safeNBC-300x200.jpg Lucky-safeNBC-300x250.jpg Lucky-safeNBC-360x240.jpg Lucky-safeNBC-400x250.jpg Lucky-safeNBC-430x270.jpg Lucky-safeNBC-480x240.jpg Lucky-safeNBC-600x240.jpg Lucky-safeNBC-600x250.jpg Lucky-safeNBC.jpg UPDATE: ตัวอย่างเหล่านี้ทั้งหมดเริ่มต้นด้วย "LU00a9ucky แต่นี่คือภาพจำนวนมากที่มีชื่อแตกต่างกันฉันแค่กำหนดเป้าหมายส่วน" # U00a9 …
42 sed  rename  mv 

7
ฉันจะคัดลอกหลายไฟล์ด้วยไวด์การ์ดได้อย่างไร
ฉันมีโฟลเดอร์ที่มีไฟล์จำนวนหนึ่งอยู่ในนั้น ABC. * (มีไฟล์ประมาณ 100 ไฟล์) ฉันต้องการคัดลอกไฟล์ทั้งหมดไปยังไฟล์ใหม่ด้วยชื่อที่ขึ้นต้นด้วย DEF * ดังนั้นฉันต้องการ ABC.Page1 ABC.Page2 ABC.Topic12 ...etc คัดลอกไปยัง DEF.Page1 DEF.Page2 DEF.Topic12 ...etc วิธีที่ง่ายที่สุดในการทำเช่นนี้กับคำสั่งแบทช์ (ใน BASH หรือคล้ายกัน) คืออะไร? ฉันกำลังคิดอะไรบางอย่างที่เกี่ยวข้องกับ sed หรือ awk หรือ xargs แต่ฉันมีปัญหาในการหาไวยากรณ์ ฉันสามารถเขียนสคริปต์ Python ได้ แต่ฉันคิดว่าอาจมีโซลูชันบรรทัดคำสั่งที่ไม่ซับซ้อนเกินไป

2
ขั้นตอนในการก้าวเข้าสู่ขั้นตอนและก้าวออกไปด้วย GDB ได้อย่างไร?
ฉันพิมพ์helpในขณะที่ฉันอยู่ใน GDB แต่ไม่พบอะไรเลยเกี่ยวกับการก้าวเข้าสู่การก้าวออกไปและการก้าวออก ฉันใส่เบรกพอยต์ในโปรแกรม Assembly ใน_start( break _start) หลังจากนั้นฉันพิมพ์nextและเสร็จสิ้นการดีบัก ฉันเดาว่ามันเป็นเพราะมันเสร็จแล้ว_startและไม่ได้เข้าร่วมอย่างที่ฉันต้องการ ใครก็ตามที่สามารถช่วยได้

7
sed สามารถแทนที่อักขระบรรทัดใหม่ได้หรือไม่
มีปัญหากับตัวละครใหม่และตัวละครใหม่หรือไม่? ฉันมีไฟล์ test.txt พร้อมเนื้อหาดังต่อไปนี้ aaaaa bbbbb ccccc ddddd ต่อไปนี้ใช้ไม่ได้: sed -r -i 's/\n/,/g' test.txt ฉันรู้ว่าฉันสามารถใช้trกับสิ่งนี้ได้ แต่คำถามของฉันคือทำไมมันดูเป็นไปไม่ได้เลยที่จะนั่งดู หากนี่คือผลข้างเคียงของการประมวลผลไฟล์ทีละบรรทัดฉันจะสนใจว่าทำไมสิ่งนี้จึงเกิดขึ้น ฉันคิดว่าgrepจะลบบรรทัดใหม่ sed ทำเช่นเดียวกันหรือไม่
42 sed 

1
การเชื่อมต่อกับ IP 0.0.0.0 สำเร็จ อย่างไร? ทำไม?
เราให้บริการพอร์ตบนโลคัลโฮสต์และต้องการเช็คอินกระบวนการอื่นหากพอร์ตพร้อมใช้งาน เนื่องจากข้อผิดพลาดในรหัสของเราเป็นจริงพยายามเชื่อมต่อกับ IP 0.0.0.0:<port>และด้วยเหตุผลบางอย่างมันประสบความสำเร็จ - เป็น strace พิสูจน์: [...] connect(3, {sa_family=AF_INET, sin_port=htons(10002), sin_addr=inet_addr("0.0.0.0")}, 16) = 0 [...] มันหมายความว่าอะไร? ทำไมมันทำงาน
41 networking  tcp  strace 

2
เปิดโหมดเมาส์ Tmux ไม่อนุญาตให้เลือกข้อความด้วยเมาส์
ฉันกำลังใช้tmux 2.1และพยายามเข้าสู่โหมดเมาส์ด้วย set -g mouse on และใช้งานได้ดีฉันสามารถสลับข้ามtmuxหน้าต่างแยกได้โดยคลิกที่หน้าต่างที่เหมาะสม แต่ข้อเสียของเรื่องนี้คือฉันไม่สามารถเลือกข้อความด้วยเมาส์ได้ นี่คือลักษณะ: อย่างที่คุณเห็นการเลือกกลายเป็นสีแดงเมื่อฉันกดปุ่มเม้าส์ค้างไว้และหายไปเมื่อฉันปล่อยปุ่ม หากไม่มีโหมดเมาส์เปิดใช้งาน "การเลือกด้วยเมาส์" ทำงานได้อย่างสมบูรณ์ มีวิธีแก้ไขบางอย่างเพื่อเปิดโหมดเมาส์และมีความสามารถในการเลือกข้อความหรือไม่?

1
Makefile นี้ทำให้โปรแกรม C โดยไม่ต้องระบุคอมไพเลอร์ได้อย่างไร
ผมก็ใช้ Makefile จากหนังสือ " การเขียนโปรแกรมขั้นสูงลินุกซ์ (2001)" [code] มันแปลกสำหรับฉันที่เห็นว่าGNU make ทำการคอมไพล์โค้ดอย่างถูกต้องโดยไม่ต้องระบุคอมไพเลอร์ใน Makefile มันเหมือนการอบไม่มีสูตรใด ๆ ! นี่เป็นรหัสขั้นต่ำ: test.c int main(){} Makefile all: test และทำให้ได้ผลจริง ๆ ! นี่คือคำสั่งที่รัน: cc test.c -o test ฉันไม่พบสิ่งที่มีประโยชน์ในเอกสาร เป็นไปได้อย่างไร? PS หมายเหตุเพิ่มเติมหนึ่ง: แม้ภาษาจะไม่ได้ระบุ; เพราะtest.cใช้ได้ GNU ใช้make ccหากมีอยู่test.cppหรือtest.cc(เมื่อไม่มีtest.c) ก็ใช้g++(และไม่c++)
41 linux  make  gcc  gnu-make 

2
อะไรคือความแตกต่างระหว่าง "tail -f" และ "tail -F"?
ฉันไม่เคยใช้tail -Fคำสั่งแทนใช้เสมอtail -fแต่มีคนบอกฉันว่า-Fดีกว่าโดยไม่มีคำอธิบายมากมาย ฉันค้นหาหน้าคนสำหรับคำสั่งหาง -f output appended data as the file grows; -F Same as --follow=name --retry --retry Keep trying to open a file even when it is or becomes inaccessible ง่ายต่อการเข้าใจสิ่งที่ต่ำกว่า-fทำ แต่ฉันไม่ทำตามสิ่งที่ตัวใหญ่-Fพยายามทำ ฉันขอขอบคุณบางคนที่สามารถอธิบายความแตกต่างให้ฉันได้
41 tail 

1
เหตุใดการเรียกระบบ kill ของ UNIX จึงเรียกว่า 'kill'
ฉันอยากรู้เกี่ยวกับประวัติของชื่อดูเหมือนว่าการเรียกระบบ 'ฆ่า' อาจมีชื่อว่า 'สัญญาณ' และการเรียกของระบบ 'สัญญาณ' อาจถูกตั้งชื่อว่า 'จัดการ' ฉันสงสัยว่าการใช้การเรียกใช้ระบบดั้งเดิมอาจเป็นเพียงการฆ่ากระบวนการอื่นและการใช้งานอาจขยายไปสู่กลไกการส่งสัญญาณทั่วไปมากขึ้นตามที่ระบบพัฒนาขึ้น - แต่นี่เป็นการคาดเดาในส่วนของฉัน มีใครรู้บ้าง
41 kill  history 

4
การค้นหาไฟล์ที่ใหญ่ที่สุดแบบเรียกซ้ำ
ฉันพยายามค้นหาไฟล์ที่ใหญ่ที่สุดในไดเรกทอรีแบบเรียกซ้ำ หากมีไดเรกทอรีย่อยในไดเรกทอรีนั้นฟังก์ชันนั้นจะต้องเข้าไปข้างในไดเรกทอรีนั้นและตรวจสอบว่ามีไฟล์ที่ใหญ่ที่สุดหรือไม่ เมื่อพบไฟล์ที่ใหญ่ที่สุดเอาต์พุตจะถูกแสดงด้วยชื่อพา ธ สัมพัทธ์และชื่อและขนาดของไฟล์ที่ใหญ่ที่สุด EX: dude@shell2 (~...assignment/solutions) % bash maxfile.sh ~/test class/asn dude.h.gch: 9481628 นี่คือสิ่งที่ฉันมี: #!/bin/sh clear recursiveS() { for d in *; do if [ -d $d ]; then (cd $d; echo $(pwd)/$line; du -a; recursiveS;) fi done } recursiveS ฉันติดขัดอยู่พักหนึ่งแล้ว ฉันไม่สามารถใช้สิ่งนี้ได้โดยการวางท่อจำนวนเครื่องมือ Unix ที่มีอยู่ ความคิดใด ๆ จะดี!

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