Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
bashbash のヒストリ展開を活用するのヒストリ展開を活用する
USP 友の会
今泉光之
@bsdhack
http://bsdhack.{org,com,net}
bashのヒストリ展開を活用する 2
はじめにはじめに
●
POSIX とは原理主義者ではありません
– 製品としてのソフトウェア作成では意識します
– 決して原理主義者ではありません
– 普段は古くから bash を愛用しています
● あまり...
bashのヒストリ展開を活用する 3
!!!!
● 直前に実行したコマンドの再実行
– 他のコマンドの引数としても指定可能
$ cat /etc/ssh/sshd_config
cat: /etc/ssh/sshd_config: Permis...
bashのヒストリ展開を活用する 4
!-!-nn
●
n 回前に実行したコマンドの再実行
– コンパイル→実行の繰り返しなどに便利
$ platex foo.tex
This is pTeX, Version 3.141592-p3.1.9 ...
bashのヒストリ展開を活用する 5
^^foofoo^^barbar
● 直前に実行したコマンドの foo を bar に変更して実行
– 最初に検出された foo を bar に変更する
$ pletex foo.tex
-bash: pl...
bashのヒストリ展開を活用する 6
!:[g]s/!:[g]s/foo/barfoo/bar
● 直前に実行したコマンドの foo を bar に変更して実行
– 区切り文字の "/" を任意の文字に変更可能
– g を指定した場合全ての f...
bashのヒストリ展開を活用する 7
単語指示子単語指示子
● !:n
– 直前に実行したコマンドの n 番目の引数
● !^
– 直前に実行したコマンドの 1 番目の引数
● !$
– 直前に実行したコマンドの最後の引数
● !*
– 直前に...
bashのヒストリ展開を活用する 8
単語指示子単語指示子
● !:n*
– 直前に実行したコマンドの n 番目から最後までの引数
● !:n-m
– 直前に実行したコマンドの n 番目から m 番目までの引数
● !:-m
– 直前に実行した...
bashのヒストリ展開を活用する 9
ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾
● :h
– パスのディレクトリ名部分を取得する
$ ls /usr/local/bin/vim
$ cd !$:h
cd /usr/local/b...
bashのヒストリ展開を活用する 10
ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾
● :t
– パスのファイル名部分を取得する
$ ls /usr/local/bin/vim
$ cp !$ !$:t
cp /usr/local...
bashのヒストリ展開を活用する 11
ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾
● :r
– パスのファイル名部分から拡張子を除外する
$ platex /usr/local/doc/foo.tex
This is pTeX,...
bashのヒストリ展開を活用する 12
ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾
● :e
– パスのファイル名部分から拡張子を取得をする
$ ls /usr/local/doc/foo.tex
$ cp !$ bar!$:e
...
Upcoming SlideShare
Loading in …5
×

Bashのヒストリ展開を活用する

1,867 views

Published on

TechGIRLのスライドです

Published in: Engineering
  • Be the first to comment

Bashのヒストリ展開を活用する

  1. 1. bashbash のヒストリ展開を活用するのヒストリ展開を活用する USP 友の会 今泉光之 @bsdhack http://bsdhack.{org,com,net}
  2. 2. bashのヒストリ展開を活用する 2 はじめにはじめに ● POSIX とは原理主義者ではありません – 製品としてのソフトウェア作成では意識します – 決して原理主義者ではありません – 普段は古くから bash を愛用しています ● あまり知られていないヒストリ展開の紹介
  3. 3. bashのヒストリ展開を活用する 3 !!!! ● 直前に実行したコマンドの再実行 – 他のコマンドの引数としても指定可能 $ cat /etc/ssh/sshd_config cat: /etc/ssh/sshd_config: Permission denied $ sudo !! sudo cat /etc/ssh/sshd_config [sudo] password for mitz cat /etc/ssh/sshd_config が sudo で実行される
  4. 4. bashのヒストリ展開を活用する 4 !-!-nn ● n 回前に実行したコマンドの再実行 – コンパイル→実行の繰り返しなどに便利 $ platex foo.tex This is pTeX, Version 3.141592-p3.1.9 (euc) (Web2C 7.5.4) : $ xdvi foo.dvi $ !-n platex foo.text : $!-n xdvi foo.dvi
  5. 5. bashのヒストリ展開を活用する 5 ^^foofoo^^barbar ● 直前に実行したコマンドの foo を bar に変更して実行 – 最初に検出された foo を bar に変更する $ pletex foo.tex -bash: pletex: command not found: $ ^e^a platex foo.tex This is pTeX, Version 3.141592-p3.1.9 (euc) (Web2C 7.5.4) :
  6. 6. bashのヒストリ展開を活用する 6 !:[g]s/!:[g]s/foo/barfoo/bar ● 直前に実行したコマンドの foo を bar に変更して実行 – 区切り文字の "/" を任意の文字に変更可能 – g を指定した場合全ての foo が bar に変更される $ dir /x dir: cannot access /x: No such file or directory $ !:s+/+- dir -x $ dir /x /a dir: cannot access /x: No such file or directory dir: cannot access /a: No such file or directory $ !:gs+/+- dir -x -a
  7. 7. bashのヒストリ展開を活用する 7 単語指示子単語指示子 ● !:n – 直前に実行したコマンドの n 番目の引数 ● !^ – 直前に実行したコマンドの 1 番目の引数 ● !$ – 直前に実行したコマンドの最後の引数 ● !* – 直前に実行したコマンドの全ての引数
  8. 8. bashのヒストリ展開を活用する 8 単語指示子単語指示子 ● !:n* – 直前に実行したコマンドの n 番目から最後までの引数 ● !:n-m – 直前に実行したコマンドの n 番目から m 番目までの引数 ● !:-m – 直前に実行したコマンドの 1 番目から m 番目までの引数 ● !:n- – 直前に実行したコマンドの n 番目から最後の 1 個前までの引数
  9. 9. bashのヒストリ展開を活用する 9 ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾 ● :h – パスのディレクトリ名部分を取得する $ ls /usr/local/bin/vim $ cd !$:h cd /usr/local/bin
  10. 10. bashのヒストリ展開を活用する 10 ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾 ● :t – パスのファイル名部分を取得する $ ls /usr/local/bin/vim $ cp !$ !$:t cp /usr/local/bin/vim vim
  11. 11. bashのヒストリ展開を活用する 11 ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾 ● :r – パスのファイル名部分から拡張子を除外する $ platex /usr/local/doc/foo.tex This is pTeX, Version 3.141592-p3.1.9 (euc) (Web2C 7.5.4) : $ xdvi !$:r.dvi xdvi /usr/local/doc/foo.dvi
  12. 12. bashのヒストリ展開を活用する 12 ヒストリ展開される単語の修飾ヒストリ展開される単語の修飾 ● :e – パスのファイル名部分から拡張子を取得をする $ ls /usr/local/doc/foo.tex $ cp !$ bar!$:e cp /usr/local/doc/foo.tex bar.tex

×