バッチコマンド(Linux/DOS/PowerShell)

Linux専用コマンドは
Linux コマンド
Linux コマンド:グループ・ユーザー・権限
参照
MS-DOS専用コマンドは「Windowsバッチ(MS-DOS)」参照

ディレクトリ/ファイル操作

カレントディレクトリのファイル一覧

ls

隠しファイル
ls -a

権限
ls -l

ディレクトリのみ
ls -F | grep /

ファイルのみ
ls -F | grep -v /

dir

ファイル一覧をテキスト出力
dir > test.txt

サブディレクトリも含む
dir /s

更新日時等非表示
dir /b

フォルダのみ
dir /ad

ファイルのみ
dir /a-d

Get-ChildItem
※lsも可
※dirも可
※gci(Get-Child-Itemの略)も可

検索

【locate】
$ locate (ファイル名)
$ locate httpd.conf

自階層以下より検索
$ locate -b

検索結果を削除
$ locate -b ~ | xargs rm -rf

【find】

find (検索先ディレクトリ) (検索条件) (アクション)

(検索先ディレクトリ)省略 → カレントディレクトリが検索先
(検索条件) → 全ディレクトリ、全ファイルが検索対象
(アクション) → 検索結果を全て表示(-lsアクションと同等)

複数ディレクトリを検索
find (検索先ディレクトリ) (検索先ディレクトリ) (検索条件) (アクション)
find /a /b -name test.txt

複数(AND)条件で検索
find (検索先ディレクトリ) (検索条件) (検索条件) (アクション)
find / -name test -type f

複数(OR)条件で検索
find (検索先ディレクトリ) (検索条件) -OR (検索条件) (アクション)
find / -name aaa -or -name bbb

複数(AND、OR)条件で検索
find (検索先ディレクトリ) (検索条件) (検索条件) -OR (検索条件) (アクション)
find / -name aaa -type f -or -name bbb

除外条件で検索
find (検索先ディレクトリ) !(検索条件) (アクション)
find / !-name aaa

複数除外条件で検索
find (検索先ディレクトリ) !(検索条件) (アクション)
find / !-name aaa !-name bbb

ファイル/ディレクトリ名で検索
find / -name aaa
find / -name *.txt
find / -name aaa.*

正規表現で検索
find / -regex (正規表現)

ファイルのみを検索
find / -type f ~

ディレクトリのみを検索
find / -type d ~

指定バイトより大きいファイルを検索
find / -size +500 ~

指定バイトより小さいファイルを検索
find / -size -500 ~

検索するディレクトリ階層を制限して検索
find / maxdepth 1 ~
指定ディレクトリの直下のみ

find / maxdepth 2 ~
指定ディレクトリから1階層下までを検索

検索結果Linuxコマンドを実行
find ~ -exec (Linuxコマンド)
find ~ -exec rm -rf {} \;
{}は検索結果によって置換される。
1.txt
2.txt
3.txt
が検索された場合、
rm -rf 1.txt
rm -rf 2.txt
rm -rf 3.txt
が1つずつ実行される

find ~ | xargs (Linuxコマンド)
find ~ | xargs rm -rf
-execと違って検索結果が同時に処理される

> dir (ファイル名) /s

カレントディレクトリ表示/変更

pwd
カレントディレクトリを表示

cd
カレントディレクトリを変更

cd ~
カレントディレクトリを同階層の~に変更

cd d:~
カレントディレクトリを同一ドライブDの~フォルダに変更

cd /d d:
カレントドライブをDに

cd ..
親階層へ移動

cd ../..
親の親階層へ移動

cd ~/
homeへ移動

cd

~> cd
⇒カレントフォルダ表示

~> cd c:\test
⇒カレントフォルダをc:\testへ変更

~> cd /d d:\
⇒dドライブへカレントフォルダを変更

【ネットワークパス】
パス(ネットワーク可)をスタックに保存
pushd (パス)

