일상 생활에서 가장 유용한 스크립트는 무엇입니까? [닫은]


132

여기 사람들이 일상 생활에 도움이되는 작은 스크립트 / 프로그램이 무엇인지 궁금해하는 것만으로도 일이 관련이 없습니다.

획기적인 것이 든 아니든간에. 지금 당장은 거리와 시간이 경과하면 달리는 속도를 계산하는 작은 파이썬 스크립트입니다.


나는 정말 멋진 작업 관련 것들을 보았지만 "매일의 삶"관련 스크립트만큼 많지는 않았습니다. 다시, 직장에서 무언가가 당신의 인생을 망치고 당신이 깔끔한 대본으로 고쳤다면, 내가 누구를 판단해야합니까?
Kyle Walsh

10
스택 오버플로 가치가있는 보석 질문 중 하나입니다. 닫히겠다고 제안하는 지침은 없어야하며, 닫으려고 투표 한 모 든 사람이되어서는 안됩니다.
Bill K

이것은 나를 위해 하나입니다 : github.com/codeforester/base . 이 프레임 워크는 SRE / DevOps 직원으로서의 생산성을 향상시키고 팀 응집력과 협업을 향상 시켰습니다.
codeforester

답변:


116

o키는 내 노트북에 떨어졌다; 그래서 0서로 200 MS 내 o에서 두 개의 0키 입력을 서로 700 MS 내 에서 두 개의 키 입력 을 대체 0하고 나머지는 무시하는 프로그램을 작성했습니다. 키보드를 교체하기 전에 랩톱을 사용할 수있었습니다.

와; 나는 이것이 너무 인기가 있다는 것을 몰랐다 : p

방법-Microsoft는 Hooks 라는 멋진 API 기능을 공개합니다 .

그 고리를 사용하여; 내가해야 할 일을 한 "필터"를 작성할 수있었습니다 (힌트 : 콜백 창에서 1을 반환하면 키 입력을 처리하지 않습니다).

내가 이것에 대해 알고있는 이유는 실제로 키로거를 작성했기 때문이 아니라 얼마 전에 Synergy에 프로그램 스마일 러를 작성했기 때문 입니다.

그리고 그렇습니다. 나는 영숫자 키를 임의의 영숫자 키로 바꾸고 다른 프로그램을 작성했습니다. 정말 재밌었어요 : D


1
나는 노출 된 키 레스트를 타이핑하는 것에 대해 생각했을지 모르지만, 그 주위에 흥미로운 방법이 있습니다. :)
warren

2
내가 그 f를 생각하지 않았다 왜 내가 같은 prblem ... :-( 데 ... wnder
asterite

1
이것은이 XKCD 만화 생각 나게 : xkcd.com/196
JesperE

59
하아! Y00u는 다시 입력하지 않고 표준 키를 다시 입력 할 수 없습니다. 행운을 빌어!
Doug L.

107
가장 큰 질문은 문자 'o'를 사용하지 않고 어떻게 프로그램을 작성 했습니까?
e.James

115

더 이상 코드가 없지만 VBA에서 내가 작성한 가장 유용한 스크립트는 믿거 나 말거나하지 않았습니다. 나는 그에게 체리 폭탄이라고 불리는 짧은 퓨즈를 가진 성가신 동료가 있었다. 고객이 전화를 걸고 일어 서서 칸막이 벽 너머로 날 뛰기 시작했을 때 종종 화가 나서 생산성과 사기를 떨어 뜨 렸습니다.

나는 항상 Microsoft Excel을 열었습니다. 그가 그렇게 할 때 Excel로 Alt-Tab을 누르면 툴바에 체리 폭탄 이미지가있는 새로운 아이콘이 있습니다. 나는 신중하게 클릭하고 아무 일도 일어나지 않을 것입니다.

그러나 그 후 얼마 지나지 않아 전화를 받고 "그렇습니다. 예, 좋지 않습니다. 좀 더 잘 살펴 보았습니다." 그런 다음 일어나서 체리 폭탄에 사과하고 걸어 나갔습니다.

무슨 일이 있었는지 우리는 NetWare를 사용했고 기본 메시징 시스템이 내장되어있었습니다. 버튼을 클릭하면 작은 VBA 스크립트가 친구에게 NetWare 폭탄 메시지를 보내 체리 폭탄이 다시 있었다는 것을 알려줍니다. 전화주세요 그는 그것을 이해하지 못했습니다 :)


