初心者の私がよく使うコマンドを載せています。 すぐ忘れるのでちょくちょく備忘録として追記しています。 『$』は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 ランレベル | |
poweroff | 0 | 停止 |
rescue | 1 | シングルユーザーモード、ネットワーク無し。rootでのログインが出来ないときに使用 |
multi-user | 2 | マルチユーザーモード(NFSマウントなし) |
multi-user | 3 | マルチユーザーモード(コンソール)、ネットワーク有り。通常の操作で使用されます。 <—-組込LinuxなどGUIでなければ普通はこれ |
multi-user | 4 | 未使用 |
graphical | 5 | GUIありのマルチユーザーモード、ネットワーク有り。 <—uBuntu desktopの場合これ |
reboot | 6 | システム再起動 <—-このターゲットに切り替えると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コンソール表示に関する予約された環境変数。
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"
- Energency
- Alart
- Critical
- Error
- Warning
- Notice
- Info
- 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/*.* .
コメント