Webとデザインのあれこれ

プログラミングとUIデザインの学習記録です。

Linuxコマンドまとめ

コマンド系の追記

「Linuxゲリラ戦記」および「UNIXの使い方」の備忘録です

lsコマンド

$ls -a #隠しファイル(.で始まる)まで表示
$ls -F #ディレクトリには/、実行可能ファイルには*がつく
$ls -l #ファイルおよびディレクトリの詳細表示を表示
$ls -ld dir1 #ディレクトリのみの詳細情報を表示
$ls -l dir1 #ディレクトリの中身のファイルの詳細情報を表示する

passwdコマンド

UNIXはパスワードに関して、作成ルールを厳しく設けています。また、変更やログインの際にもパスワードは表示されません。

$passwd #一般ユーザーのパスワード変更
#passwd #rootユーザーのパスワード変更
$passwd ユーザー名 #特定のユーザーのパスワード変更

プロセス管理系コマンド(pstree, ps, top)

プロセス管理に関するコマンドです

$pstree  #プロセスをツリー上に表示します
$ps aux  #psコマンド実行時のプロセスを表示します。全てのプロセスを表示したい場合、オプションにauxを渡します

aは端末を持つ全てのプロセス、uは実行ユーザー、xは端末を持たない全てのプロセスです。

f:id:b_leiu:20190221233639p:plain:w200

PID:プロセス番号で、全てのプロセスに番号があります。

$top #プロセスの状況をずっとリアルタイムで表示し続ける 

これらを応用すると、以下のように特定のプロセスを検索できます。

$ps aux | grep プロセス名
$ps aux | less #プロセスの名称がわからない場合、プロセスを1行ずつ表示

プロセスを止めたい場合は、

$kill プロセス番号

ユーザー管理系(adduser, userdel)

$adduser  #ユーザーの追加
$userdel -r ユーザー名 #ユーザーの削除

-rオプションは、$rm -r ディレクトリディレクトリを指定すると中のファイルまで丸ごと削除するように、 userdelで使用すると特定ユーザーのホームディレクトリも削除します。

mvコマンド

$mv ./Desktop/cat.jpg private/ #Desktopディレクトリ内のcat.jpgをprivateディレクトリに移動
$mv dog.jpg wanko.jpg #同じディレクトリ内で指定すると、名称を変更します(dog.jpgは消えます)
$mv kitten.jpg ../nekotan.jpg #kitten.jpgを一つ上の階層に移動させ、名称をnekotan.jpgに変更します

名称変更時、移動先に同じ名前のファイルがある場合、自動で上書きされます。注意です!

ワイルドカード(正規表現)まとめ

*  #任意の文字列です、空文字を含みます
?  #任意の1文字
[] #カッコ内の任意の1文字
[^] #カッコ内の文字列に一致しない任意の文字列

ファイル関連(ファイル作成と権限)

touchコマンド

$touch foo #fooという空ファイルの作成
$touch a #既存ファイルを修正することなく、更新日時のみ反映します。psコマンドで確認すると更新時間が変更されています。

chmodコマンド

$chmod 保護モード ファイル名 #権限の付与・削除

保護モードは、「オクタル・モード」と「シンボリック・モード」の2種類存在します。

$chmod 700 ファイル名 #オクタル・モード
$chmod u+rwx ファイル名 #シンボリック・モード

f:id:b_leiu:20190222001619p:plain:w400

左の「-rw- r-- r--」が権限を表しており、左(rw-)からファイルの所有者、ファイルのグループ内ユーザー(そのファイルに設定されているグループに属しているユーザたち)、その他です。

0 1 2 3 4 5 6 7
--- --x -w- -wx r-- r-x rw- rwx
オプションの意味
オプション 意味
u そのファイルの所有者
g そのファイルの所有グループ
o その他の人
w 書き込み権限
r 読み込み権限
x 実行権限
+ 権限を与える
- 権限を拒否する

ファイルの権限を変更できるのは、そのファイルの所有者とrootユーザーのみです。

diffコマンド

$diff foo.sh foo2.sh #foo.shとfoo2.shの差異を表示してくれます。実行結果を見る限り、「7c5」より7行目の構文に問題があるとわかります。
1,3c1
< #!/bin/sh
< 
< a=1
---
> =1
7c5
<              a=`expr $a + 1`
---
>              a=`expr $a+ 1`

