コマンドライン操作とヒストリ操作 | のんびりした人の日記

のんびりした人の日記

仕事の愚痴とアニメ関連のことを書いていきます。


今回やったところは内容が結構細々としていたので箇条書きにしてみました。なので、ホームページの文字列検索などを駆使して項目とかを見てください。


<コマンドライン操作>

X端末上で長い命令文を書く時、そのまま書いても大丈夫だけれども見えづらいときがありますよね。そんなときには文の途中にバックスラッシュを入れることで、命令文を改行しても継続して入力することができます。

・入力途中に「こんな命令あったっけ」とか「このファイルってあったかなぁ」と感じた時にはTabキーを押すことによって、探しているものが見つかることがあります。これは入力補完機能といいます。

’*’はアスタリスクですが、X端末などでの入力の際には別の意味として用いられることがありますよね。たとえばファイルやディレクトリを探すとき使うfindという命令で、「ファイルなんだけど、ファイル名のはじめがteでそのあとがわからないとき」にはte*とすることで「teなんとか」というファイルおよびディレクトリを探すことができます。このように、本来の意味とは違う意味(機能)として用いる文字のことを「メタキャラクタ」というらしいです。「メタ」というのはmetaで「変換や変化を表す接頭辞」。



よくメタなんたらというのを聞いたりしますがよくわからなかったんですよね。これでまた自分の中での謎がまた1つ解けた感じですね。あと、メタモンのメタもこれなんでしょうかね?w

・また、上記のメタキャラクタに関して「メタキャラクタを通常の意味として使いたい」というときにはいくつかの方法があります。

①メタキャラクタを含む文字列などを「’’(シングルクォーテーション)」でくくってしまう

②メタキャラクタを含む文字列などを「” “(ダブルクォーテーション)」でくくってしまう

③メタキャラクタの直前にバックスラッシュを入れる

①と②はクォーティングと呼ばれる方法らしいのですが、そのまんまですよねw○○クォーテーションでどちらもくくっているんですから。そして①と②の違いは、①ではメタキャラクタは通常の文字として扱われますが、②ではメタキャラクタの部分以外は通常の文字として扱われますが、メタキャラクタ部分はメタキャラクタとして扱われます。たとえば「$パス名」とすると、シングルクォーテーションでくくるとそのまま出力されますが、ダブルクォーテーションでくくるとそのルートディレクトリからのパスが出力されます。つまり絶対パスが出力されるというわけです。


(){}を使うことで複数のコマンドをグループ化することができます。それぞれの括弧の中に複数のコマンドを入れるのですが、その際のコマンド同士のしきりとして「;」をいれます。「;」はコマンドセパレータの役割をここでは果たします。そしてリダイレクトでコマンドファイルを作成し、それをcatなどで内容をみることができます。このとき、()でグループ化したほうはそのコマンドを実行すると、サブシェルが起動されそちらのほうで処理が行われるため、現在のシェルには何の影響もありません。先ほどからディレクトリを移動して現在地のディレクトリを表示するというグループ化したコマンドを実行しても、出力結果には移動したという結果が出ているのにプロンプトには変化がないのでおかしいなと思っていたのですが、そういうことですか。なるほど。

そして、{}でグループ化して(リダイレクトしないで)実行すると、現在の環境というかシェルというかにその実行結果が反映されるので、プロンプトのカレントディレクトリも移動したということがちゃんと表示されました。リダイレクトしてコマンドファイルを作成し、それをcatで表示したときには()のときと同じ結果でした。なので、まぁ現在のシェルでやりたいときには{}でコマンドを囲んでやれってことかな。けど、現在のシェルで実行するなら、普通にコマンドしたほうがいいよなぁ・・・・・・w


・コマンドを実行したときにはそのコマンドの出力結果だけが出てきますが、その出力結果をコマンド文字列の一部として使いたいときには「``(バッククォーツ)」でコマンドを囲むか「$()」のカッコ内にコマンドを入力することによってそれが可能になります。特に、何かのコマンドの出力をメモとしてテキストファイルなどに残しておきたいときなどには使えるのではないでしょうか。「echo date:`date` > datefile」でやってみたところ、ちゃんとdatefileの中に出力結果が記録されていました。なので、リダイレクトを組み合わせてもいい感じだと思います。


コメント機能は#を使うことで実現できます#の直前が区切り文字あるいは空白(スペース)でなければコメント機能はつかえません。なぜなら#がその直前のコマンドの一部として含められてしまうからです。




<ヒストリ機能>

・ヒストリ機能というのは、ユーザーがX端末上でコマンドを入力しているとすると、ユーザーが「どのような順番でどのようなコマンドを入力したか」という履歴を残してくれる機能のことです。僕にとっては非常に便利だと思います。というのも、Linuxコマンドを勉強中であれば「このコマンドはどのような意味だったっけ」というようにコマンドの意味を復習できるからです。オプションは以下の通り

①なし:過去のコマンドを表示

②数値:新しい履歴から数値分だけを表示

-c:履歴のクリア

-d 数値:数値が示す番号の履歴を削除する

-w ファイル名:コマンド履歴をファイルに保存

-r ファイル名:コマンド履歴をファイルから設定

しかし、⑥についてはよくわかりませんでした。実行しても何も起こらないし・・・・・・・僕の理解力が不足しているだけでしょうけどw分かり次第この日記を編集して掲載したいと思います。



・「コマンド履歴のある番号のコマンドをまた使いたい」とおもったときには「!数値」とすることで履歴のその番号のコマンドを実行することができます。また「!」を使った動作はほかにもあり「!-数値」で数値分前のコマンドを実行し、「!!」とすると前回のコマンドを実行できます。「!」は「今からうつコマンドに与えられる履歴番号」という意味でしょうかね?そうするとなんとなくしっくりする気がします。

今回は結構疲れました。細々としたところをまとめるのって結構労力が必要ですね。まぁ、まとまってはいないんですけれどもw

次回はエイリアス操作とかについてやっていきたいですね。というか早くシェルスクリプトとかやりたいなぁ・・・・・

まぁ、地道に努力です。「新Linux/UNIX入門」を使って早くLinux初心者から脱出したいですね。それではまた。




参考及び引用「新Linux/UNIX入門 林晴比古著」