パス(ネットワーク可)をスタックを削除
popd (パス)

Set-Location<br/>

Set-Location -path C:\test
⇒カレントディレクトリをc:\testへ変更
※Set-Location C:\test も可
※cd C:\test も可
※chdir C:\test も可
※sl(Set-Locationの略) C:\test も可

ファイル/フォルダ移動

$ mv (移動元) (移動先)

名前変更(移動先が存在しない場合)
$ mv -f before.txt after.txt

上書き
$ mv -f before/test.txt after/test.txt

txt拡張子ファイルを1階層上のafterディレクトリへ移動
$ mv *.txt ../after

リネーム
$ mv test.txt _test.txt

sudo+cd
sudo sh -c "cd ~; cd後の命令"
例 sudo sh -c "cd /var/httpd; ls"

move

~> move c:test\test.txt d:\test

c:test\test.txt を d:\testへ移動

ファイル/フォルダ複写

$ cp (コピー元) (コピー先)

上書き
$ cp -f before.txt after.txt

ディレクトリコピー
$ cp -r before after

txt拡張子ファイルを1階層上のafterディレクトリへコピー
$ cp *.txt ../after

copy

~> copy c:test\test.txt d:\test

c:test\test.txt を d:\testへコピー

option付き
~> xcopy

パラメータは「Windowsバッチ(MS-DOS)」参照

ファイル/フォルダ削除

ファイルを削除
$ rm ~

ディレクトリを削除
$ rm -r ~

ディレクトリ&内部のファイルを削除
$ rm -rf ~

txt拡張子の全ファイルを削除
$ rm *.txt

ファイル名を検索&検索したファイルを削除
find ./ -name '~*.txt' | xargs rm

del

~> del d:\test.txt
⇒d:\text.txtを削除

~> del -r d:\test
⇒d:\text(ディレクトリ)を削除

削除前に確認メッセージを表示しない
~> dell /q "c:\test.txt"

削除前に確認メッセージを表示する(規定)
~> dell /p "c:\test.txt"

ディレクトリ作成

mkdir test

サブディレクトリごと作成
mkdir -p test/test

mkdir

~> mkdir d:\test
⇒dドライブに「test」ディレクトリを作成

ファイル作成

ファイル作成
touch test.txt

文字をファイルに出力
echo aaa > test.txt

文字をファイルに出力
echo aaa > c:\test.txt

ファイルの中身を空に
ファイルが存在しない場合は新規作成
type null > (ファイル名)
type null > "c:\test.txt"

ネットワーク系

ネットワークドライブに接続する

NET USE (ネットワークパス)
NET USE (ネットワークパス) (パスワード) /USER:(ユーザー名)

NET USE (ドライブ文字) (ネットワークパス)
NET USE (ドライブ文字) (ネットワークパス) (パスワード) /USER:(ユーザー名)

NET USE M: \\TestServer\system
NET USE M: \\192.168.1.1\system
⇒フォルダ:\\TestServer\systemに、Mドライブとして接続する。
⇒フォルダ:\\192.168.1.1\systemに、Mドライブとして接続する。

切断
NET USE M:\\TestServer\system /delete

一覧表示
NET USE

IPアドレス取得/破棄(DHCP)

IPCONFIG /RELEASE
IPCONFIG /RENEW

DNSキャッシュのクリア
ipconfig /flushdns

DNS照会

nslookup

A(Adress:XXX.XXX.XXX.XXX)の検索(正引き)
> nslookup office-yone.com

PTR(Pointer:office-yone.com)の検索(逆引き)
> nslookup XXX.XXX.XXX.XXX

対話モードで実行
> nslookup

クエリの種類を設定
> set type=A、AAAA、ANY、CNAME、MX、NS、PTR、SOA、SRV

調査するドメインを設定
> set domain=(ドメイン名)

現在のサーバーなどの情報を表示
> set all

ネットワーク情報

