読者です 読者をやめる 読者になる 読者になる

個人的よく使うLinux系コマンド集

探してないですが、検索してもこういうの出ないなーって。
自分がよく使うものの中で、「初級編」、「中級編」、「上級編」に分けてます。世の中的には上級編は簡単すぎるかもしれません。

「初級編」では、覚えてないとCUI操作が厳しいものについて思い出しながら書きます。
「中級編」では、しってるとちょっとだけ楽に作業できるものについて思い出しながら書きます。
「上級編」では、あんまり使わないけどごくまれに知らないとできないこととかについて書きます。

この文章を読む際の前提知識としては、Linux系コマンドの書き方が読め、実行できることです。基準となる記事はあとで探すか書くかします。

初級編

cd

$ cd Documents
$ cd /usr/bin

カレントディレクトリを移動します。うしろに相対パス絶対パスで移動先を指定します。
指定しないとホームディレクトリへ移動します。あえて指定しない使い方もアリ、ということです。

ls

$ ls
$ ls -a
$ ls -al
$ ls -hF
$ ls -l *.cpp

ディレクトリ内のファイルとかを一覧表示します。引数で絞り込みができます。
オプションが便利なのいっぱいです。

-a
ドットから始まるファイルも表示します。
-l
権限や更新日時など、詳細情報も表示します。
-h
ファイルサイズとかの単位を、読みやすいものにします。
-F
ファイル・ディレクトリ名のうしろに、実行可能なら「*」、ディレクトリなら「/」など、記号を付けてみやすくします。
--color=auto
適度に色づけします。

cp

$ cp src dst
$ cp ~/Downloads/hoge.sh ./newhoge.sh

ファイルコピーです。srcをdstへコピーします。srcをファイル名、dstをフォルダ名にすると、同じ名前でdstで指定したディレクトリにコピーします。

-r
再帰的にディレクトリをコピーします。ディレクトリごとコピーしたいときにはたいてい使います。

mv

$ mv src dst

ファイル移動です。cpと似てます。

rm

$ rm hoge
$ rm -rf hoge

削除です。ごみ箱とかないですので、これで消したら元に戻せないと思ってください。

-r
再帰的に削除します。
-f
力づくで削除します。

ちなみに、一時的に消す目的なら、名前をmvで変えるのがいいです。

$ mv hoge.cpp hoge.cpp.old

cat

$ cat hoge.cpp
$ cat hoge.cpp | more
$ cat hoge.cpp | less

テキストを出力します。たいてい、画面に収まらないほど出力があるので、moreやlessとあわせて使います。

more

catの項で出したように、パイプライン処理でつかうことがほとんどです。出力を画面いっぱいになった時点で一時停止、リターンキーで進めます。戻ることはできません。

less

catの項で出したように、パイプライン処理でつかうことがほとんどです。出力を画面いっぱいになった時点で一時停止、上下カーソルキーはj/kで上下移動できます。hキーでlessの操作ヘルプが出たはずです。

中級編

pushd

$ pushd ~/.vim

基本的にcdと同じ動きします。ただし、移動前のディレクトリをすかっくに保存しておきます。これをpopdで取り出せます。

一時的なディレクトリ移動のときに使うと便利です。

popd

$ popd

pushdでスタックに入れたものをポップします。引数なしです。

grep

$ env | grep SHELL

たとえば上記のコマンドなら、env(環境変数一覧)の出力から、SHELLと入っている行だけ取り出して出力します。検索文字列には正規表現を指定できます。オプションで、大文字小文字の区別などいろいろ指定できます。

wc

$ wc test01.cpp
$ wc *.cpp

引数に指定したファイルの行数、単語数、文字数をカウントしてくれます。複数指定もできます。
標準入力からはできません。
コードの行数を数えるのに便利です。

du

$ du ~

ディスクの使用状況を表示します。ファイルサイズがいっぱい出てくるってことです。
オプションで単位をByte, kByte, MByteなど変更できます。あんまり使わないので覚えてないです。

上級編

find

$ find ~ -name "*.cpp"

引数で検索するディレクトリを指定。オプションで検索対象の条件を指定。

-name "*.cpp"
よく使うオプション。ファイル名がcppで終わるものを探す。

xargs

$ find . -name "*.cpp" | xargs wc

