คำถามติดแท็ก command-history

คำสั่งเรียกคืนที่พิมพ์ไว้ก่อนหน้านี้ในเชลล์หรือยูทิลิตี้อื่น ๆ

1
รันคำสั่งประวัติหลายครั้งอีกครั้ง
ลองนึกภาพคุณแค่เรียกใช้คำสั่งโหล พูด... $ cd foo/ # history cmd #10000 (my history is very long) $ ... more commands ... $ cd ../ # history cmd #10012 ฉันรู้ว่าฉันสามารถรันพวกเขาต่อกันได้!-12 && !-11 && !-10 && (and so on) && !!หากพวกเขาเพิ่งจะถูกเรียกใช้ (ไม่น่าเป็นไปได้) หรือ!10000 && !10001 && !10002 && (and so on)แต่มีวิธีที่ง่ายกว่าการพิมพ์ตัวเลขแต่ละหมายเลขด้วยปังและแอมเปอร์แซนด์ อาจมีบางสิ่งบางอย่างที่ฉันไม่รู้ในการทุบตี? เช่น!{10000-10012}# บางอย่างเช่นนี้ใช้งานได้เท่านั้น

4
การค้นหาเวลาดำเนินการคำสั่งด้วยการเข้าใจถึงปัญหาย้อนหลัง
ฉันเพิ่งดำเนินการกระบวนการที่ยาวนานจากพรอมต์ bash ในการเข้าใจถึงปัญหาหลังฉันหวังว่าฉันจะใช้timeมันหรือสังเกตเวลาที่ฉันเตะมันออกไป มีวิธีในการรับข้อมูลนี้ย้อนหลังหรือไม่? .bash_historyดูเหมือนจะไม่รวมถึงการประทับเวลา ในกรณีของฉันคือ Mac OS X แต่ฉันสนใจโซลูชัน Unix / Linux ทั่วไป เพื่อชี้แจงกระบวนการนี้เสร็จสมบูรณ์แล้วและฉันไม่ต้องการเรียกใช้อีกครั้งเว้นแต่จำเป็นจริงๆ!

4
ZSH: ประวัติการค้นหาบนปุ่มขึ้นและลง?
ขณะนี้ฉันมีสิ่งต่อไปนี้ใน. zshrc ของฉัน: bindkey '^[[A' up-line-or-search bindkey '^[[B' down-line-or-search อย่างไรก็ตามดูเหมือนว่าจะตรงกับเนื้อหาของอินพุตปัจจุบันของฉันก่อนที่จะมีอักขระเว้นวรรค ตัวอย่างเช่นsudo ls /จะจับคู่ทุกบรรทัดในประวัติของฉันที่ขึ้นต้นด้วยsudoในขณะที่ฉันต้องการให้จับคู่ทุกบรรทัดที่ตรงกับข้อมูลที่ฉันป้อนทั้งหมดเท่านั้น (เช่นsudo ls /etcจะจับคู่ แต่ไม่ใช่sudo cat /var/log/messages) ฉันต้องเปลี่ยนอะไรเพื่อให้ได้พฤติกรรมตามที่ต้องการ นี่คือ. zshrc ทั้งหมดของฉันในกรณีที่มีความเกี่ยวข้อง: https://gist.github.com/919566

3
ดำเนินการบรรทัดคำสั่งด้วยหนึ่ง sudo
ตัวอย่างเช่นถ้าฉันต้องการสร้างไฟล์และป้อนข้อความในหนึ่งบรรทัดฉันสามารถเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์ด้วยการใช้>โอเปอเรเตอร์: echo "something" > /path/foobar แต่ถ้าฉันไม่มีสิทธิ์เข้าถึงโฟลเดอร์/path/และต้องการสิทธิ์ sudo ฉันจะทำคำสั่งนี้ให้เหมือนกับผู้ใช้ปกติที่มีสิทธิ์ sudo ได้อย่างไร ฉันเหนื่อย sudo echo "something" > /path/foobar แต่นั่นไม่ได้ผลเพราะ sudo นับeditแต่เท่านั้น แต่ไม่ใช่สำหรับส่วนที่ถูกต้อง ของ> แน่นอนว่าฉันสามารถรูทก่อนด้วยsudo suหรือใช้teeแทน: echo "something" | sudo tee /path/foobar แต่ฉันต้องการหาวิธีแก้ปัญหาที่ฉันสามารถทำงานกับบรรทัดสุดท้ายแทนผ่าน sudo !! ไม่มีทางที่จะ "รีไซเคิล" บรรทัดสุดท้ายและเพิ่มsudoข้างหน้าใช่ไหม

