O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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
...
Próximos SlideShares
Carregando em…5
×

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

1.846 visualizações

Publicada em

TechGIRLのスライドです

Publicada em: Engenharia
  • Seja o primeiro a comentar

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

×