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

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

3
คัดลอกรายการไฟล์
list.txtฉันมีรายชื่อของไฟล์คั่นด้วยช่องว่างในแฟ้ม ฉันต้องการคัดลอกไปยังโฟลเดอร์ใหม่ ฉันพยายามทำ: cp `cat list.txt` new_folder แต่มันไม่ทำงาน คุณจะทำอย่างไร ปรับปรุง: ขอบคุณสำหรับคำตอบที่น่าสนใจทั้งหมดของคุณ ฉันไม่ได้ขออะไรมากมาย :) หลังจากลองวิธีแก้ปัญหาข้างต้นเป็นครั้งที่สองดูเหมือนว่าจะcpพิมพ์วิธีใช้เนื่องจากโฟลเดอร์new_folderยังไม่มีอยู่! ขออภัยดูเหมือนว่าจะเป็นข้อผิดพลาดที่โง่ ... เมื่อฉันสร้างโฟลเดอร์มาก่อนมันใช้งานได้ อย่างไรก็ตามฉันได้เรียนรู้มากมายจากคำตอบและวิธีแก้ปัญหาทั้งหมดของคุณขอบคุณสำหรับเวลาที่คุณเขียน
35 bash  unix  cp 

4
เลิกทำการแยกไฟล์ tar ออก
ฉันไม่ได้เก็บถาวรที่สร้างความยุ่งเหยิงของไฟล์ลงในไดเรกทอรีที่เป็นระเบียบของฉัน ตัวอย่างเช่น: user@comp:~/tidy$ tar xvf myarchive.tar file1 file2 dir1/ dir1/file1 dir1/subdir1/ dir1/subdir1/file1 dir2/ dir2/file1 ... ฉันคาดหวังว่าไฟล์ tar จะถูกจัดระเบียบในโฟลเดอร์เดียว (เช่นmyarchive/) แต่มันไม่ได้! ตอนนี้ฉันมีไฟล์และไดเร็กตอรี่ถึง 190 ไฟล์ที่มีการปิดบังแบบดิจิทัลในสิ่งที่เป็นไดเรกทอรีที่จัดระเบียบ ไฟล์ที่ไม่ได้จัดทำเหล่านี้จำเป็นต้องกำจัดให้หมด มีวิธีใดในการ "เลิกทำ" สิ่งนี้และลบไฟล์และไดเรกทอรีที่ดึงมาจากไฟล์เก็บถาวรนี้หรือไม่? ขอบคุณสำหรับคำตอบที่ดีเยี่ยมด้านล่าง โดยสรุปนี่คือสิ่งที่ใช้งานได้กับสองขั้นตอน (1) ลบไฟล์และ (2) ลบโครงสร้างไดเรกทอรีว่างในลำดับการบรรจุย้อนกลับ (เพื่อลบไดเรกทอรีด้านนอกก่อน): tar tf myarchive.tar | xargs -d'\n' rm tar tf myarchive.tar | tac | xargs -d'\n' rmdir …
34 linux  bash  tar  undo 

5
การทุบตีแท็บกำหนดเองเสร็จสิ้น
ฉันมียูทิลิตี้คอนโซลที่กำหนดเองcooltoolพร้อมรายการตัวเลือก fooOption barOption สิ่งที่ฉันควรทำเพื่อการเติมข้อความอัตโนมัติทุบตีสามารถที่ตัวเลือกโดยการกดที่tabสำคัญ? ฉันหมายถึงผู้ใช้ที่พิมพ์ $ ./cooltool foo_ tabจากนั้นกด และจากนั้น $ ./cooltool fooOption _ ปรากฏ
34 bash 

