Why are the backslash and semicolon required with the find command's -exec option?

后端 未结 2 2107
自闭症患者
自闭症患者 2020-11-27 16:43

I have begun to combine different commands in the linux terminal. I am wondering why the backslash and semicolon are required for a command such as:

find ./          


        
2条回答
  •  误落风尘
    2020-11-27 17:24

    The backslash before the semicolon is used, because ; is one of list operators (or &&, ||) for separating shell commands. In example:

    command1; command2
    

    The find utility is using ; or + to terminate the shell commands invoked by -exec.

    So to avoid special shell characters from interpretation, they need to be escaped with a backslash to remove any special meaning for the next character read and for line continuation.

    Therefore the following example syntax is allowed for find command:

    find . -exec echo {} \;
    find . -exec echo {} ';'
    find . -exec echo {} ";"
    find . -exec echo {} \+
    find . -exec echo {} +
    

    See also:

    • Using semicolon (;) vs plus (+) with exec in find
    • Simple unix command, what is the {} and \; for

提交回复
热议问题