linux

Ubuntuでのディスク管理について調べたことのメモ

自作PCに入れているUbuntu 20.04.6 LTSのためにあれこれ調べたことのメモです。 接続されている物理デバイスに関する情報を得る 方法1: lsblkコマンド $ lsblk とすると、 sda 8:0 0 489.1G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi └─sda2 8:2 0 488.6G …

nkfの使い方のメモ

ファイルの文字コードと改行コードを調べる nkf --guessを使います。 $ nkf --guess a.cpp UTF-8 (CRLF) UTF-8 (BOM付)の場合は以下のように表示されます。 $ nkf --guess a.cpp UTF-8 (BOM) (CRLF) 文字コードや改行コードを変換する 例えば改行コードをCRL…

lessとlvの使い方の比較

これまで私はずっとlvというテキストビューワーを癖で使い続けてきました。 lvはShift_JISやeuc_jpのファイルも文字化けなしで閲覧できるメリットがありますが、 最近はそもそもutf-8以外のファイルを扱うことがほぼなくなってきて、このメリットが薄くなっ…

bashスクリプトでset -uしているときの unbound variable を回避する

bashスクリプトの定番テクニックで、set -uを冒頭に書いておくことで、未定義の変数をうっかり使った時点でスクリプトを終了させるようにする、というものがあります( 参考 )。しかし、PATHやPYTHONPATHにパスを追加するときに困ることがあります。例えば…

LinuxでGPUの情報を取得する

LinuxでGPUの情報を取得する方法を調べました。以下の表示例およびコマンド例は、すべてUbuntu 18.04 + GTX 1070という環境で試しました。OSによって差異があるかもしれません。 1. lspciを使う lspciは、PCIデバイスのリストを表示するコマンドです。以下の…

Ubuntu 18.04でsleepする方法

Ubuntu 18.04でsleepする方法は以下のとおりです。なお、正しくは"sleep"ではなく"suspend”というそうです。 Winキーを押す "sleep" または "suspend" とキーボードに打ち込む 途中で「サスペンド」というアイコンが出てくるので、選択する

wgetでsegmentation faultが出たときの対症療法

wgetで2.4GBほどある大きなファイルを取得しようとしたとき、以下のようにsegmentation fault (core dumped)が出ました。 $ wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run (略) HT…

Ubuntu 18.04の設定メモ

Ubuntu 18.04をクリーンインストールしようとしてはまる - minus9d's diary の続き。日本語 Remixを使わずにUbuntu 18.04をインストールした場合における設定メモです。 基本設定 Caps Lockキーを潰してCtrlキーとして使う GUIで行うために $ sudo apt insta…

Ubuntu 18.04をクリーンインストールしようとしてはまる

Ubuntu 18.04をSSDにクリーンインストールしようとして盛大にはまりました。以下はそのメモです。 現象 まず以下の手順でUbuntuのインストーラーUSBメモリを作成しました。 balenaEtcher - Homeの最新版 1.5.33 をWindows 10にインストール Ubuntu Desktop …

LinuxにてWindows 10のインストーラUSBを作成する

