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

เชลล์เป็นอินเตอร์เฟสบรรทัดคำสั่งของ Unix คุณสามารถพิมพ์คำสั่งในเชลล์แบบโต้ตอบหรือเขียนสคริปต์เพื่อทำงานอัตโนมัติ ใช้แท็กนี้สำหรับคำถามที่ใช้กับ / bin / sh และเชลล์ที่เข้ากันได้มากที่สุด (ash, bash, ksh, zsh, …) สำหรับเชลล์สคริปต์ที่มีข้อผิดพลาดโปรดตรวจสอบใน http://shellcheck.net ก่อนโพสต์ที่นี่

8
ภาษาสคริปต์สากลสำหรับ Linux คืออะไร?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 7 ปีที่ผ่านมา เรากำลังเขียนสคริปต์สำหรับระบบ Linux มีการถกเถียงกันว่าภาษาสคริปต์ Linux ที่ใช้กันทั่วไปจะเป็นภาษาใด Bash, SH, Posix? อะไร?

5
เหตุใด echo จึงเพิกเฉยอักขระคำพูดของฉัน
คำถามนี้ถูกโยกย้ายจาก Server Fault เนื่องจากสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 8 ปีที่แล้ว echoคำสั่งไม่ได้รวมถึงข้อความที่สมบูรณ์แบบที่ฉันให้มัน ตัวอย่างเช่นถ้าฉัน: $ echo ' echo PARAM=` grep $ARG /var/tmp/setfile | awk '{print $2}' ` ' มันเอาท์พุท: echo PARAM=` grep $ARG /var/tmp/setfile | awk {print } ` เครื่องหมายคำพูดเดี่ยว ( ') ที่ฉันมีในคำสั่ง echo ไม่รวมอยู่ด้วย หากฉันเปลี่ยนเป็นเครื่องหมายคำพูดคู่: $ echo " echo …
24 shell  quoting  echo 

16
“ คั่นหน้า” เพื่อทุบตี
การนำทางหลายชั้นของไดเรกทอรีที่ซ้อนกันมักจะเจ็บปวด บน Firefox นั้นเป็นเรื่องง่ายเพราะมีบุ๊กมาร์ก ดังนั้นสิ่งที่ฉันต้องการทำเพื่อคั่นหน้าไฟล์คือการพิมพ์: $ go --add classes "repo/www/public/util/classes" จากนั้นไปที่ไดเรกทอรีนี้ฉันจะพิมพ์: $ go classes ก่อนหน้านี้ฉันใช้ลิงก์สัญลักษณ์เพื่อให้ได้สิ่งที่คล้ายกัน แต่ฉันไม่ต้องการทำให้ไดเรกทอรีบ้านของคุณยุ่งเหยิง มีคุณสมบัติอื่น ๆ อีกมากมายที่สามารถพิสูจน์ได้ว่ามีประโยชน์ ตัวอย่างเช่นฉันต้องการเริ่มพิมพ์go clแล้วกด tab เพื่อเติมข้อความอัตโนมัติ บางครั้งฉันมีที่เก็บหลายชุดถูกเช็กเอาต์และดังนั้นจึงเป็นประโยชน์สำหรับโปรแกรมที่จะอนุญาตให้ฉันสร้างบริบทหลายชุดและตั้งค่าบุ๊กมาร์กที่สัมพันธ์กับไดเรกทอรีฐานบริบท ดังนั้นก่อนที่ฉันจะปูทางด้วยชุดสคริปต์ของตัวเองด้วยกันมีอะไรแบบนี้ไหม
24 bash  shell 

1
มีวิธีการเปลี่ยนเส้นทางการส่งออกของโปรแกรมและยังคงไป stdout หรือไม่
ถูก ถ้าฉันต้องการเปลี่ยนเส้นทางผลลัพธ์ของโปรแกรมไปยังไฟล์ฉันจะทำสิ่งนี้ prog > file หากฉันต้องการเปลี่ยนเส้นทางทั้ง stdout และ stderr ไปที่ไฟล์นั้นฉันก็จะทำ prog > file 2>&1 นี่คือทั้งหมดที่ดีและดีถ้าคุณต้องการส่งออกไปที่ไฟล์ แต่ถ้าคุณต้องการให้เอาต์พุตไปที่ไฟล์และยังไปที่ stdout / stderr? ดังนั้นเอาต์พุตจะถูกบันทึกในไฟล์ แต่คุณยังสามารถเห็นมันบนคอนโซลขณะที่โปรแกรมกำลังทำงาน มีวิธีทำเช่นนั้นหรือไม่? และถ้าเป็นเช่นนั้นได้อย่างไร

4
แบ่งปันชื่อแทนและการตั้งค่าเส้นทางระหว่าง zsh และ bash
zshเปลือกที่ผมปกติใช้เป็น ฉันมีนามแฝงหลายสีเพื่อเปิดใช้งานในโปรแกรมบางอย่างเช่นและls grepฉันได้กำหนดเส้นทางที่กำหนดเองเพื่อให้ฉันสามารถเรียกใช้งานโปรแกรมในสถานที่ที่ไม่ได้มาตรฐาน (เช่นใน~/bin/) ฉันจะไม่เปลี่ยนเปลือกรากไปzshแต่ฉันต้องการที่จะแบ่งปันการตั้งค่าเหล่านี้เพื่อให้รากที่สามารถมีได้เช่นกัน ผมพบว่าไม่ได้มีการจัดหาzsh /etc/profileฉันสามารถหามาได้/etc/zsh/zprofileแต่ฉันต้องการวิธีที่เหมาะสมกว่า
24 shell  bash  zsh  path  alias 

8
มีวิธีใดบ้างในการซิงค์โครงสร้างไดเรกทอรีเมื่อไฟล์ทั้งสองมีอยู่แล้ว?
ฉันมีสองไดรฟ์ที่มีไฟล์เดียวกัน แต่โครงสร้างไดเร็กตอรี่นั้นแตกต่างกันโดยสิ้นเชิง มีวิธีใดที่จะ 'ย้าย' ไฟล์ทั้งหมดในฝั่งปลายทางเพื่อให้ตรงกับโครงสร้างของด้านที่มา? ด้วยสคริปต์อาจ? ตัวอย่างเช่นไดรฟ์ A มี: /foo/bar/123.txt /foo/bar/234.txt /foo/bar/dir/567.txt ในขณะที่ไดรฟ์ B มี: /some/other/path/123.txt /bar/doo2/wow/234.txt /bar/doo/567.txt ไฟล์ที่สงสัยมีขนาดใหญ่มาก (800GB) ดังนั้นฉันไม่ต้องการคัดลอกอีกครั้ง ฉันต้องการซิงค์โครงสร้างโดยสร้างไดเรกทอรีที่จำเป็นและย้ายไฟล์ ฉันคิดว่าสคริปต์แบบเรียกซ้ำซึ่งจะค้นหาไฟล์ต้นฉบับแต่ละไฟล์บนปลายทางจากนั้นย้ายไปยังไดเรกทอรีที่ตรงกันและสร้างมันหากจำเป็น แต่ - มันเกินความสามารถของฉัน! โซลูชันที่สวยงามอีกชุดหนึ่งมอบให้ที่นี่: /superuser/237387/any-way-to-sync-directory-structure-when-the-files-are-already-on-both-soth-23-385/any

5
ฉันใช้ `&`: ทำไมกระบวนการไม่ทำงานในพื้นหลัง
ฉันรู้ว่าฉันสามารถต่อท้าย&คำสั่งเพื่อเรียกใช้กระบวนการในพื้นหลัง ฉันกำลังเข้า SSH ในกล่อง Ubuntu 12.04 และรันโปรแกรมไพ ธ อนด้วย$python program.py &- แต่เมื่อฉันไปปิดหน้าต่างเทอร์มินัลฉันได้รับข้อความแจ้งว่าการปิดเทอร์มินัลจะเป็นการฆ่ากระบวนการที่กำลังทำงานอยู่ ทำไมนี้ ฉันใช้เครื่องหมายและการเรียกใช้กระบวนการในพื้นหลัง ฉันจะให้มันทำงานได้อย่างไรโดยไม่คำนึงว่าฉันเป็น SSH หรือไม่

6
วิธีเพิ่มฟังก์ชั่นไปยัง. bash_profile / .profile / bashrc ในเชลล์?
ฉันมีฟังก์ชั่นที่แปลงเวลาของยุคปัจจุบัน นี่คือคำจำกัดความ date1(){ date -d @$1 } ฉันต้องการเขียน: $ date1 xxxyyy โดยที่ xxxyyy เป็นพารามิเตอร์ที่ฉันส่งผ่านเข้าไปในฟังก์ชั่นของฉันดังนั้นฉันจะได้รับวันที่ที่สอดคล้องกัน ฉันเข้าใจว่าฉันต้องเพิ่มทั้งใน.bash_profile, .profileหรือ.bashrcแล้วแหล่งที่มาของมัน $ source file แต่ฉันไม่แน่ใจว่าจะใส่ไฟล์ไหนในปัจจุบันฉันมี.profileแล้ว แต่เพื่อให้ทำงานได้ฉันต้องทำsource .profileทุกครั้ง เป็นการดีที่ควรทำให้พร้อมใช้งานเมื่อคอมพิวเตอร์เริ่มทำงานเหมือนตัวแปรสภาพแวดล้อม
24 bash  shell  function  profile 

6
mkdir -p สำหรับไฟล์
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 6 ปีที่แล้ว mkdir -pจะสร้างไดเรกทอรี มันจะสร้างไดเรกทอรีหลักตามต้องการ คำสั่งที่คล้ายกันมีอยู่สำหรับไฟล์ที่จะสร้างไฟล์และไดเร็กทอรีหลักตามต้องการหรือไม่?
24 shell  directory 

2
กู้คืนไฟล์ที่ถูกลบบน Mac โดยบรรทัดคำสั่ง
ฉันเผลอลบไฟล์โดยใช้: rm -rf ./Desktop/myScript.sh ฉันคิดว่าเป็นไปได้ในการกู้คืนไฟล์เนื่องจากrmคำสั่งจะลบชั่วคราว ฉันจะกู้คืนไฟล์ที่ถูกลบใน Mac OSX ได้อย่างไร?

4
ตอบใช่ในสคริปต์ทุบตี
ฉันกำลังพยายามทำgit cloneสคริปต์ทุบตี แต่ครั้งแรกที่ฉันเรียกใช้สคริปต์และเซิร์ฟเวอร์ไม่เป็นที่รู้จัก แต่สคริปต์ล้มเหลว ฉันมีสิ่งนี้: yes | git clone git@github.com:repo/repoo.git The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yesแต่มันไม่สนใจ คุณรู้วิธีบังคับgit cloneให้เพิ่มคีย์ไปยังโฮสต์ที่รู้จักหรือไม่?
24 shell  ssh  scripting  git 

4
เรียกใช้คำสั่งหลังจากผ่านไประยะเวลาหนึ่งหรือไม่
หากฉันกำลังดำเนินการกระบวนการที่ยาวนานจะมีวิธีใดบ้างที่ฉันสามารถเรียกใช้คำสั่งตามเวลาได้? ตัวอย่างเช่นฉันใช้กระบวนการที่ยาวมาก ๆ ซึ่งใช้เวลาประมาณ 10 นาที หลังจาก 5 นาทีฉันต้องการเรียกใช้คำสั่งแยกต่างหาก สำหรับภาพประกอบคำสั่งแยกอาจเป็น:echo 5 minutes complete (หมายเหตุ: ฉันไม่ต้องการความคืบหน้าไปสู่ความสมบูรณ์ของคำสั่ง แต่เพียงคำสั่งดำเนินการหลังจากช่วงเวลาที่ระบุ) มันเป็นไปได้?

15
'ls -1': วิธีแสดงรายการชื่อไฟล์ที่ไม่มีส่วนขยาย
ls -1 แสดงรายการองค์ประกอบของฉันเช่น: foo.png bar.png foobar.png ... ฉันต้องการมันอยู่ในรายการโดยไม่.pngชอบ: foo bar foobar ... (dir มี.pngไฟล์เท่านั้น) ใครสามารถบอกวิธีใช้grepในกรณีนี้ได้บ้าง จุดประสงค์: ฉันมีไฟล์ข้อความที่มีรายชื่อทั้งหมดโดยไม่มีนามสกุล ฉันต้องการสร้างสคริปต์ที่เปรียบเทียบไฟล์ข้อความกับโฟลเดอร์เพื่อดูว่าไฟล์ใดหายไป
24 shell  grep  ls 

9
แสดงเฉพาะ stderr บนหน้าจอ แต่เขียนทั้ง stdout และ stderr ไปยังไฟล์
ฉันจะใช้ BASH Magic เพื่อให้ได้สิ่งนี้ได้อย่างไร ฉันต้องการเห็นเฉพาะ stderr output บนหน้าจอ แต่ฉันต้องการให้ stdout และ stderr เขียนลงไฟล์ ชี้แจง: ฉันต้องการให้ทั้ง stdout และ stderr สิ้นสุดในไฟล์เดียวกัน ตามลำดับที่เกิดขึ้น น่าเสียดายที่ไม่มีคำตอบด้านล่างทำสิ่งนี้

4
sed ด้วยการแสดงออกหลายสำหรับการโต้แย้งในสถานที่
ฉันพยายามแทนที่คำหลายคำในไฟล์โดยใช้ sed -i #expression1 #expression2 ไฟล์ Something 123 item1 Something 456 item2 Something 768 item3 Something 353 item4 เอาท์พุท (ที่ต้องการ) anything 123 stuff1 anything 456 stuff2 anything 768 stuff3 anything 353 stuff4 ลองลึกหนาบาง ฉันจะได้รับผลลัพธ์ต่อไปนี้โดยใช้sed -i2 ครั้ง sed -i 's/Some/any/g' file sed -i 's/item/stuff/g' file ฉันสามารถมีวิธีที่เป็นไปได้ในการทำให้สิ่งนี้เป็นคำสั่งแบบแทนที่เดียวได้ไหม sed -i 's/Some/any/g' -i 's/item/stuff/g' …

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