94
어색한 사회적 상황에서 벗어나기 위해 프로그램을 작성할 때 자신이 프로그래머라는 것을 알고 있습니다.
Cadoo

7
대박! 이것은 최고의 사회 공학입니다!
Beska

1
체리 폭탄이 StackOverflow를 사용하지 않기를 바랍니다 :)
Pedro Luz

94

라는 bash는 스크립트 까지 내가에있어 경우에 너무 /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> 

gmatt의 NB :

위의 위대한 작업을 수행하면 다음을 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
}

4
+1 물론 F 화려한 보내고 '! 나는 이것을 많이 사용할 것입니다 !
wzzrd

12
읽기 쉬운 코드를 읽기 어려운 코드로 대체하는 이유는 무엇입니까? 소스 코드 줄이 적 으면 컴퓨터가 더 빨리 실행됩니까?
Beska

3
gnud : 깨끗하고 명확한 코드를 쓰레기로 대체 하시겠습니까? 고맙지 만 사양 할게.
foxdonut

2
훌륭한! 나는 이것을 back방법 을 포함하도록 확장 했으므로, 쓸모가있을 때마다 쉽게 앞뒤로 움직일 수 있습니다. 이것을 사용하려면 이것을 bashrc에 넣으십시오 (똥 형식에 대해 죄송합니다) : function up () {((i = 1; i <= LIMIT; i ++)에 대한 LIMIT = $ 1 P = $ PWD P = $ P / .. done cd $ P 내보내기 MPWD = $ P} 함수 back () {((i = 1; i <= LIMIT; i ++))에 대한 {LIMIT = $ 1 P = $ MPWD do P = $ {P % / ..} done cd $ P 내보내기 MPWD = $ P}
ldog

2
내가 미쳤어? 이게 어떻게 작동합니까? 스크립트의 cd는 CD가 있지만 스크립트가 존재하면 같은 / 원래 디렉토리로 돌아갑니다! 내 배쉬가 다른 것들과 다르게 작동합니까?
johnnyB

67

슈퍼 원격 리셋 버튼. 세계의 반대편에있는 사용자가 이른 아침 시간에 충돌 할 수있는 슈퍼 특수 시뮬레이션 하드웨어
랙 (VME 상자가 가득 찬 방이 GPU보다 적었던 시절). 실험실에 들어가 보안을 통과하는 데 1 시간이 걸렸습니다.

그러나 우리는 슈퍼 특수 컨트롤러 에 연결 하거나 하드웨어를 수정할 수 없었습니다 . 해결책은 엡손 도트 매트릭스 프린터가 장착 된 오래된 DEC 워크 스테이션이었고 플라스틱 눈금자를 용지 공급 손잡이에 테이프로 고정하고 프린터를 재설정 버튼 근처에 놓습니다.
WS에 일반 사용자 (루트가 허용되지 않고 모든 외부 포트가 잠김)로 로그인하고 24 개의 빈 줄이있는 문서를 인쇄하십시오. 이렇게하면 용지 공급 노브가 회전하고 눈금자가 슈퍼 특수 하드웨어 의 재설정을 눌렀습니다 .


환상적인 이야기! 당신을 믿을 것인지 아닌지 확실하지 않습니다;)
Greg Whitfield

결국 직렬 포트의 DTR 라인에 연결된 전원 스위치 릴레이로 대체되었지만 루트 액세스가 필요했습니다. 그리고 Ultrix를 실행하고 있었기 때문에 DEC WS를 말해야했습니다.
Martin Beckett

와우, 보안에 걸리는 길이!
Chris Ballance

1
나에게 이것을 상기시킨다 : thedailywtf.com/Articles/Open-Sesame.aspx
rjmunro

5
그 당시에 CD 트레이를 가지고 있었다면 더 쉬운 해결책이었을 것입니다.
Martin Beckett

63

Windows XP에서는 매일 C : \에서이 명령을 실행하도록 AT 작업을 설정했습니다.

dir /s /b * > dirlist.txt

C 드라이브에있는 모든 파일의 전체 경로가 나열됩니다. 그런 다음 파일을 찾아야 할 때마다을 사용할 수 있습니다 findstr. 전체 경로에서 정규식 일치를 허용하기 때문에 Windows 탐색기 검색을 사용하는 것이 좋습니다. 예를 들면 다음과 같습니다.

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"

8
친구, 정말 좋은 생각입니다.
Epaga

10
이것이 바로 유닉스로 케이트 프로그램이하는 일입니다
Mark Baker

4
@Mark 이것은 Windows로 작업해야하더라도 유닉스로부터 굉장히 많은 유용한 것들을 배울 수 있음을 보여줍니다
Liam

1
나는 :-) 조직 유지하는 것 없다 내 "문서"폴더에 대한 이러한 스크립트 중 하나 만든
sep332을

