画像をクリックして拡大表示
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種類のコマンドタイプに分類できます。
- ユーザーコマンド
- システムコール
- Cライブラリ関数
- デバイスとネットワークインターフェース
- ファイル形式
- ゲームとスクリーンセーバー
- 環境、テーブル、マクロ
- システム管理者コマンドとバックグラウンド実行コマンド
例えば、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/
