1

私は Unix の初心者で、現在、システムとそのコマンドの基本を学ぶクラスを受講しています。

/etc/passwd ディレクトリからすべてのユーザー ホーム ディレクトリをアルファベット順に一覧表示する単一のコマンド ラインを探しています。これは、ホーム ディレクトリにのみ適用され、その中のコンテンツには適用されません。重複するエントリがあってはなりません。次のようなコマンドの多くの順列を試しました。

sort -d | find /etc/passwd /home/* -type -d | uniq | less

-path、-name、-type の削除、-prune の使用、検索パターンを /home/*/$ などに変更してみましたが、一度も良い結果が得られませんでした。せいぜい、自分のディレクトリのリスト (その中のすべてのディレクトリを含む、これは悪いことです) と、サーバー上の他の学生のディレクトリ (含まれているディレクトリなしで、これは良いことです) のリストを取得できます。/home/user ディレクトリを表示するだけで、自分のアカウントには何も表示されません。

よろしくお願いします。

4

6 に答える 6

3

/etc/passwdファイルです。ホーム ディレクトリは通常、フィールド/列 6 にあります。「:」は区切り文字です。区切り文字として個別の文字を含むファイル構造を扱う場合は、フィールドとフィールド区切り文字を使用して簡単に操作できるように、データを小さなチャンクに分割できるツールを使用する必要があります。awk/cut など、IFS 変数が設定されたシェルを使用しても、ジョブを実行できます。例えば

awk -F":" '{print $6}' /etc/passwd | sort

cut -d":" -f6 /etc/passwd |sort

シェルを使用してファイルを読み取る

while IFS=":" read -r a b c d e home_dir g 
do 
  echo $home_dir
done < /etc/passwd | sort
于 2010-03-29T05:29:41.120 に答える
1

必要なツールは grep、tr、awk だと思います。grep は、実際にホーム ディレクトリを含むファイルの行を表示します。tr区切り文字をスペースに分割できるため、各行の解析が容易になります。

Awk は、必要な結果を表示するのに役立つプログラムの 1 つにすぎません。

幸運を :)

別のヒント tryはls --color=auto /etcpasswdあなたが思っている種類のファイルではありません。ディレクトリは青色で表示されます。

于 2010-03-29T05:13:59.810 に答える
0

Unix では、find1 つまたは複数のディレクトリの下にあるファイルを検索するためのコマンドです。パターンに一致するファイル内の行を見つけるためのコマンドを探していると思いますか? コマンドを調べgrepます。

于 2010-03-29T05:14:30.070 に答える
0

私は次のようなものを使用しました:

ls -l -d $(cut -d':' -f6 /etc/passwd) 2>/dev/null | sort -u

私がしなかった唯一のことは、アルファベット順にソートすることです。まだ考えていませんでした

于 2016-03-04T15:35:48.803 に答える
0
sed 's|\(.[^:]*\):\(.[^:]*\):\(.*\):\(.[^:]*\):\(.[^:]*\)|\4|' /etc/passwd|sort
于 2010-03-29T13:37:13.410 に答える