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

Bash เป็นเชลล์ฟรีสำหรับระบบปฏิบัติการยูนิกซ์จากโครงการ GNU

11
ควรใช้ Bash เมื่อใดและเมื่อใดควรใช้ Perl / Python / Ruby [ปิด]
เรากำลังเขียนสคริปต์ทั้งหมดของเรากับ Bash จนถึงตอนนี้ แต่ฉันเริ่มรู้สึกโง่เล็กน้อยเกี่ยวกับเรื่องนี้ แน่นอนว่าเราสามารถทำทุกอย่างที่เราต้องการด้วย Bash (มันค่อนข้างทรงพลัง) ฉันเริ่มสงสัยว่าเราไม่ควรใช้ภาษาสคริปต์ที่เหมาะสม (ในกรณีของเราคือ Ruby ที่สุด) คุณตัดสินใจอย่างไรเมื่อใช้ Perl / Python / Ruby ผ่าน Bash สำหรับสคริปต์ ฉันไม่คิดว่าสคริปต์เริ่มต้นที่ใช้ Ruby มีเหตุผล แต่ใช้เวลานานกว่าสคริปต์เล็กน้อยที่เพิ่มบัญชีอีเมล
78 linux  bash  script  perl  ruby 

3
คัดลอกไดเรกทอรีบน Unix
ฉันจะคัดลอกโครงสร้างไดเรกทอรี dir1, ไปยัง dir2, (พร้อมไดเรกทอรีย่อยทั้งหมด) บน Unix โดยใช้หน้าต่างเทอร์มินัลได้อย่างไร?
78 unix  bash  terminal 

9
tar: การออกจากสถานะความล้มเหลวเนื่องจากข้อผิดพลาดก่อนหน้า
ฉันได้เขียนสคริปต์เล็กน้อยที่จะตรวจสอบและบีบอัดรายการไดเรกทอรี + ไฟล์ สคริปต์ดูเหมือนว่าจะทำงานได้อย่างประสบความสำเร็จซึ่งไฟล์. tar.gz ที่ใช้งานได้จะถูกสร้างขึ้นหลังจากสคริปต์ทำงาน อย่างไรก็ตามฉันได้รับข้อความที่น่ารำคาญหลังจากสคริปต์เสร็จสิ้น: tar: การออกจากสถานะความล้มเหลวเนื่องจากข้อผิดพลาดก่อนหน้า ฉันไม่เห็นข้อความแสดงข้อผิดพลาดใด ๆ ในขณะที่สคริปต์ทำงานอยู่และอย่างที่ฉันบอกไว้ไฟล์ที่สร้างขึ้นสามารถคลายการบีบอัดได้โดยไม่มีคำเตือน / ข้อผิดพลาด เนื่องจากฉันใช้สิ่งนี้เป็นส่วนหนึ่งของการสำรองข้อมูลของฉันฉันต้องการตรวจสอบให้แน่ใจว่าฉันไม่ได้สนใจสิ่งที่ร้ายแรง อะไรคือสาเหตุที่เป็นไปได้ที่ข้อความข้อผิดพลาด / คำเตือนนี้ถูกสร้างขึ้น - และฉันสามารถเพิกเฉยได้อย่างปลอดภัยหรือไม่? หากฉันไม่สามารถเพิกเฉยมันขั้นตอนในการวินิจฉัยและแก้ไขข้อผิดพลาดคืออะไร? ฉันกำลังใช้งาน Ubuntu 10.0.4
78 ubuntu  bash  tar  gzip 


4
ทำไมคุณถึงต้องการ `cat / dev / null> / var / log / messages`
ในหน้าตัวอย่างสคริปต์ทุบตีผู้เขียนนำเสนอสคริปต์นี้: # Cleanup # Run as root, of course. cd /var/log cat /dev/null > messages cat /dev/null > wtmp echo "Log files cleaned up." ทำไมคุณต้องcat /dev/nullทำอะไร ฉันไม่เข้าใจสิ่งที่ตั้งใจไว้ที่นี่ (มันใช้while TRUE; sleep 1; elihwเพื่อ{some busy program}อะไร) แต่ผู้เขียนเรียกมันว่า“ ไม่มีอะไรผิดปกติ”
77 linux  bash 

2
Homebrew สามารถพิมพ์เหยือกเบียร์ใน Terminal ได้อย่างไร
Homebrew มีเคล็ดลับง่ายๆในการพิมพ์ไอคอนเล็ก ๆ ถัดจากผลลัพธ์ แบบนี้: หากฉันคัดลอกวางไอคอนด้วยตนเองแล้วกด Enter ฉันจะได้รับผล: -bash: $'?\237\215?': command not found และถ้าผมลองกับechoหรือฉันเพียงแค่printf get ????เหมือนกันถ้าฉันหนีคำพูดและ$s ทั้งหมด editron:~ stib$ echo $'?\237\215?' ???? ดังนั้นพวกเขาจะทำอย่างไร อักขระคาถา$'?\237\215?'หมายถึงอะไร?

