일부 사람들에게는 시작 스크립트가 있고 일부 사람들은 프롬프트를 개인화한다는 것을 알고 있습니다. 한 개발자는 자주 방문하는 긴 경로와 자주 실행하는 명령에 짧은 별칭을 사용합니다.
생산성과 사용 편의성을 높이기 위해 UNIX 프로파일에서 수행 한 모든 효과적인 사용자 정의는 무엇입니까?
답변
.vimrc
다음을 입력하여 루트 권한으로 파일을 저장하십시오 w!!
.
cmap w!! w !sudo tee % > /dev/null
.bashrc
grep
ing
할 때 장치 또는 이진 파일을 신경 쓰지 마십시오 .
alias grep='grep --color=auto --binary-files=without-match --devices=skip'
웹에서 코드를 공유하십시오 (예 : pastebin, 단순) cat 1337.sh | webshare
alias webshare='curl -F "sprunge=<-" http://sprunge.us | xclip'
클립 보드에 짧은 URL 을 돌려줍니다 . 반환 된 URL 에 추가 ?whatever-lang
하여 구문을 강조 표시하고 줄 번호 를 지정할 수 있습니다 .
.inputrc
readline 라이브러리 (많은 프로그램)를 사용하는 모든 것에 vi 모드를 사용하십시오 :
set editing-mode vi
set keymap vi
답변
하나의 명령으로 디렉토리를 만들고 cd
대부분의 경우 mkdir
다음 명령은 cd <that dir>
입니다.
이렇게하면 입력 내용이 저장됩니다.
# make a directory and cd to it
mcd()
{
test -d "$1" || mkdir "$1" && cd "$1"
}
예를 들면 다음과 같습니다.
/home/mikel$ mcd somedir
/home/mikel/somedir$
내가 유용하다고 생각하는 또 다른 것은 버림받은 디렉토리를 만드는 쉬운 방법입니다. 예를 들어 프로그램을 컴파일하거나이 사이트에서 문제를 재현하려는 경우에도 마찬가지입니다. 때로는 디렉토리 정리를 잊어 버릴 수도 있습니다.
# make a temporary directory and cd to it
mtd()
{
local dir
dir=$(mktemp -d)
if test -n "$dir"
then
if test -d "$dir"
then
echo "$dir"
cd "$dir"
else
echo "mktemp directory $dir does not exist"
fi
else
echo "mktemp didn't work"
fi
}
그것이 작동하는 것을 보여주는 :
/home/mikel$ mtd
/tmp/tmp.wsnZjJ2KN6
/tmp/tmp.wsnZjJ2KN6$
/tmp
재부팅 후 시스템 정리에 의존하고 있지만 쉘을 종료 한 후 temp 디렉토리를 삭제하도록하는 등 향상시킬 수 있습니다.
답변
bash 프롬프트가 0이 아닌 경우 이전 명령의 종료 코드를 표시하도록하고 싶습니다. 나는 또한 그것을 사용할 때 껍질이 나를 응원하는 것을 좋아하므로 약간의 침묵을 추가했습니다.
smiley() {
RC=$?
[[ ${RC} == 0 ]] && echo ':)' || echo ":( ${RC}"
}
export PS1="\$(smiley) \h [\A] [\W] \$ "
그래서 명령을 실행할 때 멋진 시각적 피드백을 얻습니다.
:) mycomputer [23:03] [~] $ sh -c 'exit 0'
:) mycomputer [23:03] [~] $ sh -c 'exit 11'
:( 11 mycomputer [23:03] [~] $
편집 : 이것은 ~ / .bashrc에 넣은 것입니다.
답변
N까지
디렉토리 트리에서 N 디렉토리 위로 이동
입력하는 대신
cd ../../../..
당신은 입력
up 4
그리고
cd -
당신을 다시 가져올 것이다
함수를 .bashrc에 넣어 사용하십시오.
# (c) 2007 stefan w. GPLv3
function up {
ups=""
for i in $(seq 1 $1)
do
ups=$ups"../"
done
cd $ups
}
답변
.zshrc
:
alias l='ls -CF'
alias ll='ls -ClhF'
alias la='ls -CaF'
alias lla='ls -CalhF'
alias l.='ls -CAF --ignore=\*'
alias ll.='ls -CAlhF --ignore=\*'
alias t='tree -C'
PS1=$'%{\e[0;33m%}%m %{\e[32;1m%}%~ %{\e[0;31m%}%#%{\e[m%} '
bindkey '^[[3~' delete-char
export GREP_OPTIONS="--color"
.xmodmaprc
:
clear lock
keycode 9 = Caps_Lock ISO_Next_Group Caps_Lock ISO_Next_Group
keycode 66 = Escape NoSymbol Escape
add lock = Caps_Lock
(이스케이프 및 Caps Lock 키를 교체합니다).
답변
터미널을 많이 사용하기 때문에 bashrc를 엉망으로 만듭니다. 나는 내 bashrc에 많은 함수를 일반적으로 정의한다. 예 :
아카이브 추출 :
extract () {
libextract () {
if [ -f "$1" ] ; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) rar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.Z) uncompress "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "$1 ne moze biti raspakovan!" ;;
esac
else
echo "$1 nije validan fajl"
fi
}
echo "Unesite putanju do direktorijuma u kome se nalaze arhive: " && read dir && dirprovera && cd $dir
for f in *
do
mkdir ./$f-raspakovano && cd ./$f-raspakovano
libextract ./../$f
cd ./../
done
tipka
}
파일 및 폴더 이름 바꾸기 :
frename () {
if [ $# -gt 0 ]
then
dir="$(echo $1)"
dirprovera
cd $dir
for f in *
do
mv "$f" "`echo "$f" | tr -s " " "_" | tr "A-Z" "a-z"`" 2>/dev/null &
done
tipka
else
echo "Upotreba: frename [direktorijum]" >&2
fi
}
큰 파일을 여러 개의 작은 파일로 나누려면 다음과 같이하십시오.
fsplit () {
if [ $# -gt 1 ]
then
file="$(echo $1)"
SIZE="$(echo $2)"
PREFIX="$(echo $3)"
if [ -z "$PREFIX" ]; then PREFIX="fsplit"; fi
fileprovera
split -d -a 3 -b $SIZE $file "$PREFIX-part-" || echo "Doslo je do greske!"
tipka
else
echo "Upotreba: fsplit [fajl] [velicina] [prefix]
Za velicinu se koriste m (MB), g (GB) ili k (KB) (15m, 650kb, 4.7g...)
Prefiks moze sadrzati brojeve, slova, i crtice (primer: moj_pre-fiks)
Ukoliko ne unesete prefiks isti ce biti dodeljen automatski u sledecem formatu:
fsplit-part-XXX
gde XXX predstavlja broj dela fajla (001, 005, 189...)" >&2
fi
}
또한 일부 별칭 (예 : ls, grep 및 small 명령)에서 인수로 하나의 명령을 사용하는 것이 훨씬 더 쉽다는 것을 알기 때문에 매번 모든 별칭을 편집했습니다.
답변
(커뮤니티 위키이므로 각 트릭은 별도의 답변에 속합니다.)
안전한 로그 아웃
Ctrl+ D는 쉘을 종료하는 가장 쉬운 방법이지만 여전히 작업을 실행중인 경우 어쨌든 쉘을 종료합니다. 기본적으로 이는 해당 쉘 내부에서 실행중인 모든 프로그램이 종료됨을 의미합니다.
일부 쉘은 Ctrl+를 D두 번 누른 후에 만 로그 아웃 할 수 있지만 실수로 너무 쉽게 수행 할 수 있습니다.
그래서 그 대신,이를 추가 .bashrc
하거나 .zshrc
또는 중 설정 파일 당신이 선호합니다.
alias x='_exit'
# prevent running "exit" if the user is still running jobs in the background
# the user is expected to close the jobs or disown them
_exit()
{
case $- in *m*)
# this way works in bash and zsh
jobs | wc -l | grep -q '^ *0 *$'
if test $? -eq 0
then
command exit "$@"
else
jobs
fi
;;
*)
command exit "$@"
;;
esac
}