xargsは、後ろにつけたコマンドに、標準入力から受け取ったものを「引数として」渡します。
現在のディレクトリの全てのcppファイルの行数を出力するなどに用います。

現在のディレクトリのみならwcのワイルドカードで十分ですが、Javaなど、ディレクトリ階層が複雑な時にはfindで全て探し出して、そのファイル名をwcの引数へ渡す、といった使い方ができます。

man

$ man find

マニュアルを開きます。lessとだいたい同じ操作で読めます。引数には、詳細を知りたいコマンド名を書きます。

これはかなり基礎的なコマンドですが、マニュアルは大概が英語なので、実際はブラウザなどで調べたほうが速いというのがオチです。だから上級編にいます。
「こういう機能があったけど、オプションのつづりを忘れてしまった」など、そういう場合にはとても役立ちます。あ

Tips:思い出したら書き足すところ

思い出したら書きます。

間違っていたり追記すべきところがあったりする場合はコメントなどをいただけると嬉しいです。

結局 Windows で pLaTex を使うには何がいいの

WindowsTeXするにはいろいろ面倒なことがあります。

  • 全体の環境をどこに作るのか
  • プレビューをどうするのか
  • 統合環境をどうするのか

これら全てを解決する方法はただひとつです。

仮想Linux(UNIX)を作ってそこにTeXLiveを入れよう!

大丈夫です。怖くないです。

仮想環境を手に入れよう!

いくつかのダウンロードとインストールをするだけです。普通のソフトを入れるのとさほど変わらないです。


まずはVMWare Playerを入れます。インストール方法は検索しましょう。

そして適当なLinux(UNIX)のインストールイメージ(.iso ファイルとか)をダウンロードして保存しておきましょう。おすすめはUbuntuCentOSあたりです。

これを仮想環境に入れます。やり方はググった方がいいです。ざっくり書くと

  1. 仮想マシンを作成する
  2. 仮想マシンのドライブにダウンロードしたインストールイメージをマウントする
  3. 仮想マシンを起動して、適当に「次へ」とか押しながら進む

です。

じゃあTeXLiveを入れよう!

TeX wikiにだいたいインストール方法が書かれています。あとこの過去記事も参考になる可能性がちょっとあります。

最後に、統合環境を入れよう!

texmakerというのが個人的におすすめです。
インストールしたらコンパイルコマンドを弄っておきましょう。

統合環境いらず

Vimというエディタがあれば統合環境なんて要りません。私はTeX命令を全て手打ちするタイプなので、コンパイルだけ簡単になるplatex.vimというのを導入しています。設定をひとつ書き加えるだけでメインファイルの名前も縛りが消えます。
プラグインはneobundleで管理するといいでしょう。

だんだん雑になった。

CygwinのTeXlive 2013公式パッケージ版にpxdviを導入する

***ところどころ、手探りでよくわからない部分があります。間違っている箇所などありましたらコメントにてご指摘願います。***


TeX文章は、作成後もコンパイルして表示、そして修正して再度コンパイルし表示……と、一連の工程を繰り返していきます。他の人の作業を見たことあるわけではないですが、少なくとも私はそうです。


さて、前回の導入にあたって最後に1つ問題がありました。

  • 日本語入りdviが表示できない

大問題です(もしくは私の調査不足ですが、別環境で慣れ親しんだ方法が使えませんでした)。


代替案としてすぐにpdfにしてしまい、Adobe Readerで表示する方法をとっていましたが、いかんせん、ウィンドウを閉じないとpdfに上書きできません。これは面倒だ。
ということなので、pxdviを導入しました。

「日本語入りdviが表示できない」とは

dviはビューワで見られるはずです。TeXliveをインストールした直後にあるのはxdviだけでした。これは、日本語非対応(っぽい。少なくとも私は表示できませんでした)。

xdvi hoge.dvi
# 実行はできますが、英語だけ表示され、警告が出ます。


そこで、pxdviを入れようと思います。

pxdvi導入の小さな苦難

いろいろ検索した結果、以下のことがわかりました。

  • 無論Xが必要。Windows上に表示するならstartxwin.exeが使える(私はXを全部まとめてインストールしてしまったので、どれを入れればXが起動できるのかということについてはお答えできません)
  • tlmgrからインストールできるらしい
  • 2013ディレクトリ内のtexmfディレクトリをpxdvi実行時に参照するが、texmf-distに統合されたため、シンボリックリンクの作成が必要