1
거기에 Google 데스크톱 검색을 사용했습니다 : D
불구

38

디지털 카메라를 꽂으면 자동으로 실행되는 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)

코드를 공유하고, 나는 투표를 공유합니다 :)
심지어 Mien

40
이것은 당신이 당신이 전날 밤 찍은 특별한 사진을 잊어 버릴 때까지 잘 작동합니다 ...
Ed Guiness

가장 중요한 것은 실제로 2 단계 프로세스입니다. 첫 번째 단계는 카메라에서 물건을 버리고 이름을 바꿉니다. 두 번째 단계에는 Flickr에 업로드 할 것인지 묻는 프롬프트가 있습니다. 업로드하는 것이 걱정되기 때문에 업로드하면 대역폭이 줄어들 기 때문입니다.
Mark Biek

5
'플러그인시 실행'비트를 어떻게 트리거합니까?
ijw September

@ijw 유닉스의 경우 여기를 참조하십시오 : unix.stackexchange.com/questions/28548/…-windows : superuser.com/questions/219401/…
Chris

32

몇 년 전에 나는 몇 개의 win32 API를 사용하여 한 시간 동안 내 컴퓨터를 완전히 잠그고 운동을하도록 winforms 앱을 작성했습니다. 내가 게 으르니까? 아니요. 개인 피트니스 목표가 있었기 때문입니다. 때로는 시작하기 위해 약간의 킥이 필요합니다. :)


16

필자는 읽은 모든 웹 만화에 가서 새로운 만화를 다운로드하는 Python 스크립트를 작성했습니다. 하루에 한 번만 실행하면 각 사이트를 개별적으로 방문 할 필요가 없으며 / Comics / 폴더를 방문하십시오. ;)


흠. 광고 지원 만화 인 경우 광고를 볼 위험이 있으므로 "지불"하지 않을까 걱정됩니다. :-)
Matthew Scouten

2
@Matthew-요점은 알지만 광고를 보지 않는 것이 도덕적 / 윤리적 문제인 이유는 모르겠습니다. 이 경우 No-Script 및 팝업 차단의 작성자가해야 할 일이 많습니다. ;)
Onion-Knight

1
팝업은 광고를 표시하는 끔찍한 방법이기 때문에 팝업 차단기에 문제가 없습니다. 그것은 정확히 도덕적 문제가 아니라 공정성 문제입니다. 대부분의 사이트에서 애드 블로커를 사용하지만 자주 방문하여 지원하려는 특정 사이트의 경우 광고 차단 기능을 끕니다. 파이썬 스크립트로 만화를 가져오고 (사이트를 전혀 보지 못함) 나에게 느낌이 들지 만 라인이 어디에 있는지 정확하게 말할 수는 없습니다.
Matthew Scouten

14

