主題1.03:GNUとUnixのコマンド
1.03.1 コマンドラインの操作(重要度4)
pwdコマンド
書式
pwd
概要
カレントディレクトリを絶対パスで表示
cdコマンド
書式
cd ディレクトリ名
概要
カレントディレクトリを変更
引数
・ディレクトリ名:カレントディレクトリにするディレクトリを指定。引数を省略すると、ホームディレクトリをカレントディレクトリにする。-を指定すると、1つ前のカレントディレクトリに変更
使用例
cd
→引数を省略するとホームディレクトリへ変更
cd /testdir
→カレントディレクトリを/testdirに変更
cd ~test
→cd ~ユーザー名とすることで、指定したユーザーのホームディレクトリに移動する
ディレクトリを表す記号
.→カレントディレクトリ
..→親ディレクトリ(1つ上のディレクトリ)
~→ホームディレクトリ
/→ルートディレクトリ
echoコマンド
書式
echo【オプション】文字列
概要
指定した文字列を出力
主なオプション
-n
→改行せずに文字列を出力
引数
・文字列:画面上に表示する文字列を指定。$変数名で変数内に格納された値を出力
使用例
echo $LANG
→変数に格納されている値を参照
echo ‘$LANG’
→シングルクォーテーションでは$の効果を抑止し、$LANGという文字を出力
echo “$LANG”
→ダブルクォーテーションでは、「$」「`」「\」「”」は抑止されない
echo `$LANG`
→バッククォーテーションでは囲まれた文字列(変数の場合は格納されている値)をコマンドと見なし、その実行結果を文字列として返す
echo \$LANG
→バックスラッシュでも抑止できる(\では次の文字を抑止)
LANG=C
→英語を利用するように変更(変数名=値)
PATH=/testbin
→既存のPATHの内容が消え、/testbinのみPATHに追加される
PATH=$PATH:/testbin
→既存のPATHの内容に加えて、/testbinがPATHに追加される
主な定義済みの環境変数
・HISTSIZE:現在のシェルでのコマンド履歴の保存数
・HISTFILE:コマンド履歴保存ファイルのパス
・HISTFILESIZE:コマンド履歴保存ファイルへの履歴保存数
・LANG:利用している言語、文字コード(ロケール情報)
・PATH:コマンドの実行ファイルの格納先
・PS1:プロンプトに表示する内容(bashシェルのプロンプト末尾「#」(root)、「$」(一般ユーザー))
・SHELL:現在利用しているシェル
・PWD:カレントディレクトリのパス
・HOME:ログインしているユーザーのホームディレクトリ
・USER:ログインしているユーザー
・HOSTNAME:ホスト名
環境変数PATH
・パスを指定しなくてもコマンドを実行できるようにするために使用される
・シェルは環境変数PATHに定義されたパスから、入力されたコマンドの実行ファイルを順に探す
exportコマンド
書式
export 変数名[=値]
概要
指定したシェル変数を環境変数としてエクスポートする
引数
・変数名:エクスポートする変数名
・値:シェル変数として定義されていないものを指定する場合、値も一緒に指定して、変数の定義を行うことができる
使用例
export EX3
→シェル変数を環境変数にするとシェルスクリプト内でも参照できる
export EX5=test
→exportコマンド実行時に値を格納することができる
シェル変数
・シェル変数は、変数を設定したシェル上でのみ有効な変数で、exportすることによって環境変数とすることができる
・シェル変数名=値で設定できる(例:LANG=C)
環境変数
・設定が子プロセスに引き継がれる
・アプリケーション、コマンド等で有効な変数である
declareコマンド
書式
declare【オプション】変数名[=値]
概要
変数を定義する/定義内容を表示する/定義内容を修正する
主なオプション
-x
→指定した名前の変数を環境変数としてエクスポート
引数
・変数名:エクスポートする変数名を指定
使用例
declare -x EX4
→EX4という名前の変数を環境変数としてエクスポート
setコマンド
書式
set【オプション】
概要
定義済みの変数と値、関数などを一覧表示する。オプションを指定して、シェルのオプションの有効・無効化の設定もできる
主なオプション
allexport
→新規作成・変更した変数を自動的に環境変数とする(エクスポートする)
ignoreeof
→Ctrl + D を押してもログアウトしない設定する
noclobber
→リダイレクト演算子「>」「>&」「<>」で既存のファイルを上書き不可に設定する
noglob
→パス名展開を無効に設定する(ワイルドカードによる展開(*や?)が無効にする)
emacs
→emacsエディタと同じキーバインドにする(矢印キーやマウスで操作でき、Ctrl + D で一文字削除できる、など)
vi
→viエディタと同じキーバインドにする(ESCキーでコマンドモードに移行し、入力時はiやAなどで編集モードへの移行が必要、など)
引数
・オプション:有効、もしくは無効にするシェルのオプションを指定
使用例
set | grep EX
→EXと付くシェル変数と環境変数を一覧表示する
set -o
→シェルのオプションの設定状態を確認
set +o
→シェルのオプションの設定状態をsetコマンドの実行形式で表示
set -o allexport
→オプションを有効にする
set +o allexport
→オプションを無効にする
envコマンド
書式
env【オプション】【環境変数名=値 コマンド】
概要
定義済みの環境変数と値を一覧表示する。引数で環境変数や値、コマンドを指定することで、一時的に環境変数を指定して実行する処理にも利用できる
使用例
env | grep EX
→EXと付く環境変数を一覧表示する
一部、またはすべての環境変数を表示
printenvコマンド
unsetコマンド
書式
unset 変数名
概要
定義済みの変数を削除する
使用例
unset EX3
→EX3という名前の変数を削除
historyコマンド
書式
history【オプション】【履歴数】
概要
コマンド履歴を表示
主なオプション
-c
→履歴の消去
引数
・履歴数:表示する履歴の数を指定。省略した場合、すべての履歴を表示
使用例
HISTSIZE=5
→履歴を5個しか記録しないように設定
history
→上記の設定により5個しか履歴が残らない(既定では1000個)
history 10
→設定に関係なく10個の履歴を表示
!67
→指定した番号の履歴内容を実行
コマンドの履歴が記録されているファイル
.bash_history
bashシェルのキー操作
・Ctrl + c:処理の停止
・Ctrl + z:処理の一時停止
・Ctrl + a:カーソルを行頭に移動
・Ctrl + e:カーソルを行末に移動
・Ctrl + s:画面への出力を停止
・Ctrl + q:画面への出力を再開
・Ctrl + r:コマンド履歴の後方検索
・Ctrl + l:画面のクリア
manコマンド
書式
man【オプション】【セクション】キーワード
概要
オンラインマニュアルを表示
主なオプション
-a
→用意されているすべてのマニュアルを表示
-f(=whatisコマンド)
→指定したキーワードでマニュアルを検索(完全一致)
-k(=aproposコマンド)
→指定したキーワードでマニュアルを検索(部分一致)
主なセクション
・1→一般コマンド
・2→システムコール(カーネルが提供する関数)
・3→ライブラリ関数(プログラムライブラリに含まれる関数)
・4→特殊ファイル(通常 /dev 配下に存在するファイル)
・5→ファイルフォーマット(設定ファイル)
・6→ゲーム
・7→その他いろいろなもの(マクロパッケージや慣習などを含む)
・8→システム管理コマンド(通常はroot用)
・9→カーネルルーチン[非標準]
引数
・セクション:マニュアルのセクションを指定
・キーワード:表示するマニュアルの名前を指定。-kや-fオプション指定時は検索するキーワードを指定
使用例
man 5 passwd
→passwdファイルのマニュアルを表示(セクション番号を指定しない場合はセクション番号1のpasswdコマンドのマニュアルが表示)
man -f passwd
→マニュアルのタイトル、もしくは説明文にpasswdという単語が入っているものを検索
whatisデータベース
・オンラインマニュアルページ(manページ)に関する情報を蓄積するデータベースのこと
・makewhatisコマンドを実行することで作成、または更新される
1.03.2 フィルタを使ったテキストストリームの処理(重要度3)
catコマンド
書式
cat【オプション】【ファイル】
概要
指定したファイルの内容を表示、ファイルの結合
主なオプション
-n
→空白を含めたすべての行に行番号をつける
-b
→空白を除いた行に行番号をつける
引数
・ファイル:表示するファイルを指定。ファイル名を省略すると、入力された内容をそのまま出力
使用例
cat
→コマンド実行後何か文字を入力してEnterキーを押すと、入力した文字が画面上に再表示される
cat test1.txt test2.txt
→複数のファイルを指定して、まとめて表示することができる
cat -n file
→「file」ファイルを行番号をつけて出力
cat /etc/hosts | tr [:lower:] [:upper:]
→「/etc/hosts」ファイル内の英小文字を英大文字に変換して表示
cat file | tr -s ” “
→「file」ファイル内でスペースが連続している場合、スペース1つに置き換えて表示
cat file | tr -d ac
→「file」ファイル内にある文字「a」と「c」を削除する
cat crlf.txt | tr -d ‘\r’ > linux.txt
→改行コードがCRLFのテキストファイル「crlf.txt」をLinuxで正しく扱えるようにする
nlコマンド
書式
nl【オプション】【ファイル】
概要
指定したファイルの内容を、行番号を付けて表示
主なオプション
-b a
→空白を含めたすべての行に行番号をつける(catコマンドの-nオプションと同じ)
-b t
→空白を除いた行に行番号をつける(catコマンドの-bオプションと同じ)デフォルト
引数
・ファイル:表示するファイルを指定
使用例
nl -b a file
→「file」ファイルを行番号をつけて出力
lessコマンド
書式
less【オプション】【ファイル】
概要
指定したファイルの内容を1画面ずつ表示
引数
・ファイル:表示するファイルを指定
使用例
less test4.txt
→test4.txtというファイルを開く
lessコマンドのキー操作
↑キー、kキー:上へ1行スクロール
↓キー、jキー:下へ1行スクロール
bキー:上へ1画面スクロール
fキー:下へ1画面スクロール
/キーワード:指定したキーワードで検索。Enterキーを押すと検索を実行し、次を検索する場合はnキーを押す
qキー:lessコマンドを終了してシェルに戻る
例題
・ファイルの内容をページ(1画面)ごとに表示するが、編集できないコマンド
lessコマンド
moreコマンド
headコマンド
書式
head【オプション】ファイル
概要
指定したファイルの先頭部分を表示
主なオプション
-行数/-n 行数
→指定した行数を表示(既定は10行)
-c バイト数
→指定したバイト数をファイルの先頭から表示
引数
・ファイル:表示するファイルを指定
使用例
head -3 test4.txt
head -n 3 test4.txt
→test4.txtというファイルの先頭3行を表示
head -c 500 test4.txt
→ファイルの先頭500バイトを表示
tailコマンド
書式
tail【オプション】ファイル
概要
指定したファイルの末尾部分を表示
主なオプション
-行数/-n 行数
→指定した行数を表示(既定は10行)
-c バイト数
→指定したバイト数をファイルの末尾から表示
-f
→末尾をリアルタイムに表示し続ける
引数
・ファイル:表示するファイルを指定
使用例
tail -3 test4.txt
tail -n 3 test4.txt
→test4.txtというファイルの末尾3行を表示
tail -c 500 test4.txt
→ファイルの末尾500バイトを表示
fmtコマンド
書式
fmt【オプション】ファイル
概要
指定したファイルを段落に整形して表示
主なオプション
-w 文字数
→指定した文字数の段落として整形(既定は75文字)
引数
・ファイル:表示するファイルを指定
使用例
fmt -w 30 httpd.conf
→「httpd.conf」ファイルの内容を1行あたり30文字に整形して表示
prコマンド
書式
pr【オプション】ファイル
概要
指定したファイルを印刷用に整形。ページごと(既定では56行ごと)にヘッダを付けて表示
主なオプション
-l 行数
→ヘッダ、フッタを含めたページの行数を指定(デフォルトは66行)
-h 文字列
→ヘッダに表示されるファイル名を指定した文字列に変更
+開始ページ[:終了ページ]
→開始ページ、終了ページを指定
引数
・ファイル:表示するファイルを指定
使用例
pr -l 30 +1:2 httpd.conf
→「httpd.conf」ファイルを1ページあたり30行として整形して表示
pr -h testfile -l 30 httpd.conf
→「httpd.conf」ファイルを整形する際、ヘッダに表示されるファイル名を「testfile」に変更。また、1ページあたり30行とする
cutコマンド
書式
cut【オプション】ファイル
概要
ファイル内の各行から指定した列のみを表示
主なオプション
-c 文字数
→抽出する文字位置を指定
-d”記号”
→指定した記号を区切り文字として扱う(既定はスペース、タブ)
-f 列1[,列2・・・]
→指定した列を表示
引数
・ファイル:表示するファイルを指定
使用例
cut -c 2 /etc/passwd
→ファイルの各行の2番目の文字を取り出して表示
cut -d”:” -f 1,6 /etc/passwd
→:で区切られた1列目と6列目を表示
pasteコマンド
書式
paste【オプション】ファイル1 ファイル2
概要
ファイルを行単位で結合して表示
主なオプション
-d”記号”
→指定した記号を区切り文字として扱う(既定はスペース、タブ)
引数
・ファイル:表示するファイルを指定
使用例
paste paste1.txt paste2.txt
→2つのファイルの内容を列で結合
paste -d : file1 file2
→「file1」と「file2」ファイルを行単位で区切り文字「:」を使用して結合
joinコマンド
書式
join【オプション】ファイル1 ファイル2
概要
指定した2つのファイルの中から、共通の列に基づき結合する
主なオプション
-t”記号”
→指定した記号を区切り文字として扱う(既定はスペース、タブ)
-j 列
→ファイル1の指定した列を共通の列として扱う(規定は1列目)
引数
・ファイル:表示するファイルを指定
使用例
join -t”:” join1.txt join2.txt
→結合した内容が表示される。共通の番号がない行は結合対象外
sortコマンド
書式
sort【オプション】ファイル
概要
ファイル内容を並べ替えて表示
主なオプション
-b
→行頭の空白を無視
-f
→大文字、小文字を区別しない
-t”記号”
→指定した記号を区切り文字として扱う(既定はスペース、タブ)
-k 列
→指定した列を基準に並べ替える
-r
→降順(Z → A、9 → 0)で並べ替える(既定は昇順)
-n
→基準列を数値として扱う
引数
・ファイル:表示するファイルを指定
使用例
sort -t”:” -k 3 -r sort.txt
→3列目を基準に降順で並べ替えている
sort -t”:” -k 3 -r -n sort.txt
→100を一番大きな数値と認識して並べ替えられる
uniqコマンド
書式
uniq【オプション】ファイル
概要
重複している行を排除して表示
主なオプション
-c
→重複している数を表示
-d
→重複している行のみを表示
-u
→重複していない行のみを表示
引数
・ファイル:表示するファイルを指定
使用例
uniq uniq.txt
→重複していても隣接していないと排除されない
sort uniq.txt | uniq
→sortコマンドで並べ替えた内容に対してuniqコマンドを実行(排除可能)
uniq file newfile
→「file」ファイルにある連続して重複した行を1行にまとめて、「newfile」ファイルに出力
uniq -d file
→「file」ファイルにある連続した重複行のみを表示
uniq -u file
→「file」ファイルにある連続して重複していない行のみを表示
wcコマンド
書式
wc【オプション】ファイル
概要
ファイル内の行数、単語数、文字数をカウントして表示
主なオプション
-l
→行数を表示
-w
→単語数を表示
-c
→文字(バイト)数を表示
引数
・ファイル:表示するファイルを指定
使用例
wc -l testwc.txt
→行数のみ表示
wc -w testwc.txt
→単語数のみ表示
wc -c testwc.txt
→ファイルの文字(バイト)数のみを表示
wc httpd.conf
wc -lwc httpd.conf
→「httpd.conf」ファイルの行数、単語数、文字(バイト)数を表示
odコマンド
書式
od【オプション】ファイル
概要
ファイルを8進数や他の形式で表示
主なオプション
-c/-t c
→ASCII文字またはバックスラッシュ付きのエスケープ文字で表示
-o/-t o
→8進数で表示
-x/-t x
→16進数で表示
引数
・ファイル:表示するファイルを指定
使用例
od -t c win.txt
→Windowsでの改行コードは\r\n
od -t c test1.txt
→Linuxでの改行コードは\n
od /bin/ls
od -t o /bin/ls
「/bin/ls」ファイル(lsコマンドのバイナリファイル)の内容を8進数で表示
od -t x /bin/ls
「/bin/ls」ファイル(lsコマンドのバイナリファイル)の内容を16進数で表示
trコマンド
書式
tr【オプション】文字1【文字2】(置換)
tr -d 文字 (削除)
概要
文字の置換・削除
主なオプション
-s
→文字列1で指定した文字が連続した場合、1文字に置き換える
-d
→文字列1で指定した文字を削除
引数
・文字:置換、削除する文字を指定
使用例
tr a-z A-Z < /etc/hosts
→「/etc/hosts」ファイル内の英小文字を英大文字に変換して表示
tr -s [:space:] < file
→「file」ファイル内でスペースが連続している場合、スペース1つに置き換えて表示
tr -d ac < file
→「file」ファイル内にある文字「a」と「c」を削除する
tr -d ‘\r’ < crlf.txt > linux.txt
→改行コードがCRLFのテキストファイル「crlf.txt」をLinuxで正しく扱えるようにする
文字列の指定
文字クラス
[:alpha:] 英字
[:lower:] 英小文字(a-z)
[:upper:] 英大文字(A-Z)
[:digit:] 数字(0-9)
[:alnum:] 英数字
[:space:] スペース(” “)
改行コード
・CRLF(\r\n):Windows
・LF(\n):Unix OS(Linux、Mac OS Xなど)
・CR(\r):古いMacOS(バージョン9まで)
*Windowsのメモ帳で作成したテキストファイルをLinuxで正しく扱えるようにするには、テキスファイルから改行コードCR(\r)を取り除く必要がある
splitコマンド
書式
split【オプション】ファイル【分割後の名前】
概要
指定したファイルを分割
主なオプション
-行数/-l 行数
→分割する行数(既定では1000行で分割)
引数
・ファイル:分割するファイルを指定
・分割後の名前:分割後の名前を指定。指定した名前に〜.aa、〜.abという名前のファイルが構成される。省略すると、ファイル名自体がaa、abのファイルが生成される
使用例
split -20 test4.txt split.
split -l 20 test4.txt split.
→test4.txt(1~100まで100行書かれているファイル)を5つに分割
1.03.3 ストリーム、パイプ、リダイレクトの使用(重要度4)
リダイレクト
リダイレクトの上書き・追記設定
・コマンド > ファイル:上書きでリダイレクト(リダイレクト先の既存の内容は消える)
・コマンド >> ファイル:追記でリダイレクト(リダイレクト先の既存の内容に追記)
入出力制御
・コマンド > ファイル:標準出力をリダイレクト(>>であればファイルに追記)
・コマンド 2> ファイル:標準エラー出力をリダイレクト(2>>であればファイルに追記)
・コマンド > ファイル 2>&1:標準出力と標準エラー出力をリダイレクト
・コマンド &> ファイル:標準出力と標準エラー出力をリダイレクト
・コマンド < ファイル:標準入力をリダイレクト
・コマンド << 終了文字列:ヒアドキュメント。終了文字列により処理終了
使用例
date > log.txt
date 1> log.txt
→dateコマンドを実行した結果を「log.txt」ファイルに上書き保存
rm ./* 2> rm.log
→「rm ./*」コマンドを実行したときに出力されるエラーメッセージのみを、「rm.log」ファイルに出力
cat file.txt | tr PINGT pingt > hoge.txt
tr PINGT pingt < file.txt > hoge.txt
→テキストファイル「file.txt」にある「PINGT」を「pingt」に変換して「hoge.txt」に保存
cat test1.txt >> tests.txt
cat < test1.txt >> tests.txt
→「test1.txt」ファイルの内容を、既存の「tests.txt」ファイルに追記
tr -s ‘#’ < file1 > file2
→「file1」ファイル内の連続した「#」を1つに置き換えて「file2」ファイルに出力する
teeコマンド
書式
tee【オプション】【ファイル】
概要
標準入力の内容を標準出力とファイル両方に送る
主なオプション
-a
→ファイルに上書きではなく追記する
引数
・ファイル:出力対象となるファイルを指定
使用例
grep bash /etc/passwd | tee bashuser.txt
→画面にgrepコマンドの結果を出力してファイルにも出力する
パイプ
「パイプ( | )」という機能を使用することによって、標準出力に出力されたコマンドの実行結果を、別のコマンドの標準入力に渡すことができる
cat file.txt | wc -l
→「file.txt」ファイルの行数が表示される
1.03.4 正規表現を使用したテキストファイルの検索(重要度2)
主な正規表現
記号:説明:使用例
.:任意の1文字:a..→aから始まる3文字(aaa,abc)
*:直前の文字の0回以上の繰り返し:.*→任意の文字列
[ ]:[ ] 内のいずれか1文字:[abc]→a,b,cのどれか1文字
^:行頭:^a→aから始まる行
$:行末:a$→aで終わる行
\:次の1文字をエスケープ(通常の文字として処理):\*→*という文字
+:直前の文字の1回以上の繰り返し【拡張正規表現】:a+→aを1回以上繰り返す文字列(a,aa,aaaなど)
?:直前の文字の0回もしくは1回の繰り返し【拡張正規表現】:windows?→windowsのsが0または1文字(window,windows)
|:左右いずれかの正規表現【拡張正規表現】:abc|xyz→abcまたはxyz
grepコマンド
書式
grep【オプション】キーワード ファイル
概要
指定したファイルから、キーワードが書かれている行のみを抽出して表示
主なオプション
-e
→検索キーワードの指定(複数のキーワード指定時に利用)
-f
→検索パターンをファイルから読み込む
-E
→拡張正規表現の利用(egrepと同じ)
-F
→検索パターンを正規表現ではなく、固定文字列とする(fgrepと同じ)
-v
→否定条件
-i
→大文字、小文字の区別を無視
-c
→キーワードと合致する行数を表示
-n
→出力される行の行番号を表示
引数
・キーワード:検索するキーワードを指定
・ファイル:検索対象となるファイルを指定
使用例
grep ‘^root’ /etc/passwd
→行頭がrootで始まる行のみ表示
grep ‘bash$’ /etc/passwd
→行末がbashで終わる行のみ表示
grep -v ‘^#’ httpd.conf
→「httpd.conf」ファイルから、行頭が「#」でない行を抽出
grep -Ev ‘PINGT|pingt’ test.txt
→「test.txt」ファイルから、「PINGT」または「pingt」という文字列を含まない行を抽出
egrepコマンド
書式
egrep【オプション】キーワード ファイル
概要
指定したファイルから、キーワードが書かれている行のみを抽出して表示
引数
・キーワード:検索するキーワードを指定。egrepコマンドではキーワードの指定に拡張正規表現を使用できる
・ファイル:検索対象となるファイルを指定
使用例
egrep ‘ (80|443)/tcp’ /etc/services
→スペースの後、80/tcpもしくは443/tcpという記述がある行を表示
egrep -v ‘PINGT|pingt’ test.txt
→「test.txt」ファイルから、「PINGT」または「pingt」という文字列を含まない行を抽出
fgrepコマンド
書式
fgrep【オプション】キーワード ファイル
概要
指定したファイルから、キーワードが書かれている行のみを抽出して表示
引数
・キーワード:検索するキーワードを指定。fgrepコマンドではキーワードの指定に正規表現を使用できない
・ファイル:検索対象となるファイルを指定
使用例
fgrep ‘bash$’ /etc/passwd
→キーワード指定で特殊文字が使われているが文字列として解釈する
sedコマンド
書式
sed【オプション】’s/検索文字列/置換後の文字列/’ ファイル(置換)
sed【オプション】’/削除する文字列/d’ ファイル(削除)
概要
文字列の編集(置換、削除など)を実行
主なオプション
-e
→編集コマンドを指定(編集コマンドが1つの場合は省略可)
-f
→編集コマンドを記述したファイルを指定
-i
→ファイルの内容を直接編集
引数
・検索文字列:置換の際に検索する文字列を指定
・置換後の文字列:検索した文字列と置き換える文字列を指定
・削除する文字列:削除する文字列を指定
→*上記の文字列に対して、行数を指定した範囲指定も可能
・ファイル:操作対象となるファイルを指定
使用例
sed s/pingt/hoge/ test.txt
sed -e s/pingt/hoge/ test.txt
→「test.txt」ファイルの各行の最初に現れる「pingt」という文字列のみを「hoge」に置換する
sed ‘s/file/FILE/g’ testwc.txt
→gオプションを指定することで、指定したすべての文字列を置換(既定では1行に1カ所だけ置換)
sed ‘/^$/d’ testwc.txt
→dコマンドを利用して、正規表現で空白行を条件として削除
sed 1,3d test.txt
→「test.txt」ファイルの1行目から3行目を削除して表示する
sed y/ab/AB/ test.txt
sed -e s/a/A/g -e s/b/B/g test.txt
→「test.txt」ファイル内のすべての「a」を「A」に、また「b」を「B」に置換したい
sed -f editfile test.txt
→「test.txt」ファイルの内容を編集して表示する際、編集コマンドを記述したスクリプトファイル「editfile」を使用する
1.03.5 エディタを使った基本的なファイル編集の実行(重要度2)
viコマンド
書式
vi【オプション】ファイル
概要
viによるテキストファイルの編集
主なオプション
-R
→指定したファイルを読み取り専用で開く
引数
・ファイル:操作対象となるファイルを指定
使用例
vi vitest1.txt
→viを起動して指定したファイルを編集できる。最初はコマンドモードで起動し、文字の入力を行いたい場合はviコマンドで入力モードに切り替える(入力モードからコマンドモードへ変更するキーはEsc)
入力モードの切り替えに利用できるviコマンド
i→カーソルの左から入力開始
a→カーソルの右から入力開始
I→カーソルのある行の先頭から入力開始( i の大文字)
A→カーソルのある行の末尾から入力開始
o→カーソルのある行の下に空白行を挿入し、その行から入力開始
O→カーソルのある行の上に空白行を挿入し、その行から入力開始
ファイルの保存やviの終了に利用できるviコマンド
:q→viを終了(内容が変更されている場合は終了できない)
:q!→viを強制終了(内容が変更されている場合でも保存せず終了)
:w→編集内容を保存
:wq→編集内容を保存しviを終了
:x→編集内容を保存しviを終了
ZZ→編集内容を保存しviを終了
:wq!→編集内容を保存しviを強制終了(強制保存に失敗したらviは終了しない)
:e ファイル名→viを終了せずに、現在開いているファイルを閉じて別ファイルを開く(内容が変更されている場合は、警告が出て別ファイルを開けない)
:e!→現在開いているファイルを最後に保存した状態に戻す
:e! ファイル名→viを終了せずに、現在開いているファイルを閉じて別ファイルを開く(内容が変更されている場合は、現在開いているファイルを最後に保存した状態に戻してから別ファイルを開く)
カーソルおよび画面操作に関するviコマンド
h→1文字左へ移動
j→1文字下へ移動
k→1文字上へ移動
l→1文字右へ移動
0→行頭へ移動(ゼロ)
^→行の先頭の文字へ移動
$→行末へ移動
H→画面の最上行へ移動
L→画面の最下行へ移動
gg→ファイルの先頭へ移動
nG→指定した行へ移動(nは行数)
G→ファイルの最終行へ移動
:1→ファイルの先頭へ移動
:n→指定した行へ移動(nは行数)
:$→ファイルの最終行へ移動
Ctrl+f→次の画面へ移動
Ctrl+b→前の画面へ移動
文字列編集操作に利用できるviコマンド
yy /Y→カーソル位置の行をバッファにコピー
yw→カーソル位置の単語をバッファにコピー
dd→カーソル位置の行を削除し、バッファにコピー
dw→カーソル位置の単語を削除し、バッファにコピー
x→カーソル位置の文字を削除し、バッファにコピー
X→カーソル位置の左の文字を削除し、バッファにコピー
p→バッファの内容を挿入(文字や単語はカーソルの右、行はカーソルの下に挿入)
P→バッファの内容を挿入(文字や単語はカーソルの左、行はカーソルの上に挿入)
u→元に戻す(直前の操作をとりやめる)
c→置換(削除して入力モードに移行)
文字列検索に利用できるviコマンド
/文字列→下方向に指定した文字列を検索
?文字列→上方向に指定した文字列を検索
n→下方向に続けて検索
N→上方向に続けて検索
viの設定に関するviコマンド
:set nu
:set number
→行番号を表示
:set nonu
:set nonumber
→行番号を表示しない
:set ts=タブ幅
:set tabstop=タブ幅
→タブ幅を数値で指定
その他のviコマンド
:!ls
→viエディタで編集中に、viエディタを終了することなくカレントディレクトリにあるファイルを確認
:r test.txt
→viエディタで編集中に、別ファイルである「test.txt」の内容をカレント行の次の行に読み込む
:%s/ping-t/hoge/g
→viエディタで編集しているファイルにある「ping-t」という文字列を、すべて「hoge」に置換
デフォルトで起動するエディタを設定する環境変数
EDITOR
Vimの特徴
viから派生した高機能なテキストエディタ
emacsコマンド
書式
emacs【ファイル】
概要
emacsによるテキストファイルの編集
主な操作
Ctrl + x の後で Ctrl + s →ファイルを保存
Ctrl + x の後で Ctrl + c →emacsを終了
引数
・ファイル:操作対象となるファイルを指定
Emacsの特徴
開発環境として便利な機能を備え、ユーザー独自の拡張機能をカスタマイズできる高機能エディタ
nanoコマンド
書式
nano【ファイル】
概要
nanoによるテキストファイルの編集
主な操作
Ctrl + o →ファイルを保存
Ctrl + x →nanoを終了
引数
・ファイル:操作対象となるファイルを指定
nanoの特徴
操作キーとそれに対応する機能が画面下部に表示されており、初心者でも使いやすい軽量のテキストエディタ
expandコマンド
書式
expand【オプション】ファイル
概要
タブをスペースに変換
主なオプション
-i
→行頭のタブのみ変換する
-t スペース数
→1つのタブで置き換えるスペースの数を指定(デフォルトは8)
引数
・ファイル:操作対象となるファイルを指定
使用例
expand -t 1 tabfile.txt
→「tabfile.txt」ファイルのタブをスペース1つ分に置き換えて表示
expand -i -t 1 tabfile.txt
→「tabfile.txt」ファイルの行頭のタブをスペース1つ分に置き換えて表示
unexpandコマンド
書式
unexpand【オプション】ファイル
概要
行頭にある、2つ以上連続したスペースもしくはタブをタブに変換
主なオプション
-a
→行頭以外の連続スペースもすべて変換
-t スペース数
→タブに変換するスペースの数を指定(デフォルトは8。このオプションを指定すると「-a」オプションも指定されたことになる)
引数
・ファイル:操作対象となるファイルを指定
使用例
unexpand -t 1 spacefile.txt
unexpand -a -t 1 spacefile.txt
→「spacefile.txt」ファイルにあるスペース1つ分(行頭以外にあるスペースも含む)をタブに置き換えて表示