那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【shell腳本進(jìn)階】幾個(gè)常用的shell進(jìn)階腳本

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-09-19 08:59 ? 次閱讀

博主經(jīng)常在工作中使用shell腳本,有些流程比較單一但是由很有規(guī)律的操作,往往就是腳本使用的最佳應(yīng)用場(chǎng)景。

雖然在當(dāng)下python腳本已經(jīng)非常的普及了,初入行的朋友可能一想到“腳本”,就只想到“python腳本”。但對(duì)于我這個(gè)“行業(yè)老餅”,shell腳本卻還是有一席之地的,畢竟在我們?nèi)胄心菚?huì),還真沒(méi)python什么事!

本文呢,主要是給大家介紹幾個(gè)我在工作中常用的,但又非常有用且操作高效的腳本,感興趣的可以往下一看。

一、搜索想要的C文件并拷貝到一個(gè)指定的目錄

這個(gè)案例很有用,我直接上操作指引:

recan@ubuntu:~/win_share_workspace/test_share$ find . -name *.c
./test_gcc/pass_array2_test.c
./test_gcc/test.c
./test_jd_paper_test/test.c
./test_python_gcc_map/main.c
./test_python_gcc_map/libf.c
./test_python_gcc_map/libd.c
./test_python_gcc_map/libe.c
./test_python_gcc_map/libb.c
./test_python_gcc_map/liba.c
./master_mode_sdk/app/bl2028n_linkkitapp/app_entry.c
./master_mode_sdk/app/tg7100c_linkkitapp/app_entry.c
./master_mode_sdk/app/sv6266_linkkitapp/app_entry.c
./jx_sdk_config/jx_sdk_config.c
./jx_sdk_config/cJSON.c
./jx_sdk_config/main.c
./test_coredump/test_cordump.c
./tcp_echo/tcp_server.c
./tcp_echo/tcp_client.c
./test_aligned_macro/main.c
./test_gcc_test/test.c
./test_for_loop/test.c
./test_bin2array/bin2array.c
./test_cli_for_linux/src/cli_dumpsys.c
./test_cli_for_linux/src/jx_os_cli.c
./test_cli_for_linux/src/cli_default_command.c
./test_cli_for_linux/src/cli.c
./test_cli_for_linux/src/cli_adapt.c
./test_cli_for_linux/tcp_server.c
./test_cli_for_linux/adapter_for_linux/main.c
./test_cli_for_linux/adapter_for_linux/uart.c
./test_cli_for_linux/adapter_for_linux/osal.c
./test_hexdump/test_hexdump.c
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ find . -name *.c | xargs -i cp -rf {} /tmp/test_share/
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ ls /tmp/test_share/
app_entry.c  cJSON.c      cli.c                  cli_dumpsys.c  jx_sdk_config.c  libb.c  libe.c  main.c  pass_array2_test.c  tcp_server.c  test_cordump.c  uart.c
bin2array.c  cli_adapt.c  cli_default_command.c  jx_os_cli.c    liba.c           libd.c  libf.c  osal.c  tcp_client.c        test.c        test_hexdump.c
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 

主要腳本命令:find . -name *.c | xargs -i cp -rf {} /tmp/test_share/

二、編譯鏈接的時(shí)候把所有的object文件輸出一行

這是一個(gè)真實(shí)的應(yīng)用場(chǎng)景,我就經(jīng)常遇到,我一般是這樣操作:

recan@ubuntu:~/win_share_workspace/test_share$ find . -name *.o
./test_makefile_paper/bar.o
./test_gcc_test/test.o
./test_for_loop/test.o
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ find . -name *.o | xargs echo -n
./test_makefile_paper/bar.o ./test_gcc_test/test.o ./test_for_loop/test.o
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 

關(guān)鍵腳本命令:find . -name *.o | xargs echo -n

三、查看當(dāng)前目錄下所有C文件的大小

這個(gè)也應(yīng)經(jīng)常用的,見(jiàn)案例操作:

