find -o 가 이해가 잘 안됩니다.

jo1413의 이미지

[root@su250 ~]# find / -user root -perm 4755 -exec ls -l {} \;
-rwsr-xr-x 1 root root 12248  3월 12  2010 /sbin/pam_timestamp_check
-rwsr-xr-x 1 root root 71160  4월  5  2010 /sbin/umount.nfs4
-rwsr-xr-x 1 root root 71156  4월  5  2010 /sbin/mount.nfs
-rwsr-xr-x 1 root root 71160  4월  5  2010 /sbin/umount.nfs
-rwsr-xr-x 1 root root 19184  3월 12  2010 /sbin/unix_chkpwd
-rwsr-xr-x 1 root root 71160  4월  5  2010 /sbin/mount.nfs4
find: /proc/15301/task/15301/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/15301/fd/4: 그런 파일이나 디렉토리가 없음
-rwsr-xr-x 1 root root 31244  9월 27  2009 /bin/ping6
-rwsr-xr-x 1 root root 23960  3월  1  2010 /bin/su
-rwsr-xr-x 1 root root 38936  1월 20  2010 /bin/umount
-rwsr-xr-x 1 root root 35832  9월 27  2009 /bin/ping
-rwsr-xr-x 1 root root 58324  1월 20  2010 /bin/mount
-rwsr-xr-x 1 root root 6728  9월 20  2009 /usr/sbin/userisdnctl
-rwsr-xr-x 1 root root 6240  1월  6  2007 /usr/sbin/ccreds_validate
-rwsr-xr-x 1 root root 6820  9월 29  2009 /usr/sbin/usernetctl
-rwsr-xr-x 3 root uucp 568844  1월  7  2011 /usr/lib/vmware-tools/bin32/vmware-tpvmlp
-rwsr-xr-x 3 root uucp 568844  1월  7  2011 /usr/lib/cups/backend/tpvmlp
-rwsr-xr-x 3 root uucp 568844  1월  7  2011 /usr/lib/cups/backend/tpvmgp
-rwsr-xr-x 1 root root 61452  3월 31  2010 /usr/lib/nspluginwrapper/plugin-config
-rwsr-xr-x 1 root root 169760  1월 13  2010 /usr/kerberos/bin/ksu
-rwsr-xr-x 1 root root 176732  3월 31  2010 /usr/libexec/openssh/ssh-keysign
-rwsr-xr-x 1 root root 46972  3월 31  2010 /usr/bin/chage
-rwsr-xr-x 1 root root 13108  9월 22  2009 /usr/bin/rlogin
-rwsr-xr-x 1 root root 24588  3월 31  2010 /usr/bin/newgrp
-rwsr-xr-x 1 root root 43492  1월 27  2010 /usr/bin/at
-rwsr-xr-x 1 root root 8908  9월 22  2009 /usr/bin/rsh
-rwsr-xr-x 1 root root 18608  9월 22  2009 /usr/bin/rcp
-rwsr-xr-x 1 root root 51512  3월 31  2010 /usr/bin/gpasswd
-rwsr-xr-x 1 root root 22984  1월  7  2007 /usr/bin/passwd
[root@su250 ~]# 
[root@su250 ~]# 
[root@su250 ~]# 
[root@su250 ~]# find / -user root -o -perm 4755 -exec ls -l {} \;
find: /proc/15343/task/15343/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/15343/task/15343/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/15343/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/15343/fd/4: 그런 파일이나 디렉토리가 없음
[root@su250 ~]# 

1
첫번째 예는 and 연산이고
두번째 예는 or 연산인데

왜 두 번째 연산에서는 결과를 찾아주지 못하나요?
OR 연산자는 root 소유자거나 퍼미션이 4755인 파일을 찾아주는게 아닌가요?
제 생각에는 AND 연산자보다 OR 연산자 결과값이 더 많은 결과를 보여줘야 되는데 그렇지가 않네요?

어제 find에 대해서 찾아봤더니 OR 연산자는 앞의 결과값(소유자가 root)이 거짓인 경우에 사용되는 트릭이라고 나와 있어서 여러가지 실험을 해봤더니 이 말이 맞는 것 같습니다..그래도 확신이 서지 않아서 여쭤 봅니다.

[root@su250 ~]# find / -nouser -o -nogroup -exec ls -l {} \;
find: /proc/16167/task/16167/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/16167/task/16167/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/16167/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/16167/fd/4: 그런 파일이나 디렉토리가 없음
합계 0
-rw-r--r-- 1 sspark3 2000 33  9월  8 10:33 /home/sspark2/.bash_logout
-rw-r--r-- 1 sspark3 2000 124  9월  8 10:33 /home/sspark2/.bashrc
합계 8
drwxr-xr-x 2 sspark3 2000 4096  9월  8 10:33 extensions
drwxr-xr-x 2 sspark3 2000 4096  9월  8 10:33 plugins
합계 0
합계 0
-rw-r--r-- 1 sspark3 2000 176  9월  8 10:33 /home/sspark2/.bash_profile
[root@su250 ~]# 
[root@su250 ~]# 
[root@su250 ~]# find / -nouser -exec ls -l {} \;
find: /proc/16175/task/16175/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/16175/fd/4: 그런 파일이나 디렉토리가 없음
[root@su250 ~]# 
[root@su250 ~]# 
[root@su250 ~]# find / -nogroup -exec ls -l {} \;
find: /proc/16176/task/16176/fd/4: 그런 파일이나 디렉토리가 없음
find: /proc/16176/fd/4: 그런 파일이나 디렉토리가 없음
합계 0
-rw-r--r-- 1 sspark3 2000 33  9월  8 10:33 /home/sspark2/.bash_logout
-rw-r--r-- 1 sspark3 2000 124  9월  8 10:33 /home/sspark2/.bashrc
합계 8
drwxr-xr-x 2 sspark3 2000 4096  9월  8 10:33 extensions
drwxr-xr-x 2 sspark3 2000 4096  9월  8 10:33 plugins
합계 0
합계 0
-rw-r--r-- 1 sspark3 2000 176  9월  8 10:33 /home/sspark2/.bash_profile
[root@su250 ~]# 

이 예제를 보면 앞의 값이 거짓이고 뒤의 값이 참일 때 나타나는 것 같습니다?

2
위에서 보면 '그런 파일이나 디렉토리가 없음' 이란 메시지는 왜 뜨는 건가요? 그것도 특정 디렉토리만요..

3
Xshell을 쓰고 있는데 find 중간에 디렉토리를 바꾸고 싶다 하면 어떻게들 움직이십니까?
저 같은 경우는 Home 버튼 누른 후 Ctrl + ←나 Alt + B를 누르려고 하는데 둘 다 안 먹더라고요.
Ctrl + ←는 Xshell 창이라 안 먹는 건가...
Alt + B는 Xshell의 메뉴가 떠 버립니다.
어떻게 해결 방법이 없을까요?
← 만으로 디렉토리를 바꾸려고 하니 귀찮습니다..바보 같기도 하고.
혹시나 해서 Esc + B 해봤는데 되네요..근데 ESC를 메타키로 사용하기에는...

익명 사용자의 이미지

-exec도 똑같은 테스트구문이라고 보세요.
연산자 우선순위 문제니 \( -user root -o -perm xxx \) 와 같이 해보세요.
일단 -exec를 없애고 두개의 predicate만 가지고 테스트 해보시면 확실해질겁니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.