發表文章

目前顯示的是 4月, 2022的文章

Linux Find 使用

find 基本用法 這邊介紹 find 尋找檔案或尋找資料夾的基本用法,在 Linux 或 macOS 下用 find 指令尋找檔案指令如下,例如要找 hello.txt 檔案的話,find 指令可以這樣用, $ find ./ -name "hello.txt" 如果要不區分大小寫的話,可以用 -iname 這個選項,像這樣用, $ find ./ -iname "hello.txt" 這樣不管是 hello.txt 或 Hello.txt 或 HELLO.txt 都可以找得出來, 如果想用 find 找包含 foo 關鍵字的檔案可以這樣用, $ find ./ -name "*foo*" 但 是這樣的結果會找出符合的檔案與資料夾,如果只想找出檔案不想找出資料夾的話可以另外加上 -type 選項,-type f 是找檔案,-type d 是找資料夾,預設都不加的話就是就是兩種結果都會列出來。 用 find 指令找當下目錄有包含 “foo” 關鍵字的 “檔案” 用法如下, $ find ./ -name "*foo*" -type f # -type f 找檔案 # -type d 找目錄 # 不加 -type 就是兩種結果都會列出來

vim 基礎操作

圖片
  https://www.runoob.com/linux/linux-vim.html i 在游標所在字元前開始輸入文字(insert)。 a 在游標所在字元後開始輸入文字(append)。  o 在游標所在行下開一新行來輸入文字(open)。  I 在行首開始輸入文字。 : 切換到底線命令模式,在最底一行輸入命令 vim 裡允許在 Insert 模式下使用方向鍵移動光標, 而 vi 裡在 Insert 模式下是不能移動光標的, 必須使用 ESC 退回到 Normal 模式下才行。 输入模式 在命令模式下按下 i 就进入了输入模式。 在输入模式中,可以使用以下按键: 字符按键以及Shift组合,输入字符 ENTER,回车键,换行 BACK SPACE,退格键,删除光标前一个字符 DEL,删除键,删除光标后一个字符 方向键,在文本中移动光标 HOME/END,移动光标到行首/行尾(0/$) Page Up/Page Down,上/下翻页 (ctl+f/b) Insert,切换光标为输入/替换模式,光标将变成竖线/下划线 ESC,退出输入模式,切换到命令模式 底线命令模式 在命令模式下按下:(英文冒号)就进入了底线命令模式。 底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。 在底线命令模式中,基本的命令有(已经省略了冒号): q 退出程序 w 保存文件 按ESC键可随时退出底线命令模式。 第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等 移动光标的方法 h 或 向左箭头键(←) 光标向左移动一个字符 j 或 向下箭头键(↓) 光标向下移动一个字符 k 或 向上箭头键(↑) 光标向上移动一个字符 l 或 向右箭头键(→) 光标向右移动一个字符 如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! [Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) [Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) [Ctrl] + [d] 屏幕『向下』...

linux exec与重定向

linux exec与重定向 exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。 bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。 fork概念 在说明exe和source的区别之前,先说明一下fork的概念。 fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。 环境变量(传给子进程的变量,遗传性是本地变量和环境变量的根本区别)只能单向从父进程传给子进程。不管子进程的环境变量如何变化,都不会影响父进程的环境变量。 shell script 有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。 新产生一个shell然后再执行scripts的方法是在scripts文件开头加入以下语句:#!/bin/sh 一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。 另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。 source source命令即点(.)命令。 在bash下输入man source,找到source命令解释处,可以看到解释”Read and execute commands from filename in the current shell environment and …”。从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。 exec 在bash下输入man exec,找到exec命令解释处,可以看到有”No new process is created.”这样的解释,这就是说exec命令不产生新的...

