แค่สงสัยว่าสคริปต์ / โปรแกรมเล็ก ๆ น้อย ๆ ที่ผู้คนที่นี่เขียนขึ้นเพื่อช่วยอะไรในชีวิตประจำวันของเขาหรือเธอ
มีอะไรไปแหวกแนวหรือไม่ สำหรับฉันตอนนี้มันเป็นสคริปต์ python ขนาดเล็กในการคำนวณอัตราการวิ่งตามระยะทางและเวลาที่ผ่านไป
แค่สงสัยว่าสคริปต์ / โปรแกรมเล็ก ๆ น้อย ๆ ที่ผู้คนที่นี่เขียนขึ้นเพื่อช่วยอะไรในชีวิตประจำวันของเขาหรือเธอ
มีอะไรไปแหวกแนวหรือไม่ สำหรับฉันตอนนี้มันเป็นสคริปต์ python ขนาดเล็กในการคำนวณอัตราการวิ่งตามระยะทางและเวลาที่ผ่านไป
คำตอบ:
o
กุญแจของฉันหล่นลงบนแล็ปท็อป ดังนั้นฉันจึงเขียนโปรแกรมที่แทนที่การ0
กดแป้นพิมพ์สองครั้งภายใน 200 MS ของกันและกันเป็นการกดแป้นพิมพ์o
สอง0
ครั้งภายใน 700 MS ของกันและกันเป็น a 0
และไม่สนใจส่วนที่เหลือ ดังนั้นฉันจึงสามารถใช้แล็ปท็อปของฉันก่อนที่จะเปลี่ยนแป้นพิมพ์
ว้าว; ไม่รู้จะดังขนาดนี้: p
สำหรับวิธีการ - ไมโครซอฟท์ exposes คุณลักษณะเล็ก ๆ น้อย ๆ ของ API ที่ดีเรียกว่าเบ็ด
ใช้ตะขอนั้น ฉันสามารถเขียน "ตัวกรอง" ที่ทำในสิ่งที่ฉันต้องการให้ทำ (คำใบ้: หากคุณส่งคืน 1 พร้อมกับหน้าต่างเรียกกลับจะไม่ประมวลผลการกดแป้นพิมพ์)
เหตุผลที่ฉันรู้เกี่ยวกับเรื่องนี้จริง ๆ แล้วไม่ใช่เพราะฉันเขียนคีย์ล็อกเกอร์ - แต่เป็นเพราะฉันเขียนโปรแกรมสไมเออร์ถึงซินเนอร์จี้เมื่อครู่
และใช่. ฉันเขียนโปรแกรมอื่นที่สลับปุ่มตัวอักษรและตัวเลขด้วยปุ่มตัวอักษรและตัวเลขแบบสุ่มและใช่ มันตลกจริงๆ: D
ฉันไม่มีรหัสอีกต่อไป แต่อาจเป็นสคริปต์ที่มีประโยชน์ที่สุดที่ฉันเขียนคือเชื่อหรือไม่ใน VBA ฉันมีเพื่อนร่วมงานที่น่ารำคาญที่มีฟิวส์สั้น ๆ จนฉันเรียกเขาว่า Cherry Bomb เขามักจะโกรธเมื่อลูกค้าโทรมาจากนั้นก็ลุกขึ้นยืนและเริ่มพูดจาโผงผางที่ฉันเหนือกำแพงกุฏิฆ่าประสิทธิภาพและขวัญกำลังใจของฉัน
ฉันเปิด Microsoft Excel ไว้ตลอด เมื่อเขาทำเช่นนี้ฉันจะ alt-tab ไปที่ Excel และบนแถบเครื่องมือเป็นไอคอนใหม่ที่มีรูปเชอร์รี่บอมบ์ ฉันจะคลิกอย่างรอบคอบ ... และจะไม่มีอะไรเกิดขึ้น
อย่างไรก็ตามหลังจากนั้นไม่นานฉันจะได้รับโทรศัพท์และจะพูดอะไรบางอย่างเช่น "ใช่ใช่มันฟังดูแย่ฉันมาดูดีกว่า" จากนั้นฉันก็จะลุกขึ้นขอโทษ Cherry Bomb และเดินจากไป
สิ่งที่เกิดขึ้นคือเราใช้ NetWare และมีระบบการส่งข้อความแบบดั้งเดิมในตัวเมื่อฉันคลิกปุ่มสคริปต์ VBA ขนาดเล็กจะส่งข้อความ NetWare ไปยังเพื่อนของฉันบอกพวกเขาว่า Cherry Bomb อยู่ที่มันอีกครั้งและพวกเขาจะ กรุณาโทรหาฉันด้วย. เขาไม่เคยคิดออก :)
สคริปต์ทุบตีเรียกขึ้นมาดังนั้นถ้าฉันอยู่/a/very/deeply/nested/path/somewhere
และฉันต้องการไปที่ไดเรกทอรีN "ขึ้น" ฉันสามารถพิมพ์:up N
#!/bin/bash
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
ตัวอย่างเช่น:
/a/very/deeply/nested/path/somewhere> up 4
/a/very>
NB โดย gmatt:
การทำงานที่ยอดเยี่ยมข้างต้นสามารถขยายไปยังฟังก์ชัน back ได้โดยวางสิ่งต่อไปนี้ลงใน bashrc ของคุณ:
function up( )
{
LIMIT=$1
P=$PWD
for ((i=1; i <= LIMIT; i++))
do
P=$P/..
done
cd $P
export MPWD=$P
}
function back( )
{
LIMIT=$1
P=$MPWD
for ((i=1; i <= LIMIT; i++))
do
P=${P%/..}
done
cd $P
export MPWD=$P
}
back
วิธีการดังนั้นเมื่อใดก็ตามที่คุณใช้หมดคุณสามารถใช้กลับเพื่อเลื่อนไปมาได้อย่างง่ายดาย หากต้องการใช้ให้ใส่สิ่งนี้ใน bashrc ของคุณ (ขออภัยเกี่ยวกับการจัดรูปแบบอึ): function up () {LIMIT = $ 1 P = $ PWD สำหรับ ((i = 1; i <= LIMIT; i ++)) ทำ P = $ P / .. เสร็จแล้ว cd $ P ส่งออก MPWD = $ P} ฟังก์ชันกลับ () {LIMIT = $ 1 P = $ MPWD สำหรับ ((i = 1; i <= LIMIT; i ++)) ทำ P = $ {P% / .. } เสร็จแล้ว cd $ P ส่งออก MPWD = $ P}
ปุ่มรีเซ็ตระยะไกลพิเศษ
ชั้นวางของฮาร์ดแวร์จำลองพิเศษสุดพิเศษ (ย้อนกลับไปในสมัยที่ห้องที่เต็มไปด้วยลัง VME น้อยกว่า GPU ของคุณ) ซึ่งผู้ใช้ในอีกฟากหนึ่งของโลกจะพังในตอนเช้าตรู่ ใช้เวลาหนึ่งชั่วโมงในการเข้าห้องแล็บและผ่านการรักษาความปลอดภัย
แต่เราไม่ได้รับอนุญาตให้เชื่อมต่อกับคอนโทรลเลอร์พิเศษพิเศษหรือปรับเปลี่ยนฮาร์ดแวร์ วิธีแก้ปัญหาคือเวิร์กสเตชัน DEC เก่าที่มีเครื่องพิมพ์ epson ดอทเมทริกซ์เทปไม้บรรทัดพลาสติกเข้ากับปุ่มป้อนกระดาษวางเครื่องพิมพ์ใกล้กับปุ่มรีเซ็ต
ล็อกอินเข้าสู่ WS ในฐานะผู้ใช้ทั่วไป (ไม่อนุญาตให้รูทพอร์ตภายนอกทั้งหมดถูกล็อก) พิมพ์เอกสารที่มีเส้น 24blank ซึ่งจะหมุนปุ่มป้อนกระดาษและไม้บรรทัดกดบนรีเซ็ตบนฮาร์ดแวร์พิเศษพิเศษ
ใน Windows XP ฉันได้ตั้งค่างาน AT ให้รันคำสั่งนี้ทุกวันใน C: \
dir /s /b * > dirlist.txt
รายการเส้นทางแบบเต็มของไฟล์ทั้งหมดบนไดรฟ์ C จากนั้นเมื่อใดก็ตามที่ฉันต้องการค้นหาไฟล์ฉันสามารถfindstr
ใช้ได้ สิ่งนี้เต้นโดยใช้ Windows Explorer Search เนื่องจากอนุญาตให้มีการจับคู่นิพจน์ทั่วไปบนเส้นทางทั้งหมด ตัวอย่างเช่น:
findstr ".jpg" dirlist.txt
findstr /i /r "windows.*system32.*png$" dirlist.txt
นี่เป็นวิธีการตั้งค่าที่รวดเร็วมากและดีมากหากคุณพบว่าตัวเองติดตั้ง Windows ใหม่และไม่มีการเชื่อมต่ออินเทอร์เน็ต
หากคุณต้องการค้นหาภายในไฟล์บางประเภทสำหรับรูปแบบบางอย่างอันดับแรกให้แสดงรายการไฟล์ทั้งหมดที่คุณต้องตรวจสอบจากนั้นค้นหาภายในไฟล์ ตัวอย่างเช่นหากต้องการค้นหาโปรแกรม Java หรือ Python ที่พลิกภาพคุณสามารถทำได้:
findstr "\.java \.py" dirlist.txt > narrowlist.txt
findstr /i /r /f:narrowlist.txt "flip.*image"
ฉันมีสคริปต์ Python ที่ทำงานโดยอัตโนมัติเมื่อฉันเสียบกล้องดิจิทัล
จะคัดลอกรูปภาพทั้งหมดจากการ์ดในกล้องสำรองข้อมูลจากนั้นอัปโหลดไปยัง Flickr
ส่วนการอัปโหลดไปยัง Flickr มาจากuploadr.py (ซึ่งฉันไม่สามารถรับเครดิตได้)
นี่คือรหัส Python สำหรับการยกเลิกการโหลดกล้อง มันวนซ้ำผ่าน SRCDIR และตั้งชื่อแต่ละภาพด้วยวันที่และเวลาก่อนที่จะคัดลอกภาพไปยัง DESTDIR
#!/usr/bin/python
import os
import string
import time
import shutil
###################################################
__SRCDIR__ = "/mnt/camera"
__DESTDIR__ = "/home/pictures/recent"
###################################################
def cbwalk(arg, dirname, names):
sdatetime = time.strftime("%y%m%d%H%M")
for name in names:
if string.lower(name[-3:]) in ("jpg", "mov"):
srcfile = "%s/%s" % (dirname, name)
destfile = "%s/%s_%s" % (__DESTDIR__, sdatetime, name)
print destfile
shutil.copyfile( srcfile, destfile)
###################################################
if __name__ == "__main__":
os.path.walk(__SRCDIR__, cbwalk, None)
ไม่กี่ปีที่ผ่านมาฉันเขียนแอพ winforms ด้วยความช่วยเหลือของ win32 api สองสามตัวเพื่อล็อคตัวเองจากคอมพิวเตอร์เป็นเวลาหนึ่งชั่วโมงอย่างสมบูรณ์เพื่อที่จะบังคับให้ฉันไปออกกำลังกาย เพราะฉันขี้เกียจ? ไม่ ... เพราะฉันมีเป้าหมายในการออกกำลังกายส่วนตัว บางครั้งคุณต้องเตะเล็กน้อยเพื่อเริ่มต้น :)
ฉันเขียนสคริปต์ Python ที่จะไปยังเว็บการ์ตูนทั้งหมดที่ฉันอ่านและดาวน์โหลดการ์ตูนใหม่ ๆ ฉันแค่เรียกใช้วันละครั้งและไม่จำเป็นต้องเยี่ยมชมแต่ละไซต์ทีละไซต์เพียงไปที่ / Comics / Folder ;)
สคริปต์สำรอง. cmd ของฉัน มันทำงานบนเซิร์ฟเวอร์ของฉันทุกคืนและตั้งชื่อไฟล์สำรองตามวันในสัปดาห์ การสำรองข้อมูลหนึ่งสัปดาห์เต็มช่วยฉัน (และครอบครัว) ได้หลายครั้ง:
:: อาร์กิวเมนต์สำรอง: :: / V ยืนยัน? (ใช่ไม่ใช่) :: / R จำกัด การเข้าถึงเฉพาะเจ้าของ? (ใช่ไม่ใช่) :: / RS ที่เก็บข้อมูลแบบถอดได้? (ใช่ไม่ใช่) :: / การบีบอัดฮาร์ดแวร์ HC (เปิด / ปิด) :: / M ประเภทการสำรองข้อมูล (ปกติ / สำเนา / ส่วนต่าง / ส่วนเพิ่ม / รายวัน) :: / L ประเภทไฟล์บันทึก (f / s / n) :: / D "คำอธิบาย" :: / J "ชื่องาน" :: / F "ชื่อไฟล์" SETLOCAL :: ตรวจสอบให้แน่ใจว่าได้ติดตั้งไดรฟ์เครือข่ายแล้ว โทร C: \ bat \ configs \ MapShares-home.cmd เสียงสะท้อน ตั้งวันนี้ =% DATE: ~ 0,3% ถ้า% วันนี้% == จันทร์ตั้งเมื่อวาน = 0 วันอาทิตย์ if% today% == Tue set เมื่อวาน = 1Monday ถ้า% วันนี้% == พ. ตั้งเมื่อวาน = 2 อังคาร ถ้า% วันนี้% == พฤตั้งเมื่อวาน = 3 วันพุธ ถ้า% วันนี้% == ศ. ตั้งเมื่อวาน = 4 วันพฤหัสบดี ถ้า% วันนี้% == ตั้งวันเสาร์เมื่อวาน = 5 วันศุกร์ ถ้า% วันนี้% == อาทิตย์เมื่อวาน = 6 วันเสาร์ ตั้งค่า configsDir =% ~ dp0 ตั้ง storePath = C: \ mybackups :: (เช่นไฟล์ Monday C) ตั้งชื่อเรื่อง =% เมื่อวานนี้% ชุดสำรอง echo% DATE%% TIME%% title%> "% storePath% \% เมื่อวาน% _backup.log" โทร BackupConfigs.bat :: สร้างไฟล์ BKF ใหม่ เรียก C: \ WINDOWS \ system32 \ ntbackup.exe การสำรองข้อมูล ^ "@% configsDir% \ daily.bks" ^ / V: ใช่ / R: ไม่ / RS: ไม่ / HC: ปิด / M ปกติ / L: s ^ / D "% title%" ^ / ญ "% title% .job" ^ / F "% storePath% \% เมื่อวาน% .bkf" ^ >> "% storePath% \% เมื่อวาน% _backup.log" echo% DATE%% TIME% เสร็จสมบูรณ์ >> "% storePath% \% เมื่อวาน% _backup.log" คัดลอก "% storePath% \% เมื่อวาน% .bkf" "V: \ Backups \ NEPTUNE" โทร C: \ bat \ clean-temps.bat Defrag -v C:> "% storePath% \% เมื่อวาน% _defrag.log" :: แสดงไดเรกทอรีสำรอง start / D "C: \ bat \ Backups \" checkbkf.bat ENDLOCAL ::หยุด
ฉันเขียนสคริปต์ที่ถูกใช้ทุกวันในทีมของฉัน เมื่อฉันเคยทำงานกับ Intel เรามีแอปที่พูดคุยกับฐานข้อมูลการเข้าถึงเพื่อเก็บข้อมูลการลงทะเบียนทิ้ง (ฉันทำงานเกี่ยวกับการตรวจสอบความถูกต้องของชิปเซ็ต) จะใช้ข้อมูลนี้ (จากแบบสอบถาม SQL) และถ่ายโอนข้อมูลลงในไฟล์ CSV ไฟล์ HTML และไฟล์ Excel กระบวนการทั้งหมดใช้เวลาเกือบ 2 ชั่วโมง ไม่ตลก. ไม่รู้ว่าทำไมถึงใช้เวลานานขนาดนี้ เราจะเริ่มก่อนอาหารกลางวันหนึ่งชั่วโมงไปทานอาหารกลางวันแล้วกลับมา
ฉันคิดว่ามันต้องมีวิธีที่ดีกว่านี้ ฉันได้พูดคุยกับทีมที่ดูแลฐานข้อมูลรีจิสทรีและได้รับรหัส SQL จากพวกเขา จากนั้นฉันก็เขียนสคริปต์ perl ที่ดึงข้อมูลและส่งออกเป็นรูปแบบ CSV, HTML และ Excel รันไทม์? ประมาณ 1-2 วินาที การปรับปรุงความเร็วที่ยอดเยี่ยม
ฉันยังเขียนสคริปต์สองสามตอนในขณะที่ฉันถูกส่งไปประจำการในอิรักในปี 2549 (ฉันรับราชการในหน่วยพิทักษ์ชาติเป็นเวลา 9 ปี - ออกในเดือนธันวาคม) เราใช้แอพเก่านี้ชื่อว่า ULLS-G (Unit Level Logistics System - Ground) ซึ่งเขียนด้วย ADA และเดิมทำงานบน DOS พวกเขาแฮ็กมันมากพอที่จะทำงานบน Windows XP ในเชลล์คำสั่ง ระบบนี้ไม่มีอินเทอร์เฟซของเมาส์ ทุกอย่างผ่านแป้นพิมพ์และไม่มีฟังก์ชันแบทช์ สมมติว่าคุณต้องการพิมพ์ใบอนุญาตสำหรับผู้ประกอบการยานพาหนะทั้งหมด? อืม ... เรามีทหาร 150 คนในหน่วยของเราดังนั้นจึงใช้เวลานาน สมมติว่าทุกคนมีคุณสมบัติในรถคันใหม่และคุณต้องการเพิ่มมันในคุณสมบัติผู้ปฏิบัติงานของทุกคนหรือไม่? คุณต้องทำทีละรายการ
ฉันสามารถค้นหาไดรเวอร์ ODBC สำหรับฐานข้อมูล SAGE (สิ่งที่ ULLS-G ใช้) ดังนั้นฉันจึงเขียนสคริปต์ perl ที่สามารถพูดคุยกับฐานข้อมูล SAGE ได้ ดังนั้นสิ่งที่ใช้เวลากว่าหนึ่งชั่วโมงตอนนี้ใช้เวลาเพียงไม่กี่วินาที ฉันยังใช้สคริปต์และไดรเวอร์ของฉันในการรายงาน เราต้องรายงานข้อมูลทั้งหมดถึงกองพันทุกเช้า หน่วยงานอื่น ๆ จะเขียนข้อมูลด้วยมือทุกเช้า ฉันตีมาโคร Excel ที่พูดคุยโดยใช้ไดรเวอร์เดียวกันและพูดคุยกับฐานข้อมูล SAGE และอัปเดตสเปรดชีต Excel ด้วยวิธีนั้น เป็นมาโคร Excel ที่ซับซ้อนที่สุดและมีเพียงมาโครที่ฉันเคยเขียน มันจ่ายออกไปเพราะพวกเขามอบเหรียญยกย่องกองทัพให้ฉัน ใช่ฉันได้รับเหรียญในการทหารจากการเขียนสคริปต์ perl :) มีกี่คนที่สามารถพูดได้? ;)
ฉันเป็นนักบินส่วนตัว ฉันเขียนสคริปต์สองสามบทที่ได้รับข้อมูลสภาพอากาศสำหรับสนามบินท้องถิ่นจาก Aviationweather.gov มีประโยชน์สำหรับคำตอบสั้น ๆ สำหรับคำถาม "วันนี้เป็นวันดีไหม"
สคริปต์ Greasemonkey ซึ่งลบความคิดเห็นที่โง่เขลาอย่างเห็นได้ชัดจากเว็บไซต์เกม Kotaku.com
[*] ตามที่ระบุโดยความผิดพลาดในการสะกดคำทั่วไปการเขียนตัวพิมพ์ใหญ่ทั้งหมดการใช้ "LOL" มากเกินไปและการวิเคราะห์พฤติกรรมที่คล้ายคลึงกัน
นามแฝง dir = 'ls -al'เป็นสคริปต์โปรดของฉัน
เครื่องขูด HTML แบบเธรดเพื่อดาวน์โหลดคำบรรยายที่มีอยู่ทั้งหมดสำหรับซีรีส์ / ภาพยนตร์จากไซต์ที่ใช้งานได้ยาก (คุณต้องคลิกไลค์ 4 ครั้งหลังการค้นหาเพื่อไปยังหน้าดาวน์โหลดเพื่อแสดงโฆษณาเพิ่มเติม) ตอนนี้ฉันแค่ใส่เกณฑ์การค้นหาและกดดาวน์โหลด
สคริปต์ perl ที่คัดลอก Craigslist ในเครื่องของฉันตามหมวดหมู่ที่เลือกไปยัง SQL DB ซึ่งฉันสามารถสอบถามได้
V2 ของสิ่งนี้อัปเดต DB ด้วยตัวจับเวลาและแจ้งเตือนฉันหากฉันมีการจับคู่กับคำถามใด ๆ โดยทั่วไปจะให้เอเจนต์พื้นหลังสำหรับ CL
การเปลี่ยนชื่อไฟล์จำนวนมากด้วยการลากและวาง
ก่อนหน้านี้ฉันได้สร้าง VBScript ขนาดเล็กที่ยอมรับ RegEx และแทนที่ชื่อไฟล์ตามนั้น คุณเพียงแค่วางไฟล์หรือโฟลเดอร์จำนวนมากลงไป ฉันพบว่ามีประโยชน์มากตลอดหลายปีที่ผ่านมา
gist.github.com/15824 (ระวังความคิดเห็นเป็นภาษาเยอรมัน)
สคริปต์ Python ที่รวดเร็วและสกปรกที่ค้นหา DNS สำหรับ google.com ทุก ๆ 5 วินาทีและส่งเสียงบี๊บหนึ่งครั้งหากสำเร็จและสองครั้งหากล้มเหลว
ฉันเขียนสิ่งนี้ในช่วงเวลาที่ฉันต้องอยู่กับเครือข่ายในบ้านที่มีปัญหามาก มันทำให้ฉันรู้สถานะของเครือข่ายได้ทันทีแม้ในขณะที่ฉันอยู่ใต้โต๊ะทำงานในห้องด้วยมือทั้งสองข้างที่เต็มไปด้วยสายเคเบิลเครือข่ายและไฟฉายอยู่ในปาก
สิ่งนี้จากการโพสต์ในบล็อกของฉันเมื่อไม่กี่เดือนที่ผ่านมาได้หายไปจากความคิดที่ฉันคิดว่าเจ๋งไปเป็นแฮ็กเล็ก ๆ น้อย ๆ ที่ดีที่สุดที่ฉันเคยไอในความทรงจำล่าสุด ฉันพูดแบบเต็มที่นี่:
==================
ฉันใช้เวลาส่วนใหญ่ในการทุบตี สำหรับผู้ที่ไม่ได้ฝึกหัด bash เป็นระบบที่คุณจะพบได้ในเครื่องยูนิกซ์ส่วนใหญ่และโชคดีที่มี Windows และ Mac ทุกเครื่อง ในตอนแรกบลัชออนมันไม่มากไปกว่าอินเทอร์เฟซบรรทัดคำสั่งดังนั้นจึงไม่อยู่ในเรดาร์ของผู้ใช้ส่วนใหญ่ที่มองว่าสิ่งต่างๆเหล่านี้เป็นยุคสมัยที่พวกเขาค่อนข้างจะลืม
ฉันทำเกือบทุกอย่างด้วยการทุบตี ฉันอ่านอีเมลของฉันจากบรรทัดคำสั่งซึ่งเป็นสาเหตุที่ฉันหลีกเลี่ยงอีเมลที่มาร์กอัป ฉันนำทางไดเร็กทอรีแก้ไขไฟล์มีส่วนร่วมในการชำระเงินและการจัดส่งซอร์สโค้ดประจำวันของฉันค้นหาไฟล์ค้นหาภายในไฟล์รีบูตเครื่องของฉันและแม้กระทั่งเรียกดูหน้าเว็บจากบรรทัดคำสั่งเป็นครั้งคราว ทุบตีคือหัวใจและจิตวิญญาณของการดำรงอยู่แบบดิจิทัลของฉัน
ปัญหาคือฉันมักจะเปิดหน้าต่าง bash ประมาณ 6 ครั้ง ที่ทำงานวันนี้ฉันมีเว็บเซิร์ฟเวอร์เครื่องหนึ่งกำลังเล่นซอกับฐานข้อมูลของฉันหนึ่งในสามสี่และห้าแก้ไขไฟล์ที่แตกต่างกันในขณะที่หนึ่งในหกกำลังบดผ่านเครื่องของฉันพยายามบันทึกชื่อของทุกไฟล์ในระบบ ทำไม? เนื่องจากสะดวกในการค้นหาในที่เก็บถาวรดังกล่าวหากคุณต้องการทราบว่าจะค้นหาวัตถุจากชื่อไฟล์
เมื่อคุณทำเช่นนี้คุณจะพบกับหน้าต่างจำนวนมากในแถบควบคุมของคุณที่มีชื่อว่า "ทุบตี" นี่เป็นเรื่องดีถ้าคุณมีเพียงหนึ่งในนั้น แต่จะเจ็บปวดเมื่อคุณมี 6 ตัวขึ้นไป .... และอีกสองโหลเกิดขึ้น ฉันมีจอภาพสามจอภายใต้คำสั่งพร้อมกันของคู่คีย์บอร์ด / เมาส์หนึ่งคู่และฉันยังรู้สึกว่าต้องการมากกว่า หน้าต่างเหล่านั้นแต่ละบานมีช่องเสียบ bash หลายช่องเปิดอยู่
ดังนั้นฉันจึงรวบรวมสิ่งนี้เข้าด้วยกัน ขั้นแรกวางบรรทัดเหล่านี้ใน. bash_profile ของคุณ:
export PROMPT_COMMAND='export TRIM=`~/bin/trim.pl`'
export PS1="\[\e]0;\$TRIM\a\]\$TRIM> "
trap 'CMD=`history|~/bin/hist.pl`;echo -en "\e]0;$TRIM> $CMD\007"' DEBUG
ฉันอ่านและเขียนย่อหน้าหลายสิบย่อหน้าเกี่ยวกับวิธีการทำงานทั้งหมดนี้และสาเหตุที่ทำให้มันถูกตั้งค่าอย่างที่เป็นอยู่ แต่คุณไม่สนใจจริงๆ เชื่อฉัน. มีบทหนึ่งของหนังสือที่ว่าทำไมฉันถึงทำ "CMD = ...
; echo ... " ในบรรทัดที่สามนั้น หลายคน (รวมถึง bluehost ที่โฮสต์โดเมนอื่นของฉัน) ยังคงใช้อยู่และ bash เวอร์ชันเก่าที่มีข้อบกพร่องสำคัญในการจัดการกับดักดังนั้นเราจึงติดอยู่กับสิ่งนี้ คุณสามารถลบ CMD และแทนที่ด้วย $ BASH_COMMAND ได้หากคุณใช้เวอร์ชัน bash ของคุณอยู่และรู้สึกอยากทำวิจัย
อย่างไรก็ตามสคริปต์แรกที่ฉันใช้อยู่ที่นี่ มันสร้างพร้อมต์ที่ดีที่มีชื่อเครื่องและไดเร็กทอรีของคุณสับลงไปตามความยาวที่เหมาะสม
============trim.pl===========
#!/usr/bin/perl
#It seems that my cygwin box doesn't have HOSTNAME available in the
#environment - at least not to scripts - so I'm getting it elsewhere.
open (IN, "/usr/bin/hostname|");
$hostname = <IN>;
close (IN);
$hostname =~ /^([A-Za-z0-9-]*)/;
$host_short = $1;
$preamble = "..." if (length($ENV{"PWD"})>37);
$ENV{"PWD"} =~ /(.{1,37}$)/;
$path_short = $1;
print "$host_short: $preamble$path_short";
==============================
มีคำเตือนที่ด้านบนของบล็อกโพสต์นี้ซึ่งคุณควรอ่านก่อนที่จะเริ่มถามคำถามโง่ ๆ เช่น "ทำไมคุณไม่ใช้ตัวแปรสภาพแวดล้อม HOSTNAME ผ่าน @ENV" ง่าย: เพราะนั่นใช้ไม่ได้กับทุกระบบที่ฉันลองใช้
ตอนนี้สำหรับบิตเด็ดจริงๆ จำบรรทัดที่ 3 ของการเพิ่ม. bash_profile ได้ไหม
trap 'CMD=`history|~/bin/hist.pl`;echo -en "\e]0;$TRIM> $CMD\007"' DEBUG
เป็นการทิ้งเอาต์พุตสคริปต์ trim.pl ในคอนเทนเนอร์เดียวกันกับก่อนหน้านี้พิมพ์ไปยังทั้งพรอมต์คำสั่งและชื่อหน้าต่าง แต่คราวนี้เป็นการเพิ่มคำสั่งที่คุณเพิ่งพิมพ์! นี่คือเหตุผลที่คุณไม่ต้องการทำสิ่งนี้ทั้งหมดใน. bashrc ของคุณ: สคริปต์ใด ๆ ที่คุณเรียกใช้ (บนเครื่องของฉันผู้ชายเป็นหนึ่งในนั้น) จะเรียกสิ่งนี้ในทุกบรรทัด ผลลัพธ์ของมนุษย์เริ่มเข้าใจผิดอย่างมากจากสิ่งที่เรากำลังทำอยู่ที่นี่ เราไม่ได้เล่นกับเทอร์มินัลอย่างดี
ในการรับคำสั่งที่คุณเพิ่งพิมพ์เราจะนำประวัติของ bash มาและทอยลูกเต๋า:
===========hist.pl============
#!/usr/bin/perl
while (<STDIN>)
{
$line = $_
}
chomp $line;
$line =~ /^.{27}(.*)/;
print $1;
==============================
ตอนนี้ฉันมีหน้าต่างพันล้านบานและพวกเขาพูดว่า:
castro: /home/ronb blog
Ron-D630: /C/ronb/rails/depot script/server
Ron-D630: /C/ronb/rails/depot mysql -u ron -p
Ron-D630: /C/ronb/rails/depot find . > /C/ronb/system.map
Ron-D630: /C/ronb/rails/depot vi app/views/cart.html.erb
Ron-D630: /C/perforce/depot/ p4 protect
Ron-D630: /C/perforce/depot/ p4 sync -f
Ron-D630: /C/perforce/depot/
จากแถบเล็ก ๆ ที่มีความสุขที่ด้านล่างของหน้าจอตอนนี้ฉันสามารถบอกได้ว่าอะไรคือสิ่งที่มองแวบเดียว และเนื่องจากเราได้ตั้งค่า PS1 แล้วทันทีที่คำสั่งทำงานเสร็จสิ้นชื่อคำสั่งจะถูกแทนที่ด้วยเอาต์พุตของ trim.pl อีกครั้ง
อัปเดต (วันเดียวกัน): สิ่งนี้ (รายการ. bash_profile) ทำให้ฉันรู้สึกแย่เมื่อฉันลองใช้ใน. bashrc . bashrc ของคุณถูกเรียกใช้งานโดยสคริปต์ที่ไม่โต้ตอบเมื่อใดก็ตามที่คุณเรียกใช้ bash เป็นภาษา ฉันกดปุ่มนี้เมื่อฉันพยายามใช้มนุษย์ ขยะทุกประเภท (ข้อความที่สมบูรณ์ของ. bashrc ของฉันรวมถึงอักขระหลบหนี) ปรากฏขึ้นที่ด้านบนของหน้าคน ฉันขอแนะนำให้ทดสอบอัญมณีนี้ด้วยการเรียกใช้ 'man man' อย่างรวดเร็วที่บรรทัดคำสั่งเมื่อคุณรวมมันทั้งหมดเข้าด้วยกัน
ฉันเดาว่าถึงเวลาที่ฉันจะต้องดึงขยะที่กำหนดเองออกจาก. bashrc ของฉันและวางไว้ในที่ที่เป็นของ ...
โดยไม่ได้ตั้งใจฉันพบว่าตัวเองกำลังพิมพ์คำว่า 'man trap' ณ จุดหนึ่งในกระบวนการนี้
เวลาทำงานที่เดิมของฉันมันไร้สาระ มันเป็น บริษัท ซอฟต์แวร์และเจ้านายของฉันถูกดูด เขาจะให้เราทำงานประมาณ 17.30 น. (พอถึงเวลากลับบ้าน) และให้เราทำงานให้เสร็จจนถึงเวลา 23.00 น. ที่ผ่านมา หรือเขาจะพบปัญหาที่น่ารำคาญในโค้ดที่ยังดำเนินการอยู่
ดังนั้นฉันจึงสร้างไฟล์แบตช์และสคริปต์ที่จะปิดคอมพิวเตอร์ของฉันในเวลาสุ่มระหว่าง 19.00 ถึง 20.00 น. มีตัวจับเวลา 1 นาทีในกรณีที่ฉันจะอยู่ต่อไปอีกหลายชั่วโมงและจำเป็นต้องยกเลิกกระบวนการปิดเครื่อง
แต่ฉันจะออกจากโต๊ะทำงานก่อน 17.00 น. ดังนั้นเขาจึงไม่สามารถหาฉันได้ถ้าเขาต้องการทิ้งขยะในเวลาชำระเงิน ถ้าเขามาที่โต๊ะของฉันและเห็นคอมพิวเตอร์ของฉันเขาจะคิดว่าฉันยังอยู่แถว ๆ ตู้กับข้าวหรือที่มินิมาร์ทใกล้ ๆ เพื่อหยิบชิปหรืออะไรบางอย่าง แต่ถ้ามันดับประมาณนั้นเขาจะโทรมาหาฉันและบอกให้ฉันกลับไปที่สำนักงาน
ฉันยังตั้งเวลาให้ BIOS บนเครื่องของฉันเปิดเครื่องประมาณ 8.00 น. หรือ 9.00 น. ในกรณีที่รู้สึกขี้เกียจและอยากเดินเล่นในเวลาประมาณ 10.00 น. หรือ 11.00 น. ถ้าจับได้ว่าเดินไปที่โต๊ะทำงานเขาจะถามว่า และฉันจะบอกว่า "ฉันกำลังประชุมกับทีมการตลาด" หรือ "ฉันออกไปทานอาหารเช้า"
หมาโง่
ฉันเคยทำงานที่ค่ายฤดูร้อนด้านเทคโนโลยีและเราต้องเขียนบทความเหล่านี้ให้กับเด็ก ๆ แต่ละคนในกลุ่มเมื่อสิ้นสุดสัปดาห์ซึ่งพวกเขาจะได้รับและนำกลับบ้านเป็นของที่ระลึก โดยปกติแล้วสิ่งเหล่านี้ประกอบด้วยประโยคทั่วไปจำนวนมากและประโยคที่ปรับเปลี่ยนเฉพาะบุคคล 1-2 ประโยค ฉันเขียนสคริปต์ python ซึ่งสร้างหนึ่งในการเขียนเหล่านี้จากประโยคกระป๋องและอนุญาตให้ผู้ใช้เพิ่มประโยคส่วนตัวสองสามประโยคตรงกลาง สิ่งนี้ช่วยประหยัดเวลาได้มากสำหรับฉันและที่ปรึกษาคนอื่น ๆ ที่ฉันยอมให้ความลับ แม้ว่าจะเป็นแบบอัตโนมัติส่วนใหญ่การเขียนของเราก็ยังดูดีกว่างานที่ "ซื่อสัตย์" หลาย ๆ เรื่องเพราะเราสามารถใส่เวลาในส่วนที่เป็นส่วนตัวได้มากขึ้น
#! /bin/bash
# check to see if site is up
# if it is, don't worry
# if it's down, restart apache after get a process listing
#
# v.1 Warren M Myers - initial stab
# 31 Aug 06
#
ERRCOD='7'
WHEN=`date +%d%b%y`
REPT="~/psaux.$WHEN.txt"
STARS='********************'
curl -I http://www.shodor.org > /var/tmp/curlret.txt
if [ "$?" = "$ERRCOD" ]; then
# return was unable to connect to host: save ps -aux; mail report
ps -aux > $REPT
echo $STARS
echo 'curl return results'
echo
cat curlret.txt
echo
echo $STARS
echo 'ps -aux results'
cat $REPT
echo
echo $STARS
echo 'restarting apache'
/etc/init.d/apache2 restart
echo 'apache restarted'
echo
echo "ps -aux results saved in $REPT"
fi
rm -f /var/tmp/curlret.txt
สคริปต์ Greasemonkey เพื่อเพิ่มกล่องควบคุม "กดปุ่มนั้นมาก ๆ " ในเกมออนไลน์
สคริปต์เล็ก ๆ น้อย ๆ ที่ตรวจสอบเว็บไซต์ยอดนิยมบางแห่งสำหรับโฆษณาที่ตรงกับทักษะของฉันและส่งอีเมลถึงฉัน
ฉันใช้สิ่งนี้เป็นฟังก์ชันโหลดอัตโนมัติ ฉันสามารถพิมพ์ "mycd" และรายการไดเรกทอรีจะปรากฏขึ้นซึ่งฉันมักจะ cd ถึง ถ้าฉันบังเอิญรู้จำนวนฉันก็แค่พูดว่า "mycd 2" ในการเพิ่มไดเร็กทอรีในรายการคุณเพียงพิมพ์ "mycd / tmp / foo / somedirectory"
function mycd {
MYCD=/tmp/mycd.txt
touch ${MYCD}
typeset -i x
typeset -i ITEM_NO
typeset -i i
x=0
if [[ -n "${1}" ]]; then
if [[ -d "${1}" ]]; then
print "${1}" >> ${MYCD}
sort -u ${MYCD} > ${MYCD}.tmp
mv ${MYCD}.tmp ${MYCD}
FOLDER=${1}
else
i=${1}
FOLDER=$(sed -n "${i}p" ${MYCD})
fi
fi
if [[ -z "${1}" ]]; then
print ""
cat ${MYCD} | while read f; do
x=$(expr ${x} + 1)
print "${x}. ${f}"
done
print "\nSelect #"
read ITEM_NO
FOLDER=$(sed -n "${ITEM_NO}p" ${MYCD})
fi
if [[ -d "${FOLDER}" ]]; then
cd ${FOLDER}
fi
}
ฉันชอบจัดเก็บรูปภาพของฉันไว้ในไดเรกทอรีตามวันที่ถ่ายภาพ ดังนั้นฉันจึงเขียนโปรแกรมที่จะสแกนการ์ดหน่วยความจำเพื่อหารูปภาพสร้างโฟลเดอร์ใด ๆ บนฮาร์ดดิสก์ของฉันซึ่งจำเป็นต้องใช้ตามวันที่ของรูปภาพจากนั้นคัดลอก
เขียนสคริปต์เพื่อคลิกปุ่มเริ่มของฉันจากนั้นคลิกอีกครั้งในครึ่งวินาทีและทำซ้ำทุก ๆ 30 วินาที
ทำให้ฉันทำเครื่องหมายว่าออนไลน์ขณะทำงานอยู่เสมอและฉันสามารถทำงานจริงบนแล็ปท็อปส่วนตัวได้ทันที ไม่จมอยู่กับซอฟต์แวร์การทำงาน
อย่าบอกเจ้านาย :)
ทางลัดต่างๆไปยังคำสั่ง "net start" และ "net stop" เพื่อให้ฉันสามารถเริ่มและหยุดบริการได้โดยไม่ต้องเข้าไปใน Services MMC
เชลล์สคริปต์เพื่อดำเนินการสำรองข้อมูลโดยใช้ rsync นอกจากนี้ยังรองรับการเรียกใช้โปรแกรมลูกตามอำเภอใจเพื่อสนับสนุนกิจกรรมอื่น ๆ ที่สำรองไว้ล่วงหน้า (เช่นดาวน์โหลดบุ๊กมาร์กแสนอร่อยเป็นต้น)
แอปพลิเคชันขนาดเล็กที่คลิกซ้าย (หรือดับเบิลคลิก) ทุกๆ "X" ms สำหรับระยะเวลา "Y" ไม่จำเป็นต้องให้นกดื่มตัวนั้นทำงานที่โรงไฟฟ้านิวเคลียร์อีกต่อไป! ;)