画像をクリックして拡大表示

1. tar

新しいtarファイルを作成する

$ tar cvf archive_name.tar dirname/

tarファイルを解凍する

$ tar xvf archive_name.tar

tarファイルの内容を表示する

$ tar tvf archive_name.tar

2. grep

ファイル内の文字列を検索する(大文字小文字を区別しない)

$ grep -i "the" demo_file

一致した行と、その後の3行を出力する

$ grep -A 3 -i "example" demo_text

フォルダ内を再帰的に検索して、指定した文字列を含むファイルを探す

$ grep -r "ramesh" *

3. find

指定したファイル名のファイルを検索する(大文字小文字を区別しない)

$ find -iname "MyProgram.c"

見つかったファイルに対してコマンドを実行する

$ find -iname "MyProgram.c" -exec md5sum {} \;

homeディレクトリ配下のすべての空ファイルを検索する

$ find ~ -empty

4. ssh

リモートホストにログインする

$ ssh -l jsmith remotehost.example.com

sshクライアントをデバッグする

$ ssh -v -l jsmith remotehost.example.com

sshクライアントのバージョンを表示する

$ ssh -V

5. sed

DosシステムからUnix/Linuxにファイルをコピーすると、このファイルの各行は\r\nで終わります。sedを使えば、\nで終わるUnix形式のファイルに簡単に変換できます。

$ sed 's/.$//' filename

ファイルの内容を逆順にして出力する

$ sed -n '1!G; h; p' filename

空でない行に行番号を付ける

$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'

6. awk

重複行を削除する

$ awk '!($0 in array) { array[$0]; print}' temp

/etc/passwd内で同じuidとgidを持つ行をすべて表示する

$ awk -F ':' '$3=$4' /etc/passwd

ファイル内の指定した部分のフィールドを表示する

$ awk '{print $2,$5;}' employee.txt

7. vim

ファイルを開いて10行目にジャンプする

$ vim +10 filename.txt

ファイルを開いて最初に一致する行にジャンプする

$ vim +/search-term filename.txt

読み取り専用モードでファイルを開く

$ vim -R /etc/passwd

8. diff

比較時に空白文字を無視する

$ diff -w name_list.txt name_list_new.txt

9. sort

ファイルの内容を昇順で並べ替える

$ sort names.txt

ファイルの内容を降順で並べ替える

$ sort -r names.txt

/etc/passwdの内容を3番目のフィールドで並べ替える

$ sort -t: -k 3n /etc/passwd | more

10. export

文字列oracleに一致する環境変数を出力する

$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="/u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"

グローバル環境変数を設定する

$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0

11. xargs

すべての画像ファイルを外部ドライブにコピーする

$ ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

システム内のすべてのjpdファイルを圧縮してアーカイブする

$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

ファイルに列挙されているすべてのURLに対応するページをダウンロードする

$ cat url-list.txt | xargs wget –c

12. ls

ファイルサイズを人間に読みやすい形式で表示する(MB、GBなどで表示)

$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

最終更新日時の昇順でファイルを一覧表示する

$ ls -ltr

ファイル名の後ろにファイルタイプを表示する

$ ls -F

13. pwd

現在の作業ディレクトリを出力する

14. cd

cd - は、最後に作業した2つのディレクトリ間を切り替えられる

shopt -s cdspell を使うと、cdコマンドのスペルチェックを自動で行うように設定できる

15. gzip

*.gzの圧縮ファイルを作成する

$ gzip test.txt

*.gzファイルを解凍する

$ gzip -d test.txt.gz

圧縮率を表示する

$ gzip -l *.gz
     compressed        uncompressed  ratio uncompressed_name
          23709               97975  75.8% asp-patch-rpms.txt

16. bzip2

*.bz2圧縮ファイルを作成する

$ bzip2 test.txt

*.bz2ファイルを解凍する

bzip2 -d test.txt.bz2

17. uzip

*.zipファイルを解凍する

$ unzip test.zip

*.zipファイルの内容を表示する

$ unzip -l jasper.zip
Archive:  jasper.zip
Length     Date   Time    Name
--------    ----   ----    ----
40995  11-30-98 23:50   META-INF/MANIFEST.MF
32169  08-25-98 21:07   classes_
15964  08-25-98 21:07   classes_names
10542  08-25-98 21:07   classes_ncomp

18. shutdown

システムをシャットダウンしてすぐに電源を切る

$ shutdown -h now

10分後にシャットダウンする

$ shutdown -h +10

再起動する

$ shutdown -r now

再起動中にシステムチェックを強制実行する

$ shutdown -Fr now

19. ftp

ftpコマンドとsftpコマンドの使い方は基本的に似ています。ftpサーバーに接続して複数のファイルをダウンロードします。

