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

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

5
แทนที่ช่องว่างหลายช่องด้วยช่องว่างโดยใช้ 'tr' เท่านั้น
ฉันมีไฟล์f1.txt: ID Name 1 a 2 b 3 g 6 f จำนวนช่องว่างไม่คงที่ วิธีที่ดีที่สุดในการแทนที่ช่องว่างสีขาวทั้งหมดด้วยช่องว่างเดียวใช้เพียงtrใด นี่คือสิ่งที่ฉันมี: cat f1.txt | tr -d " " แต่ผลลัพธ์คือ: IDName 1a 2b 3g 6f แต่ฉันต้องการให้มันเป็นเช่นนี้: ID Name 1 a 2 b 3 g 6 f sedโปรดลองและหลีกเลี่ยง
71 shell  cut  tr 

1
วิธีการเปลี่ยนเปลือก cron (sh เพื่อทุบตี)?
มันเป็นไปได้ที่จะทำให้คำสั่งใน crontab รันด้วย bash แทน sh หรือไม่? ฉันรู้ว่าคุณสามารถส่งคำสั่งเพื่อทุบตีด้วย-cแต่ที่น่ารำคาญและฉันไม่เคยใช้ SH อย่างไรก็ตาม
70 shell  cron 

9
วิธีเพิ่มวันที่ในไฟล์สำรอง
ฉันต้องการสำรองไฟล์และฉันต้องการให้มีการประทับเวลาเป็นส่วนหนึ่งของชื่อเพื่อให้แยกความแตกต่างได้ง่ายขึ้น คุณจะฉีดวันที่ปัจจุบันลงในคำสั่ง copy ได้อย่างไร [root@mongo-test3 ~]# cp foo.txt {,.backup.`date`} cp: target `2013}' is not a directory [root@mongo-test3 ~]# cp foo.txt {,.backup. $((date)) } cp: target `}' is not a directory [root@mongo-test3 ~]# cp foo.txt foo.backup.`date` cp: target `2013' is not a directory
69 shell  date  cp 

3
“ 3> & 1 1> & 2 2> & 3” ทำอะไรในสคริปต์
ฉันเห็นบรรทัดนี้ในสคริปต์: DEVICE=`dialog --inputbox "Festplatten-Laufzeit auslesen. Gebe Sie das gewünschte Device an: " 0 70 "" 3>&1 1>&2 2>&3` คืออะไร 3>&1 1>&2 2>&3 ทำ? ฉันรู้ว่า 1 = stdout และ 2 = stderr แต่อะไร3และ&สำหรับ
69 shell 

8
ฉันจะทำให้ iconv แทนที่ไฟล์อินพุตด้วยเอาต์พุตที่ถูกแปลงได้อย่างไร?
ฉันมีสคริปต์ทุบตีซึ่งระบุผ่านทุกไฟล์ * .php ในไดเรกทอรีและนำiconvไปใช้กับมัน สิ่งนี้ได้รับผลลัพธ์ใน STDOUT เนื่องจากการเพิ่ม-oพารามิเตอร์ (จากประสบการณ์ของฉัน) จริง ๆ แล้วเขียนไฟล์เปล่าก่อนที่จะเกิดการแปลงฉันจะปรับสคริปต์ของฉันเพื่อให้เกิดการแปลงจากนั้นจึงเขียนทับไฟล์อินพุต for file in *.php do iconv -f cp1251 -t utf8 "$file" done


12
ฉันจะตรวจสอบว่ามีตัวแปรอยู่ในคำสั่ง 'if' ได้อย่างไร?
ฉันต้องการตรวจสอบการมีอยู่ของตัวแปรในifคำสั่ง สิ่งที่มีผลต่อ: if [ -v $somevar ] then echo "Variable somevar exists!" else echo "Variable somevar does not exist!" และคำถามที่ใกล้เคียงที่สุดคือคำถามนี้ซึ่งไม่ได้ตอบคำถามของฉัน
69 shell  variable  test 

4
จะพิมพ์เฉพาะค่าซ้ำซ้อนจากไฟล์ข้อความได้อย่างไร
สมมติว่ามีคอลัมน์ของค่าตัวเลขดังนี้: file1: 1 2 3 3 3 4 4 4 5 6 ฉันต้องการผลลัพธ์: 3 4 นั่นคือมีเพียงบรรทัดที่ซ้ำกัน มีเครื่องมือบรรทัดคำสั่งเพื่อค้นหาสิ่งนี้ใน Linux? (หมายเหตุ: ค่าจะถูกจัดเรียงเป็นตัวเลข)