내 .cmd 백업 스크립트 매일 밤 내 서버에서 실행되며 요일에 따라 백업 파일 이름을 지정합니다. 일주일에 한 번의 백업으로 여러 번 저와 가족을 구했습니다.

:: 백업 인수 :
:: / V 확인? (예 아니오)
:: / R 소유자에 대한 액세스를 제한 하시겠습니까? (예 아니오)
:: / RS 이동식 저장소? (예 아니오)
:: / HC 하드웨어 압축 (켜기 / 끄기)
:: / M 백업 유형 (일반 / 복사 / 차동 / 증분 / 일일)
:: / L 로그 파일 형식 (f / s / n)
:: / D "설명"
:: / J "직업 이름"
:: / F "파일 이름"

SETLOCAL

:: 네트워크 드라이브가 마운트되었는지 확인
전화 C : \ bat \ configs \ MapShares-home.cmd
에코

오늘 설정 = % DATE : ~ 0,3 %
% today % == Mon이 어제 = 0 일요일로 설정된 경우
% today % == 화가 어제 = 1 월요일 인 경우
% today % == 수요일을 어제로 설정 한 경우 = 2 화요일
% today % == 목으로 설정 한 경우 = 3 수요일
% today % == 금요일 어제 = 4 목요일 인 경우
% today % == 토요일 어제 = 5 금요일 인 경우
% today % == Sun이 어제 = 6 토요일 인 경우

configsDir = % ~ dp0 설정
storePath = C : \ mybackups 설정

:: (예 : 월요일 C 파일)
제목 설정 = % yesterday % 백업 세트


echo % DATE % % TIME % % title %> "% storePath % \ % yesterday % _backup.log"

CALL BackupConfigs.bat

:: 새로운 BKF 파일 생성
C : \ WINDOWS \ system32 \ ntbackup.exe 백업을 호출 ^
    "@ % configsDir % \ daily.bks"^
    / V : 예 / R : 아니오 / RS : 아니오 / HC : 끄기 / M 보통 / L : s ^
    / D "% title %"^
    / J "% title % .job"^
    / F "% storePath % \ % yesterday % .bkf"^
    >> "% storePath % \ % yesterday % _backup.log"

echo % DATE % % TIME % Completed >> "% storePath % \ % yesterday % _backup.log"

"% storePath % \ % yesterday % .bkf" "V : \ Backups \ NEPTUNE"복사

전화 C : \ bat \ clean-temps.bat

조각 모음 -v C :> "% storePath % \ % yesterday % _defrag.log"

:: 백업 디렉토리 표시
/ D "C : \ bat \ Backups \"checkbkf.bat 시작

내향

::중지


2
멋진 .cmd 파일 트릭이 있습니다. 리디렉션과 파이프를 피하기 위해 '^'을 사용할 수 있다는 것을 알았지 만 줄 연속으로 사용할 수도 있습니다. Cool :)
Patrick Cuff

세계는 더 적은 .bat 스크립트를 필요로하지 않습니다! :-)
JesperE

2
그리고 결론은 세상에 Windows가 덜 필요하다는 것입니다. 그때까지는 이것이 가장 일반적인 분모입니다. 저는 수십억의 사람들이 그대로 사용할 수 있기 때문에이 스크립트를 공유합니다.
Chris Noe

14

"backup.sh"는 디렉토리의 내용을 압축하여 내 gmail 계정으로 보냅니다.


이제 멋지다. smtp 설정을 사용하는 수십 대의 컴퓨터는 없지만. 슬프게도
mxcl

코드 좀 주 시겠어요?
코스타스

14

나는 매일 팀에서 사용되는 스크립트를 작성했습니다. 인텔에서 일할 때 우리는 액세스 데이터베이스와 통신하여 레지스터 정보 덤프를 가져 오는 앱을 가지고있었습니다 (칩셋 검증 작업을했습니다). SQL 쿼리에서이 정보를 가져 와서 CSV 파일, HTML 파일 및 Excel 파일로 덤프합니다. 전체 프로세스는 거의 2 시간이 걸렸습니다. 농담이 없습니다. 왜 그렇게 오래 걸 렸는지 모르겠습니다. 점심 먹기 한 시간 전에 시작해서 점심 식사를 한 다음 다시 돌아옵니다.