2
ทางลัดสำหรับการดำเนินการชุดคำสั่งในประวัติทุบตีอยู่หรือไม่?
สมมติว่าฉันมีตัวอย่างเล็ก ๆ น้อย ๆ ต่อไปนี้ในhistory: ... 76 cd ~ 77 ./generator.sh out.file 78 cp out.file ~/out/ 79 ./out/cleaner.sh . 80 ls -alnh /out ... ถ้าผมต้องการที่จะรันคำสั่ง77, 78และ79ในคำสั่งอย่างใดอย่างหนึ่งไม่มีอยู่ทางลัดสำหรับการนี้หรือไม่? ฉันได้ลอง!77 !78 !79แล้วซึ่งจะทำให้พวกเขาทั้งหมดในบรรทัดเดียวเพื่อดำเนินการ

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

6
ฉันจะป้อน n ซ้ำของตัวเลขในทุบตีโต้ตอบได้อย่างไร
ฉันต้องการเรียกใช้คำสั่ง foo --bar=baz <16 zeroes> ฉันจะพิมพ์ 16 ศูนย์ได้อย่างมีประสิทธิภาพได้อย่างไร ถ้าฉันAltกดค้างไว้1 6 0มันจะทำซ้ำสิ่งต่อไป 160 ครั้งซึ่งไม่ใช่สิ่งที่ฉันต้องการ ใน emacs ฉันสามารถใช้Alt-[number]หรือCtrl-u 1 6 Ctrl-u 0แต่ในทุบตีCtrl-uฆ่าสายที่ถูกพิมพ์ในขณะนี้และศูนย์ต่อไปเพียงแค่เพิ่ม 0 ลงในบรรทัด ถ้าฉันทำ foo --bar=baz $(printf '0%.0s' {1..16}) จากนั้นhistoryแสดงให้เห็นอย่างชัดเจนข้างต้นและไม่foo --bar=baz 0000000000000000; ie bash ไม่ทำงานในแบบที่ฉันต้องการ ( แก้ไข : เป็นจุดฉันต้องการที่จะใส่จำนวนศูนย์โดยไม่ต้องใช้การ$(...)ทดแทนคำสั่ง) (*) ฉันเดาว่าคำจำกัดความทางเทคนิคของ "มีประสิทธิภาพ" คือ "กับการกดแป้นพิมพ์ O (log n)" โดยเฉพาะอย่างยิ่งการกดแป้นจำนวนหนึ่งเท่ากับจำนวนหลักใน 16 (สำหรับค่าทั้งหมด 16) …

2
จะหยุดทุบตีแก้ไขประวัติเมื่อฉันนำมาใช้ใหม่และแก้ไขรายการได้อย่างไร
อินสแตนซ์ของการทุบตีบางอย่างเปลี่ยนประวัติคำสั่งเมื่อคุณใช้ซ้ำและแก้ไขคำสั่งก่อนหน้า ฉันค้นหาและค้นหา แต่ไม่พบสิ่งใดที่บอกว่าจะป้องกันคำสั่งในประวัติจากการแก้ไขเมื่อพวกเขาถูกนำมาใช้ซ้ำและแก้ไขได้ มีคำถามเช่นนี้แต่ดูเหมือนว่าจะพูดถึงวิธีรับมือกับประวัติศาสตร์ที่ถูกแก้ไข ฉันเพิ่งเจออินสแตนซ์ของ bash ที่แก้ไขประวัติเมื่อคุณใช้คำสั่งซ้ำ - bash shell ก่อนหน้านี้ทั้งหมดที่ฉันเคยใช้มี (เท่าที่ฉันสังเกตเห็น) ได้รับการกำหนดค่าไม่ให้เปลี่ยนประวัติเมื่อคุณใช้ซ้ำ และแก้ไขคำสั่ง (บางทีฉันแค่ไม่ได้ให้ความสนใจอย่างถูกต้องกับประวัติเชลล์ของฉันในช่วง 15 ปีที่ผ่านมาหรือมากกว่านั้น ... ) ดังนั้นนั่นอาจเป็นคำถามที่ดีที่สุด: ฉันสามารถบอกทุบตีไม่เคยแก้ไขประวัติ - และถ้าเป็นเช่นนั้นได้อย่างไร

3
เก็บคำสั่งที่ประสบความสำเร็จเท่านั้นในประวัติ BASH
บางครั้งฉันเข้าใจผิดไวยากรณ์ของคำสั่ง: # mysql -d test mysql: unknown option '-d' # echo $? 2 ฉันลองอีกครั้งและทำให้ถูกต้อง: # mysql --database test Welcome to the MySQL monitor. mysql > ... ฉันจะป้องกันคำสั่งแรกที่มีรหัสข้อผิดพลาดแตกต่างจาก 0 เพื่อป้อนประวัติได้อย่างไร