recan@ubuntu:~/win_share_workspace/test_share$ find . -name *.c | xargs ls -alh
-rwxr-xr-x 1 recan system  64K Jul 19  2021 ./jx_sdk_config/cJSON.c
-rwxr-xr-x 1 recan system 6.6K Jul 22  2021 ./jx_sdk_config/jx_sdk_config.c
-rwxr-xr-x 1 recan system  472 Jul 21  2021 ./jx_sdk_config/main.c
-rwxr-xr-x 1 recan recan     0 Jul 12  2021 ./master_mode_sdk/app/bl2028n_linkkitapp/app_entry.c
-rwxr-xr-x 1 recan recan     0 Jul 12  2021 ./master_mode_sdk/app/sv6266_linkkitapp/app_entry.c
-rwxr-xr-x 1 recan recan     0 Jul 12  2021 ./master_mode_sdk/app/tg7100c_linkkitapp/app_entry.c
-rwxr-xr-x 1 recan recan  5.3K Jan 15  2022 ./tcp_echo/tcp_client.c
-rwxr-xr-x 1 recan recan  6.9K Jan 15  2022 ./tcp_echo/tcp_server.c
-rw-r--r-- 1 recan recan  1.1K Aug  4  2021 ./test_aligned_macro/main.c
-rwx------ 1 recan system 1.9K Aug 24  2021 ./test_bin2array/bin2array.c
-rwx------ 1 recan system 1.3K Jan 16  2022 ./test_cli_for_linux/adapter_for_linux/main.c
-rwx------ 1 recan system  857 Jan 15  2022 ./test_cli_for_linux/adapter_for_linux/osal.c
-rwx------ 1 recan system 1.4K Jan 15  2022 ./test_cli_for_linux/adapter_for_linux/uart.c
-rwx------ 1 recan system 2.1K Jan 15  2022 ./test_cli_for_linux/src/cli_adapt.c
-rwx------ 1 recan system  27K Jan 15  2022 ./test_cli_for_linux/src/cli.c
-rwx------ 1 recan system 8.0K Nov  9  2021 ./test_cli_for_linux/src/cli_default_command.c
-rwx------ 1 recan system 1.3K Nov  9  2021 ./test_cli_for_linux/src/cli_dumpsys.c
-rwx------ 1 recan system 1.6K Dec 13  2021 ./test_cli_for_linux/src/jx_os_cli.c
-rwxr-xr-x 1 recan system 9.1K Jan 16  2022 ./test_cli_for_linux/tcp_server.c
-rwx------ 1 recan system  626 Aug 18  2021 ./test_coredump/test_cordump.c
-rw-r--r-- 1 recan system  768 Jan 27  2022 ./test_for_loop/test.c
-rw-r--r-- 1 recan system  817 Sep  7  2021 ./test_gcc/pass_array2_test.c
-rwxr-xr-x 1 recan recan   233 Jul  6  2021 ./test_gcc/test.c
-rw-r--r-- 1 recan recan    87 Jun 11  2021 ./test_gcc_test/test.c
-rwx------ 1 recan system 1.8K Sep  8  2021 ./test_hexdump/test_hexdump.c
-rwx------ 1 recan system 1.7K Aug 31  2021 ./test_jd_paper_test/test.c
-rw-r--r-- 1 recan system  225 Aug 31  2021 ./test_python_gcc_map/liba.c
-rw-r--r-- 1 recan system  225 Aug 31  2021 ./test_python_gcc_map/libb.c
-rw-r--r-- 1 recan system  225 Aug 31  2021 ./test_python_gcc_map/libd.c
-rw-r--r-- 1 recan system  225 Aug 31  2021 ./test_python_gcc_map/libe.c
-rw-r--r-- 1 recan system  225 Aug 31  2021 ./test_python_gcc_map/libf.c
-rw-r--r-- 1 recan system  492 Aug 31  2021 ./test_python_gcc_map/main.c

關(guān)鍵腳本命令:find . -name *.c | xargs ls -alh

四、把幾個(gè)文本文件按順序拼接起來(lái)

recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ echo 111111 > 1.txt
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ echo 222222 > 2.txt
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ echo 333333 > 3.txt
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ cat 1.txt 2.txt 3.txt > all.txt
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ 
recan@ubuntu:~/win_share_workspace/test_share$ cat all.txt 
111111
222222
333333
recan@ubuntu:~/win_share_workspace/test_share$ 

關(guān)鍵腳本命令:cat 1.txt 2.txt 3.txt > all.txt

以上幾個(gè)常用的腳本操作,你都學(xué)會(huì)了嗎?歡迎討論。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Shell
    +關(guān)注

    關(guān)注

    1

    文章

    366

    瀏覽量

    23447
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    392

    瀏覽量

    14938
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    腳本美化高手之輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫Shell技巧

    shell腳本中 echo 和 printf 都可以輸出內(nèi)容。示例1: echo -e "?33[43;35m david use echo say Hello World ?33[0m
    的頭像 發(fā)表于 12-06 10:38 ?214次閱讀
    <b class='flag-5'>腳本</b>美化高手之輕松實(shí)現(xiàn)文本顏色和背景定制的酷炫<b class='flag-5'>Shell</b>技巧

    Linux從零到精通:最簡(jiǎn)單的Shell腳本入門(mén)教程

    通過(guò)簡(jiǎn)單的命令和腳本,實(shí)現(xiàn)對(duì)系統(tǒng)的靈活控制和自動(dòng)化管理。 shell腳本前言 shell腳本入門(mén) she
    的頭像 發(fā)表于 12-05 09:56 ?669次閱讀
    Linux從零到精通:最簡(jiǎn)單的<b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>入門(mén)教程

    TCSH shell 編程入門(mén)

    ICer從業(yè)人員最先需要掌握的語(yǔ)言,就是linux shell語(yǔ)言。TCSH是ICer使用最多的Shell語(yǔ)言,可以說(shuō)ICer入門(mén)語(yǔ)言從TCSH開(kāi)始。
    發(fā)表于 11-01 10:45 ?0次下載

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫(xiě)之函數(shù)

    shell中的函數(shù)定義比較簡(jiǎn)單,定義函數(shù)名可以沒(méi)有類型,函數(shù)返回值可有可無(wú),如果有返回值,必須返回整數(shù)n(0~255)。同時(shí),函數(shù)的定義必須放在shell腳本的開(kāi)頭部分,只有函數(shù)被shell
    發(fā)表于 09-23 10:18

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫(xiě)之函數(shù)

    shell中的函數(shù)定義比較簡(jiǎn)單,定義函數(shù)名可以沒(méi)有類型,函數(shù)返回值可有可無(wú),如果有返回值,必須返回整數(shù)n(0~255)。同時(shí),函數(shù)的定義必須放在shell腳本的開(kāi)頭部分,只有函數(shù)被shell
    發(fā)表于 09-06 10:33

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫(xiě)之test命令

    test命令用于測(cè)試某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個(gè)方面的測(cè)試。在shell文件中輸入命令,通過(guò)特定的參數(shù)可以對(duì)數(shù)值、字符串進(jìn)行比較,如下參數(shù)及示例。1、數(shù)值比較參數(shù)舉例,在
    發(fā)表于 09-05 09:09

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫(xiě)之四則運(yùn)算

    shell程序默認(rèn)支持整數(shù)加、減、乘、除、求余的運(yùn)算。 1、使用$(())方式進(jìn)行運(yùn)算 例如計(jì)算2+3,使用$((2+3))。 我在腳本中加入這幾種運(yùn)算進(jìn)行測(cè)試: 執(zhí)行腳本后結(jié)果如下: 2
    發(fā)表于 09-03 14:30

    shell腳本執(zhí)行的三種方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一種非常實(shí)用的工具,用于自動(dòng)化執(zhí)行一系列命令。Shell腳本可以大大提高工作效率,簡(jiǎn)化復(fù)雜的任務(wù)。在這篇文章中,我們將介紹
    的頭像 發(fā)表于 08-30 15:24 ?1408次閱讀

    執(zhí)行shell腳本的方式包括什么

    執(zhí)行Shell腳本的方式有很多種,以下是一些常見(jiàn)的方法: 直接運(yùn)行腳本文件 在命令行中,可以直接使用腳本文件的路徑來(lái)運(yùn)行腳本。例如: ./s
    的頭像 發(fā)表于 08-30 15:17 ?392次閱讀

    shell具有的功能和特點(diǎn)

    是執(zhí)行命令。用戶可以在 Shell 提示符下輸入命令,Shell 會(huì)解析命令并將其傳遞給操作系統(tǒng)執(zhí)行。Shell 支持各種類型的命令,包括內(nèi)置命令、外部命令和腳本命令。 命令歷史
    的頭像 發(fā)表于 08-30 14:48 ?696次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫(xiě)之?dāng)?shù)組

    本帖最后由 jf_13411809 于 2024-9-2 09:23 編輯 Shell腳本也支持使用數(shù)組。1、數(shù)組定義方式如下Arr=(a0 a1 a2…an)Arr是數(shù)組名稱,成員使用()括
    發(fā)表于 08-30 09:25

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-shell腳本編寫(xiě)之本地腳本的編寫(xiě)和執(zhí)行

    :3)shell應(yīng)用程序執(zhí)行shell腳本也可直接使用shell應(yīng)用程序進(jìn)行執(zhí)行。我們前面說(shuō)過(guò),我們指定的shell應(yīng)用為/bin/bash
    發(fā)表于 08-29 10:51

    shell腳本編寫(xiě)之本地腳本的編寫(xiě)和執(zhí)行

    用來(lái)指定使用的shell應(yīng)用;echo "my first shell !"為腳本中編寫(xiě)的命令代碼。2、執(zhí)行在執(zhí)行腳本時(shí),腳本
    發(fā)表于 08-28 09:36

    嵌入式學(xué)習(xí)-shell介紹

    輸出執(zhí)行結(jié)果呈現(xiàn)給用戶;同時(shí)Shell也是一種解釋性的編程語(yǔ)言或者腳本語(yǔ)言,開(kāi)發(fā)容易可以在短時(shí)間內(nèi)完成功能強(qiáng)大又好用的腳本,可以在不同的系統(tǒng)上移植非常方便。二、Shell的特性不同的發(fā)
    發(fā)表于 08-16 09:13

    shell基本介紹及常用命令之shell介紹

    輸出執(zhí)行結(jié)果呈現(xiàn)給用戶;同時(shí)Shell也是一種解釋性的編程語(yǔ)言或者腳本語(yǔ)言,開(kāi)發(fā)容易可以在短時(shí)間內(nèi)完成功能強(qiáng)大又好用的腳本,可以在不同的系統(tǒng)上移植非常方便。二、Shell的特性不同的發(fā)
    發(fā)表于 08-15 09:28
    大发888游戏官方下| 百家乐桌套装| 百家乐官网大西洋城| bet365 论坛| 神话百家乐的玩法技巧和规则| 大哥大百家乐官网的玩法技巧和规则 | 宝龙娱乐城官网| 赌百家乐的玩法技巧和规则| 顶尖百家乐官网的玩法技巧和规则| 新宝百家乐官网网址| 大发888游戏备用网址| 百家乐澳门色子| 新加坡百家乐官网的玩法技巧和规则 | 百家乐官网的视频百家乐官网| 博彩网站源码| 八大胜百家乐的玩法技巧和规则 | 百家乐官网策略| 大发888手机注册送钱| 圆梦城百家乐娱乐城| 沙龙百家乐官网赌场娱乐网规则 | 百家乐筹码订做| 网上百家乐官网怎么赌能赢钱| 百家乐官网五局八星| 百家乐书| 大哥大百家乐官网的玩法技巧和规则| 波音百家乐官网自动投注| 桂林市| bet365备用bd| 威尼斯人娱乐城代理| 百家乐网上赌局| 百家乐如何睇路| 恒丰百家乐官网的玩法技巧和规则 | 香港六合彩全年资料| 申博太阳城娱乐城| 免费百家乐奥| 百家乐投注哪个信誉好| 百家乐官网园| 百家乐官网官网站| 百家乐官网和抽水官网| 喀什市| 利高网上娱乐|