このぐらいならたいしたことないです。私の環境でインストールした手順を以下に示します。

# ln -s
$ cd /usr/local/texlive/2013
$ ln -s texmf-dist texmf
# tlmgr upd
$ tlmgr update --self --all
# install
$ tlmgr --repository=http://www.tug.org/~preining/tlptexlive/ install pxdvi


これでインストールはできているはずです。

終わらない戦い

インストールが完了したはずなのに、実は起動できません。だいたい以下のようないきさつで原因を特定しました。

### 前提:Xは起動済で$DISPLAYも設定済
# とりあえず試しに起動してみる。
$ pxdvi
-bash: pxdvi is not found.
# 上のようなメッセージが出て要するに見つかりませんといわれます。
# バイナリがあるかどうかを確認します。
$ cd /usr/local/texlive/2013/bin/i386-cygwin
$ ls -al | grep xdvi
# 出力を確認すると、パーミッションがないようなので追加します。
$ chmod 755 pxdvi pxdvi-xaw.exe
# もう一度試しましょう。
$ pxdvi
-bash:pxdvi is not found.
# なぜ? pathから検索をかけます。
$ which pxdvi
# "not found"を意味するメッセージが返ってきます。
# では起動はできるxdviがどうなっているのでしょう。
$ which xdvi
/usr/local/bin
# こっちのフォルダのが読まれているようなので、そこに移動して確認します。
$ cd /usr/local/bin
$ ls -al | grep xdvi
# xdviがありました。シンボリックリンクのようなので、同様に作成してみます。
$ ln -s /usr/local/texlive/2013/bin/i386-cygwin/pxdvi pxdvi
$ ln -s /usr/local/texlive/2013/bin/i386-cygwin/pxdvi-xaw.exe pxdvi-xaw.exe
# これでいいでしょう。起動してみます。
$ pxdvi
# 起動できました!


というわけで、なぜかバイナリへのリンクが張られていませんでした。他にtlmgrでインストールしたソフトを起動したことがないので、これが標準なのかどうかわかりません。


ひとまず、起動したので一件落着。

CygwinにTeXlive 2013公式パッケージを導入する

last update: 2013/11/22


CygwinにはTeX環境として、TeXliveのCygwin版が提供されており、それで基本的にことが足ります。
しかし、私はUbuntuなどでもOSのパッケージシステムとは別にTeXliveを管理しています。


そこで、敢えて公式のパッケージを導入しようと思います。

ダウンロードとインストール

# ミラーサーバーを選んでダウンロードします。
# ミラーサーバー一覧はtexwikiのtexliveの項にあります。
$ wget http://ftp.riken.go.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz

# アーカイブを展開します。
$ tar xvf install-tl-unx.tar.gz

# 展開したディレクトリに移動します。
# 末尾の数字は違うかもしれません。
$ cd install-tl-20131118/

# インストールコマンドを実行します。
$ ./install-tl --repository http://ring.airnet.ne.jp/pub/text/CTAN/systems/texlive/tlnet/
##### インストール設定が表示されます。
======================> TeX Live installation procedure <=====================

======>   Letters/digits in <angle brackets> indicate   <=======
======>   menu items for commands or options            <=======

 Detected platform: Intel x86 with Cygwin

 <B> binary platforms: 1 out of 21

 <S> set installation scheme (scheme-full)

 <C> customizing installation collections
     44 collections out of 45, disk space required: 3423 MB

 <D> directories:
   TEXDIR (the main TeX directory):
     /usr/local/texlive/2013
   TEXMFLOCAL (directory for site-wide local files):
     /usr/local/texlive/texmf-local
   TEXMFSYSVAR (directory for variable and automatically generated data):
     /usr/local/texlive/2013/texmf-var
   TEXMFSYSCONFIG (directory for local config):
     /usr/local/texlive/2013/texmf-config
   TEXMFVAR (personal directory for variable and automatically generated data):
     ~/.texlive2013/texmf-var
   TEXMFCONFIG (personal directory for local config):
     ~/.texlive2013/texmf-config
   TEXMFHOME (directory for user-specific files):
     ~/texmf

 <O> options:
   [ ] use letter size instead of A4 by default
   [X] allow execution of restricted list of programs via \write18
   [X] create all format files
   [X] install macro/font doc tree
   [X] install macro/font source tree

 <V> set up for portable installation

