Linux shell指令
查看檔案
less分頁
less 檔名.副檔名
- q:離開
- 空格: 下一頁
- b: 上一頁
- Enter與j: 往下移動一行
- k: 往上移動一行
- g:跳到文件的開頭。
- G:跳到文件的結尾
more分頁
more 檔名.副檔名
- q:離開
- 空格: 下一頁
- b: 上一頁
- Enter與j: 往下移動一行
- k: 往上移動一行
- g:跳到文件的開頭。
- G:跳到文件的結尾
wc統計行數
wc 檔名.副檔名
% wc config.h
784 2369 22076 config.h
- 784 行數
- 2369 字數
- 22076byte 檔案大小(單位是byte)
統計目前目錄所有檔案的行數,字數,檔案大小
wc *
統計多個檔案
wc 檔案1 檔案2 檔案3
grep
以下指令為,在ffmpeg.txt中搜尋”input”
grep "input" ffmpeg.txt
在所有的head檔中,搜尋那個檔案中有包含”stdio.h”
grep "stdio.h" *.h
執行結果
common.h:#include <stdio.h>
file_open.h:#include <stdio.h>
internal.h:#include <stdio.h>
vulkan_loader.h:#include <stdio.h>
顯示的意思為
檔名.副檔名: 有出現 stdio.h 的那一行
head
顯示檔案的前10筆
head 檔名.副檔名
顯示檔案的前15筆
head -n 15 檔名.副檔名
tail
顯示檔案的後10筆
tail 檔名.副檔名
顯示檔案的後15筆
tail -n 15 檔名.副檔名
若檔案有新增筆數(例如0.1秒新增一筆),使用以下指令在檔案有變更時會立即更新顯示結果
tail -f 檔名.副檔名
ctrl+c放棄追蹤更新
ls
以下指令,最新的檔案排在最前面
ls -lt
piple
若目錄下檔案很多,使用分頁功能查看。以下指令把ls的結果作為輸出給less指令去分頁
ls -lt | less
查看log,使用以下指令會列出檔案中2025-01-01的log,並以分頁方式顯示
grep "2025-01-01" 檔案.log | less
查看行數、字數、大小
grep "2025-01-01" 檔案.log | wc
top查看系統效能
每3秒更新cpu系統效能畫面,ctrl+c離開
top
Load Avg: 3.93, 4.09, 3.47
Load Avg:在一段時間內,cpu正在處理或等待處理的程序總合平均值,分別以最近1分鐘、5分鐘、15分鐘顯示
Processes: 543 total, 2 running, 541 sleeping, 2150 threads
共有543程序,2個正在執行,541個在休眠,2150個執行緒
env環境變數
顯示所有環境變數
env
使用grep搜尋要看的環境變數
env | grep PATH
環境變數分頁
env | less
使用echo顯示環境變數的值,注意!環境變數前要加錢字號$
echo $PATH
常用環境變數
LANG系統語言
預設中文是UTF-8
% echo $LANG
en_US.UTF-8
PATH
PATH的值是多個目錄,包含linux bash指令存放位置,或user的應用程式的執行檔案存放位置,以:分號分隔目錄。
注意!環境變數前要加錢字號$
echo $PATH
/usr/local/Cellar/ruby/3.3.0/bin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:/bin:/usr/bin:/usr/local/bin:/sbin:
例如ls指令是放在/usr/bin目錄下,如果PATH少了/usr/bin,就不能使用ls、wc、less…等等bash指令。
LD_LIBRARY_PATH
c++動態庫的目錄
export
注意!export的效果只有在目前的shell中適用,重新登入就清掉了,需要設置系統環境變數才能永久有效。
方式一
變數=\'值\'
export 變數
TEST='TEST1 TEST2 TEST3'
export TEST
env | grep TEST
方式二
export 變數=\'值\'
如果值不是空格或特殊符號,可以不用''
設定PATH
如果要增加/Users/cici/test目錄在PATH,可以用以下指令設定,$PATH代表原來PATH變數的值,再加上:冒號,後面加上要增加的目錄
export PATH=$PATH:/Users/cici/NDK
Linux bash_profile
僅對Linux有效 在user目錄下會有.bash_profile的檔案
cd ~
ls -l .bash*
-rw-r--r--@ 1 cici staff 536 Aug 30 12:15 .bash_profile
使用cat指令查看檔案
cat .bash_profile
# Setting PATH for Python 3.7
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
export PATH
alias python='python3.7'
alias pip='pip3.7'
export ANDROID_HOME=/Users/cici/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:/Users/cici/.rbenv/versions/3.2.2/bin
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
離開終端機或重新登入,環境變數已被修改。
echo PATH
MAC Zsh
我的MAC的Shell指令是Zsh,所以修改bash_profile對MAC的環境變數是沒有新增或修改。
使用以下指令在終端機,查看你的MAC電腦是什麼指令。
% echo $SHELL
/bin/zsh
Zsh 不會讀取 .bash_profile,它有自己的設定檔:
~/.zshrc(互動式 Shell 配置,每次開啟終端機載入)
~/.zprofile(登入 Shell 配置,類似 .bash_profile)
修改環境變數:
vi ~/.zshrc
增加環境變數,後面的:$PATH是固定的,儲存並退出。
export PATH="/your/custom/path:$PATH"
使環境變數生效。
source ~/.zshrc
執行檔案
我增加/Users/cici/testc的目錄,在目錄中,增加testc.cpp的檔案,並且編譯產生執行檔testc
vi testc.cpp
g++ -o testc testc.cpp
1
2
3
4
5
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
}
使用./
來執行檔案,.
圓點代表目前的目錄下,’./testc’代表目前目錄下的testc檔案,如果只寫testc
是找不到目前目錄下的testc檔案
./testc
如果想在任何目錄都可以執行目錄目錄的執行檔案,可以在PATH增加.圓點,就可以執行testc
export PATH=$PATH:.
testc
以相對/絕對路徑執行指令,例如”/bin/ls”或”./ls”