grepベースコマンド練習およびFindコマンド詳細
8165 ワード
lftp='lftp 172.168.0.1/pubなど、すべてのユーザーに有効なコマンド別名を定義します。
/etc/bashrcファイルの下部にalias lftp='lftp 172.168.0.1/pubを1行追加
/etc/passwdファイルの/bin/bashで終わらない行を表示
egrep -v "/bin/bash$" /etc/passwd
/etc/passwdファイルの2桁または3桁の行を見つけます。
grep -E "\" /etc/passwd
grep "\" /etc/passwd
/proc/meminfoファイルの大文字または小文字Sで始まる行を表示します。3つの方法で実現する
grep -i "^s" /proc/meminfo
grep "^[Ss]" /proc/meminfo
grep -E "^(S|s)" /proc/meminfo
echoを使用して絶対パスを出力し、egrepを使用してパス名を取り出します。dirname/etc/passwdを実行した結果と同様です。
echo "/var/log/messages" | egrep -o "^/[[:alpha:]]+?"
ifconfigのipアドレスを見つけます。要求結果IPアドレスのみ表示
ifconfig | grep "inet " | grep -E "\" |cut -d" " -f10
vimカスタム自動インデント4文字
修正/etc/vimrcファイル、ファイル下部に次の2行追加
set autoindent
set tabstop=4
スクリプトを作成して3人のユーザーを自動的に追加し、3人のユーザーのuidの和を計算します。
#!/bin/bash
#
id user1 &> /dev/null || useradd user1
echo "user1 id: $(id -u user1)"
id user2 &> /dev/null || useradd user2
echo "user2 id: $(id -u user2)"
id user3 &> /dev/null || useradd user3
echo "user3 id: $(id -u user3)"
user1_id=$(id -u user1)
user2_id=$(id -u user2)
user3_id=$(id -u user3)
id_sum=$[$user1_id+$user2_id+$user3_id]
echo "User id sum: $id_sum"
findコマンド詳細
findはリアルタイム検索ツールで、指定した開始パスの下でファイルシステムの階層構造を遍歴することによってファイル検索
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
find [OPTION] [ ] [ ] [ ]
eg:find /etc/ -maxdepth 1 -type f /etc
( ) iNode
eg:find /etc -regex ".*\.conf$" conf
eg:
find /home -user nike -ls ( )
find /home -user nike -name "*.sh" -ls ( )
find /home -nouser -o nogroup (-o )
find /home -type d -maxdepth 1 ( d )
find /home -type d -empty home ( )
find /data -empty -not -type f
find /data ! -empty -type f
:
/etc , /etc/network .conf
find /etc -path "/etc/network" -a -prune -o -name "*.conf"
/etc , /etc/network /etc/etc/fonts .conf
find /etc \(-path '/etc/network' -a -path '/etc/fonts' \) -a -prune -o -name "*.conf"
find /etc -size 1024c (1023c,1024c]
find /etc -size 1k (0,1k)
-#UNIT:[0,#-1]
:-6k [0,5k]
:
find /data -size -1024c [0,1023c]
find /data -size -1023c [0,1022c]
find /data -size -1k
+#UNIT:(#,∞)
:+6k (6k,∞)
:
find /data -size +1024c (1024c,∞)
find /data -size +1023c (1023c,∞)
find /data -size +1k (1k,∞)
+#: [#+1,∞]
-#: [0,#) -mtime -ctime
:
find /data -atime 4 4 5 ( )
find /data -atime +4 5
find /data -atime -4 4
find -perm +222 -ls > /root/find.log
find -perm +222 -fls /root/find2.log
以上の2つの方法で、検索したファイルのロングフォーマットコンテンツをファイルにリダイレクトできます削除するときにヒントが必要です
find -name "*f*" -ok rm {} \;
直接一括削除プロンプトなし
find -name "*f*" -exec rm {} \;
検索した内容を/mnt/にカット
find -name "*f*" -exec mv {} /mnt/ \;
「一括」コマンド
find -name "*f*" -exec mv {} {}.bak \;
-exec COMMAND {}\; 検索した各ファイルに対してCOMMANDで指定されたコマンドを実行し、{}:検索したファイル名自身findを参照して検索したファイルを後で指定したコマンドに渡す場合、条件に合致するすべてのファイルを検索して一括して後のコマンドに渡す
find練習とプレゼンテーション:1、検索/varディレクトリの部下はrootであり、グループはmailのすべてのファイルまたはディレクトリである.
find /var -user root -a -group mail -ls
2、検索/usrディレクトリの下でroot、binまたはhadoopに属していないすべてのファイルまたはディレクトリを検索します.2つの方法で;
find /usr -not -user root -a -not -user bin -a -not -user hadoop
find /usr -not \( -user root -o -user bin -o -user hadoop \) -ls
3、検索/etcディレクトリは次の1週間以内に内容が変更され、所有者はrootユーザーでもhadoopユーザーでもないファイルまたはディレクトリである.
find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls
find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls
4、現在のシステム上にグループに属していないか、グループに属していないか、最近1週間以内にアクセスされたファイルまたはディレクトリを検索する.
find / \( -nouser -o -nogroup \) -atime -7 -ls
5、検索/etcディレクトリの下で1 Mより大きく、タイプが普通のファイルのすべてのファイルを検索する.
find /etc -size +1M -type f -exec ls -lh {} \;
6、検索/etcディレクトリの下のすべてのユーザーが書く権限のないファイルを検索する.
find /etc -not -perm /222 -type f -ls
7、検索/etcディレクトリには少なくとも1種類のユーザーが実行権限のないファイルがある.
find /etc -not -perm -111 -type f -ls
8、検索/etc/init.d/ディレクトリの下で、すべてのユーザーに実行権限があり、他のユーザーには書き込み権限のあるすべてのファイルがあります.
find /etc -perm -113 -type f -ls
9、正確な一致/etcディレクトリの下でvimrcというファイル
find /etc -name(-iname ) vimrc
10.logファイル名を含むファイルを検索する
find /var -name "*log"
11.所有者がJonであり、所属グループがNikeであるファイルを検索する
find -user Jon -group Nike
12.所有者がJonであり、グループがJonでないファイルを検索する
find -user jon -not -group jon
13、所有者がJonでもNikeでもないファイルを探す
find -not \(-user jon -o -user nike \)
14.所有者がJonまたはUIDが5002であるファイルの検索
find -user Jon -o -gid 5002
15、/tmpディレクトリの部下がrootではなく、ファイル名がfで始まるファイルを探し出す
find /tmp -not \( -user root -o -name "f*" \) -ls
16.プロファイルをバックアップし、追加する.origという拡張子
find -name “*.conf” -exec cp {} {}.orig \;
17、存在時間が3日以上のjoeの一時ファイルの削除を求める
find /tmp -ctime +3 -user joe -ok rm {} \;
18.ホームディレクトリにおいて他のユーザによって書き込み可能なファイルを探す
find ~ -perm -002 -exec chmod o-w {} \;
19、検索/dataの下の権限は644、接尾辞はshの普通のファイルで、実行権限を増加する
find /data –type f -perm 644 -name “*.sh” –exec chmod 755 {} \;
20、/homeの目次を見る
find /home –type d -ls