exprはシェル画面上で計算するためのコマンドです。上記の例は、foo2.shのスクリプト内で、$aと+の間に必要なスペースが足りないためにエラーを起こしていることを示しています。計算する場合は、スペースは必須です。

ファイル検索(find, file, locate)

$find / -name *nanorc* #find 検索を始めるディレクトリ -name ファイル名で特定のファイルの居場所を特定
$file /usr/share/nano/nanorc.nanorc #file ファイル名でどのようなファイルかを調べる、実行結果を見るとテキストファイルであることがわかりますよね。
/usr/share/nano/nanorc.nanorc: ASCII text, with very long lines

$updatedb #locateコマンドは、事前に全てのファイルやディレクトリの場所の情報をデータベースに登録しておく事で使います。
$locate ファイル名 #ファイルの居場所を特定

設定ファイルは通常etcディレクトリ以下にあることが多いですが、この設定ファイルをいじると、使用しているLinuxユーザー(兼用している場合など)にも影響を与えます。

自分のホームディレクトリに設定ファイルの名前でコピーして、そこで編集するのが無難かと思います。

ネットワーク系(lwp-request, ping, whois, ifconfig, traceroute)

$lwp-request アドレス #サーバーに情報を要求
$nslookup ホスト名(またはアドレス) #ホスト名からアドレスを、アドレスからホスト名を探す
$whois  ドメイン名(またはアドレス) #ドメイン情報を取得
#ifconfig #自分のローカルIPアドレスを取得
$ping ホスト名(またはアドレス) #相手のネットワークがきちんと接続されているかのチェック
$traceroute リモートホスト名(またはアドレス) #ドメインにたどり着くまでの経路を示す

エンコード化とデコード化

$echo 犬は可愛いね  | nkf -wMQ | tr =%  #nkfコマンドを使用して変換、さらにパイプでtrコマンドを使用して=を%に置換しています。
=E7=8A=AC=E3=81=AF=E5=8F=AF=E6=84=9B=E3=81=84=E3=81=AD=E3=80=80

$echo =E7=8A=AC=E3=81=AF=E5=8F=AF=E6=84=9B=E3=81=84=E3=81=AD=E3=80=80 | tr % = | nkf -WwmQ # デコードできていますね。
犬は可愛いね

パイプはいくらでも繋げてOKです。

情報取得コマンド(wget, curl)

$wget アドレス #指定したアドレスのサイト情報を取得する
$wget -i ファイル名 #指定したファイルからurlのみを取得する
$wget -T  時間 #タイムアウトする時間(秒)を指定する
$curl -e http://www.my-ajax-site.com \
        'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton' #サーバーから情報を取得したり、情報を送ったりできます。

置換コマンド(tr, sed)

$tr % = #tr 置換前 置換後の順に指定します
$sed -e 's/"url"://g' -e 's/"//g'  #sed -e 's/置換前/置換後/g'、一度に何回も置換できます。

 検索コマンド(grep)

$cat /etc/group | grep sudo #grepは指令した文字列を検索します。この場合、グループからsudoを検索しています。

ファイル操作応用(tar, gzip)

$tar cvf peace.tar *   #tar cvf アーカイブ [ファイル名|ディレクトリ名]でファイルなどを一箇所に集約します。アーカイブ名は自由、この例文はファイルを*で指定しています。

$gzip ファイル #ファイルを圧縮する、このコマンドで圧縮したファイルはgzという拡張子がつきます。
$gzip -d ファイル #ファイルを解凍する

補足: UNIXは拡張子なしでもファイルの内容を確認できるような仕組みがあるため、ファイルは基本拡張子がありません。 ただ、人間が識別しづらいので、拡張子をつけたほうが管理しやすいです。

コンパイラ

$gcc moji.c -o moji #c言語で作成したファイル(moji.c)をコンパイル(機械語に変換)し、mojiという実行可能なファイルが作成される。

-oオプションの指定がない場合、a.outというファイルが作成されます。

tmpディレクトリ関連

テンポラリ領域、つまり一時的に使用するファイルなどを保存するディレクトリです。/tmp/以下のファイル名やディレクトリ名が被らないように、以下のコマンドを使用できます。

$mktemp #ファイル作成
/tmp/tmp.ytR1OW9yLa
$mktemp -d #ディレクトリ作成

最後に

以上となります。