5
Mac OS X .bashrc ไม่ทำงาน
ฉันมี.bashrcไฟล์หนึ่งบรรทัดในโฮมไดเร็กตอรี่ของฉัน: alias countlines='find . -type f -print0 | xargs -0 cat | wc -l' แต่มันไม่ได้สร้างนามแฝง ทำไมจึงเป็นเช่นนั้น
77 macos  bash  bashrc 


6
ฉันจะดำเนินการคำสั่งในโฟลเดอร์อื่นโดยไม่ต้องทำเส้นทางโฟลเดอร์ซ้ำได้อย่างไร
มีวิธีที่ชาญฉลาดในการทำสำเนาและย้ายการดำเนินการหรือคำสั่งเพื่อทำซ้ำไฟล์โดยไม่ต้องทำ a หลังจากcdนั้นmvในโฟลเดอร์เดียวกันหรือไม่? ตัวอย่างเช่นฉันต้องเรียกใช้ต่อไปนี้: mv /folder1/folder2/folder3/file.txt /folder1/folder2/folder3/file-2013.txt โปรดทราบว่าไดเรกทอรีที่ฉันกำลังย้ายไฟล์เหมือนกัน แต่ฉันต้องใส่เส้นทางทั้งหมดอีกครั้งและบางครั้งก็น่ารำคาญ ฉันอยากรู้ว่ามีวิธีอื่นในการทำเช่นนั้นโดยไม่ต้องใส่เส้นทางทั้งหมดอีกครั้งเพราะการดำเนินการจะทำในเส้นทางเดียวกัน



3
rm -rf ติดตามลิงก์สัญลักษณ์หรือไม่
ฉันมีไดเรกทอรีเช่นนี้: $ ls -l total 899166 drwxr-xr-x 12 me scicomp 324 Jan 24 13:47 data -rw-r--r-- 1 me scicomp 84188 Jan 24 13:47 lod-thin-1.000000-0.010000-0.030000.rda drwxr-xr-x 2 me scicomp 808 Jan 24 13:47 log lrwxrwxrwx 1 me scicomp 17 Jan 25 09:41 msg -> /home/me/msg rm -rและฉันต้องการที่จะลบออกไปโดยใช้ อย่างไรก็ตามฉันกลัวrm -rจะติดตาม symlink และลบทุกอย่างในไดเรกทอรีนั้น …
72 linux  bash  unix  symbolic-link  rm 


7
แสดงชื่อไดเรกทอรีปัจจุบันเท่านั้น (ไม่ใช่เส้นทางแบบเต็ม) เมื่อแจ้ง bash
วิธีที่ bash prompt ของฉันได้รับการกำหนดค่าในปัจจุบันมันแสดงเส้นทางทั้งหมดไปยังไดเรกทอรีปัจจุบัน สิ่งนี้น่ารำคาญเมื่อฉันอยู่ลึกเข้าไปในแผนผังไดเรกทอรีเนื่องจากพรอมต์กลายเป็นเวลานานจนทุกคำสั่งห่อหุ้มในบรรทัดถัดไป ฉันจะทำให้มันแสดงเฉพาะส่วนสุดท้ายของเส้นทางได้อย่างไร นี่คือสิ่งที่ฉันมีใน.bashrc: PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"' ;; *) ;; esac

6
วิธีเก็บเฉพาะทุก ๆ บรรทัดของไฟล์
ฉันมีไฟล์ CSV ที่มีขนาดค่อนข้างใหญ่ (75MB) ฉันแค่พยายามสร้างกราฟของมันดังนั้นฉันจึงไม่ต้องการข้อมูลทั้งหมด Rewording: ฉันต้องการลบ n บรรทัดจากนั้นเก็บหนึ่งบรรทัดจากนั้นลบ n บรรทัดและอื่น ๆ ดังนั้นหากไฟล์มีลักษณะเช่นนี้: Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 และ n = 2 ดังนั้นผลลัพธ์จะเป็น: Line 3 Line 6 ดูเหมือนว่าsedจะสามารถทำสิ่งนี้ได้ แต่ฉันไม่สามารถหาวิธีได้ คำสั่ง bash เหมาะอย่างยิ่ง แต่ฉันเปิดรับการแก้ไขใด ๆ
71 bash 

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