ubuntuの小ネタ集
ファイルマネージャのアドレスバーが気持ち悪いので、見慣れたテキスト形式にしたい場合は以下のコマンドで。
gsettings set org.gnome.nautilus.preferences always-use-location-entry true
[!NOTE] 一時的にテキスト形式にした場合は「CTRL+L」
apt
でインストールされたパッケージ一覧は apt list --installed
で取得できるけど、
自分で入れたのか関連パッケージで入ったのかがイマイチよくわからないのと、
実際にどんなパッケージ名でインストールすれば良いのかが分かりにくいので。
zgrep -1 install `ls -tr /var/log/apt/history.log*`
lsのオプションで-tr
を指定しているのでタイムスタンプが古いファイルから検索される(つまりapt
実行の古い順)。
コマンドラインの一つ前の行に実行日時、一つ後ろの行に実行者が入っているので、これを目安に必要な情報をピックアップできる。
“install” をgrepで引っかけているので、たまに余計なのも引っかかるけど、ご愛敬ということで(笑)。
アンインストールしたのは別途調べないといけないけど…
removeとpurgeで引っかければいけるかな?
こんな感じ。
zgrep -1 -e remove -e purge `ls -tr /var/log/apt/history.log*`
[!NOTE] 現在インストール済みパッケージを知りたいだけなら以下でも大丈夫。
apt list --installed
手動でインストールしたものだけ取得したい場合は以下(つまり、関連パッケージとしてインストールされたものを除く)。
apt list --installed | grep -v 自動
コマンドを実行して○○が見つからないと言われて、どのパッケージをインストールすれば良いのか分からないときに。
最初にapt-file
をインストール
sudo apt install apt-file
実行前に以下でパッケージ情報を更新しておく。そんなに頻繁にやらなくても良い。
sudo apt-file update
で、以下で検索。
apt-file search ○○
逆にパッケージに含まれるファイル一覧を取得したい場合は以下。
apt-file show <パッケージ名>
sudo apt update
sudo apt install netdata
リモートマシンからブラウズできるように、/etc/netdata/netdata.conf
の
bind socket to IP
の設定値を0.0.0.0
に変更する。
設定を変更したので再起動。
sudo systemctl restart netdata
あとはブラウザで対象マシンのポート19999 にアクセスすればOK
http://192.168.XXX.XXX:19999
VirtualBox上のUbuntuでclipboardの共有の動作がおかしくなることがある。
その場合、以下で対応可能。
ps aux | grep 'VBoxClient --clipboard' | grep -v grep
プロセスが存在することを確認
プロセスのkill
pkill -f 'VBoxClient --clipboard'
/usr/bin/VBoxClient --clipboard
これで正常にclipboardの共有ができるようになるはず。
ubuntu 18.04 では IPv6を無効にする方法には、以下の手順で行う。
/etc/sysctl.d/99-sysctl.conf
に以下の内容を追加。net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
sudo sysctl -p
/etc/rc.local
に以下を追記(なければ新規作成)#!/bin/bash
/etc/init.d/procps restart
exit 0
sudo chmod 755 /etc/rc.local
これで起動の度にIPv6は無効になる。
参考: Ubuntu 18.04 で ipv6 を無効にする
lessのオプションで便利そうなもの一覧。
デフォルトのオプションを指定するには .bachrc
に以下のように追加しておけば良い。
export LESS="-iMR"
lsやgrepの出力をlessしたときも色付きで表示する方法
ls --color=always | less -R
grep --color=always if .bashrc | less -R
.bashrc
に 以下を設定しておくと便利かと思ったけど…
ただし、同時にlessのデフォルトオプションに-R
を指定しておかないと悲しいことになる。
でも、ファイルにリダイレクトしたときに悲しいことになるので、やめておいた方が無難…
export LS_OPT='--color=always'
export GREP_OPT='--color=always'
alias ls='ls ${LS_OPT}'
alias grep='grep ${GREP_OPT}'
sed -n "/START/,/END/p" «ファイル名»
ブロックコメントそのものは存在しないが、ヒアドキュメントを応用すれば出来る。
具体的には、コメント部分を<<キーワード
とキーワード
で囲む。
<< キーワード
~~コメント~~
キーワード
例えばこんな感じ。
<< __BLOCK_COMMENT__
~~コメント 1 行目~~
~~コメント 2 行目~~
・・・・・・
~~コメント n 行目~~
__BLOCK_COMMENT__
コマンドの一部を一時的に削除したい場合など、インラインコメントを使用したい場面がある。
例えば、C言語でfunc(~/* コメントアウト */,~)
とする場面のこと。
これをbashスクリプトで実現するには、コマンド置換を応用する。
コマンド置換とは、コマンドを`
と `
で囲んでその出力を別のコマンドのパラメータとする方法のこと。
具体的には、行コメントをコマンド置換で挿入する。
置換されたコマンドはコメントなので結果なにもせずに返ってくるので、その部分は無視される。
ただ、この書き方はとても汚いので、一時的使用にとどめておくのがベター。
command arg1 arg2 `#コメントアウト` arg3 ・・・
例えばこんな感じ。
ls `#-l` /etc
シェル変数の設定など、コマンドの前にコマンド置換があるとうまく動かない場合は、以下のようにコマンド置換の後ろに;
を挿入する。
`# comment`;var=hoge
たとえば、HOGE_PATH=/path/to/hoge
と入力したいとき、途中でファイル名の補完処理ができない。
今まで、一旦スペース挟んで入力して、戻ってスペース削除するという手順を踏んでいて、
これが地味にストレス…
~/.bashrc
に以下の1行を追加
IFS='«追加したい文字»'$IFS
シチュエーションのように=
を区切り文字として追加したい場合は、こんな感じ
IFS='='$IFS
設定内容を確認するには以下。
echo -n "$IFS" | od -c
デフォルトの設定に戻すには以下。
先頭に$
で、シングルクォート'
で囲むこと。
IFS=$' \t\n'
なんか悪影響出たら元に戻そう。。。
/usr/bin/env myUseSetting=OPENVINO bash
と入力myUseSetting=OPENVINO
が設定したい環境変数~/.bashrc
に環境変数に応じた処理を追加
if [[ ${«設定した環境変数»} = "«期待する文字列»" ]]; then
«環境変数に応じた処理»
fi
たとえば、こんな感じ。
if [[ ${myUseSetting} = "OPENVINO" ]]; then
source /opt/intel/openvino/bin/setupvars.sh
echo "========== bash for openINO =========="
fi
試してみる。
以下のコマンドを実行。
gnome-terminal --profile=«作成したプロファイル名»
たとえば、こんな感じ。
gnome-terminal --profile=openVINO
起動した端末(ターミナル)ウィンドウで追加した初期処理が実行されていることを確認。
通常起動の端末(ターミナル)ウィンドウで追加した初期処理が実行されていないことも確認した方がいいかも。
デスクトップで設定したキーの組み合わせを押して起動することを確認
以下の手順で新しい.desktop
ファイルを作成すればよい。
desktop
ファイルから新しいdesktop
ファイルを作成
sudo cp gnome-terminal.desktop «新しいdesktopファイル»
desktop
ファイルの設定を変更する
Name
に適当な名称(この名称で表示されるので、分かりやすい名前で)を入力Exec
に前に試したコマンドを入力。--- gnome-terminal.desktop 2018-05-30 22:03:45.000000000 +0900
+++ openvino.desktop 2020-06-17 12:26:37.403276823 +0900
@@ -1,9 +1,9 @@
[Desktop Entry]
-Name=Terminal
+Name=bash for openVINO
Comment=Use the command line
Keywords=shell;prompt;command;commandline;cmd;
TryExec=gnome-terminal
-Exec=gnome-terminal
+Exec=gnome-terminal --profile=openVINO
Icon=utilities-terminal
Type=Application
X-GNOME-DocPath=gnome-terminal/index.html
Name
で設定した名前を検索すればアイコンが出てくるのでクリックして起動ちなみに、作成したアイコンをデスクトップに置くことも可能(その他の物でもできるけど)
desktop
ファイルを~/デスクトップ
ディレクトリにコピーして実行属性を付ける
cp /usr/share/applications/openvino.desktop ~/デスクトップ/
chmod +x ~/デスクトップ/openvino.desktop
grep -r -n -v '^[[:cntrl:][:print:]]*$' .
設定変更の前後でdconf
コマンドで値一覧を取得し、その差分を確認することで変更キーが分かる。
dconf dump / > before.txt
# 設定変更
dconf dump / > after.txt
diff -u before.txt after.txt
キーが分かれば、以後は以下のコマンドで設定変更できる。
スクリプトなどに記載する場合に便利。
gsettings set «キー» «値»
以下のコマンドで確認できる。
lsb_release -a
こんな感じで表示される
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
最初の1行は特に気にしなくて良い。
LSB(Linux Standard Base)がインストールされていると、もっと細かい情報が表示されるらしい。