8
คำสั่งประวัติภายในสคริปต์ทุบตี
ประวัติเป็นคำสั่งในตัวเชลล์ฉันไม่สามารถใช้สิ่งนั้นได้ในสคริปต์ BASH ดังนั้นมีวิธีการนี้โดยใช้สคริปต์ทุบตี? ที่นี่เราไปสคริปต์ของฉันสำหรับคุณ: #!/bin/bash history | tail -100 > /tmp/history.log cd /tmp uuencode history.log history.txt | mail -s "History log of server" hello@hel.com

3
ฉันสามารถค้นหาทุบตีประวัติผู้ใช้ทั้งหมดบนเซิร์ฟเวอร์ได้หรือไม่?
ฉันต้องการเห็นคำสั่ง bash ทั้งหมดที่รันบนเซิร์ฟเวอร์ Linux ในหลายบัญชีผู้ใช้ การกระจายเฉพาะที่ฉันใช้คือ CentOS 5.7 มีวิธีในการค้นหาไฟล์. bash_history ทั่วโลกบนเซิร์ฟเวอร์หรือเป็นกระบวนการที่ใช้ในบ้านมากขึ้นlocate | cat | grepหรือไม่ (ฉันสั่นเพียงแค่พิมพ์ออกมา)

4
ค้นหาคำสั่งก่อนหน้าด้วยคำนำหน้าเหมือนกันเมื่อฉันกดขึ้นที่ shell prompt
มาจากโลก FreeBSD ฉันต้องการที่จะทำให้ลินุกซ์เทอร์มิประพฤติเช่น FreeBSD หนึ่งโดยเฉพาะอย่างยิ่งรุ่น 9.1 โดยทั่วไปเมื่อคุณพิมพ์cdในขั้วและผลักดัน "ขึ้น" ลูกศรที่คุณสามารถเรียกดูคำสั่งทั้งหมดในประวัติศาสตร์ที่เริ่มต้นด้วยcdซึ่งจะทำให้คุณ ได้รับเวลามาก ฉันไม่ทราบวิธีการเปิดใช้งานคุณสมบัตินี้ใน Linux Debian หรือ CentOS ซึ่งบังคับให้ฉันพิมพ์ทั้งหมดคนสามารถช่วยได้

5
ผู้ใช้จะไม่ให้เชลล์บันทึกคำสั่งของเขาลงในประวัติศาสตร์ในสถานการณ์ใด
หากฉันเพิ่มexport HISTCONTROL=ignorespaceเข้า.bashrcมาทุบตีจะไม่บันทึกคำสั่งใด ๆ ที่มีช่องว่างก่อนหน้าพวกเขาลงในประวัติศาสตร์ แต่ฉันไม่เข้าใจว่าสถานการณ์จะเป็นประโยชน์หรือไม่ ใครช่วยยกตัวอย่างบ้าง

5
ฉันจะจำคำสั่งประวัติที่เป็นตัวเลขเพื่อแก้ไขได้อย่างไร
ฉันมักค้นหาการเปลี่ยนแปลงด้วย history | grep 'string' ฉันได้รับรายการคำสั่งในประวัติของฉันพร้อมด้วยหมายเลขบรรทัดประวัติ) เช่น history | grep 'git' 755 git status 1535 git push origin master 1570 git merge origin/one-146 1667 git reset --hard origin/master ตอนนี้ฉันสามารถจำและรันคำสั่งได้ในครั้งเดียว!nnnตัวอย่างเช่น: !755 git status # On branch master nothing to commit, working directory clean คำถามของฉันคือ: ฉันจะจำคำสั่งประวัติศาสตร์ที่มีหมายเลขและอยู่ในบรรทัดคำสั่งสำหรับการแก้ไขและไม่ดำเนินการทันที 'ตามที่เป็น' วิธีที่!ทำเพื่อให้ฉันสามารถเปลี่ยนสองสิ่งที่แสดงก่อนที่จะกลับมา?

3
มีขนาดสูงสุดของไฟล์ประวัติทุบตีหรือไม่?
ฉันสามารถเพิ่มขนาดของประวัติคำสั่งเป็น bash ได้หรือไม่? โปรดทราบว่าฉันใช้คอมพิวเตอร์ Red Hat Linux ในแผนกฟิสิกส์ดาราศาสตร์ระดับปริญญาตรีที่นี่ (ดังนั้นฉันจึงไม่ได้รับสิทธิพิเศษมากมาย)

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