114 (r'ls.*-\w*R', "don't use 'ls -R', use 'find'"), |
114 (r'ls.*-\w*R', "don't use 'ls -R', use 'find'"), |
115 (r'printf.*[^\\]\\([1-9]|0\d)', r"don't use 'printf \NNN', use Python"), |
115 (r'printf.*[^\\]\\([1-9]|0\d)', r"don't use 'printf \NNN', use Python"), |
116 (r'printf.*[^\\]\\x', "don't use printf \\x, use Python"), |
116 (r'printf.*[^\\]\\x', "don't use printf \\x, use Python"), |
117 (r'\$\(.*\)', "don't use $(expr), use `expr`"), |
117 (r'\$\(.*\)', "don't use $(expr), use `expr`"), |
118 (r'rm -rf \*', "don't use naked rm -rf, target a directory"), |
118 (r'rm -rf \*', "don't use naked rm -rf, target a directory"), |
|
119 (r'\[[^\]]+==', '[ foo == bar ] is a bashism, use [ foo = bar ] instead'), |
119 (r'(^|\|\s*)grep (-\w\s+)*[^|]*[(|]\w', |
120 (r'(^|\|\s*)grep (-\w\s+)*[^|]*[(|]\w', |
120 "use egrep for extended grep syntax"), |
121 "use egrep for extended grep syntax"), |
121 (r'/bin/', "don't use explicit paths for tools"), |
122 (r'/bin/', "don't use explicit paths for tools"), |
122 (r'[^\n]\Z', "no trailing newline"), |
123 (r'[^\n]\Z', "no trailing newline"), |
123 (r'export .*=', "don't export and assign at once"), |
124 (r'export .*=', "don't export and assign at once"), |