資料流導向

  輸入與輸出的重新導向 一般的 Linux 指令在執行時,會有三個輸入與輸出的資料流,分別為: 標準輸入(standard input,代碼為 0):程式執行所需要的輸入資料。 標準輸出(standard output,代碼為 1):程式正常執行所產生的輸出資料。 標準錯誤輸出(standard error output,代碼為 2):程式出錯時通知使用者用的訊息,或是呈現程式狀態用的訊息。 傳送指令 標準輸入(stdin) :代碼為 0 ,使用 < 或 <<; 標準輸出(stdout):代碼為 1 ,使用 > 或 >>; 標準錯誤輸出(stderr):代碼為 2 ,使用 2> 或 2>>; >, 1> 標準輸出至檔案,該檔案被覆蓋或建立。 >>, 1>> 標準輸出至檔案,該檔案被建立或累加。 command 2> 裝置或檔案 錯誤輸出至檔案,該檔案被覆蓋或建立。 2>> 錯誤輸出至檔案,該檔案被建立或累加。 < 輸入 << 結束的輸入字元 符號“<<”--字元的重導向 使用語法 command << word 在上面我們所提到的重導向符號“<”它所能處理的對像是檔案,如果不是檔案便無法處理。而在這裡將為你介紹的符號“<<”則是用來重導向文字使用的。我們來看它運用在指令行模式下的情況。 重導向符號說明 符號 說 明 > 將 stdout 重導向到檔案(command > file) >> 將 stdout 資料串加到檔案內容之後(command >> file) >& stdout 及 stderr 重導向到檔案(command >& file) >>& 將 steout 及 stderr 資料串加到檔案內容之後(command >>& file) >! 將 stdout 重導向到檔案,有設定 $noclobber 時,可重寫檔案。 >>! 將 stdout 資料串加到檔案內容之後,有設定 $noclobber 時,可重寫檔案。 ...

20220411 台南砲校教召

 趁著還有印象紀錄一下第一次教召 20220411 第一天 台南砲校報到 由於還在疫情期間進入營區第一件事要做快篩 然後到中正堂領取資料袋檢查背包收取手機等營區內的限制品 稍後同一群召員一起被領到宿舍樓領取兩天份的內衣和數位迷彩和軍靴 而其他S腰帶水壺跟鋼盔餐具等物件分別被置於床上以及內務櫃等地方 直到中午大多數人就定位,除了連上有兩位遲到相對的最後一天要多留一個小時 砲兵營群部連原本是28人的樣子最後兩個人免召所以是26人 中午吃完飯下午穿完裝備緊接著領槍趕著要開訓典禮 才持槍走兩百公尺站二十分鐘就極度不適應 開訓結束後下午的課程照國防部安排即是專業訓練 通訊教官簡單10~20分鐘用介紹完參拐C然後讓所有人輪流上去組裝度過一個下午 第一天的晚上夜教聽法治教育 經過兩節課放人下去洗澡 第一天行程太趕 才洗完澡燈就關了 頭還濕著就要上床入睡 搞得隔天一整天頭痛 第二天 照課表是整天專業訓練 早上發現通訊教官和昨天是不同人 昨天練習組裝37C而今天是簡單設定模式和頻率等條件然後測試通聯 下午又是不同教官而且是個少校一來就先聊天一個小時 助教提醒才要召員們上去操作拐參手持無線電 下午最後一節課是行政行軍 只穿整齊服裝在營內走半圈 第二天晚上夜教是愛國教育還比前一天好看一點 介紹205廠槍枝測試和製造 還有認知作戰相關內容 第三天 一大早就全副武裝還要帶槍行軍 營內走一整圈中間會頒布狀況演練 小部隊襲擾,毒氣狀況等 下午是射擊預習 練習走上靶台的操作喊口令然後臥射預備等等 及65K2槍枝機械歸零 "打上調上...打左調右" "一格兩響" "調到底回調23響" 等等 第四天就正式要打靶了 25公尺歸零射擊 每個彈匣3發5.56子彈打三次 早上是群部連營部連和部分12連打靶 早上先被載到看起來是工兵的營區 再行軍走去五甲勢靶場 下午和剩下的人交換回砲校保養槍枝和射擊預習 晚上在餐廳聽營長交代隔天行程 第五天 一早全營出發打靶 175公尺基本射擊每個彈匣6發打兩次 第一次6發練習第二次6發30秒內要打完算成績 整連打完的就先行搭乘中戰回砲校 中午回來收繳裝備後拿手機在餐廳等解召

uboot bootup 參考

  https://stackoverflow.com/questions/18462504/u-boot-where-does-it-all-begin ---- First of first, uboot will start at start.S of the specify CPU, like this: http://git.denx.de/cgi-bin/gitweb.cgi?p=u- boot.git;a=blob;f=arch/arm/cpu/armv7/start.S;h=ef62fc83270a327bc7df970f598540f1d7ce0fe2;hb=HEAD It will do some stuff like "exception vector" setup, cache setup, etc. Then it will jump to http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=arch/arm/lib/crt0.S do some c runtime setup, Then it will back to start.S, after some misc stuff, you can refer the comments, it will jump into lowlevel_init.S http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/lowlevel_init.S;h=82b2b86520eb2b2d63c2478145b625a49f931542;hb=HEAD Then.. it will going to soc(very common in ARM) init, like this: http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/mx6/soc.c After soc init finish , it will going to some board relate init, in the board in...