Linux コマンドまとめ 初心者用

初心者の私がよく使うコマンドを載せています。 すぐ忘れるのでちょくちょく備忘録として追記しています。  『$』はWindowsの『>』と同じコマンドプロンプトです。 『#』は最高管理者のルートユーザーでログインしていることを表すコマンドプロンプトです。(Windowsの時はどちらも両方『>』で区別なし)

ディレクトリの扱い

Windowsではフォルダといい、Linuxではディレクトリといいますが、WindowsでのフォルダとLinuxのディレクトリは同じ事を表しています。(呼び方が違うだけ) 

// 各コマンドで共通しますが、ディレクトリを何も指定しないと、現在いるカレントディレクトリ内を基準に実行します。
// ./(ピリオドとスラッシュ)も現在いるカレントディレクトリを示す。
// ../ これは一つ親のディレクトリを示す。
// ../../ これは2つ上の親のディレクトリを示す。
// ~ や ~/はホームディレクトリを示す。 

ディレクトリ、ファイル操作

ファイルとディレクトリの確認 ls — list

lsコマンドの詳細は、『Linux lsコマンドの使い方と出力表示の見方』もご参照ください。

$ ls           //現在いるディレクトリ内のフィアルや子ディレクトリの表示。 コンパクト表示。
$ ls -l        // 権限・所有者・サイズ・日時などの情報も表示。
$ ll           // ls -l の省略形
$ ls -la       // 隠しファイルや隠しディレイクトリも表示。 情報も表示。
$ ls -lad */   //ディレクトリのみ表示。 『*/』が必要です。
$ ls -l --time-style=+'%Y/%m/%d %H:%M:%S' // 古いファイルも秒まで表示
$ ls -l --time-style=+'%Y/%m/%d %H:%M'    // 分まで表示

ディレクトリ移動 cd — change directory

ディレクトリについての詳細は『Linux 初心者用 ディレクトリ、絶対パス、相対パス、隠しファイルなど』を参照ください。

$ pwd           // カレント(現在いる)ディレクトリを表示
$ cd ~          // ホームディレクトリに移動
$ cd ~/aaa      // ホームディレクトリにある『aaa』子ディレクトリに移動
$ cd /          // ルートディレクトリに移動
$ cd /usr/bin   // /usr/binに移動 <--絶対パス指定
$ cd ./bbb      // ひとつ下の『bbb』ディレクトリに移動 <ーーこれが基本形です。
$ cd bbb        // cd ./bbbの省略形。 しかし./の使い方は重要なので覚えたほうが良いです。
$ cd ./bbb/ccc  // 2つ下の『ccc』ディレクトリに移動
$ cd ..         // 一つ上のディレクトリに移動
$ cd ../aaa     // 一つ上がったディレクトリにある『aaa』子ディレクトリに移動
$ cd -          // 前のディレクトリに戻る

ディレクトリ作成 mkdir — make directory

一般ユーザーで作成の時は、『mkdir: cannot create directory ‘xxxxx’: Permission denied』と表示された時はsudoを付けて、sudo mkdirでディレクトリを作成。

  • オプション
    • -m 作成する、ディレクトリのPermissionも作成
    • -p 親ディレクトリがない時に親ディレクトリも作成
    • -v  作成経過表示 
$ mkdir bbb        //カレント(今いる)ディレクトリの下に『bbb』ディレクトリを作ります。
$ mkdir -p bbb/aaa // 『bbb』ディレクトリがなければ作り、更に『aaa』ディレクトリも作ります。
$ mkdir -m 644 bbb // 権限(Permission)を指定してディレクトリ作成します。

ファイル・ディレクトリ削除 rm — remove

これでディレクトリもフォルダも全て消えます。 しかし、権限で消せないファイルやディレクトリが残ると嫌な時は、sudoで実行します。 ディレクトリだけ削除の場合はmkdir。 mkdirでは子ディレクトリがある場合など中身があると削除出来ません。 rmは強力で簡単ですが、危険でもあります。

$ rm bbb      // bbbファイルを削除
$ rmdir bbb   // 空のbbbディレクトリ削除
$ rm -r bbb   // カレントディレクトリにあり、中身を持つbbbディレクトリやbbbファイルの削除
$ rm -r *      // カレントディレクトリの子ディレクトリも中に持つファイルも全て消去
$ sudo rm -r * // sudoで強力なので、必要なディレクトリやファイルを消さないように要注意
$ sudo rm -r !(2022.2) // 2022.2以外全て削除 extglobオプションonの時だけ。