나는 이것을하는 더 좋은 방법이 있어야한다고 생각했다. 나는 레지스트리 데이터베이스를 유지 관리하고 그들로부터 SQL 코드를 얻은 팀과 이야기했다. 그런 다음 데이터를 가져 와서 CSV, HTML 및 Excel 형식으로 출력하는 펄 스크립트를 작성했습니다. 실행 시간? 1-2 초 정도. 큰 속도 향상.

또한 2006 년 이라크에 배치되는 동안 몇 가지 스크립트를 작성했습니다 (9 년 동안 방위군에서 복무했습니다-12 월에 나왔습니다). 우리는 ADA로 작성되었고 원래 DOS에서 실행되었던 ULLS-G (Unit Level Logistics System-Ground)라는이 오래된 앱을 사용했습니다. 그들은 명령 쉘에서 Windows XP가 실행될 곳까지 충분히 해킹했습니다. 이 시스템에는 마우스 인터페이스가 없었습니다. 모든 것은 키보드를 통해 이루어졌으며 배치 기능이 없었습니다. 모든 차량 운전자를위한 라이센스를 인쇄하고 싶다고 가정 해 봅시다. 글쎄 ... 우리 부대에는 150 명의 군인이 있었는데 오랜 시간이 걸렸다. 모든 사람이 새 차량에 대한 자격을 갖추 었으며 모든 사람의 운전자 자격에 추가하려고한다고 가정 해 봅시다. 당신은 그것을 하나씩해야했습니다.

SAGE 데이터베이스 (ULLS-G가 사용한 것)에 대한 ODBC 드라이버를 찾을 수 있었으므로 SAGE 데이터베이스와 통신 할 수있는 perl 스크립트를 작성했습니다. 한 시간 이상 걸리던 일이 이제 몇 초 밖에 걸리지 않았습니다. 또한 스크립트와 드라이버를 사용하여보고했습니다. 매일 아침 모든 정보를 대대에보고해야했습니다. 다른 부서에서는 매일 아침 정보를 직접 작성합니다. 나는 같은 드라이버를 사용하고 SAGE 데이터베이스와 대화하고 Excel 스프레드 시트를 그런 식으로 업데이트 한 Excel 매크로를 채웠습니다. 내가 작성한 것 중 가장 복잡하고 유일한 Excel 매크로입니다. 그들이 나에게 육군 표창 메달을 수여했기 때문에 돈을 지불했다. 그래, 나는 군대에서 펄 스크립트를 쓰는 메달을 받았다. :) 얼마나 많은 사람들이 말할 수 있습니까? ;)


13

나는 개인 조종사입니다. 나는 aviationweather.gov에서 지역 공항의 날씨 정보를 얻는 두 개의 대본을 썼습니다. "오늘은 좋은 날 이오?"라는 질문에 대한 빠른 답변에 유용했습니다.


aviationweather.gov가 레이아웃을 변경하고 파서를 파기하면 스크립트가 제대로 작동하지 않기를 바랍니다.
MatthieuP 2016 년

1
스크립트를 공유해 주시겠습니까?
JJD

12

게임 사이트 Kotaku.com에서 명백하게 바보 [*] 주석제거 하는 Greasemonkey 스크립트

[*] 일반적인 철자 실수, 모든 대문자 쓰기, "LOL"의 과도한 사용 및 유사한 휴리스틱으로 식별됩니다.


6
멋있는. 정규 표현식을 추출하고 하나 이상의 표현식과 일치하는 표현식으로 만 구성된 임의의 명령문을 생성하는 것 같습니다.
gnud 2013

11

alias dir = 'ls -al' 은 내가 선호하는 스크립트입니다.


4
eww ... 나는
종종

1
사람들이 왜 주관적인 태그로 질문에 대한 답을 투표하기 시작했는지 궁금해야합니다.
Greg Whitfield