NetworkStatistic(統計)の略

アクティブな接続(TCPコネクション):文字情報
netstat

アクティブな接続(TCPコネクション):数値情報
netstat -n

現在のすべての接続を表示する
netstat -a

プロセス名を表示する
netstat -o

実行ファイル名を表示する
netstat -b

インターフェイス・レベル(イーサネット)の統計情報を表示する
netstat -e

プロトコルレベル(IP/TCP/UDP/ICMP)の統計情報を表示する
netstat -s

プロトコルごとの接続をリストする。プロトコルにはTCPかUDPを指定する。-sとともに使用すると、そのプロトコルに関する情報のみの表示を行う
netstat -p

ルーティング・テーブルを表示する
netstat -r

複数のパラメータを指定する場合
netstat -ano

プロセス確認

プロセスの詳細を表示する
ps -fe

プロセスID:pid
実行ファイル:CMD

プロセス強制終了
kill -9 プロセスID

タスクマネージャーにて
「全ユーザーのプロセスを表示する」にチェックを入れ、
「表示」メニュー > 列の選択
でNetstatで確認したプロセスID(PID)を選択。
対象のPIDのプロセスを強制終了させる。

【プロセスID(PID)表示】
netstat -nao
ネットワーク情報」参照
netstat -nao|find "80"

【プロセス名表示】
tasklist /fi "pid eq 80"

【プロセス検索】

サーバ情報確認

whoisコマンドをインストール
# yum install jwhois

$ whois yahoo.co.jp

→結果
[Querying whois.jprs.jp]

Domain Information:
a. [Domain Name]        YAHOO.CO.JP
g. [Organization]        Yahoo Japan Corporation
l. [Organization Type]     Corporation
m. [Administrative Contact]   HA14103JP
n. [Technical Contact]     KM43416JP
p. [Name Server]        ns01.yahoo.co.jp
p. [Name Server]        ns02.yahoo.co.jp
p. [Name Server]        ns11.yahoo.co.jp
p. [Name Server]        ns12.yahoo.co.jp
s. [Signing Key]        
[State]             Connected (2018/11/30)
[Registered Date]        2000/11/17
[Connected Date]        2000/11/17
[Last Update]          2017/12/01 01:02:55 (JST)

ping yahoo.co.jp
でIPアドレスを取得

https://www.nic.ad.jp/ja/
で182.22.59.229を検索

→結果
Network Information: [ネットワーク情報]
a. [IPネットワークアドレス]   182.22.0.0/17
b. [ネットワーク名]       YAHOO–NET
f. [組織名]           ヤフー株式会社
g. [Organization]        Yahoo Japan Corporation
m. [管理者連絡窓口]       JP00032461
n. [技術連絡担当者]       JP00032461
p. [ネームサーバ]        ns01.yahoo.co.jp
p. [ネームサーバ]        ns02.yahoo.co.jp
p. [ネームサーバ]        ns11.yahoo.co.jp
p. [ネームサーバ]        ns12.yahoo.co.jp
[割当年月日]          2010/06/03
[返却年月日]          
[最終更新]           2011/09/26 15:59:02(JST)
                
上位情報
––––––––––
ヤフー株式会社 (Yahoo Japan Corporation)
[割り振り] 182.22.0.0/17

下位情報
––––––––––
該当するデータがありません。

コンピューター情報

レジストリ登録

※デバッグモード時は参照するDLLをIDEが自動でレジストリに登録する。
一方、実行ファイルを他端末へ持って行って動作させる場合は、レジストリに登録する必要がある。

regsvr32 [/u] [/s] [/n] [/i[:コマンドライン]] ファイル名

オプション

オプション無し
指定されたコンポーネント内のDllRegisterServer()関数を呼び出して、コンポーネントをシステムに登録。

/u
指定されたコンポーネント内のDllUnregisterServer()関数を呼び出して、コンポーネントをシステムから解除。