権限(permission)変更 chmod — change mode

権限がないと読み出しや書き込みや実行ができません。 (権限に関しては『Linux permission(権限)まとめ 初心者用』をご覧ください。)  所有者でないファイルやディレクトリの権限変更の場合は、sudoを付けないと『Permission denied』で実行出来ないと思います。

$ sudo chmod 660 ichiri3.txt      // 所有者はrootなのでsudoで実行
$ chmod 751 ichiri.sh             // 所有者なのでsudo不要

$ ls -l ichiri*                   // 変更後確認
-rw-rw---- 1 root   root      0  3月  6 12:11 ichiri3.txt  // 660
-rwxrwx--x 1 ichiri ichiri  104  1月 13 09:40 ichiri.sh    // 751

所有者変更 chown — change owner

ファイルやディレクトリの所有者や所有者グループを変更します。 所有者のファイルやディレクトリであってもsudoが必要です。 下の例は、hogeユーザーとichiri2グループが予め存在していなければなりません。

$ sudo chown hoge     ichiri.txt        // <--- 所有者だけ変更
$ sudo chown :ichiri2 ichiri.txt        // <--- 所有グループだけ変更
$ sudo chown hoge:ichiri2 ichiri.txt    // <--- 所有者:所有グループ 同時変更変更
$ sudo chown -R ichiri:ichiri directory // <--- directoryディレクトリ以下のディレクトリとファイルの権限一括変更  

$ ls -l ichiri2
-rw-r----- 1 hoge ichiri2     52  2月  9 14:16 ichiri.txt   // 所有グループがichiri2になりました

$ whoami          // <---現在のユーザーichiriでは
ichiri
$ cat ichiri.txt // <---catでファイル内を見ることができなくなりました
cat: ichiri.txt: 許可がありません

$ echo "123" >> ichiri.txt  //<---echo 文字列 >> ファイル名で文字列追加もできなくなりました
bash: ichiri.txt: 許可がありません

root

普通に『su』で切り替えられなかった時のroot ユーザーに切り替え方法。

$ sudo su - root

★ ファイル、ディレクトリ検索 find めっちゃ使います

検索元ディレクトリの指定がない時は、カレントディレクトリ下で検索します。 ★私は、『-ls』オプションを付けて探すことが多いです。

sudoをつけて検索しないと余計なものまで表示される。

$ sudo find -name ファイル/ディレクトリ名     // ""は不要。 省略する際は、dropbear_*keyで中省略。 前、後ろ省略等できます。
$ sudo find -name ファイル/ディレクトリ名 -ls  // lsオプションを付けると、ls -lの用に詳細情報を表示してくれる。 結構役に立ちます。
$ sudo find -name ファイル/ディレクトリ名 -exec ls -l {} \;   // -lsオプションが使えない時 -execを使う。
$ sudo find <検索元> -name ファイル/ディレクトリ名 -type オプション

ファイル・ディレクトリ検索 find

$ sudo find -name ファイル/ディレクトリ名  //ファイルとディレクトリ検索
$ sudo find -name ファイル名 -type f      //ファイル検索
$ sudo find -name ディレクトリ名 -type d    //ディレクトリ検索
$ sudo find -name \*chiri.py -type f      //ワイルドカードの時は エスケープ処理が必要
$ sudo find ~/bbb -name ファイル名 -type f  //ホームディレクトリ下のbbbディレクトリ下でファイル検索

権限(permission)で検索

$ find ./work/ -perm 664
$ find -perm -u=x

時間指定して検索

mtimeはmodified time。 atimeはaccessed time。 ctimeは、chmod/chownでchanged time。 

$ find ./ -mmin -1200    //    1200分前〜現在で作成・変更されたファイルとディレイクトリ検索
$ find ./ -mmin +1200    //過去∞〜1200分前で検索
$ find ./ -mmin -1200 -mmin +200  //1200分前〜200分前で検索
$ find ./ -mtime -3      // 3日前〜現在で検索
$ find ./ -mtime -0.5    // 12時間前〜現在で検索
$ find . -type f -name "*.php" -newermt "2023-04-19" -and ! -newermt "2023-04-20" -ls