2
ทำไม Ctrl-D (EOF) ออกจากเชลล์?
คุณกำลัง "จบไฟล์" โดยการใส่ลำดับการหลบหนีนี้หรือไม่นั่นคือเซสชันเชลล์เชิงโต้ตอบถูกมองว่าเป็นสตรีมไฟล์จริงโดยเชลล์เช่นเดียวกับสตรีมไฟล์อื่น ๆ ถ้าเป็นเช่นนั้นไฟล์ไหน? หรือCtrl+ Dสัญญาณเป็นเพียงตัวยึดตำแหน่งซึ่งหมายความว่า "ผู้ใช้ป้อนข้อมูลเสร็จแล้วและคุณอาจยุติ"

6
ทำไมการตั้งค่าตัวแปรก่อนที่คำสั่งถูกกฎหมายในทุบตี?
ฉันเพิ่งพบคำตอบหลายอย่างเช่นการแยกวิเคราะห์ไฟล์ข้อความที่คั่นด้วย ...ที่ใช้โครงสร้าง: while IFS=, read xx yy zz;do echo $xx $yy $zz done < input_file โดยที่IFSตัวแปรถูกตั้งค่าไว้ก่อนreadคำสั่ง ฉันอ่านการอ้างอิง bash แล้วแต่ไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงถูกกฎหมาย ฉันเหนื่อย $ x="once upon" y="a time" echo $x $y จากพรอมต์คำสั่ง bash แต่ไม่มีอะไรเกิดขึ้น ใครบางคนสามารถชี้ให้ฉันเห็นว่าไวยากรณ์นั้นถูกกำหนดในการอ้างอิงที่อนุญาตให้ตัวแปร IFS ตั้งค่าในลักษณะนั้นได้หรือไม่? มันเป็นกรณีพิเศษหรือฉันสามารถทำสิ่งที่คล้ายกับตัวแปรอื่น ๆ ได้หรือไม่?

2
อะไรคือความแตกต่างระหว่าง "realpath" และ "readlink -f"
ฉันอ่านมากเกี่ยวกับrealpathคำสั่งและวิธีการเลิกใช้กับreadlink -fการแนะนำในขณะนี้ ฉันเคยเห็นมาแล้วในบางสถานที่ว่าเหตุผลที่แนะนำ realpath นั้นเกิดจากการขาดฟังก์ชั่นดังกล่าวใน readlink และเมื่อมีการแนะนำ realpath ก็ไม่จำเป็นต้องใช้ realpath อีกต่อไป เหตุผลสำหรับคำถามของฉันคือฉันยังเห็นคนจำนวนมากแนะนำreadlink -fว่าเป็นคำสั่ง "คล้ายกันมาก" realpathและนั่นคือสิ่งที่รบกวนฉันเพราะไม่มีใครอธิบายเกี่ยวกับส่วนที่ "คล้ายกันมาก" ความแตกต่างที่แท้จริงคืออะไร?
68 shell  command 

6
มีคำสั่งง่ายๆสำหรับการแสดงผลคอลัมน์ที่คั่นด้วยแท็บหรือไม่
เช่นฉันมีไฟล์ (ผลิตด้วยecho -e "var1\tvar2\t\var3\tvar4" > foo) ที่ส่งออกเป็น: $ cat foo case elems meshing nlsys uniform 2350 0.076662 2.78 non-conformal 348 0.013332 0.55 scale 318 0.013333 0.44 smarter 504 0.016666 0.64 submodel 360 .009999 0.40 unstruct-quad 640 0.019999 0.80 unstruct-tri 1484 0.01 0.88 ฉันต้องการผลลัพธ์เช่นนี้ (ที่นี่ฉันใช้vimและ:set tabstop=14): case elems meshing nlsys uniform …

1
ทำไมเอาท์พุตของ ssh-agent
ในการวิ่งssh-agentฉันต้องใช้ eval $(ssh-agent) ทำไมฉันถึงต้องevalส่งออกของssh-agent? ทำไมมันไม่ได้ออกแบบมาเพื่อที่ฉันจะสามารถเรียกใช้มันได้ หมายเหตุ: ลบ Backticks (`) ออกเนื่องจากถูกเลิกใช้แล้ว คุณสามารถอ่านเพิ่มเติมได้ที่นี่เช่น
67 shell  ssh  ssh-agent  eval 


9
ค้นหาคำสั่งก่อนหน้าด้วยคำนำหน้าฉันเพิ่งพิมพ์
เราสามารถใช้ลูกศรขึ้นและลงเพื่อเลื่อนดูประวัติคำสั่ง ใน IDEs บางตัวเช่น Matlab หากเราป้อนบางสิ่งแล้วกดปุ่มลูกศรเราจะเลื่อนเฉพาะคำสั่งประวัติที่เริ่มต้นด้วยสิ่งที่เรามีอินพุต สะดวกมาก แต่ในเชลล์เทอร์มินัลสิ่งนี้ไม่ทำงาน มีวิธีรับฟังก์ชั่นที่คล้ายกันในเชลล์เทอร์มินัลไหม? และเคล็ดลับอื่น ๆ สำหรับการปรับปรุงประสิทธิภาพในการใช้เทอร์มินัล?

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