Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead
67 -D HAVE_opencv_python3=ON ..
68
69 # Install OpenCV
70 cat /proc/cpuinfo | grep "processor" | wc -l | xargs make -j71 make install
72 ldconfig
73
Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead
67 -D HAVE_opencv_python3=ON ..
68
69 # Install OpenCV
70 cat /proc/cpuinfo | grep "processor" | wc -l | xargs make -j71 make install
72 ldconfig
73
Useless cat. Consider 'cmd < file | ..' or 'cmd file | ..' instead
4GH_REPOSITORY=$GH_REPOSITORY
5GH_TOKEN=$GH_TOKEN
6
7RUNNER_SUFFIX=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 5 | head -n 1) 8RUNNER_NAME="Autonomy-${RUNNER_SUFFIX}"
9
10REG_TOKEN=$(curl -sX POST -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ${GH_TOKEN}" https://api.github.com/repos/${GH_OWNER}/${GH_REPOSITORY}/actions/runners/registration-token | jq .token --raw-output)
Description
Consider using cmd < file | ..
or cmd file | ..
instead.
cat
is a tool for con"cat"enating files. Reading a single file as input to a program is considered a Useless Use Of Cat (UUOC).
It's more efficient and less roundabout to simply use redirection. This is especially true for programs that can benefit from seekable input, like tail
or tar
.
Many tools also accept optional filenames, e.g. grep -q foo file
instead of cat file | grep -q foo
.
Problematic code:
cat file | tr ' ' _ | nl
cat file | while IFS= read -r i; do echo "${i%?}"; done
Preferred code:
< file tr ' ' _ | nl
while IFS= read -r i; do echo "${i%?}"; done < file
Exception:
Pointing out UUOC is a long standing shell programming tradition, and removing them from a short-lived pipeline in a loop can speed it up by 2x. However, it's not necessarily a good use of time in practice, and rarely affects correctness. Ignore as you see fit.