基本的なBashの使い方

はじめに

ここでは基本的なbashコマンドとbash関連の設定等を解説します。

大抵の場合 コマンド名 linux で検索すると出てきます。 ここに書いていないコマンドがあった場合は調べながら試してみるとよいでしょう。 Linuxコマンドに関しては調べながら試してみるのが一番だと思います。

基本的なコマンド

ls

ファイルやディレクトリの内容を表示する。

# カレントディレクトリの内容を表示する
ls
# 指定したディレクトリの内容を表示する
ls dir_name
# 対象のディレクトリのすべてのフォルダ、ファイル(隠しフォルダ等を含む)を表示する
ls -a
# 対象のディレクトリの内容をより詳細に表示する
ls -l
# オプションは同時に指定することもできる
ls -la

cd

カレントディレクトリを変更する。

# ディレクトリを移動
cd dir_name
# ホームディレクトリに移動
cd

mkdir

ディレクトリを作成する。

# ディレクトリを作成する
mkdir dir_name
# 指定したディレクトリをサブディレクトリまで作成する
mkdir -p parent_dir/dir_name

echo

メッセージを表示する。

# helloという文字列を表示する
echo hello
# $HOME環境変数を表示する
echo $HOME

rm

ファイル、ディレクトリを削除する。

# ファイルを削除する
rm file_name
# 複数ファイルを削除する
rm file1 file2
# ディレクトリを中身ごと削除する
rm -r dir_name
# 警告メッセージを表示しない
rm -f file_name

cp

ファイル・ディレクトリをコピーする。

# ファイルをコピーする
cp src_file_name dest_file_name
# ディレクトリを中身ごとコピーする
cp -r src_dir_name dest_dir_name

mv

ファイル・ディレクトリを移動・改名する

# ファイルを改名する
mv src_file_name dest_file_name
# dest_dir_nameが存在する場合はdest_dir_name以下に移動する
# 存在しない場合はディレクトリを改名する
mv src_dir_name dest_dir_name
# ファイルをディレクトリ内に移動する
mv src_file_name dest_dir_name
# 複数ファイルを移動する
mv file1 file2 dest_dir_name

ssh

リモートマシンに接続する。

# 現在のユーザー名で指定したIPアドレスのマシンに接続する
ssh xxx.xxx.xxx.xxx
# ユーザー名user_nameで指定したIPアドレスのマシンに接続する
ssh user_name@xxx.xxx.xxx.xxx

scp

リモートマシンとファイルをやり取りする。

# ローカルマシンのfile_nameファイルを指定したIPアドレスのマシンの
# user_nameユーザーの指定したディレクトリ以下にコピーする
scp file_name user_name@xxx.xxx.xxx.xxx:dir_name
# 指定したIPアドレスのマシンのuser_nameユーザーのマシンのfile_nameファイルを
# ローカルマシンのホームディレクトリに保存する
scp user_name@xxx.xxx.xxx.xxx:file_name ~/file_name
# ファイルを再帰的にコピーする
scp -r user_name@xxx.xxx.xxx.xxx:dir_name ~/dir_name

wget

ファイルをダウンロードする。

# URLにあるファイルをダウンロードする
wget URL

source

指定したファイルに書いてあるコマンドを実行する。

# ファイルに書いてあるコマンドを実行する
source file_name

export

環境変数やシェル変数を変更する。

# 環境変数ENV_VARにvalueを設定する
export ENV_VAR=value
# 環境変数ENV_VARにvalueを追加する
# 環境変数は:(コロン)で区切られている
export ENV_VAR=$ENV_VAR:value

cat

複数のファイルの内容を連結したり表示したりする。

# ファイルの内容を表示する
cat file_name
# ファイルの内容を連結する
cat file1 file2 > newfile

less

テキストファイルの内容を1画面ずつ表示する。 スペースキーで画面を進め、qキーで終了できる。

# ファイルの内容を表示する
less file_name

alias

コマンドの別名(エイリアス)を定義する。

# エイリアスを定義する
alias command=another_command
# スペースを含むエイリアスを定義する
alias command_opt="command -option"

リダイレクト

Linuxでは、リダイレクトを使ってコマンドの出力先や入力先をターミナルからファイルへ変更したりできます。

# カレントディレクトリのファイル一覧をファイルに書き出す(上書き)
ls > file_name
# カレントディレクトリのファイル一覧をファイルに書き出す(末尾に追加)
# 存在しない場合は新たに作られる
ls >> file_name
# コマンドの実行結果とエラー内容をファイルに書き出す
ls not_existing_dir >& file_name
# コマンドのエラー内容だけをファイルに書き出す
ls not_existing_dir 2> file_name
# ファイルの内容を表示する
cat < file_name

> はファイルを上書きするので使用する際は注意すること。

.bashrc

.bashrcはBashの設定スクリプトで、bashを起動した際に毎回内容が実行されます。 ターミナルの設定などはこのファイルに書くことが多いです。

Tips

set -o noclobber

以下のコマンドを実行すれば、 > を使ったリダイレクトでファイルが上書きされなくなります。

>| を使えば強制的に上書きできる。 また、 set +o noclobber で上書き禁止を解除できる。

set -o noclobber

cm, cs, cw

catkin関連のコマンドのエイリアスを以下のように定義すると便利です。

# catkin_wsに移動してビルドしてから元のディレクトリに戻る
alias cm="cd ~/catkin_ws && catkin build && cd -"
# catkin_ws/srcに移動する
alias cs="cd ~/catkin_ws/src"
# catkin_wsに移動する
alias cw="cd ~/catkin_ws/"

Git

Gitはバージョン管理ソフトウェアの一種で、インストール済みであれば git コマンドから利用することができます。

gitコマンドの使い方

GitHub上にあるリポジトリは git コマンドを使ってローカルにクローン(複製)することができます。

例えば、このチュートリアルのリポジトリであれば、

git clone https://github.com/uenota/dronedoc.git

GitHub上のROSパッケージを使う

ROSパッケージはワークスペース以下の src ディレクトリにクローンしてビルドすれば通常のROSパッケージと同様に使用することができます。

cd ~/catkin_ws/src
git clone https://github.com/uenota/dronedoc.git
cd ..
catkin_make