$ ftp IP/hostname
ftp> mget *.html

リモートホスト上のファイル一覧を表示する

ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
/ftptest/othertools.html
/ftptest/samplereport.html
/ftptest/usage.html

20. crontab

特定ユーザーのcrontabエントリを表示する

$ crontab -u john -l

10分ごとに実行されるスケジュールタスクを設定する

*/10 * * * * /home/ramesh/check-disk-space

21. service

serviceコマンドはSystem V initスクリプトを実行するために使われます。これらのスクリプトは通常 /etc/init.d ディレクトリに置かれています。このコマンドを使えば、パスを指定せずにこのフォルダ内のスクリプトを直接実行できます。

サービスの状態を表示する

$ service ssh status

すべてのサービスの状態を表示する

$ service --status-all

サービスを再起動する

$ service ssh restart

22. ps

psコマンドは実行中のプロセスの情報を表示するために使われます。psコマンドには多くのオプションがありますが、ここではいくつかだけを挙げています。

現在実行中のすべてのプロセスを表示する

$ ps -ef | more

現在実行中のプロセスをツリー構造で表示する。Hオプションはプロセスの階層構造を表示することを意味します。

$ ps -efH | more

23. free

このコマンドは、システムの現在のメモリ使用状況を表示するために使われます。使用済みメモリ、利用可能メモリ、スワップメモリの状況を含みます。

デフォルトでは、freeはメモリ使用量をバイト単位で出力します。

$ free
             total       used       free     shared    buffers     cached
Mem:       3566408    1580220    1986188          0     203988     902960
-/+ buffers/cache:     473272    3093136
Swap:      4000176          0    4000176

他の単位でメモリ使用量を出力したい場合は、オプションを付ける必要があります。-gはGB、-mはMB、-kはKB、-bはバイトです。

$ free -g
             total       used       free     shared    buffers     cached
Mem:             3          1          1          0          0          0
-/+ buffers/cache:          0          2
Swap:            3          0          3

すべてのメモリの合計を表示したい場合は、-tオプションを使ってください。このオプションを使うと、出力に合計行が追加されます。

$ free -t
             total       used       free     shared    buffers     cached
Mem:       3566408    1592148    1974260          0     204260     912556
-/+ buffers/cache:     475332    3091076
Swap:      4000176          0    4000176
Total:     7566584    1592148    5974436

24. top

topコマンドは、現在システムでリソースを最も多く使用しているプロセスを表示します(デフォルトではCPU使用率順)。並べ替え方を変更したい場合は、結果リストでO(大文字のO)を押すと、並べ替えに使用できるすべての列が表示されます。その中から並べ替えたい列を選択できます。

Current Sort Field:  P  for window 1:Def
Select sort field via field letter, type any other key to return

  a: PID        = Process Id              v: nDRT       = Dirty Pages count
  d: UID        = User Id                 y: WCHAN      = Sleeping in Function
  e: USER       = User Name               z: Flags      = Task Flags
  ........

特定のユーザーのプロセスだけを表示したい場合は、-uオプションを使います。

$ top -u oracle

25. df

ファイルシステムのディスク使用状況を表示します。デフォルトでは df -k はディスク使用量をバイト単位で出力します。

$ df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             29530400   3233104  24797232  12% /
/dev/sda2            120367992  50171596  64082060  44% /home

-hオプションを使うと、ディスク使用量をより読みやすい形式で表示できます。

$ df -h
Filesystem                  Size   Used  Avail Capacity  iused      ifree %iused  Mounted on
/dev/disk0s2               232Gi   84Gi  148Gi    37% 21998562   38864868   36%   /
devfs                      187Ki  187Ki    0Bi   100%      648          0  100%   /dev
map -hosts                   0Bi    0Bi    0Bi   100%        0          0  100%   /net
map auto_home                0Bi    0Bi    0Bi   100%        0          0  100%   /home
/dev/disk0s4               466Gi   45Gi  421Gi    10%   112774  440997174    0%   /Volumes/BOOTCAMP
//app@izenesoft.cn/public  2.7Ti  1.3Ti  1.4Ti    48%        0 18446744073709551615    0%   /Volumes/public

-Tオプションを使うと、ファイルシステムの種類を表示します。

$ df -T
Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1     ext4    29530400   3233120  24797216  12% /
/dev/sda2     ext4   120367992  50171596  64082060  44% /home

26. kill

killはプロセスを終了させるために使われます。通常、まず ps -ef でプロセスを検索してプロセスIDを取得し、次に kill -9 プロセスID でそのプロセスを終了させます。killall、pkill、xkillを使ってプロセスを終了させることもできます。

$ ps -ef | grep vim
ramesh    7243  7222  9 22:43 pts/2    00:00:00 vim

$ kill -9 7243

27. rm

