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

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

3
ฉันจะยกเลิกการตั้งค่าหรือกำจัดฟังก์ชั่นทุบตีได้อย่างไร
หากคุณตั้งค่าหรือส่งออกตัวแปรสภาพแวดล้อมใน bash คุณสามารถยกเลิกการตั้งค่าได้ หากคุณตั้งค่านามแฝงเป็น bash คุณสามารถยกเลิกการตั้งชื่อแทนได้ แต่มีไม่ดูเหมือนจะเป็นunfunction ลองพิจารณาฟังก์ชั่นทุบตีนี้ (เล็กน้อย) เช่นตั้งค่าในไฟล์. bash_aliasesและอ่านเมื่อเริ่มต้นเชลล์ function foo () { echo "bar" ; } ฉันจะล้างคำจำกัดความของฟังก์ชั่นนี้จากเชลล์ปัจจุบันได้อย่างไร? (การเปลี่ยนไฟล์เริ่มต้นหรือการรีสตาร์ทเชลล์จะไม่นับ)

1
วิธีการย้อนกลับหรือส่งต่อคำในสภาพแวดล้อมการทุบตี? [ซ้ำ]
ซ้ำเป็นไปได้: ฉันจะย้ายไปรอบ ๆ bash commandline ได้อย่างมีประสิทธิภาพได้อย่างไร ในการ Windows พรอมต์หนึ่งสามารถกลับไปหรือไปข้างหน้าหนึ่งคำโดยการกดและctrl <-/->สิ่งที่เทียบเท่าในสภาพแวดล้อมการทุบตี?

3
ฉันจะเพิ่มคำสั่งในประวัติ Bash โดยไม่ต้องดำเนินการได้อย่างไร
ทุกขณะนี้จะเป็นประโยชน์ในการเพิ่มคำสั่งลงในประวัติใน Bash โดยไม่ต้องดำเนินการใด ๆ จนถึงตอนนี้สิ่งที่ฉันได้พบคือการเพิ่ม#ด้านหน้าและการตีกลับ มีวิธีที่ดีกว่านี้ไหม?

5
วิธีรันคำสั่งหลังจากที่รันไปแล้วคำสั่งที่มีอยู่เสร็จสิ้นแล้ว?
ถ้าฉันเริ่มต้นสคริปต์ที่จะใช้เวลานานฉันก็จะตระหนักถึงมันอย่างหลีกเลี่ยงไม่ได้หลังจากที่ฉันเริ่มสคริปต์และหวังว่าฉันจะมีวิธีเตือนบางอย่างเมื่อมันเสร็จสิ้น ตัวอย่างเช่นถ้าฉันวิ่ง: really_long_script.sh และกด Enter ... ฉันจะเรียกใช้คำสั่งอื่นได้อย่างไรเมื่อมันเสร็จสิ้น?
32 linux  bash  terminal 

7
จะรีสตาร์ทกระบวนการพื้นหลัง linux โดยอัตโนมัติได้อย่างไรหากล้มเหลว?
ฉันมีกระบวนการที่ดำเนินการโดยสคริปต์ init.d บนพื้นหลัง เช่น: case "$1" in start) /bin/myprocess & stop) killall myprocess restart) killall myprocess /bin/myprocess & esac ในบางเงื่อนไข myprocess สามารถล้มเหลวและส่งคืนได้ มีวิธีใด (มาตรฐาน) ในการตรวจสอบความล้มเหลวและเริ่มต้นใหม่โดยอัตโนมัติหรือไม่?
32 linux  bash  process  daemon 

6
วิธีการพิมพ์ไฟล์ที่จะมีการเปลี่ยนแปลงโดยใช้ rsync?
มีวิธีรับ rsync เพื่อพิมพ์พา ธ แบบเต็มไปยังไฟล์ทั้งหมดที่แตกต่างกันหรือไม่โดยไม่ต้องโอนไฟล์จริง ๆ ? หรือฉันต้องการวิธีที่จะกระจายไฟล์ข้ามต้นไม้สองต้น (เหนือ SSH) ตามการเปลี่ยนแปลงของขนาดหรือเวลาที่แก้ไขครั้งล่าสุดเท่านั้น
32 linux  bash  rsync  diff 

3
ความคิดเห็นในคำสั่ง bash แบบหลายบรรทัด
ไฟล์สคริปต์ BASH คำสั่งเดียวนี้ยากที่จะเข้าใจดังนั้นฉันต้องการเขียนความคิดเห็นสำหรับการกระทำแต่ละอย่าง: echo 'foo' \ | sed 's/d/a/' \ | sed 's/e/b/' \ | sed 's/f/c/' \ > myfile (sed เป็นเพียงตัวอย่างจริง ๆ แล้วมันเป็นส่วนผสมของ greps และ trs และ awks) ฉันเกลียดที่จะต้องทำซ้ำบรรทัดหรือให้แต่ละข้อคิดเห็นอยู่ห่างจากบรรทัดที่ใช้กับ แต่ในเวลาเดียวกัน BASH ดูเหมือนจะไม่อนุญาตให้แสดงความคิดเห็น "ในบรรทัด" มีวิธีที่สวยงามในการแก้ปัญหานี้หรือไม่?
32 bash  pipe  comments  sh 

