20191128のLinuxに関する記事は8件です。

パスってなに? 絶対パスと相対パスの違いは?

パスってなに?

パスとはファイルやフォルダの場所のことです。

絶対パスと相対パスの違いは?

絶対パスとは

URLでページを指定して、ファイルまたはディレクトリがどこにあるのかを確実に伝えます。

相対パスとは

今いる場所(階層)を基準にして、ファイルまたはディレクトリがどこにあるのかを伝えます。

参考

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

日本語vimを自前ビルド

はじめに

vimのリポジトリ https://github.com/vim をそのままビルドしたら日本語化されなかったので、メモ。

知識

  • 正常に日本語化されているvimがある環境では share/vim/vim81/lang ディレクトリ内に ja/LC_MESSAGES/vim.mo ファイルがあるが、そうでない環境には存在しない。
  • このファイルを生成するには vim のビルド時に gettext パッケージに含まれる msgfmt コマンドが必要のようだ。
  • msgfmt コマンドがなくても、vimのビルドは問題なく通ってしまう。

手順

sudo aptitude install gettext
git clone git@github.com:vim/vim.git
cd vim
./configure --prefix=$HOME
make
make install

ついでに

日本語マニュアルも導入しておく。

cd ~/.vim
mkdir -p pack/vimdoc-ja/start
cd pack/vimdoc-ja/start
git clone git@github.com:vim-jp/vimdoc-ja.git
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Node.jsでMySQLに接続するのをDockerでやってみた

この記事は富士通クラウドテクノロジーズ Advent Calendar 2019 5日目の記事です。
4日目は @tmtms さんの MySQL Parameters を拡張した でした。

はじめに

  • ※本記事は、 Node.js超入門[第2版] のサンプルコードをDocker上で動かす趣旨のものです。 よって、書籍で言及されている階層は触れません。

はじめまして。Node.jsを勉強中の新卒エンジニアです。
配属したてホヤホヤです。
今回は Node.js超入門[第2版] を使って勉強したときの話をします。

この書籍の内容をDockerで実現しようとした経緯ですが、そのまま「Dockerを理解したかったから」です。
弊社の研修でもDockerについて触れていただいたのですが、一度教わっただけでは理解が難しいものでした。
というわけで、サンプルコードを写経するだけになりがちだった(主観です)プログラミングの本で、ついでに理解を深めようという魂胆です。

今回は、書籍の Chapter5「値とデータをマスターしよう!」の、Section5-3~5-4 で書かれている、Node.jsでDBにアクセスして情報を取得し、ブラウザに表示するプログラムを紹介します。書籍が手元にある方はぜひ確認してみてください。

環境構築

必要な環境

参考記事:

解説

  • 今回は、Node.jsもMySQLも、Dockerコンテナとして生成しています。
  • Node.jsサーバーは、 docker-compose.yml から Dockerfile を呼び出す形で書き、MySQLサーバーは docker-compose.yml 内で定義しています。
  • docker-compose.yml で指定するMySQLのDockerイメージは、MySQLのバージョンが8よりも前になるように古いものを使っています。 8以降はそのままだとNode.jsとの連携ができないようです。
  • init-mysql.sh は、ローカル環境から、データベース用のコンテナにアクセスし、テーブル作成->データ挿入までを行っています。
  • 実は、docker/db/my.cnfdocker-compose.yml の2か所で mysqld を設定しているのですが、どちらかを消すとなぜかエラーになってしまうため(!)そのままにしてあります。いい方法ががありましたら教えていただけると幸いです・・・。
  • 余談ですが、今回のコードは、いままで述べてきたものとは別のDockerfileでExpress-generatorを実行し、 docker cp でローカルにファイルをコピーしてから作成していきました。 めんどうくさいことをしたなと自分で思います。

動作確認

  • 上記のリポジトリをcloneします。
  • リポジトリに移動
  • docker-compose up -d でコンテナを立ち上げます。
  • すこし(10秒ほど)時間をおきます。(コンテナが出来上がるまで待つ)
  • ローカルで ./init-mysql.sh を実行します。
  • localhost/hello にアクセスし、 docker/db/sql/002-insert-records.sql で入れたデータが表示されていることを確認してください。
  • ↓ こんなふうに表示されます。

image.png

おわりに

まず、Node.jsについての書籍を読み、サンプルを実行してみることで、Node.jsの挙動についてざっくりと理解できるようになりました。
加えて、それらをDocker上の環境で行うことで、
いままで「VirtualBoxより軽い仮想化するアプリケーション?」という認識だったDockerについての理解も深まりました。
Linuxのコンソールの扱いも以前よりわかるようになってきました。
やっと .profile.vimrc をカスタマイズできるようになり、快適なUbuntu生活をしております。

また、試行錯誤して、調べたり人に聞いたりしていくことが学びへの近道だと実感しました。
例えば、MySQLのバージョンに関しては自分では調べきれず、先輩方の知恵をお借りしました。
ありがとうございました。

まだまだエンジニアとしては若輩者ですが、これからもっと勉強してスキルをつけ、開発をたくさんしていけたらと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【ど忘れシリーズ】llコマンドがcommand not foundになったときの対処法

はじめに

[hoge@hoge ~/Documents/hogehoge]$ ll
bash: ll: command not found

新米エンジニア「ファッ!?先輩!!llコマンドが使えません!」
先輩エンジニア「フォッフォッフォ!落ち着くがよい。」