네, 이것은 중요합니다 :)
Nick

11

사용하기 어려운 사이트에서 시리즈 / 동영상에 사용할 수있는 모든 자막을 다운로드 할 수있는 스레드 HTML 스크레이퍼 (검색 페이지에서 다운로드를 받으려면 4 번 클릭해야 더 많은 광고를 표시 할 수 있음) 이제 검색 기준을 정하고 다운로드를 누릅니다.


2
그는 그것을 공유 할 것이고, 사이트는 :)을 찾을 것입니다. 더 나은 ... 때로는 공유하지
카밀로 디아즈 Repka에게

11

선택한 카테고리별로 로컬 Craigslist를 SQL DB에 스크랩하여 쿼리 할 수있는 펄 스크립트.

이 V2는 타이머를 사용하여 DB를 업데이트하고 쿼리에 일치하는 것이 있으면 기본적으로 CL의 백그라운드 에이전트를 제공합니다.


8

끌어서 놓기를 통한 대량 파일 이름 바꾸기

오래 전에 RegEx를 허용하고 그에 따라 파일 이름을 바꾸는 작은 VBScript를 만들었습니다. 당신은 단순히 그것에 많은 파일이나 폴더를 드롭합니다. 나는 수년 동안 매우 유용하다는 것을 알았습니다.

gist.github.com/15824 (주석은 독일어로되어 있음)


설명 sans 코드를 투표하는 것은 어리석은 것 같습니다.
Chris Noe

웹 사이트에는 코드가 너무 많을 것입니다. 어쩌면 "작은"은 다소 과소 평가 된 것일 수 있습니다. 170 LOC입니다.
Tomalak

스크립트를 어딘가에 업로드하고 관심이 있다면 여기에 링크를 게시 할 수 있습니다.
Tomalak

8

5 초마다 google.com의 DNS를 조회하여 성공하면 한 번, 실패하면 두 번 울리는 빠르고 더러운 Python 스크립트입니다.

나는 매우 얇은 홈 네트워크와 함께 살아야 할 때 이것을 썼습니다. 네트워크 케이블로 가득 찬 양손과 입안의 손전등으로 방을 가로 질러 책상 아래로 처음 머리를 향한 상태에서도 네트워크 상태를 즉시 알 수있었습니다.


5 초? 정말 성가시다.
Ponkadoodle

그렇습니다. 30 분 정도 지나면 박쥐가 나왔습니다. 아이디어는 가능한 한 실시간 피드백에 가깝게하는 것이 었습니다. 나는 보통 약 10 분 안에 문제를 해결할 수있었습니다.
Matthew Scouten

8

이것은 몇 달 전 내 블로그에 올린 글 에서 최근 메모리에서 기침 한 최고의 작은 해킹 중 하나에 시원하다고 생각한 아이디어가 아닙니다. 나는 여기에 전체 인용 :

==================

나는 bash에서 많은 시간을 보낸다. 초기에 bash는 대부분의 유닉스 머신과 일부 윈도우와 모든 Mac에서 찾을 수있는 시스템입니다. 처음에는 홍당무가 명령 줄 인터페이스에 지나지 않으므로 잊어 버린 구애와 같은 것을 보는 대부분의 사용자의 레이더에서 멀어집니다.

나는 bash에서 거의 모든 것을한다. COMMAND LINE에서 이메일을 읽었으므로 마크 업 이메일을 피했습니다. 디렉토리를 탐색하고, 파일을 편집하고, 매일의 소스 코드 체크 아웃 및 전달, 파일 검색, 파일 내부 검색, 시스템 재부팅, 명령 줄에서 웹 페이지 탐색 등을 수행합니다. bash는 나의 디지털 존재의 마음과 영혼입니다.

문제는 한 번에 약 6 개의 bash 창을 여는 경향이 있다는 것입니다. 오늘 직장에서 하나는 웹 서버를 운영하고, 다른 하나는 내 데이터베이스를 조작하고, 세 번째, 네 번째 및 다섯 번째로 다른 파일을 편집하는 중 여섯 번째는 내 컴퓨터를 통해 시스템의 모든 파일 이름을 기록하려고 시도했습니다. 왜? 파일 이름으로 객체를 찾을 위치를 알고 싶다면 그러한 아카이브를 검색하는 것이 편리하기 때문입니다.