家のWindows 10が不調になりました。他にWindowsマシンを持っていなかったので、手持ちのLinux (Ubuntu 16.04 LTS) を使ってWindows 10のインストーラUSBを作成しました。この記事はその記録です。 ISOイメージの取得 Windows 10 のディスク イメージ (ISO …

Docker imageのpushに失敗したらログインし忘れが原因かも

Dockerの練習中です。作成したdocker imageをdocker pushコマンドでDocker hubにpushしようとしたのですが、以下のエラーで失敗しました。 denied: requested access to the resource is denied この場合、以下のことを確認する必要があります。 https://hub…

Linuxにおける2つのクリップボード - clipboard bufferとprimary selection

Linuxには「2種類のクリップボードのようなもの」があるということを今更明確に理解しました。 一つ目の「クリップボードのようなもの」は、Windowsなどでおなじみの"clipboard buffer"です。たとえばChromeにて、文字列を選択してCtrl + Cでコピー、Ctrl + …

シェルスクリプトでの'--'の意味は、オプションの打ち止め

シェルスクリプトでハイフンを2つ繋げた'--'の意味を最近はじめて知りました。これはオプションの打ち止めを意味します。 たとえばtouchコマンドで-hという空ファイルを作成しようとして $ touch -h とすると、-hがtouchコマンドのオプションとして解釈され…

Makefileの書き方に関する備忘録 その4

他にもMakefileに関する記事を書いていますが、この記事だけで読んでも問題ありません。目次→Makefileの書き方に関する備忘録 - minus9d's diary 少し複雑な構成を持つC++のコード群からバイナリをビルドするための良いMakefileの例を makefile - How to pla…

Ubuntuの「壊れた変更禁止パッケージがあります」エラーにaptitudeで対処する方法

Ubuntu 16.04にて、少し前からapt-getで新しいパッケージを入れようとすると「壊れた変更禁止パッケージがあります」エラーが出てインストールできない事象に悩まされていました。 $ sudo apt-get install libgfortran3 パッケージリストを読み込んでいます.…

apt-get updateで 「ターゲット ○○ は 複数回設定されています」というエラーに対応する

Ubuntu 16.04でsudo apt-get updateすると、以下のようなエラーが出ました。 W: ターゲット Packages (apps/binary-amd64/Packages) は /etc/apt/sources.list.d/getdeb.list:1 と /etc/apt/sources.list.d/getdeb.list:2 で複数回設定されています W: ター…

自作PCにUbuntu 16.10をインストール

Core i7 7700 + GTX 1070 なPCを自作 - minus9d's diary の続き。自作したPCにUbuntu 16.10をインストールしました。初物ハードウェアということでインストールがうまくいくか不安で、実際トラブルもありましたが、今のところ順調に動いています。 USBメディ…

Travis CI にて、C++11のソースをgccとclangの両方でビルドする

githubのレポジトリと簡単に連携できる継続的インテグレーションサービスであるTravis CIを使って、C++11で書かれたソースコードをテストできるようにしました。想像以上に大変だったのでメモしておきます。 ソースコードとテストコードの準備 Travis CIで提…

makeで大量のメッセージが表示されるときは-dオプションを疑う もしくは変数展開についてのbash/zshの違い

ある私的プロジェクトでMakefileの変数$(CXXFLAGS)を変更して実行するために、以下のようなスクリプト script.sh CXXFLAGS="-std=c++0x -stdlib=libc++" make CXXFLAGS=${CXXFLAGS} を書きました。このスクリプトの意図は、Makefileに記されたCXXFLAGSという…

CMakeをコマンドラインから使う方法の簡単なまとめ

CMakeという、多様なプラットフォームでソースコードをビルドするためのツールの使い方を勉強中です。この記事では、CMake向けに構築されたソースコードを、Linuxなどのコマンドラインからビルドする方法についてまとめます。 ビルドの基本 まず、buildを行…

linuxで連番を生成するにはseqコマンドが便利

linuxのシェルコマンドであるseqを使うと簡単に連番を生成できることを知りました。 まずは5から12までの連番を作ってみます。 $ seq 5 12 のように、最初の数字と最後の数字をそれぞれ指定すると、以下のように表示されます。 5 6 7 8 9 10 11 12 次に、5か…

最近のnkfは超便利

ファイルの文字コードを判別したり変換したりできるnkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JPの最新版(2.1.3)を試したところ、高機能さに感動。 特に良いなと思ったのが、--guessオプションでUTF-8のBOM付かどうかを簡単に…

Linuxのターミナルにて、C言語の出力に色を付ける

Linuxのターミナルにて、C言語の出力に色を付ける方法。c - Making some text in printf appear in green and red - Stack Overflowより。Windowsだとうまくいかないはず。 #define RESET "\033[0m" #define BLACK "\033[30m" /* Black */ #define RED "\033…

正規表現の分類

正規表現には多くのバリエーションがあり、かなりややこしい。おおまかに分類すると以下のようになる。 Basic Regular Expression(BRE) もっともしょぼい正規表現。 例: grepやsedのデフォルト Extended Regular Expression(ERE) BREを少し拡張したもの。 …

bash/zshで連番を生成

bashまたはzshで $ echo {1..10}.jpg とすると、 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg 10.jpg と連番ファイルが生成できる。0埋めしたい場合は $ echo {001..10}.jpg とすると、 001.jpg 002.jpg 003.jpg 004.jpg 005.jpg 006.jpg 007.jp…

現在のディレクトリ以下のファイルすべてに対してテキスト置換

zshの**を使った再帰検索と、sedを組み合わせると一行で書ける。 以下は、現ディレクトリ、またはその下にあるすべてのサブディレクトリに存在する、すべてのPythonファイルに対して、文字列beforeを文字列afterに書き換える例。 sed -i 's/before/after/g' …

#!/usr/bin/env と #!/bin/env のどちらを使うべきか

Linux系のスクリプトの一行目に書くシェバン (shebang)で、envを使うテクニックがある。 #!/usr/bin/env python3 # -*- coding: utf-8 -*- a = [1,2,3] … 自分の手元の環境(Cygwin)にてwhere envとすると、以下の2つが見つかる。 /bin/env /usr/bin/env sheb…

Makefileの書き方に関する備忘録 その3

この記事は続き記事です。目次→Makefileの書き方に関する備忘録 - minus9dの日記 変数に何を入れるか .cから.oへのコンパイルには以下の暗黙的なルールが使われる。 $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@.ccから.oへのコンパイルには以下の…

Makefileの書き方に関する備忘録 その2

この記事は続き記事です。目次→Makefileの書き方に関する備忘録 - minus9dの日記 変数 ユーザが編集したりコマンドラインでカスタマイズしたりしたくなるもしれない変数は大文字、makefile内で閉じて使われる変数は小文字で書くのが慣例。 CC := gcc sources…

Makefileの書き方に関する備忘録

※この記事は続き記事になっています 第1回:この記事 第2回:Makefileの書き方に関する備忘録 その2 - minus9d's diary 第3回:Makefileの書き方に関する備忘録 その3 - minus9d's diary 第4回:Makefileの書き方に関する備忘録 その4 - minus9d's diary mak…