You can use strace command to understanding how a linux command work internally. For example, to check on the ls command
strace is a system call monitor command and provides information about system calls made by an application, including the call arguments and return value.
# strace -c /bin/ls
anaconda-ks.cfg Desktop index.hml install.log.syslog samba-latest.tar.gz
as file5 install.log samba-3.5.9 vmware-tools-distrib
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.000039 1 27 mmap2
0.00 0.000000 0 12 read
0.00 0.000000 0 2 write
0.00 0.000000 0 13 open
0.00 0.000000 0 14 close
0.00 0.000000 0 1 execve
0.00 0.000000 0 2 1 access
0.00 0.000000 0 3 brk
0.00 0.000000 0 2 ioctl
0.00 0.000000 0 4 munmap
0.00 0.000000 0 1 uname
0.00 0.000000 0 5 mprotect
0.00 0.000000 0 2 rt_sigaction
0.00 0.000000 0 1 rt_sigprocmask
0.00 0.000000 0 1 getrlimit
0.00 0.000000 0 13 fstat64
0.00 0.000000 0 2 getdents64
0.00 0.000000 0 1 fcntl64
0.00 0.000000 0 1 futex
0.00 0.000000 0 1 set_thread_area
0.00 0.000000 0 1 set_tid_address
0.00 0.000000 0 1 set_robust_list
------ ----------- ----------- --------- --------- ----------------
100.00 0.000039 110 1 total