Linux-admin-cat-command
Linux Admin-catコマンド
*cat* コマンドは、ファイルを連結して標準出力に出力するために使用されます。 以前は、catコマンドを使用して不正使用の両方を示してきました。 猫は、次の明確な目的をサーバー-
- ファイルの内容を表示
- あるファイルの内容を別のファイルに書き込む
- 複数のファイルを単一のファイルに結合する
- 特殊機能のサポート:行番号の追加、特殊文字の表示、空白行の削除
Switch | Action |
---|---|
-b | Number non-blank lines |
-E | Show line ends |
-T | Show tabs |
-s | Squeeze blank, suppress repeated empty lines |
前述したように、grep _、 sort 、 uniq_などのユーティリティを使用する場合、可能であればcatからの出力をパイプ処理しないようにします。 これは、以前にパイピングコマンドの簡単なデモンストレーションのために行いました。 ただし、_grep_などのユーティリティを使用して操作を実行するタイミングを知ることが、Linux管理者とLinuxエンドユーザーを区別します。
悪癖
[root@centosLocal centos]# cat/etc/passwd | sort -t: -k1 | grep ":0"
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@centosLocal centos]#
良い習慣
[root@centosLocal centos]# grep ":0"/etc/passwd | sort -t: -k 1
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@centosLocal centos]#
注意-catをsortやgrepなどの2次コマンドにパイプすることは、必要な場合にのみ行う必要があります。
catの一般的な使用法の1つは、Windows形式の改行を処理する場合です。 内部設計によるLinuxとWindowsの両方で、異なる制御コードを使用して行末(EOL)を表します-
* Linux line break is always a Line Feed: LF or depicted as "\n".
* Windows is Carriage Return followed by a Line Feed: CR LF or depicted as "\r\n".
* Macintosh, in all moderne releases of OS X and now macOS, has adopted the Linux/Unix
standard of LF or "\n"
そのため、geditのようなGUIテキストエディタでファイルを開いたり、フィルタリングコマンドの適用中にランダムな問題が発生したとしましょう。 テキストが1行に表示されるか、フィルタリングコマンドが期待どおりに動作しません。
特に、テキストファイルがインターネットからダウンロードされたときは、改行をチェックする必要があります。 以下は、EOL文字を示すcatのサンプル出力です。
[root@centosLocal centos]# cat -E ./Desktop/WinNames.txt
$ed:Daniel:101
$enny:Colon:608
$ana:Maxwell:602
$arian:Little:903
$obbie:Chapman:403
$icolas:Singleton:203
$ale:Barton:901
各行の前の「 $ 」に注意してください。 Linuxはファイル「CR」「\ n」を読み込んでいます。 次に、各ファイルの最初の文字でキャリッジリターンを翻訳します。
-Eスイッチなしで表示すると、ファイルは正常に見えます-
[root@centosLocal centos]# cat ./Desktop/WinNames.txt
Ted:Daniel:101
Jenny:Colon:608
Dana:Maxwell:602
Marian:Little:903
Bobbie:Chapman:403
Nicolas:Singleton:203
Dale:Barton:901
幸いなことに、Linuxのフィルタリングコマンドを使用すると、これは簡単な修正です-
[root@centosLocal centos]# sed -i 's/\r$//g' ./Desktop/WinNames.txt
[root@centosLocal centos]# cat -E ./Desktop/WinNames.txt
Ted:Daniel:101$
Jenny:Colon:608$
Dana:Maxwell:602$
注意--Eスイッチで表示すると、すべてのLinuxの改行は$で終わります。
*_cat_* を使用して、複数のファイルを単一のファイルに結合することもできます。
[root@centosLocal centos]# cat linux.txt
CentOS
Ubuntu
Red Hat
Suse
Debian
[root@centosLocal centos]# cat windwos.txt
NT 3.5
NT 4.0
Server 2000
Server 2003
Server 2008
Server 2012
Server 2016
[root@centosLocal centos]#
catを使用して、2つのファイルを結合しましょう。
[root@centosLocal centos]# cat windwos.txt linux.txt > server_class_operating_sytems.txt
[root@centosLocal centos]# cat server_class_operating_sytems.txt
NT 3.5
NT 4.0
Server 2000
Server 2003
Server 2008
Server 2012
Server 2016
CentOS
Ubuntu
Red Hat
Suse
Debian
[root@centosLocal centos]#
最後に、*-n *スイッチを使用して各出力行に番号を付けることができます。 これにより、合計行が表示されます。
[root@centosLocal centos]# cat -n ./server_class_operating_sytems.txt
1 NT 3.5
2 NT 4.0
3 Server 2000
4 Server 2003
5 Server 2008
6 Server 2012
7 Server 2016
8 CentOS
9 Ubuntu
10 Red Hat
11 Suse
12 Debian [root@centosLocal centos]#