5
กำลังเขียนเอาต์พุต“ tail -f” ไปยังไฟล์อื่น
เป็นการต่อเนื่องจากโพสต์ล่าสุดของฉันที่ฉันได้ใช้grep & tail -fเพื่อค้นหาเหตุการณ์ "หายาก" ที่เกิดขึ้น ฉันต้องการบันทึกสิ่งนี้ในไฟล์อื่น ฉันได้ลองเลี้ยว tail -f log.txt | egrep 'WARN|ERROR' เข้าไป tail -f log.txt | egrep 'WARN|ERROR' | tee filtered_output.txt ไฟล์ถูกสร้างขึ้น แต่ไม่มีสิ่งใดบรรจุอยู่นี่เป็นปัญหาการแคชหรือไม่? ฉันจะได้รับการต่อท้ายผลลัพธ์ของหางของฉันไปยังไฟล์ใหม่ได้อย่างไร
34 bash  cygwin  grep  logging 

5
วิธีการขยาย * บนบรรทัดคำสั่ง Bash
ผมเข้าใจว่าถ้าคุณพิมพ์ls *มันจะขยายตัวจริงls a b cเมื่อปัจจุบันโดยตรงมีแฟ้มa, และbc ฉันสงสัยว่าถ้ามีวิธีขยายนี้ก่อนที่ฉันจะกด Enter คล้ายกับวิธีการทำงานของCtrl + Xหรือการทำงานของแท็บให้สมบูรณ์ ดังนั้นเพื่อให้ตัวเองชัดเจน $ ls * <press magic key> $ ls a b c ในทำนองเดียวกันกับ: $ ls ~/ <press tab> $ ls /home/username ฉันคิดว่าฉันเคยเห็นสิ่งนี้มาก่อน แต่ฉันอาจเข้าใจผิด


4
การป้องกันการทุบตีจากการแสดง“ เสร็จสิ้น” เมื่อคำสั่งพื้นหลังเสร็จสิ้นการดำเนินการ
ถ้าฉันใช้คำสั่งในพื้นหลังด้วย&เช่นนี้ sleep 2 & เมื่อคำสั่งเสร็จสิ้นฉันจะได้รับ "เสร็จสิ้น" ฉันจะหลีกเลี่ยงการเห็นข้อความ "เสร็จสิ้น" ได้อย่างไร?
34 bash 

2
แหล่งที่มาโดยบังเอิญ. bash_history
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Super User อพยพ 6 ปีที่แล้ว ในช่วงเวลาแห่งความสดใสฉันดำเนินการคำสั่ง source ~/.bash_historyในช่วงเวลาของความหมายที่ผมดำเนินการคำสั่งโชคดีที่คำสั่งส่วนใหญ่ใช้vimเพื่อแก้ไขไฟล์บางไฟล์ แต่มีคำสั่งที่น่ากลัวในประวัติของฉัน - การย้ายและลบไฟล์ที่มีพา ธ สัมพัทธ์ โชคดีที่ตอนนี้มันติดอยู่ใน vimเซสชั่น แต่ถ้าฉันหยุดหรือเลิกมันก็จะไปที่ถัดไป ไฟล์ประวัติมีความยาว 1,000 บรรทัด ฉันจะยกเลิกคำสั่งนี้หลังจากรีบูตเครื่องได้อย่างไร
34 bash 

3
วิธีใช้ 'sed' กับ piping
ฉันต้องการแทนที่สตริงที่ส่งออกจากgrepฉันมี: $ npm info webpack | grep version มันเอาท์พุทฉัน $ version: '2.1.0-beta.12', แต่ฉันต้องการ: $ 2.1.0-beta.12 ดังนั้นฉันคิดว่าฉันอาจประสบความสำเร็จในการใช้sedและแทนที่วัสดุพิมพ์ที่ไม่จำเป็น แต่นี่เป็นส่วนที่ยากสำหรับฉัน: $ npm info webpack | grep version: | sed s/version: / sed: -e expression #1, char 10: unterminated `s' command จะบรรลุเป้าหมายได้อย่างไร
34 bash  grep  sed 

12
ฉันจะลบไฟล์ใน Linux ที่ชื่อดูเหมือนว่าเป็นเครื่องหมายยัติภังค์เท่านั้นเช่นเดียวกับ“ -”
ฉันได้พยายาม rm -- - rm "-" rm "\-" rm \- ยิง Perl ให้ ~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `rm $junk`;' - rm: cannot remove `-': No such file or directory ...และ... ~$ perl -e '$junk = glob("-"); chomp $junk; print "$junk\n"; `mv $junk newfile.garbage`;' - …
33 linux  perl  bash 

