This file is indexed.

/usr/share/highlight/langDefs/sh.lang is in highlight-common 3.18-3build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Description="Bash"

Identifiers=[[ [a-zA-Z_][\w\-]* ]]

Keywords={
  { Id=1,
    List={"case", "in", "esac", "for", "do", "done", "function", "if", "then",
"fi", "elif", "else", "select", "time", "until", "while"},
  },
  { Id=2,
    List={"source", "alias", "bind", "break", "builtin", "command", "continue",
"declare", "dirs", "disown", "enable", "export", "fc", "fg", "getopts",
"hash", "help", "history", "jobs",  "let", "local", "logout", "popd", "printf",
"pushd", "pwd", "read", "readonly", "return", "set",  "shift", "shopt",
"suspend", "test", "times", "trap", "type", "ulimit", "umask", "unalias",
"unset", "wait", "eval", "bg", "cd", "echo", "exec", "exit", "kill"},
  },
  { Id=3,
    List={"ls", "cat", "tac", "rev", "cp", "mv", "rm", "rmdir", "chmod",
"chattr", "ln", "find", "xargs", "expr", "date", "zdump", "time", "touch", "at",
"batch", "cal", "sleep", "usleep", "hwclock", "clock", "sort", "tsort", "diff",
"patch", "diff3", "sdiff", "cmp", "comm", "uniq", "expand", "unexpand", "cat",
"paste", "join", "head", "tail", "grep", "egrep", "zgrep", "look", "sed", "awk",
"wc", "tr", "fold", "fmt", "ptx", "col", "column", "colrm", "nl", "pr",
"gettext", "iconv", "recode", "groff", "lex", "yacc", "tar", "shar", "ar",
"cpio", "gzip", "bzip2", "compress", "uncompress", "zip", "unzip", "sq", "file",
"which", "whereis", "whatis", "vdir", "shred", "locate", "slocate", "strings",
"basename", "dirname", "split", "sum", "cksum", "md5sum", "sha1sum", "uuencode",
"uudecode", "crypt", "make", "install", "more", "less", "host", "vrfy",
"nslookup", "dig", "traceroute", "ping", "whois", "finger", "ftp", "uucp",
"telnet", "rlogin", "rsh", "rcp", "ssh", "write", "mail", "vacation", "tput",
"reset", "clear", "script", "factor", "bc", "dc", "jot", "seq", "yes", "banner",
"printenv", "lp", "tee", "mkfifo", "pathchk", "dd", "od", "hexdump", "m4"},
  },
  --{ Id=3,
  --  Regex=[[(\w+)\s*\(]]
  --},
  { Id=4,
    Regex=[[\$\{.+?\}]],
  },
  { Id=4,
    Regex=[[ \$[\w\#]+ ]],
  },
}

-- hereDoc opening delimiter, see OnStateChange to handle end of string
Strings={
  Delimiter=[["|'|`|<<[\-"']?\s*[-\w_]+["']?]],
}

IgnoreCase=false

Comments={
  { Block=false,
    Delimiter= { [[#]] },
  },
}

Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\:|\&|<|>|\!|\=|\/|\*|\%|\+|\-]]

function OnStateChange(oldState, newState, token)

   if  (string.sub(token,1,1) =="$" )  and oldState==HL_STRING and newState==HL_KEYWORD then
      return HL_INTERPOLATION
   end

   --recognize hereDoc multine strings
   if oldState==HL_STANDARD and newState==HL_STRING and not string.find("\"'`", token) then
      hereDoc = string.match(token, "<<%-?'?%s*([%-%a%d_]+)" )
   end
   if oldState==HL_STRING and token==hereDoc then
      hereDoc = nil
      return HL_STRING_END
   end
   
   return newState
end