tcsh에서 사람이 읽을 수 있는 스크립트를 사용하여 LS 색상 설정

tcsh에서 사람이 읽을 수 있는 스크립트를 사용하여 LS 색상 설정

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에 넣는 것입니다.

관련 정보