容量で検索

$ find ./ -size -10c -type f  // 10バイト以下のファイル検索
$ find ./ -empty              // 空のファイルやディレクトリ検索 

複数の条件

$ find ./work/ -name \*chir.py -and -perm 664   // -or も使える
$ find ./work/ -not -perm -u=x

ファイル内の文字列で検索

””内の文字列のあるファイルを探します。 これもめっちゃ使います。

$ sudo find -type f -print | xargs grep "xilinx_defconfig" 2>/dev/null

★フィルター grep (global regular expression print)

Linuxを使う為には避けて通れないコマンドですね。 grepの後に続く文字列がある行を抜き出します。  最初のコマンドで多くの結果が表示されて、探したい行を見つける時に使います。 grepを合わせてよく使うコマンドは、『ps』(プロセス表示)、『history』(過去に打ち込んだコマンド)、『dmesg』(Kernelメッセージ表示)

コマンドとgrepの間にある縦棒『|』はパイプと言って、コマンドの結果をgrepに受け渡す為の記号です。 パイプが無ければ、console(画面)に結果を受け渡します。 以下の例ではgrepにはパイプがないので、grepの結果がconsole(画面)に表示されます。

// 基本形
$ <other command> | grep <string>
$ <other command> | grep -e <string 1> -e <string 2> ... -e <string n>     // 複数の文字列のOR
$ <other command> | grep <string 1> | grep <string 2> ...| grep <string n>     // 複数の文字列のOR


$ ps aux | grep ssh    // sshが表示されている行を表示します
$ histroy | grep gcc   // gccを実行した行を表示します
$ dmesg | axi          // axiという文字列が含まれる行を表示します

ファイル編集  vi、nano、gedit

Linuxではファイル編集も結構あるので、最終的にはviを覚えると操作が断然速くなります。 しかしviはモード切替などあり直感的にとっつきにくく、偶にLinuxを使う程度なら覚えられない事もあるので、その場合はまずnanoで慣れて、頻繁にLinuxを使うようになったらviを覚えるといいと思います。 ここで説明するには、内容が多いので、以下のリンクご参照ください。

geditはファイル編集出来るGUIアプリです。 Windowsのノートパッドみたいな感じで簡単です。 『$ gedit ファイル名』で起動します。

$ gedit -V
gedit - Version 3.36.2

$ sudo apt install gedit     // ない場合はインストール。

echo

  • 標準出力に出力するコマンド。(標準出力=画面)
  • echo 文字列 で文字列を画面に表示する。
  • printfみたいなもの。
  • echo 文字列 > ファイル名でファイルの中身を文字列にできる。
  • echo 文字列 >> ファイ名でファイルの最後に文字列を追加できる。
$ echo Hello!
Hello!

$ echo Hello,      ichiri!
Hello,      ichiri!

a=100
$ echo $a
100

$ echo これは $a円です
これは 100円です

$ echo ichiri ichiri > test.txt

ファイルのアクセス権がない場合、echoにsudoを付けてもpermission deniedになるのは、echoのsudoは > 以前にしか影響を出せないので、以下の様にshコマンドにsudoを付けて実行すると” “内の全部分にsudoが適用される。

 $ sudo sh -c "echo BT_POWER_UP > /dev/wilc_bt" 

容量関連

ディスク容量確認 — disk free

各パーティション毎の使用と空き容量を表示。

$ df -hT

表示される『tmpfs』は一時ファイル。

  • h:分かりやすい単位で表示
  • T:ファイルのタイプ表示

ディレクトリ内の容量確認 du — disk usage

