set_up_my_ls_colors.sh
쉘에서 호출하면 색 구성표를 구성하는 쉘 스크립트()가 있습니다 ls
. 이 스크립트의 좋은 점은 사람이 읽을 수 있는 형식으로 색상을 구성할 수 있다는 것입니다. 파일은 zsh 및 bash에서는 잘 실행되지만 tcsh
.
내가 전화하면 :
. ~/.set_up_my_ls_colors.sh
나는 얻다:
.: Permission denied
파일에 u+x
권한이 있는 경우에도 마찬가지입니다.
나도 시도했다
/bin/tcsh ~/.set_up_ls_colors.sh
반품
Illegal variable name
set_up_my_ls_colors.sh
관련 문서는 다음과 같습니다.
# Call this script as . ~/path_to_this_file.sh
export LS_COLORS=$( \
( grep '\w' | grep -v '^#' | sed 's/#.\+//' | perl -lane 'printf "%s=%s:", shift @F, join ";", @F;' ) <<< "
# HUMAN_FORMATTED_DATA
# list one per line
# these are basic filesystem items
no 00 # normal
fi 00 # file
di 01 34 # directory
ln 00 36 # link
pi 40 33 # pipe
so 00 35 #
bd 40 33 01
cd 40 33 01
or 01 05 37 41
mi 01 05 37 41
ex 00 91 # executable
ow 01 34 # other writables
*.cmd 00 32
*.exe 00 32
# archive, compressed things etc
*.gz 00 90
*.bz2 00 90
*.bz 00 90
*.tz 00 90
*.rpm 00 90
*.rar 00 90
*.zip 00 90
*.iso 00 90
*.cpio 00 31
# perl & CODE
*.c 33
*.h 33
*.sh 33
*.t 33
*.pm 33
*.pl 33
*.cgi 33
*.pod 33
*.PL 33
*.js 33
*.php 33
#*.xs
# strikethrough
*.off 00 9
*.bak 00 9
*.old 00 9
# documents misc, html webstuff
# really TEXT
*.htm 94
*.html 94
*.txt 94
*.text 94
*.css 94
# MOVIE
*.avi 96
*.wmv 96
*.mpeg 96
*.mpg 96
*.mov 96
*.AVI 96
*.WMV 96
*.mkv 96
# images & pdf
*.jpg 96
*.jpeg 96
*.png 96
*.xcf 96
*.JPG 96
*.gif 96
*.svg 96
*.eps 00 96
*.pdf 00 96
*.PDF 00 96
*.ps 00 96
*.ai 00 91 # adobe ill
*.doc 00 91 # msword
# data, such as .db, .csv
*.csv 95
*.dsv 95
*.db 95
*.sql 95
*.meta 95
# CONFS
*.xml 95
*.yaml 95
*.yml 95
*.conf 95
# [a-z0-9]*rc
")
#echo GOT: $LS_COLORS
#export LS_COLORS
# The codes are:
# code 0 = default colour
# code 1 = bold
# code 4 = underlined
# code 5 = flashing text
# code 6 = no change
# code 7 = reverse field
# code 8 = black
# code 9 = strikethrough (cool!)
# code 10 - 29= no change
# code 30 = light green
# code 31 = red
# code 32 = green
# code 33 = orange
# code 34 = blue
# code 35 = purple
# code 36 = cyan
# code 37 = grey
# code 38 = underline
# code 39 = no change
# code 40 = black background
# code 41 = red background
# code 42 = green background
# code 43 = orange background
# code 44 = blue background
# code 45 = purple background
# code 46 = cyan background
# code 47 = grey background
# code 90 = dark grey
# code 91 = light red
# code 92 = light green
# code 93 = yellow
# code 94 = light blue
# code 95 = light purple
# code 96 = turquoise
# code 100 = dark grey background
# code 101 = light red background
# code 102 = light green background
# code 103 = yellow background
# code 104 = light blue background
# code 105 = light purple background
# code 106 = turquoise background
답변1
tcsh 구문은 sh 구문과 호환되지 않습니다.
로그인 쉘이 sh이고 대화식으로만 tcsh를 사용하는 경우 LS_COLORS
이를 ~/.profile
.
(t)csh를 로그인 셸로 사용하는 경우 스크립트를 실행하고 값을 인쇄한 후 csh(아마도 yours ) LS_COLORS
에 설정할 수 있습니다.~/.login
setenv LS_COLORS `sh -c '. ~/path/to/file.sh; echo "$LS_COLORS"'`
답변2
여러 가지 이유로 작동하지 않습니다.
스크립트를 실행 파일로 실행하려면 첫 번째 줄에서 스크립트를 실행할 프로그램(즉, 어떤 셸)이 셸에 알려야 하므로 다음과 같이 시작해야 합니다.
#!/bin/bash
또는 원하는 쉘(아래 참고 사항 참조).
둘째, tcsh에서는 다른 구문을 사용하기 때문에 이 작업을 수행할 수 없습니다. export
환경 변수는 필요하지 않으며 setenv
등호를 사용하지 마십시오. 또한 $(command)는 tcsh에 의미가 없습니다.
그러나 또 다른 문제는 이 스크립트를 다른 셸에서 실행하면 여기에 설정된 변수가 완료 시 다시 가져오지 않는다는 것입니다. . ./script.sh
스크립트를 실행하면 현재 실행 중인 셸을 통해 스크립트가 실행됩니다.
가장 좋은 해결책은 두 가지 버전(이 형식과 tcsh용 버전)을 갖고 이를 시작 스크립트 ~/.bashrc 또는 ~/.tcshrc에 넣는 것입니다.