10
วิธีค้นหาไดเรกทอรีที่ใหญ่ที่สุดหรือไฟล์ที่ใหญ่ที่สุด [ซ้ำ]
คำถามนี้มีคำตอบอยู่ที่นี่แล้ว: ยูทิลิตี้ Linux สำหรับค้นหาไฟล์ / ไดเรกทอรีที่ใหญ่ที่สุด [ปิด] 16 คำตอบ ภายใต้ Linux ฉันกำลังมองหาคำสั่งเพื่อแสดงรายการไฟล์ที่ใหญ่ที่สุดและ / หรือไดเรกทอรีที่ใหญ่ที่สุดภายใต้ไดเรกทอรี

6
วิธีที่จะทำให้ทุบตีไม่ห่อผลลัพธ์?
เมื่อใดก็ตามที่คำสั่งบางคำสร้างบรรทัดที่ยาวเป็นเอาต์พุต (ตัวอย่างเช่นเมื่อls -lโฟลเดอร์ที่มีไฟล์ที่มีชื่อยาว) บรรทัดที่ยาวจะถูกรวมไว้ที่บรรทัดถัดไปดังนั้นจึงทำให้โครงสร้างคอลัมน์ยุ่งเหยิง มีวิธีหลีกเลี่ยงสิ่งนี้หรือไม่? มีบางอย่างคล้ายกับตัวเลือกกลุ่ม 'nowrap' ปรับปรุง ฉันสังเกตเห็นปัญหากับคำตอบที่ยอมรับ: ถ้าฉันทำนามแฝงเช่น: alias ll="tput rmam; ls -l; tput smam" แล้วลอง grep มันออก: ll | grep foo มันจะยังคงพิมพ์ไฟล์ทั้งหมดเช่นโดยไม่ต้อง grep วิธีแก้ปัญหาที่ฉันพบคือใส่วงเล็บไปทั่วนามแฝงทั้งหมด: alias ll="(tput rmam; ls -l; tput smam)"

10
sha1sum สำหรับไดเรกทอรีของไดเรกทอรี
sha1sum ./path/to/directory/* | sha1sum ข้างต้นถูกโพสต์เป็นวิธีการคำนวณ sha1sum ของไดเรกทอรีที่มีไฟล์ คำสั่งนี้ล้มเหลวหากไดเรกทอรีมีไดเรกทอรีเพิ่มเติม มีวิธีในการคำนวณ sha1sum ของไดเรกทอรีของไดเรกทอรีซ้ำ ๆ (โดยไม่ต้องปรับแต่งอัลกอริทึมให้เหมาะสมกับไดเรกทอรีที่ต้องการ) หรือไม่?
33 bash  hashing 

6
ประวัติทุบตีไม่ได้เก็บไว้ระหว่างเซสชันเทอร์มินัลบน Mac
ประวัติทุบตีของฉันหยุดทำงานอย่างลึกลับและฉันไม่รู้ว่าจะแก้ไขได้อย่างไร นี่คือสิ่งที่. bashrc ของฉันดูเหมือนว่า: HISTSIZE=500 HISTFILESIZE=500 HISTFILE=$HOME/.bash_history แต่เมื่อฉันใช้มันพิมพ์ออกecho $HISTFILE/Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew ฉันเป็นเจ้าของไฟล์. bash_history ดังนั้นฉันจึงไม่แน่ใจว่าจะแก้ไขปัญหานี้อย่างไร ขอบคุณ!
33 macos  bash  unix  terminal  history 

7
ฉันสามารถทำคณิตศาสตร์พื้นฐานใน Bash ได้หรือไม่?
ฉันสงสัยว่าเป็นไปได้ไหมที่จะทำคณิตศาสตร์อย่างง่ายในการทุบตี? ฉันคิดอะไรบางอย่างเช่น = 25-5 จะพิมพ์ออกมา 20 หรือบางสิ่งบางอย่าง สามารถทำได้อย่างง่ายดาย? ขอขอบคุณ
33 bash  ssh 

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