$ du -shc ~/*
$ sudo du -h -d 1 . | sort -h  //<---現在の階層から1階層のディレクトリのだけデソートして表示
  • s:合計容量のみ表示
  • h:分かりやすい単位で表示(human(人間)向け)
  • c:最後に合計容量を表示
  • -d:ディレクトリ階層

メモリ使用量確認 free

$ free -h
  • used:実際に使用しているメモリ容量
  • buff/cache:実際に使われていないがLinuxが確保している容量
  • free:空き容量。buff/cacheに確保されているので、少なく見える。

ブロックの容量確認 lsblk — list block

$ lsblk

プロセス確認

プロセス確認 pssudo

これも時々使います。

$ ps                   // 自分が使っているプロセスを表示
PID TTY          TIME CMD
3807 pts/3    00:00:00 bash
42428 pts/3    00:00:00 ps

$ ps | grep dropbear   // dropbear があるプロセスだけ表示
$ ps aux | grep -i apt // apt関連のプロセス。 apt updateで『E: Could not get lock /var/lib/apt/lists/lock』が出た時など。
root        1998  0.2  1.2 214912 101944 ?       SNl  07:59   0:02 /usr/bin/python3 /usr/sbin/aptd
ichiri     41930  0.0  0.0  18704  2888 pts/3    S+   08:20   0:00 grep --color=auto -i apt
  • PID:プロセスID
  • TTY:仮想端末ファイル
  • TIME:プロセスがCPUを使ったい時間 hh:mm:ss
  • CMD:プロセスの実行コマンド

オプション

  • a:自分以外のユーザープロセスも表示
  • x:デーモンプロセスを表示
  • u:ユーザー名と開始時刻を表示

STAT (Status)

1文字目

  • R:実行可能状態なプロセス(実際に実行していないCPU割り当て待ちのプロセスも含む)
  • S:割り込み可能な待ち状態。主に復帰時間が予想できるもの。sleepやユーザーの入力待ちなど
  • D:ディスクIO待ちの状態
  • Z:ゾンビプロセス状態(親プロセスに待たれずに死んでしまった子プロセス)

2文字目以降

  • +:フォアグラウンドのプロセスグループ
  • s:セッションリーダー。httpdのプロセスを見るとrootユーザーで実行されているプロセスがセッションリーダーとなっているのでが分かる
  • <:優先度が高いプロセス
  • N:優先度が低いプロセス
  • l:(Lの小文字)マルチスレッドのプロセス

プロセス親子関係表示 pstree

プロセス終了 kill

$ kill プロセス番号
$ kill -9 プロセス番号    // 上記のpsでプロセス番号を確認してそのプロセスを強制終了

Network確認

IP確認 ip, ifconfig, hostname, netstat

自分のIP等を確認します。

$ ip a           // これが一番よい。 WifiやLANやUSBでのIPアドレスも一覧表示される。
$ ifconfig       // これは通信状況含め一覧表示します。 インストールされていない場合は、sudo apt ipconfig (Debian/uBuntu系の場合)
$ hostname -I    // IPアドレスしか表示されないので、どのポートがどのIPアドレスかわからない。
$ netstat        // 自分のIPアドレスと接続相手のIPアドレスが表示される

IP設定

$ sudo ip link set enp4s0 up
$ sudo ip addr add enp4s0 192.168.27.1      // enp4s0は個々のPCにより異なるので、ip aで予め確認。
  • ifconfigは仮設定なので、リブートしたり、相手が切断したりしたら消えるので、.bashrcに書き込むか、起動後実施する必要があります。
$ sudo ifconfig enp4s0 192.168.27.1      // enp4s0は個々のPCにより異なるので、ifconfigで予め確認。

Mac address 確認

『ip address show

以下はuBuntuの場合で、『2: enp4s0』は有線LANで、そのMacアドレスは『54:42:40:70:2f:64』となります。 更に、『3: wlp2s0』のMacアドレスは『00:27:1a:1f:3e:f8』となります。

$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 54:42:40:70:2f:64 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:27:1a:1f:3e:f8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 160797sec preferred_lft 160797sec
    inet6 2404:7a85:4e0:b800:9c8a:3ed7:9534:8079/64 scope global temporary dynamic 
       valid_lft 86394sec preferred_lft 14394sec
    inet6 2404:7a85:4e0:b800:bb3c:9129:fd06:7dc9/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 86394sec preferred_lft 14394sec
    inet6 fe80::e98d:840d:7f6f:7bc3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Wifi確認

Wifi詳細情報表示

$ iwconfig
lo        no wireless extensions.

enp3s0    no wireless extensions.

wlo1      IEEE 802.11  ESSID:"Buffalo-A-CFC0"  
          Mode:Managed  Frequency:5.2 GHz  Access Point: C4:36:C0:56:CF:C4   
          Bit Rate=324 Mb/s   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=48/70  Signal level=-62 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:134   Missed beacon:0

バージョン確認

OSの確認 uname -a

Raspberry Piの場合

$ uname -a // 表示された
$ cat /etc/os-release​ //--- Rasberry piやBusyBoxではファイル認識されず
​$ hostnamectl​ //認識されず command not found

$ lsb_release -da  //Beaglebone Blackでは認識された
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

uBuntuの場合

$ uname -a
Linux ichiri-VPCF128FJ 5.15.0-69-generic #76~20.04.1-Ubuntu SMP Mon Mar 20 15:54:19 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

ichiri@ichiri-VPCF128FJ:~$ lsb_release -da
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal

KernelとOSの32bitか64bitの確認

  • uname -mはKernelのbit数確認。
  • getconfig LONG_BITは、OSのbit数確認。
  • 下はRaspberry PiのKernelは32bitで、OSもBusterの32bitだった時。
$ getconf LONG_BIT

cat /etc/os-release​ でも確認できるらしいがuBuntuではファイル認識されず。

Raspberry piを32BitのBusterから64bitのBullseyeのUpgradeしようとして出来ない事が分って、Kernelは64bit、Bullseyeは32bitで動作している状態の時。

カーネルモジュール確認

組込Linuxでなければあまり使わないかもしれません。

$ lsmod           // ロード(有効化?登録?)されたモジュール(ドライバ)を列挙。
$ modprobe ファイル名.ko   // モジュール(ドライバ)をロード。 依存関係にあるモジュールもmodules.depファイルを参照して一括ロードする。
$ insmod  ファイル名.ko    // モジュール(ドライバ)を個々にロード。 依存関係にあるモジュールはロードしない。デバッグ時に使用。
$ rmmod   ファイル名.ko    // インサートされたモジュール(ドライバ)を削除。 .ko無しでもOK。
$ modinfo   ファイル名.ko  // モジュール(ドライバ)のバージョンなどの情報を表示

環境変数

新規作成・変更・追加は、Rebootすると全て消えて前の状態に戻ってしまうので、.bash_profileに記載しておく事が必要です。

確認 echo $環境変数名

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ichiri/BBB_Workspace/Udemy-build/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin:/home/ichiri/BBB_Workspace/Downloads/buildroot-2022.11/output/host/opt/ext-toolchain/bin:/home/ichiri/workspace

//   或いはprintenv  『$』不要。 環境変数名なしの場合は、環境変数一覧表示。
$ printenv PATH

新規作成・変更: export 環境変数名=値

既に存在する場合は、置き換わってしまいます。 PATHの内容が置き換わってしまうので、PATHには必ず下記の追加をします。 『=』の左右にスペースを入れてはいけません。 値は全て文字列で受け取るので、文字列でも数字でも、シングル・ダブルクオーテーションマークや付けても付けなくても同じです。

$ export HOGE=John
$ echo $HOGE
John

$ export HOGE=ichiri
$ echo $HOGE
ichiri           // <--- Johnがichiri に置き換わります。

追加:環境変数名=$環境変数名:追加する値

PATH等への追加はこれを使います。

$ export HOGE=ichiri
$ HOGE=$HOGE:John
$ echo $HOGE
ichiri:John

// PATH 追加例
PATH=$PATH:/sample/test

ユーザー、グループ

ユーザー一覧確認 cat /etc/passwd

ユーザー追加 adduser

ユーザー削除 deluser

ユーザー編集 usermod~/foobar>

グループ一覧確認 cat /etc/group

グループ追加 addgroup

グループ削除 delgroup

グループ変更 chgrp

グループ編集 groupmod

ユーザーをグループに追加 sudo gpasswd -a ユーザー名 グループ名(Debian系の場合:adduser ユーザー名 グループ名)

ACL ichiriグループのbbb.txtファイルへのアクセス許可 set file access control list

setfacl -m group:ichiri:rw- bbb.txt

ACL ichiriグループのbbb.txtファイルアクセス削除 setfacl -x group:ichiri:rw- bbb.txt

ファイルやディレクトリのアクセス権限変更は、chmodやchownを使う。

ランレベル確認・変更

ランレベルは古いSysVinitやUpstart時のものでした。 これらのコマンドはまだ使えますが、今は、systemdなのでsystemctlを使うのが主流のようです。 systemdではランレベルの事をターゲットと呼んでいますね。 ターゲット(ランレベル)により初期に動作するサービス(プロセス)が異なってきます。

Linuxの動作モードで0~6までの7種類。

Systemd
ターゲット
SysVinit
ランレベル
poweroff0停止
rescue1シングルユーザーモード、ネットワーク無し。rootでのログインが出来ないときに使用
multi-user2マルチユーザーモード(NFSマウントなし)
multi-user3マルチユーザーモード(コンソール)、ネットワーク有り。通常の操作で使用されます。 <—-組込LinuxなどGUIでなければ普通はこれ
multi-user4未使用
graphical5GUIありのマルチユーザーモード、ネットワーク有り。 <—uBuntu desktopの場合これ
reboot6システム再起動 <—-このターゲットに切り替えるとrebootする。

ターゲット(systemd)

SysVinitのランレベルと同じ。 

$ systemctl get-default          // 
graphical.target                 //<----uBuntuの場合
multi-user.target                //<----組込Linux linux-xlnxの場合

$ sudo systemctl isolate graphical.target  //ターゲットの変更。 Rebootすると消えます。 /sbin/initコマンドでもターゲットが変わります。

$ sudo systemctl set-default multi-user    // 起動時のターゲット設定

ランレベル確認

システムが起動してからランレベルが変更されていない場合は『N』が表示される。 systemdでもまだ使えます。

$ runlevel
N 5    <----- uBuntu desktopの場合、GUIのマルチユーザーなので5となる

ランレベル変更(SysVinit)

通常はroot権限で実行が必要。 uBuntuの場合は、一般ユーザーで実行したら認証画面が表示されたので多分一般ユーザーで実行し認証パスワードを入れるとランレベルを変更出来ると思う。

# telinit 3

その他

コンソールの色付け

.bashrcの最後に以下を追加する。 PS1コンソール表示に関する予約された環境変数。

~/.bashrc
export PS1='\[\e[01;33m\]\u@\h \[\e[0m\]:\[\e[01;36m\]\w\[\e[0m\] \$ '

パーティションをフォーマット

mmc1のパーティション2のラベルをROOTFSにして、ext3でフォーマット

$ mkfs.ext3 -F -L 'ROOTFS' '/dev/mmcblk1p2'

ログ出力

$ dmesg > /home/pi/Desktop>boot_log.txt

ログレベル変更

Linuxのログレベルは0~7の8段階あり、初期値は4に設定されている。 ログレベルが4の場合は、0~3の重要Kernelメッセージだけがコンソール表示される。 それ以外は、dmesgコマンドで個別にチェックしなければならない。 しかし、ログレベルを大きくすると、更に詳細Kernelメッセージもコンソールに表示される。 デバッグ時に便利。

$ sudo sh -c "echo '8' > /proc/sys/kernel/printk"   
  1. Energency
  2. Alart
  3. Critical
  4. Error
  5. Warning
  6. Notice
  7. Info
  8. Debug

ファイルのタイムスタンプ更新

  • mtime:最終変更時
  • ctime:inode変更時、chmod、chownでも更新される
  • atime:最終アクセス日時
$ touch ファイル名   //ファイルがない場合は空のファイルを新規作成。 -cオプションをつけると新規作成しない。
$ touch -d "2022-11-4 9:30" ファイル名  //日時指定 mtime,ctime, atime全て更新
$ touch -r ファイル名2 ファイル名1    //ファイル名2の日時をファイル名1に付ける
$ touch -a ファイル名     // ctime, atimeを更新
$ touch -m ファイル名     // ctimeのみ更新

extglob 以外選択

『*』の反対で、ナニナニ以外を選択する場合にextglobがEnableになっている必要がある。 ls, cp, mv, chmod, rm などで使える。

$  shopt extglob
extglob        off

$ ls !(b*)
-bash: !: event not found

$ shopt -s extglob    // <---# Enables extglob
$ ls !(b*)

ssh、scp

リモートの192.168.11.8のPCのichiriユーザーにssh接続する時、

$ sudo ssh ichiri@192.168.11.8

リモートの192.168.11.8のPCのichiriユーザーの/home/ichiri/gm1からファイルをscpで取ってローカルのカレントディレクトリに保存する時

$ sudo scp ichiri@192.168.11.8:~/gm1/*.* .

コメント