이렇게하면 컨트롤 바에 간단히 "bash"라는 이름의 많은 창이 생깁니다. 당신이 그들 중 하나만 가지고 있다면 괜찮지 만 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 ..."를 한 이유는 책의 전체 장입니다 . 많은 사람들 (내 다른 도메인이 호스팅되는 블루 호스트 포함)은 여전히 ​​트랩을 처리하는 방법에 큰 버그가있는 오래된 버전의 bash를 사용하고 있기 때문에 우리는 이것에 갇혀 있습니다. bash 버전을 사용하고 연구하고 싶은 느낌이 들면 CMD를 제거하고 $ BASH_COMMAND로 바꿀 수 있습니다.

어쨌든, 내가 사용하는 첫 번째 스크립트가 여기 있습니다. 적당한 이름으로 잘린 시스템 이름과 디렉토리를 포함하는 멋진 프롬프트를 만듭니다.

                       ============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";

                        ==============================

이 블로그 게시물 상단에 "@ENV를 통해 HOSTNAME 환경 변수를 사용하지 않은 이유는 무엇입니까?"와 같은 어리석은 질문을하기 전에 읽어야한다는 경고가 있습니다. 단순 : 모든 시스템에서 작동하지 않기 때문에 시도했습니다.

이제 정말 멋진 비트입니다. .bash_profile 추가의 3 행을 기억하십니까?

  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;
                        ==============================

그래서 지금, 나는 bazillion 창문을 가지고 있고 그들은 다음과 같이 말합니다 :

  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에서 시도했을 때 모든 종류의 지옥을 나에게 놓았습니다. bash는 언어로 bash를 호출 할 때마다 비 대화식 스크립트에 의해 실행됩니다. 나는 남자를 사용하려고 할 때 이것을 쳤다. 모든 종류의 쓰레기 (내 .bashrc의 완전한 텍스트와 이스케이프 문자)가 맨 페이지 상단에 나타났습니다. 명령 줄에서이 젬을 빠른 'man man'호출로 테스트하는 것이 좋습니다.

내 .bashrc에서 사용자 지정 쓰레기를 꺼내어 그것이 속한 곳에 넣을 때가 된 것 같습니다 ...

우연히, 나는이 과정의 한 시점에서 'man trap'을 입력한다는 것을 알았습니다.


8

이전 근무지에서 근무 시간은 어리 석었습니다. 소프트웨어 회사 였고 상사는 빨려 들었다. 그는 오후 5시 30 분 (집에 갈 때가되었을 때)에 일을하게하고 오후 11시 (최상의 생산 시간을 지나서)까지 일을 마치게했습니다. 또는 여전히 진행중인 코드에서 성가신 문제를 발견 할 것입니다.

그래서 배치 파일과 스크립트를 만들어 오후 7시에서 오후 8시 사이에 임의의 시간에 컴퓨터를 끌 수 있습니다. 몇 시간 후에 머물러 있고 종료 프로세스를 중단 해야하는 경우를 대비하여 1 분 타이머가있었습니다.

하지만 오후 5시 전에 책상을 떠나서 체크 아웃 시간에 쓰레기를 버리고 싶다면 나를 찾을 수 없었습니다. 그가 내 책상에 와서 내 컴퓨터를 본다면, 나는 아직도 식료품 저장실 주변이나 근처의 미니 마트에 칩이나 무언가를 움켜 쥐고 있다고 생각했을 것입니다. 그러나 그 시간이 지났을 때, 그는 내 휴대 전화로 전화를 걸어 사무실로 돌아 오라고 말했습니다.