8
คัดลอกไฟล์ใน Linux หลีกเลี่ยงการคัดลอกหากไฟล์มีอยู่ในปลายทาง
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Super User อพยพ 9 ปีที่ผ่านมา ฉันต้องการคัดลอกโฟลเดอร์ / home / user จากฮาร์ดดิสก์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง มันมี 100,000 ไฟล์และขนาดประมาณ 10G ฉันใช้ cp -r /origin /destination บางครั้งฉันได้รับข้อผิดพลาดเนื่องจากลิงค์เสียสิทธิ์และอื่น ๆ ดังนั้นฉันจะแก้ไขข้อผิดพลาดและต้องเริ่มการคัดลอกอีกครั้ง ฉันสงสัยว่าฉันจะบอกคำสั่ง "cp" ได้อย่างไรเมื่อพยายามคัดลอกอีกครั้งไม่คัดลอกไฟล์อีกครั้งหากมีอยู่ในโฟลเดอร์ปลายทาง
32 linux  bash 

6
รันส่วนหนึ่งของสคริปต์ทุบตีในฐานะผู้ใช้อื่น
มีวิธีที่จะทำให้ส่วนหนึ่งของสคริปต์ทำงานในฐานะผู้ใช้อื่น (ไม่ใช่รูท) หรือไม่? หากช่วยได้ส่วนที่จะเรียกใช้ในฐานะผู้ใช้อื่นจะเกิดขึ้นที่ส่วนท้ายของสคริปต์ แก้ไข: ระบบปฏิบัติการ - & gt; Ubuntu 9.04
31 linux  bash  user 

1
มีวิธีในการทำให้แท็บ Bash เป็นมิตรมากขึ้นหรือไม่
ฉันใช้ทุบตีทั้ง Mac ของฉันและเป็นเปลือก cygwin ของฉัน โดยรวมแล้วฉันค่อนข้างพอใจกับมันมาก ข้อร้องเรียนอย่างหนึ่งของฉันคือว่าความสำเร็จของ TAB นั้นไม่ดีเท่า Windows Command Line TAB ที่สมบูรณ์ ตัวอย่างเช่นหากมีสองไฟล์ที่มีคำนำหน้าเหมือนกันแล้วทุบตีเพียงแค่ส่งเสียงบี๊บที่ฉันเมื่อฉันพยายามที่จะ TAB สมบูรณ์ หากฉันยังคงเก่ง TAB อยู่ท้ายที่สุดมันจะแสดงรายการของไฟล์ ฉันชอบที่ Windows จะวนรอบไฟล์ที่ต้องการในบรรทัดคำสั่งอย่างแน่นอน มีวิธีทุบตีการทำงานคล้ายกับ Windows Command Line ในเรื่องนี้หรือไม่? หากไม่มี (ฉันไม่ต้องการเปลี่ยนหอย) ฉันจะทำบางสิ่งบางอย่างเกี่ยวกับ TAB ให้สมบูรณ์ในการทุบตีหรือไม่ มีวิธีใช้ที่มีประสิทธิภาพมากกว่านี้หรือไม่?

2
ฉันจะรับอาร์กิวเมนต์ที่เฉพาะเจาะจงจากคำสั่งก่อนหน้าในทุบตีได้อย่างไร
ใน bash คุณสามารถใช้!*เพื่อรับอาร์กิวเมนต์ทั้งหมดจากคำสั่งก่อนหน้า ตัวอย่างเช่นถ้าคุณทำcp /some/path /some/other/pathแล้วไม่ได้ทำคำสั่งที่สองจะขยายได้ถึงmv !*mv /some/path /some/other/path มีอะไรเช่นนี้ที่สามารถใช้ในการเข้าถึงอาร์กิวเมนต์ที่เฉพาะเจาะจงจากคำสั่งแทนทั้งหมดหรือไม่


5
Linux: คัดลอกไฟล์ทั้งหมดที่ตรงกับรูปแบบจาก dir และส่วนย่อยลงใน dir เดียว
หากฉันต้องการคัดลอก*.soไฟล์ทั้งหมดจากsrcไปยังdstฉันจะทำ: cp src/*.so dst แต่ผมต้องการที่จะคัดลอก*.soไฟล์จาก src และมันเป็น subdirsdstเข้า เบาะแสใด ๆ
31 linux  bash 


8
bash: วิธีการส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งที่มีอักขระพิเศษ
ฉันได้เขียนโปรแกรม linux programที่ต้องการนิพจน์ทั่วไปเป็นอินพุต ฉันต้องการเรียกโปรแกรมในbashเชลล์และส่งนิพจน์ปกตินั้นเป็นอาร์กิวเมนต์บรรทัดคำสั่งไปยังโปรแกรม (นอกจากนี้ยังมีอาร์กิวเมนต์บรรทัดคำสั่งอื่น ๆ ) การแสดงออกปกติทั่วไปดูเหมือนว่า [abc]\_[x|y] แต่น่าเสียดายที่ตัวละคร[, ]และมีอักขระพิเศษใน| bashดังนั้นการโทร program [abc]\_[x|y] anotheragument ไม่ทำงาน มีวิธีส่งผ่านนิพจน์โดยใช้อักขระ escape หรือเครื่องหมายอัญประกาศเป็นต้น (การโทรprogram "[abc]\_[x|y] anotheragument"ไม่ทำงานอย่างใดอย่างหนึ่งเนื่องจากมันตีความสองข้อโต้แย้งเป็นหนึ่ง)

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