ファイルを削除する前に確認する

$ rm -i filename.txt

ファイル名にシェルのメタ文字を使うと非常に便利です。ファイルを削除する前に、ファイル名を表示して確認します。

$ rm -i file*

フォルダ内のすべてのファイルを再帰的に削除し、そのフォルダも削除する

$ rm -r example

28. cp

ファイル1をファイル2にコピーし、ファイルのパーミッション、所有者、タイムスタンプを保持する

$ cp -p file1 file2

file1をfile2にコピーします。file2が存在する場合は上書きするかどうか確認が表示されます。

$ cp -i file1 file2

29. mv

ファイル名file1をfile2に変更します。file2が存在する場合は上書きするかどうか確認が表示されます。

$ mv -i file1 file2

-fオプションを使うと確認が表示されないことに注意してください。

-vは名前変更の過程を出力します。ファイル名にワイルドカードが含まれている場合、このオプションは非常に便利です。

$ mv -v file1 file2

30. cat

複数のファイルの内容を一度に表示できます。以下のコマンドは、まずfile1の内容を表示し、次にfile2の内容を表示します。

$ cat file1 file2

-nオプションは、各行の前に行番号を付けることができます。

$ cat -n /etc/logrotate.conf
/var/log/btmp {
missingok
3        monthly
4        create 0660 root utmp
5        rotate 1
6 }

31. mount

ファイルシステムをマウントするには、まずディレクトリを作成し、そのディレクトリにファイルシステムをマウントする必要があります。

# mkdir /u01

# mount /dev/sdb1 /u01

また、fstabに追加して自動マウントすることもできます。そうすれば、システムが再起動するときはいつでもファイルシステムがロードされます。

/dev/sdb1 /u01 ext2 defaults 0 2

32. chmod

chmodはファイルとディレクトリのパーミッションを変更するために使われます。

指定したファイルの所有者と所有グループにすべての権限(読み、書き、実行を含む)を与える

$ chmod ug+rwx file.txt

指定したファイルの所有グループのすべての権限を削除する

$ chmod g-rwx file.txt

ディレクトリのパーミッションを変更し、そのディレクトリ配下のすべてのファイルとサブディレクトリのパーミッションも再帰的に変更する

$ chmod -R ug+rwx file.txt

33. chown

chownはファイルの所有者と所有グループを変更するために使われます。

あるファイルの所有者をoracleに、所有グループをdbに同時に変更する

$ chown oracle:dba dbora.sh

-Rオプションを使うと、ディレクトリとその配下のファイルを再帰的に変更できます。

$ chown -R oracle:dba /home/oracle

34. passwd

passwdはコマンドラインでパスワードを変更するために使われます。このコマンドを使うと、最初に現在のパスワードを入力し、次に新しいパスワードを入力するよう求められます。

$ passwd

スーパーユーザーはこのコマンドで他のユーザーのパスワードを変更できます。この場合、ユーザーのパスワードを入力する必要はありません。

# passwd USERNAME

passwdは特定のユーザーのパスワードを削除することもできます。このコマンドはrootユーザーだけが実行できます。パスワードを削除すると、そのユーザーはパスワードを入力しなくてもシステムにログインできるようになります。

# passwd -d USERNAME

35. mkdir

homeディレクトリの下にtempという名前のディレクトリを作成する

$ mkdir ~/temp

-pオプションを使うと、パス上に存在しないすべてのディレクトリを作成できます。

$ mkdir -p dir1/dir2/dir3/dir4/

36. ifconfig

ifconfigはLinuxシステムのネットワークインターフェースを表示・設定するために使われます。

すべてのネットワークインターフェースとその状態を表示する

$ ifconfig -a

upおよびdownコマンドを使って、特定のインターフェースを起動または停止する

$ ifconfig eth0 up
$ ifconfig eth0 down

37. uname

unameは、カーネル名、ホスト名、カーネルバージョン番号、プロセッサタイプなどの重要なシステム情報を表示できます。

$ uname -a Linux john-laptop 2.6.32-24-generic #41-Ubuntu SMP Thu Aug 19 01:12:52 UTC 2010 i686 GNU/Linux

38. whereis

コマンドの場所がわからない場合は、whereisコマンドを使うことができます。以下ではwhereisを使ってlsの場所を検索しています。

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

実行可能プログラムの場所を検索したいが、そのプログラムがwhereisのデフォルトディレクトリにない場合は、-Bオプションを使い、そのオプションの引数としてディレクトリを指定できます。以下のコマンドは/tmpディレクトリ内でlsmkコマンドを検索します。

$ whereis -u -B /tmp -f lsmk
lsmk: /tmp/lsmk

39. whatis

wathisは、あるコマンドの説明情報を表示します。