또한 게으름을 느끼고 오전 10시 또는 오전 11 시경에 걸을 때를 대비 하여 내 컴퓨터의 BIOS를 8:00 AM 또는 9:00 AM에 켜도록 예약했습니다 . 책상에 걸어 다니면 "아침에 어디에 있었습니까?"라고 물을 것입니다. "저는 마케팅 팀과 회의 중이었습니다." 또는 "아침 식사를하고 있었어요."

멍청한 개


7

나는 기술 여름 캠프에서 일 했었고, 우리는 일주일 말에 그룹의 각 아이들을 위해 이러한 기록을 작성해야했으며, 그들은 그 책을 기념품으로 받고 집으로 가져갈 것입니다. 일반적으로 이것들은 많은 일반적인 문장과 1-2 개의 개인화 된 문장으로 구성되었습니다. 필자는 통조림 문장 은행에서 이러한 작문 중 하나를 구성한 python 스크립트를 작성했으며 사용자가 중간에 몇 개의 개인화 된 문장을 추가 할 수있었습니다. 이로 인해 저와 다른 카운슬러들이 비밀을 밝히는 데 많은 시간이 절약되었습니다. 많은 부분이 자동화되어 있었지만, 개인화 된 부분에 더 많은 시간을 투자 할 수 있었기 때문에 우리의 글은 여전히 ​​많은 '정직한'것보다 나아졌습니다.


6
#! /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

6

온라인 게임에 "버튼을 많이 누르십시오"컨트롤 상자를 추가하는 Greasemonkey 스크립트.


6

내 기술과 일치하는 광고에 대해 일부 인기있는 웹 사이트를 모니터링하고 이메일을 전자 메일로 보내는 작은 스크립트입니다.


6

이것을 자동로드 기능으로 사용합니다. "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

}

"mycd"를 실행하면 "-bash : print : command not found"라는 메시지가 나타납니다. "mycd / folder /"를 사용하면 /tmp/mycd.txt에 아무것도 추가되지 않습니다. 일부 설정이 잘못 되었습니까?
Léo Léopold Hertz 준영

예, 'print'문을 'echo'로 바꾸고 싶을 수도 있습니다. ;-)
wzzrd

@wzzrd How humiliating;) 매우 멋진 기능, @Ethan Post. 공유해 주셔서 감사합니다!
Léo Léopold Hertz 준영

5

사진을 촬영 한 날짜를 기준으로 사진을 디렉토리에 저장하고 싶습니다. 따라서 메모리 카드에서 사진을 스캔하고 사진 날짜를 기준으로 하드 디스크에 폴더를 만든 다음 복사하는 프로그램을 작성했습니다.


여기에 스크립트를 추가 하시겠습니까? 나는이 기능을 좋아할 것입니다. 나는 같은 일을합니다!
Pharaun

그것은 내가 두려워하는 스크립트가 아닌 AC # 앱입니다.
Valerion

사진에 저장된 EXIF ​​정보를 사용합니까? 스크립트를 공유해 주시겠습니까?
JJD

5

스크립트를 작성하여 시작 단추를 클릭 한 다음 0.5 초 안에 다시 클릭하고 30 초마다 반복하십시오.

직장에서 온라인 표시를 유지하고 바로 옆에있는 개인 랩톱에서 실제 작업을 수행 할 수 있습니다. 업무용 소프트웨어에 얽매이지 않습니다.

상사에게 말하지 마십시오 :)


하하하 좋은 물건. 정직과 부정직 모두 +1! :)
Kyle Walsh

4

"net start"및 "net stop"명령에 대한 다양한 바로 가기로 Services MMC에 가지 않고도 서비스를 시작 및 중지 할 수 있습니다.


4

rsync를 사용하여 회전 백업을 수행하는 쉘 스크립트입니다. 또한 다른 사전 백업 활동을 지원하기 위해 임의의 하위 프로그램 실행을 지원합니다 (예 : 맛있는 책갈피 다운로드).

http://gist.github.com/6806


4

"Y"시간 동안 "X"ms마다 왼쪽 클릭 (또는 더블 클릭)하는 작은 응용 프로그램입니다. 그 마시는 새가 더 이상 원자력 발전소에서 일할 필요가 없습니다! ;)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.