とても便利なllコマンド。
しかし、稀にコマンドを入力しても「そんなコマンドねーよ」と怒られる場合があります。
(私も初めてのころはすごく焦っていました笑)

llコマンドって?

ズバッといえば、「ls -l」コマンドのショートカットです。
エイリアス【alias】というのは別名という意味をします。
※余談ですがWindowsではショートカット、Macintoshとかはエイリアスとか言いますね。
実際にllコマンドは「ls -l」コマンドと同等のものが実行されています。

llコマンド

[hoge@hoge ~/Documents/hogehoge] $ ll
total 0
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_1.txt
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_2.txt
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_3.txt

「ls -l」コマンド

[hoge@hoge ~/Documents/hogehoge] $ ll
total 0
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_1.txt
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_2.txt
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_3.txt

どうしたらいいの?

要は、エイリアスが登録されていない=ショートカットできないことが原因なので、
ショートカットが使える⇒エイリアスを登録すればよいのです。
方法としては、.bashrcというファイルに登録すればOKです。

1..bashrcファイルを開きます

[hoge@hoge ~]
$ vi ~/.bashrc

2.下記を追記します

alias ll="ls -l"

これで?

[hoge@hoge ~/Documents/hogehoge]$ ll
total 0
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_1.txt
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_2.txt
-rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_3.txt

これでllコマンドで実行できるようになりましたね。

新米エンジニア「先輩!!これで今夜はぐっすり眠れそうです!」
先輩エンジニア「よかったね!おやすみ!」

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

文字化けしたファイルを削除する

はじめに

ファイル名が文字化けして削除も操作もできなくなったファイルの消し方をまとめなおした

手順

1.ファイルのinode番号を調べる

inode番号を調べる
ls -li
合計 xxx
1234567890    test?_.txt
-----------------------------
inode number  file name

2.inode番号でファイルを検索し、削除

inode番号で検索し、削除
find . -inum 1234567890 -exec rm -rf {} \;

補足

-execオプションを使うと、findで検索されたファイルに対して他の処理を行わせることができる。
-exec {} \; はfindで検索されたファイルを個別に、ファイルの数だけ処理を行う。
-exec {} + はfindで検索されたファイルをまとめて 1つの処理を行う。

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux の root パスワードをリセット(設定)する方法

たまたま、VirtualBox のイメージを入手したところ、そのイメージには、root パスワードが設定されておらず、ユーザ名とパスワードは分かったものの、sudo コマンドを発行しても sudoers に記述がないため、管理者の動作ができませんでした。
そこで、root パスワードを設定しなければなりません。

  • マシンを起動し、grub メニューで "e" を押下
  • linux16 の行に移動
  • ro を rw init=/sysroot/bin/sh に修正
  • Ctrl+x を押下
  • :/# chroot /sysroot
  • :/# passwd root
  • :/# touch /.autorelabel
  • :/# exit
  • :/# reboot

再起動後、ログインして、su コマンドを発行、さきほど設定したパスワードで root になれましたー。

参考:How To Reset Root Password On CentOS 7

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

splitコマンド

Coreutils Advent Calendar 8日目です

 今回は split コマンドです。

split コマンドとは

 ファイルを分割するコマンドです。デフォルトで実行すると1000行ごとに分割します。

$ split hogefile
$ ls
hogefile xaa  xab  xac  xad  xae  xaf  xag  xah  xai

 xaa xab ... となっているのは、あとでcatすると元に戻るからです。100行ごとに分割してほしいとか、xxというファイル名はいやだというときはこんな感じです。

$ split -l 100 hogefile AA
$ ls
hogefile AAaa  AAab  AAac  AAad  AAae  AAaf

任意のバイト数で分割する場合

 行数じゃなくても、任意のバイト数で分割するなら -b オプションです。

[練習問題] -n オプション

 練習問題です。-n オプションを使ったときの例です。何をやっているのか気になるときは各自manを引いてみてください。

$ seq 100 > k; split -nl/7/33 k
20
21
22

任意の文字で分割する

 同じくCoreutils の csplit コマンドでも可能ですが、Coreutils 8.24から指定した文字でファイルを分離することができるようになりました(-tオプション)。ASCIIのNULL文字でファイルを分割したいというときは split -t '\0' としてください。

次回

 wc コマンド。お楽しみに!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxでsshサーバをたてよう

今回の目的

Linux(Ubuntu18.04.3)でLAN内でsshサーバーを立ててMacからログインしよう

sshサーバーをたてましょう

まずは下のコマンドでパッケージをインストールしてからサービスを起動させましょう

# sudo apt-get install openssh-server
# systemctrl start ssh

ちなみに、サービスを止めたり、ステータスを確認するには下のコマンドで可能です

# systemctrl stop ssh
# systemctrl status ssh

systemctrlでサービスの設定を変更することが可能です

別のデバイスからsshでログインしましょう

今回は、Macのターミナルを使ってログインします

# ssh -l xxx IPアドレス

上のコマンドを実行すればLAN内のデバイスからならssh接続可能です。
xxxはリモートホストのログイン名になります。-lオプションはログイン名を指定するために必要です。
あとは、パスワードを入力して完了です。

Next

ローカルのsshは家にサーバーがある人用ですね。
外部からのssh接続も挑戦してみます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む