はじめに: 私が普段使用するコマンドをいくつか整理します。詳しくは説明しませんが、非常に実用的です。
目次
1. フォルダー構造を表示する
使用 | 注文 | ノート |
---|---|---|
フォルダー構造を表示します (隠しファイルは表示されません) | 木 | ツリーをインストールする必要があります: sudo apt-get install Tree |
フォルダー構造の表示 (隠しファイルを表示) | 木-a | |
フォルダ構造の表示(フォルダのみを表示) | ツリー -d | |
フォルダ構造の表示(指定したフォルダを表示) | ツリーターゲットフォルダ | 例: ツリー mydir |
第 1 レベルのディレクトリ ファイル構造を表示する | 木-L1 | すべてのファイル (隠しファイルを含む) を表示するには、後ろに「-a」を追加します。 |
2. ファイルマネージャーコマンド
● 例: ターミナルで現在のパスにあるフォルダーを開きます。
nautilus .
3. フォルダーのサイズを表示する
● 例 1: 現在のフォルダーのサイズを表示します (現在のディレクトリの下にあるすべてのサブディレクトリを一覧表示する場合は、深さを 1 に設定します)
du -h --max-depth=0
●例2:指定したパスのフォルダまたはファイルサイズを表示する
du -sh 指定路径文件夹/文件
● 例 3: フォルダー内のすべての第 1 レベルのディレクトリのサイズを表示します (隠しファイルとフォルダーを除く)
● 例 4: 現在のディレクトリにあるすべての隠しファイルとフォルダーのサイズを表示します。
du -sh .[!.]*
● 例 5: du -sh とソート
sun@sun-pc:~/project/AOSP$ du -sh ./* | sort -h
0 ./Android.bp
0 ./bootstrap.bash
0 ./vbmeta.img.info
4.0K ./disregard
4.0K ./Makefile
...
1.9G ./frameworks
26G ./prebuilts
72G ./out
説明:
ソートで -h が追加されない場合、4.0k が 1.9G を下回る状況が発生します。これは、ソートコマンドがデフォルトで最初の列の文字の ASCII コードに従ってソートされるためであり、明らかに du によって出力される内容です。 -sh はソートできません。
sort -h : 読みやすい数値を使用します (例: 2K 1G)。実際、ソート時には単位係数も考慮されます。
4. ファイルとフォルダーのアクセス許可
1. 権限の説明
Linux ファイル システムでは、ファイルまたはフォルダには 3 セットの rwx 権限があり、次の例で説明します。
sun@sun-pc:~$ ls -l
rw-r-xr-x 1 sun sun 0 5月 9 18:20 1.txt
左から右に数えて、3 つの権限グループは次のことを表します。
(1) ファイルに対するファイルの権限所属用户
(読み取り可能、書き込み可能、実行不可能 (rw-) など)
(2)ファイルがアクセスされる用户组
ファイルの権限属している (実行可能ファイルを含む) 読み取り可能、書き込み不可、実行可能 (rx)
(3)其他用户
ファイルへのアクセス許可 (読み取り可能、書き込み不可、および実行可能 (rx) を含む)
2. アクセス許可を変更する
コマンド chmod を使用してファイルまたはフォルダーのアクセス許可を変更するか、例として上記の 1.txt を使用します。
#为所属用户添加可执行权限
chmod u+x 1.txt
#为所属用户组添加可写权限
chmod g+w 1.txt
#为其他用户添加可写权限
chmod o+w 1.txt
#为所有用户添加写权限
chmod a+w 1.txt
#为所属用户和用户组添加写权限
chmod ug+w 1.txt
#为所属用户和用户组添加读写权限
chmod ug+rw 1.txt
上記の方法に加えて、数値を直接使用して権限を表すこともできます。- - - 2進数の000、rwxは2進数の111とみなすことができます。chmod を使用して権限を追加する場合は、2 進数を 8 進数に変換するだけです。この番号はすべての権限を完全に表しており、特定の権限を個別に追加することはできないことに注意してください。そのため、権限を変更する場合は、必要のない権限を変更しないように、実際のニーズに応じて権限番号を計算するように注意してください。間違って変更したい。
#更改所属用户权限为r-x,用户组权限为--x,其他用户权限为rw-
chmod 516 1.txt
5. ファイルを検索する
例: test.txt ファイルを検索します。
5.1 場所を特定する
sun@sun-pc:~/myProjects$ locate /test.txt #locate只能查找文件名包含test.txt的文件,所以这里加上路径分割符号“/”
/home/sun/Share/frameworks/base/tools/aapt2/integration-tests/App/assets/test.txt
/home/sun/Share/frameworks/base/tools/aapt2/integration-tests/App/assets/subdir/subsubdir/test.txt
/home/sun/Share/frameworks/base/tools/aapt2/integration-tests/App/assets2/test.txt
/home/sun/Share/frameworks/base/tools/aapt2/integration-tests/App/res/raw/test.txt
/home/sun/Share/frameworks/compile/mclinker/unittests/test.txt
/home/sun/test.txt
注:
(1)locate は、システムの情報ベースから特定のファイルを検索することです。速度は速く、ファイル名は大文字と小文字が区別されます。
(2) ファイルの存在は確認できるが、ロケートが見つからない場合は、情報ベースが更新されていないことが考えられますので、以下のコマンドを実行して情報ベースを更新します。
sudo updatedb //一般时间较久,建议空闲时间执行
5.2 見つける
例 1: test.txt ファイルを検索する
find -name "test.txt"
例 2: test.txt ファイルを
検索するときに特定のディレクトリ-path 要排除的目录 -prune -o
を除外する 複数のディレクトリを除外したい場合は、さらにいくつかの文を記述するだけです。
find ./ -path ./out -prune -o -name test.txt //在当前目录下查找test.txt,查找的时候排除当前目录下的out目录
例 3: ディレクトリ A で、ディレクトリ B のファイルと同じ名前のファイルを検索します。
find A目录路径 -type f | sed 's/.*\///' | xargs -L 1 find -name
上記の 3 つのコマンドはパイプ シンボルを介して接続されており、個別に説明します。
- find A ディレクトリ パス -f と入力し
て、A ディレクトリ内のすべてのファイルを検索します - sed 's/.*///' は、
前のコマンドの出力内のパスを削除し、ファイル名のみを残します。 - xargs -L 1 find -name は、
-L 1
前のコマンドの処理結果を一度に 1 行ずつfind -name
パラメータとして取得することを意味します
例 4: 再帰的検索のレベルを制限する
例 3 で再帰的サブディレクトリ内のファイルを検索しない場合は、-maxdepth
パラメータを使用して検索ディレクトリ レベルを制限できます。
-maxdepth 0
0 レベルのディレクトリを表します (つまり、検索しません)、
-maxdepth 1
第 1 レベルのディレクトリ (ターゲット パスのルート ディレクトリ) を表します。など...
find A目录路径 -maxdepth 1 -type f | sed 's/.*\///' | xargs -L 1 find -maxdepth 1 -name
注:
(1) find コマンドはディスクから直接ファイルを検索するため、速度は比較的遅くなります。
(2) find がディレクトリ内のファイルを再帰的に検索すると、「そのようなファイルまたはディレクトリはありません」などのエラーが表示されることがあります。これらのエラー メッセージを表示したくない場合は、標準エラー [2] とリダイレクト文字 [>] を使用してエラー メッセージを除外できます。
find -name "test.txt" 2> /dev/null //把错误信息输入到空设备中,注意2和>之间没有空格
6. ファイル内の特定のコンテンツを検索する
● 例 1: カメラ ディレクトリ内のすべてのファイル (そのすべてのサブディレクトリ内のファイルを含む) で、文字列名「libhidlbase」を検索します。
grep -r 'name: \"libhidlbase\"' ./camera
●例2:カレントディレクトリおよびサブディレクトリ内のサフィックスがmkのファイル内の文字列名を検索する
grep -r "name" --include="*.mk" ./*
● 例 3: このディレクトリの下にあるすべての第 1 レベルのサブディレクトリを一覧表示します。
ls -l | grep ^'d' //这个筛选原理是根据ls -l列出文件和目录的时候前边有类型符号,d开头的就是目录,-开头代表文件
パラメータ | ノート |
---|---|
-r | 再帰的検索。コマンドの後にリンク ファイルのパスが指定されていない限り、リンク ファイルはデフォルトでは含まれません。 |
-R | リンクされたファイルを含む再帰的検索 |
-n | 行番号を表示 |
-l | バイナリファイル内のルックアップを除外する |
–含める= | どのファイルを検索するかを示します。複数のファイルが含まれる場合は、{} を使用してファイルを囲みます。ここでの表現は 2 つの水平バーの後に「include=」が続き、等号の前後にスペースを入れてはいけないことに注意してください。(例: –include={*.c,test.h} ) |
–除外= | どのファイルを検索しないかを示します。使用法–include= は |
注:
1. 記号を検索するときは、一致する文字の前にエスケープ文字を追加する必要があります\
(例: \" は " を表します) 。
2. バックスラッシュを検索するには\
、エスケープ文字として 3 つのバックスラッシュを使用する必要があります。例: grep -rn "\ \\\"
2. 検索範囲を指定せずに書き込みのみを行う場合-r
、デフォルトでカレントディレクトリが検索されるため、上記例2のように./*
記述する必要はありません。
7. ファイルの圧縮と解凍
7.1 7z形式の圧縮パッケージを使用する
圧縮
例: 3 つのファイル 1.txt 2.txt 3.txt を test.7z ファイルに圧縮します。
7z a test.7z 1.txt 2.txt 3.txt
解凍
例: test.7z ファイルを解凍します。
7z x test.7z
パラメータ | ノート |
---|---|
ある | アーカイブへのファイル/フォルダーの追加を表します |
バツ | 解凍されたファイルを表し、元のディレクトリ ツリーに従って解凍されます。 |
-o | 解凍先のディレクトリを指定します。-oの後にスペースは不要です。ディレクトリに直接接続します。 |
7.2 tar型圧縮パッケージを使用する
圧縮:
tar -zcvf test.tar.bz2 1.txt 2.txt
解凍:
tar -zxvf test.tar.bz2
パラメータ | ノート |
---|---|
-c | に代わって圧縮ファイルを作成します |
-バツ | ファイルを解凍します |
-t | 圧縮パッケージ内のファイルを表示する |
-z | gzipで圧縮・解凍する |
-j | bzip2で圧縮・解凍 |
-v | 圧縮/解凍の進行状況バーを表示する |
-f | ファイル名を使用します (注: f の後にパラメータを取らないでください。-zxfv は間違っています。-zxvf と書く必要があります) |
7.3 rar 形式の圧縮パッケージを使用する
圧縮:
rar a test.rar 1.txt 2.txt
解凍:
unrar e test.rar //把压缩包里所有的文件都解压到当前目录
unrar x test.rar //把压缩包正常解压到当前路径
7.4 zip タイプを使用してパッケージを圧縮する
圧縮:
zip -r test.zip 1.txt 2.txt
解凍:
unzip test.zip
8. ファイルシステムのマウントとアンマウント
マウントとは何かというと、デバイス ファイルをオペレーティング システムのフォルダーにバインドし、このフォルダーにアクセスすることでデバイス情報にアクセスできるようにすることです。通常の状況では、デバイスがオペレーティング システムに接続されると、オペレーティング システムが自動的にマウントします。たとえば、USB フラッシュ ドライブを通常どおりコンピュータに挿入すると、システムが自動的にマウントし、ディスク パーティションが表示されます。 USBメモリなどの読み書きができるように操作します。一部の特殊なケースでは、開発者が手動でマウントとアンマウントを行う必要があり、その場合は mount および umount コマンドが必要になります。
マウント コマンドの基本形式: mount [-t vfstype] [-o options] device dir
● 例 1:/dev/sdb1
デバイスを/mnt
ディレクトリにマウントします。
mount /dev/sdb1 /mnt //这里没有指定vfstype,因为系统会自动匹配合适的文件系统类型
● 例 2:/system
マウントされたデバイスを再マウントし、読み取りおよび書き込み可能にします。
mount -o remount,rw /system //这里使用"-o"指定了两个选项(remount和rw),选项之间用逗号分隔开
● 例 3: アンインストールする/dev/sdb1
umount -v /dev/sdb1 或者 umount -v /mnt //两种方式都可以,-v表示执行时显示详细信息
注:
1. マウントおよびアンマウントの結果はコマンドでdf -ah
確認でき
ます 2. プロセスがデバイスを使用しているため、デバイスをアンマウントできない場合があります このとき、次のコマンドを実行して占有されているプロセスを確認し、kill コマンドを使用できますプロセスを強制終了するコマンドfuser -m /dev/sdb1
9. 標準入出力
tee:读取标准输入的内容并输出到标准输出和文件
例: コマンドラインの下のsources.listファイルの最後に「deb [trusted=yes] http://10.1.1.4/debian ./」という内容を入力し、実行結果を空のデバイスにリダイレクトします。
echo "deb [trusted=yes] http://10.1.1.4/debian ./" | tee -a /etc/apt/sources.list > /dev/null
注: -a オプションは、指定されたファイルに追加することを意味しますが、上書きはしません
10. ファイル情報の表示
10.1 lsコマンド
注文 | 意味 |
---|---|
ls | 現在のディレクトリ内に表示されているすべてのファイルとディレクトリをリストします。 |
ls -l | 現在のディレクトリにあるすべての表示可能なファイルとディレクトリをリスト形式で一覧表示します。 |
ll | 現在のディレクトリにあるすべての表示可能なファイルとディレクトリをリスト形式で一覧表示します (./ と .../ を含む) |
ls -lt | 現在のディレクトリ内にあるすべての表示可能なファイルとディレクトリをリスト形式で時間順に並べ替えてリストします。 |
ls -lrt | -r は、ls -lt ソートの逆で、逆順を意味します。 |
ls -F | 区別表示、種類により表示特性が異なる 通常ファイル:白、特別な記号なし リンクファイル:水色、 末尾に@が付く フォルダ:青、 末尾に実行許可/実行許可のあるファイル:緑、末尾に*が付く終わり |
拡張子:
このディレクトリの下にあるすべてのサブディレクトリを削除します
sun@sun-pc:~/temp$ ls -F | grep /$ | xargs rm -rv
removed directory 'test1/'
removed directory 'test2/'
removed directory 'test3/'
removed directory 'test4/'
10.2 statコマンド
11. ファイルの内容を端末に出力します
cat filename #将文件filename的内容输出到终端上
cat filename | grep xxx #筛选包含字符串"xxx"的内容到输出到终端上
cat filename | grep xxx -n #输出包含字符串"xxx"的行数到终端上
cat filename | tail -n 10 #输出的最后10行内容
cat filename | head -n 10 #输出的头10行内容
cat filename | tail -n +10 #输出第10行及以后的内容
cat filename | tail -n +10 | head -n 20 #输出第10~20行内容
12. ファイルコピーコマンド cp
誰もが知っているコピー コマンド cp ですが、その特殊な使用法を次のように紹介します。
● 例 1: main.mk をa/build/make/core/
とにコピーします。b/build/make/core/
echo a/build/make/core/ b/build/make/core/ | xargs -n 1 cp -v main.mk
注:
echo
: ここでの機能は、xargs で使用するターゲット ディレクトリを出力することです
xargs -n 1
。各コマンドのパラメータの最大数を 1 に制限し、パラメータを cp コマンドに渡します
cp -v
。-v の意味は、コマンド実行時に詳細情報を表示することです。コピーする
● 例 2:多个文件(1.txt,2.txt)
コピー先/home/user/temp
cp 1.txt 2.txt /home/user/temp
● 例 3:1.txt
現在のパスの下にあるすべてのファイルとディレクトリを次の場所にコピーします。/home/user/temp
cp -rf !(1.txt) /home/user/temp
#扩展:上面是排除1.txt一个文件,排除多个文件如下
cp -rf !(1.txt|2.txt) /home/user/temp