Actions:
 <I> start installation to hard disk
 <H> help
 <Q> quit

Enter command: 
##### 規定値のままで十分だったので、「I」を入力してインストールを開始します。
##
## 出力中略
##
##### 最後に以下のように出力されていることを確認して一段落です。
 Welcome to TeX Live!
Logfile: /usr/local/texlive/2013/install-tl.log

##### 更新ツール「tlmgr」にパスを通します。
$ /usr/local/texlive/2013/bin/i386-cygwin/tlmgr path add

これでおしまい。

ポイント

  • LINUX系のインストール手順をまねるのが基本。
  • su系は一切いらない。
  • 全部初期設定でも大丈夫。

追加設定

texwikiを参考に、extractbbなどの設定を行います。

pmetapostの追加

pmetapostなどを追加します。

$ tlmgr update --self --all
$ tlmgr repository add http://www.tug.org/~preining/tlptexlive/ tlptexlive
$ tlmgr pinning add tlptexlive "*"
$ tlmgr install pmetapost
$ tlmgr update --all

extractbbの設定 (:2013/11/22)

extractbbを設定しないと、Windowsでも簡単に作れるpng画像が表示できません。
以下に示す手順は少々鈍くさいですので、スマートで等価な方法でやってもらってかまいません。

##### texmf.cnfを作成します。
# まずTEXMFLOCALを確認します。
$ kpsewhich -var-value TEXMFLOCAL
/usr/local/texlive/2013/../texmf-local
# そのディレクトリに移動します。
$ cd /usr/local/texlive/texmf-local
# web2cというディレクトリを作成します。
$ mkdir web2c
# texmf.cnfを新規作成します。
$ touch texmf.cnf


そして、以下のように記入します(texwikiからの引用です)。

shell_escape_commands = \
bibtex,bibtex8,bibtexu,pbibtex,upbibtex,biber,\
kpsewhich,\
makeindex,mendex,texindy,\
mpost,pmpost,upmpost,\
repstopdf,epspdf,extractbb


さて、一通り終わったら次のコマンドを実行します。

mktexlsr

何か設定を弄ったときには

設定を弄ったときには、(実際はファイルが作られたり削除された場合のみで十分なのですが)次のコマンドを実行します。

$ mktexlsr
# Make tex "ls -R" という意味です。
# ファイルのありかを示すファイルを再構成します。

Cygwinにインストールしたソフトウェアを、Win側のcmd.exeから適当に使う

タイトルの通りです。やることは少ない。そして適当。

一時利用

一時利用するだけなら、以下のコマンドで動きます。

# Cygwinのインストールされた場所のバイナリにパスを通す。
C:\> set PATH=c:\cygwin\bin;%PATH%
# 日本語メッセージを表示させる。
C:\> set LANG=ja_JP.UTF-8

常用にあたって

普通に使っていくなら、上記のコマンドに相当することをユーザー環境変数に書き加えればよいでしょう。

しかし、ここで思うことがあります。

  • いつもCygwinのコマンドを使いたいわけではない。
  • 基本的にWindowsのコマンドを優先させ、Cygwinのコマンドを使いたいときだけそっちを優先させたい。

私の個人的な望みですけどね。

これを解決する、また拡張性のある方法はこれ。

  • パスの通っている場所、もしくはユーザーディレクトリのある場所にパスを通し、そこにバッチファイルを置く。
  • Cygwinにあるコマンドが必要なときにはこれを起動する。

作るファイルでは、先ほどのコマンドを指定すれば大丈夫です。

問題点

わかりきっている問題点や改善した方がうれしい点は以下の通りです。

  • cygwinのbinディレクトリにあるもので、拡張子「.exe」がついていないものは起動できない。
  • シェルではないので、aliasが使えない。
  • あくまでWindows環境なので、良くも悪くも環境変数がWindowsのもの。

ということなので「perldoc」とかは使えません。「gcc」や「git」、「ls」、「vim」とかは使えます。