$ whatis ls
ls        (1)  - list directory contents

$ whatis ifconfig
ifconfig (8)         - configure a network interface

40. locate

locateコマンドは、指定したファイル(またはファイル群)のパスを表示できます。これはupdatedbによって作成されたデータベースを使用します。

以下のコマンドは、システム内でcrontabという文字列を含むすべてのファイルを表示します。

$ locate crontab
/etc/anacrontab
/etc/crontab
/usr/bin/crontab
/usr/share/doc/cron/examples/crontab2english.pl.gz
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/vim/vim72/syntax/crontab.vim

41. man

あるコマンドのmanページを表示する

$ man crontab

一部のコマンドには複数のmanページがある場合があります。各manページは1つのコマンドタイプに対応しています。

$ man SECTION-NUMBER commandname

manページは通常、8種類のコマンドタイプに分類できます。

  1. ユーザーコマンド
  2. システムコール
  3. Cライブラリ関数
  4. デバイスとネットワークインターフェース
  5. ファイル形式
  6. ゲームとスクリーンセーバー
  7. 環境、テーブル、マクロ
  8. システム管理者コマンドとバックグラウンド実行コマンド
  9. 例えば、whatis crontab を実行すると、crontabには1と5の2つのコマンドタイプがあることがわかります。そこで、以下のコマンドでコマンドタイプ5のmanページを表示できます。

    $ whatis crontab
    crontab (1)          - maintain crontab files for individual users (V3)
    crontab (5)          - tables for driving cron
    
    $ man 5 crontab

    42. tail

    tailコマンドは、デフォルトでファイルの最後の10行のテキストを表示します。

    $ tail filename.txt

    -nオプションを使うと、表示する行数を指定できます。

    $ tail -n N filename.txt

    リアルタイム表示には -f オプションも使用できます。このコマンドは実行後待機し、ファイル末尾に新しい行が追加されると、新しい行を出力し続けます。ログを確認する際にこのオプションは非常に役立ちます。CTRL-C でコマンドの実行を終了できます。

    $ tail -f log-file

    43. less

    このコマンドは、ファイル全体を読み込まずにファイルの内容を表示できます。大きなログファイルを確認するときに非常に役立ちます。

    $ less huge-log-file.log

    less コマンドでファイルを開くと、次の 2 つのキーが非常に役立ちます。これらは前後のスクロールに使用します。

    CTRL+F – forward one window
    CTRL+B – backward one window

    44. su

    su命令用于切换用户账号,超级用户使用这个命令可以切换到任何其他用户而不用输入密码
    $ su - USERNAME

    別のユーザー名でコマンドを実行する。以下の例では、ユーザー john が raj のユーザー名で ls コマンドを実行し、実行後は john のアカウントに戻ります。

    [john@dev-server]$ su - raj -c 'ls'
    
    [john@dev-server]$

    指定したユーザーでログインし、デフォルトではなく指定したシェルプログラムを使用します。

    $ su -s 'SHELLNAME' USERNAME

    45. mysql

    mysql は Linux 上で最も広く使われているデータベースでしょう。サーバーに mysql をインストールしていなくても、mysql クライアントを使ってリモートの mysql サーバーに接続できます。

    リモートデータベースに接続するには、パスワードの入力が必要です。

    $ mysql -u root -p -h 192.168.1.2

    ローカルデータベースに接続する。

    $ mysql -u root -p

    データベースのパスワードをコマンドラインで入力することもできます。-p の後にパスワードを引数として付けます。p の直後にスペースを入れずに記述できます。

    46. yum

    yum を使用して apache をインストールする。

    $ yum install httpd

    apache を更新する。

    $ yum update httpd

    apache をアンインストール/削除する。

    $ yum remove httpd

    47. rpm

    rpm を使用して apache をインストールする。

    # rpm -ivh httpd-2.2.3-22.0.1.el5.i386.rpm

    apache を更新する。

    # rpm -uvh httpd-2.2.3-22.0.1.el5.i386.rpm

    apache をアンインストール/削除する。

    # rpm -ev httpd

    48. ping

    リモートホストに ping を実行し、データパケットを 5 つだけ送信します。

    $ ping -c 5 gmail.com

    49. date

    システム日付を設定します。

    # date -s "01/31/2010 23:59:53"

    システム時刻を変更した場合、ハードウェア時刻とシステム時刻を同期する必要があります。

    # hwclock –systohc
    
    # hwclock --systohc –utc

    50. wget

    wget を使用して、ソフトウェア、音楽、ビデオをネットからダウンロードします。

    $ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

    ファイルをダウンロードし、指定したファイル名で保存します。

    $ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701

    翻訳:https://zhuanlan.zhihu.com/p/28674639

    原文:http://www.thegeekstuff.com/2010/11/50-linux-commands/