/s
メッセージボックスを表示せずに実行。

/i
省略可能な[コマンドライン]文字列を引数として、指定されたコンポーネント内の DllInstall(TRUE, コマンドライン文字列)関数を呼び出します。
/u と併用した場合は、指定されたコンポーネント内のDllInstall(FALSE, コマンドライン文字列)関数を呼び出し。

/n
DllRegisterServer()関数を呼び出しません。
/u と併用した場合はDllUnregisterServer()関数を呼び出しません。
このオプションは /i オプションと併用する必要あり。

環境変数

パスを追加(既存パスは残る)
$ PATH=$PATH:(パス)
例 $ PATH=$PATH:/sbin

パスを指定(既存パスは削除)
$ PATH=(パス)
例 $ PATH=/sbin

$ echo $PATH

一覧
$ printenv
$ printenv | less

一覧
SET

指定文字で始まる環境変数の一覧表示
SET (文字列)

設定
SET (環境変数名) = (値)
SET AAA = C:\AAA;C:\BBB

シンボリックリンク
mklink (リンクパス) (元ファイル)
mklink /d (リンクパス) (元フォルダ)

CPU、メモリ、HD使用率

入出力

画面出力

> type test.txt

テキスト出力

上書き
出力内容 > ファイル名
追記
出力内容 >> ファイル名

(例)ls > list.txt
出力先ファイルが無い場合も新規作成される

上書き
出力内容 > ファイル名
追記
出力内容 >> ファイル名

(例)dir > list.txt
出力先ファイルが無い場合も新規作成される

バッチファイル

プログラムの実行

シェルスクリプト実行
# sh ~.sh

> ~.exe

> start ~.exe

変数

rem COM登録ツール「RegAsm.exe」保存場所
SET ExePath=C:\Windows\Microsoft.NET\Framework\v4.0.30319\
変数の使用宣言不要。"や'の囲み不要。スペース不要。

rem 登録DLL場所
SET DllPath=C:\TEST\
SET DllNm=Test.dll

CD %ExePath%
CALL RegAsm %ExePath%%DllNm% /tlb /codebase
変数の参照は%で囲む。文字列を連結する場合は%~%を続ける。

ターミナル操作

表示言語

英語モード切り替え
chcp 437 IBM437

日本語モード切り替え
chcp 932 shift_jis
chcp 65001 utf-8

画面のクリア

clear
cls

その他

シャットダウン

システムを終了
$ shutdown -h

システムを再起動
$ shutdown -r
または
$ reboot

時間指定
$ shutdown -r now (即)
$ shutdown -r 0:00 (午前0時)
$ shutdown -r +60 (60分後)

シェル(ターミナル)を終了
$ exit

シャットダウン時間指定
> shutdown -t 1 ※1分後
> shutdown -t 0 ※即

再起動
> shutdown -r

リモートサーバを再起動
shutdown /m XXX.XXX.XXX.XXX /r

処理の中断

処理の途中で
CTRL + C

FTP

FTP接続
> ftp ~.com

ログイン
ユーザー: (入力する)
パスワード:(入力する)

以下の様なコマンドが可能
ftp> ls
ftp> cd ~
ftp> mkdir ~

Passive/Activeモード切替
ftp> passive

ローカルマシンのファイルを転送する
ftp> put D:\test.txt

ローカルマシンへファイルを取得する
ftp> get test.txt

FTP終了
ftp> quit

FTP接続
> ftp ~.com

ログイン
ユーザー: (入力する)
パスワード:(入力する)

以下の様なコマンドが可能
ftp> dir
ftp> cd ~
ftp> mkdir ~

Passive/Activeモード切替
ftp> passive
WindowsのFTPクライアントはPassiveモード不可

ローカルマシンのファイルを転送する
ftp> put D:\test.txt

ローカルマシンへファイルを取得する
ftp> get test.txt

FTP終了
ftp> bye