衡阳派盒市场营销有限公司

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

IC設計中Linux shell的選擇和使用

sanyue7758 ? 來源:ExASIC ? 2023-10-31 11:27 ? 次閱讀

你很可能正在使用bash,也可能是csh。你可能聽說過sh、tcsh。如果你安裝過EDA,就知道某EDA要正常工作必須要裝ksh。另外你可能還聽某大神安利過zsh……

一圖看懂各種shell的聯(lián)系與區(qū)別

那這么多shell有什么聯(lián)系和區(qū)別,我們先來看看它們的歷史和關系。下圖基于維基百科資料整理:

59b34df6-779c-11ee-939d-92fbcf53809c.jpg

ICer該如何選擇shell

那么這么多shell,我們ICer該如何選擇呢?看以下幾條信息

在現(xiàn)代化的操作系統(tǒng)中,比如Solaris11、RHEL7、Mac OS X默認都是bash。

IC企業(yè)里用tcsh的居多,因為大家原先都在Solaris里干活,老版本的Solaris默認是csh。

在RHEL6、7里,sh軟鏈接指向bash,csh軟鏈接指向tcsh。

zsh很流行,顏色很好看,自動化功能很強大,特別是Oh My Zsh的擴展使用zsh成為了終極shell。可惜的是,很多芯片設計公司服務器沒有安裝,周圍也沒有同事用。

EDA安裝目錄里有ksh腳本,說明有一些IC企業(yè)在用ksh,但國內用的人極少。

基于以上的分析,對于普通ICer,我們的結論是:

如果你是普通搬磚的ICer,有啥用啥,周圍同事用啥你也用啥。所以bash和tcsh都得學。

如果你是公司的領導(Leader、經理、中層管理等),你讓手下用啥,手下就用啥。需要考慮生產力,傳統(tǒng),學習培訓成本。

在家,你愛用啥用啥,看著舒服,用著順手就行。

另外,由于Tcl、Perl、Python等腳本語言的強大,我們只需要了解和掌握shell的常見、簡單用法即可。把復雜的編程交給Tcl/Perl/Python去做吧。

shell簡易教程

注釋

1#thisiscomment

用戶配置文件

1#bash
2~/.bashrc
3
4#tcsh
5~/.tcshrc或~/.cshrc
6
7#zsh
8~/.zshrc

腳本第一行指定解釋器

1#!/bin/bash
2#!/bin/tcsh
3#!/bin/zsh

變量定義,賦值,引用

 1#bash
 2CompanyInfo="AIChips,Co.LTD"
 3EDA_HOME=/tools/eda
 4echo$EDA_HOME
 5my_array=(1234)
 6echo${my_array[0]}#outputis1
 7my_hash['first']=1
 8my_hash[second]=2
 9echo${my_hash[first]}
10
11#tcsh
12CompanyInfo="AIChips,Co.LTD"
13setEDA_HOME=/tools/eda
14echo$EDA_HOME
15setmy_array=(1234)
16echo$my_array[1]#outputis1
17
18#zsh
19CompanyInfo="AIChips,Co.LTD"
20EDA_HOME=/tools/eda
21echo$EDA_HOME
22my_array=(1234)
23echo$my_array[1]#outputis1
24decare-Amy_hash
25my_hash['first']=1
26my_hash[second]=2
27echo$my_hash[first]

Tips:

#1 bash數(shù)組下標從0開始,tcsh和zsh從1開始。

#2 bash引用關聯(lián)數(shù)組用${my_hash[first]},tcsh和zsh不需要{},直接$my_hash[first]。

環(huán)境變量

1#bash,zsh
2exportNOVAS_HOME=/tools/eda/synopsys/novas
3或者
4NOVAS_HOME=/tools/eda/synopsys/novas
5exportNOVAS_HOME
6
7#tcsh
8setenvNOVAS_HOME/tools/eda/synopsys/novas

Tips:

#1 tcsh的path數(shù)組只對當前shell有效。但如果寫在用戶配置文件~/.tcshrc里,path也是對所有shell有效的。

條件

 1#bash,zsh
 2foo="a"
 3if[$foo="a"];then
 4echo"equal"
 5fi
 6
 7#csh
 8setfoo="a"
 9if($foo=="a")then
10echo"equal"
11endif

Tips:

#1 考慮兼容性,bash、zsh中的字符串比較用=,而tcsh里用==

#2 bash、zsh的[ ]內部必須有空格

循環(huán)

 1#bash
 2arr=("a""b""c")
 3for((i=0;i<${#arr[*]};?i++))
 4do?
 5??echo?${arr[$i]}
 6done
 7
 8#tcsh
 9set?arr?=?(a?b?c)
10foreach?i?($arr)
11??echo?$i
12end
13
14#zsh
15arr=("a"?"b"?"c")
16echo?$arr
17for?((i=1;?i?<=?$#arr;?i++))?{
18??echo?$arr[$i]
19}
20for?i?($arr)?{
21??echo?$i
22}

Tips:

#1 數(shù)組長度的表示方式不同,bash里用${#arr[*]}或者${#arr[@]},tcsh和zsh用$#arr

#2 bash用for var in {0..9},tcsh用foreach var ($array),zsh用for var ($array)

函數(shù)

1#bash,zsh
2functionsum(){
3return$(($1+$2))
4}
5sum12
6echo"sum=$?"

Tips:

#1 函數(shù)必須先定義后使用

#2 函數(shù)傳入參數(shù)時,在函數(shù)內部用$1, $2, $3等取得

#3 return的返回值保存在內置變量$?里

#4 函數(shù)調用時,參數(shù)直接寫在函數(shù)名后面,與linux命令的格式相同

#5 tcsh不支持函數(shù)的語法,可以用alias實現(xiàn)類似函數(shù)的功能

下面是tcsh里用alias實現(xiàn)類似求和函數(shù)sum的例子。alias只是起到簡化代碼的作用,相當于宏定義。

1#tcsh
2aliassum'@sum=$a+$b';echo$sum
3seta=1
4setb=2
5sum#outputis3
6setb=10
7sum#outputis11






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • IC設計
    +關注

    關注

    38

    文章

    1302

    瀏覽量

    104286
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210392
  • Shell
    +關注

    關注

    1

    文章

    366

    瀏覽量

    23445
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10206

原文標題:IC設計中Linux shell的選擇和使用(bash、tcsh、zsh)

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux Shell腳本入門到實戰(zhàn)詳解

    Linux Shell腳本入門到實戰(zhàn)詳解
    發(fā)表于 02-17 15:03 ?660次閱讀

    Linux shell腳本分享

    今天浩道跟大家分享幾個Linux運維中常用到的shell腳本!
    發(fā)表于 07-18 09:53 ?581次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>shell</b>腳本分享

    Linux Shell系列教程之Shell簡介和類型

    編寫的,Linux占用系統(tǒng)資源最少的一個小shell,它只包含24個內部命令,因而使用起來很不方便。cshcsh 是Linux比較大的內核,它由以William Joy為代表的共計4
    發(fā)表于 08-28 13:56

    linux shell命令/unix shell命令教程

    linux shell命令/unix shell命令教程:為了防止未授權用戶訪問你的文件,可以在文件和目錄上設置權限位。還可以設定文件在創(chuàng)建時所具有的缺省權限:這些只是整個系統(tǒng)安全問題中
    發(fā)表于 12-06 13:08 ?61次下載
    <b class='flag-5'>linux</b> <b class='flag-5'>shell</b>命令/unix <b class='flag-5'>shell</b>命令教程

    米爾科技Linux Shell編程介紹

    Shell是用戶與內核進行交互操作的一種接口,是Linux最重要的軟件之一。
    的頭像 發(fā)表于 11-25 08:58 ?1667次閱讀
    米爾科技<b class='flag-5'>Linux</b> <b class='flag-5'>Shell</b>編程介紹

    Linuxshell腳本執(zhí)的4種方式

    Linuxshell腳本的執(zhí)行通常有4種方式,分別為工作目錄執(zhí)行,絕對路徑執(zhí)行,sh執(zhí)行,shell環(huán)境執(zhí)行。
    發(fā)表于 05-23 09:28 ?933次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>中</b><b class='flag-5'>shell</b>腳本執(zhí)的4種方式

    Linux系統(tǒng)命令及shell腳本實踐指南

    Linux系統(tǒng)命令及shell腳本實踐指南資料下載。
    發(fā)表于 06-01 14:47 ?28次下載

    Linux開發(fā)_Shell腳本編程語言

    介紹LinuxShell編程,介紹shell里語句、變量、函數(shù)、運算符的使用。
    的頭像 發(fā)表于 09-17 15:39 ?1243次閱讀

    Linux命令行與shell腳本編寫

    Linux命令行與shell腳本編寫
    發(fā)表于 01-11 16:50 ?4次下載

    Linux基礎知識Shell

    Shell便是Linux命令行環(huán)境CLI,直觀意思是“外殼”,這一點與Linux內核對應。
    的頭像 發(fā)表于 02-15 10:54 ?872次閱讀

    shell命令和linux命令一樣嗎

    結合在一起,形成一個相當于面向過程的程序,即shell script,從而實現(xiàn)一些復雜的功能。 而Linux命令則是用來對Linux系統(tǒng)進行管理的命令。這些命令通常是由系統(tǒng)管理員或用戶輸入的,用于執(zhí)行特定的操作或任務。
    的頭像 發(fā)表于 11-08 10:51 ?2980次閱讀

    linux命令和shell編程有什么聯(lián)系

    的命令,并提供了許多功能和特性,如變量、控制結構、函數(shù)等,這些功能和特性使得Shell編程成為可能。 其次,Linux命令是Shell編程的重要組成部分。通過使用Linux命令,用戶可
    的頭像 發(fā)表于 11-08 10:53 ?968次閱讀

    linux命令行與shell編程實戰(zhàn)

    Linux命令行與Shell編程實戰(zhàn)主要涉及以下內容: Linux命令行基礎:學習Linux命令行的基本操作,如文件管理、進程管理、網絡配置等。熟悉使用命令行能夠提高工作效率,提升自己
    的頭像 發(fā)表于 11-08 10:57 ?838次閱讀

    Linux系統(tǒng)shell命令解析

    shellLinux系統(tǒng)的用戶界面,提供了用戶與內核交互的一種接口,它接收用戶輸入的命令并到送到內核去執(zhí)行,因此也被稱為Linux的命令解釋器。
    的頭像 發(fā)表于 11-05 15:40 ?378次閱讀

    Linux從零到精通:最簡單的Shell腳本入門教程

    在數(shù)字化時代的浪潮Linux操作系統(tǒng)憑借其高效、穩(wěn)定、開源的特性,成為了無數(shù)開發(fā)者和系統(tǒng)管理員的首選。 而在Linux的龐大生態(tài)系統(tǒng)Shel
    的頭像 發(fā)表于 12-05 09:56 ?669次閱讀
    <b class='flag-5'>Linux</b>從零到精通:最簡單的<b class='flag-5'>Shell</b>腳本入門教程
    百家乐游戏排行榜| 网上百家乐官网是假还是真的| 顶级赌场官方安卓版手机下载| V博百家乐官网的玩法技巧和规则 中骏百家乐官网的玩法技巧和规则 | 线上百家乐赢钱| 谁会玩百家乐官网的玩法技巧和规则 | 捷豹百家乐的玩法技巧和规则 | 最新百家乐的玩法技巧和规则| 百家乐官网网站那个诚信好| 百家乐官网浴盆博彩通排名| 大发游戏| 威尼斯人娱乐城吃饭| 百家乐的视频百家乐| 海尔百家乐官网的玩法技巧和规则 | 澳门百家乐官网娱乐开户| 唐人街百家乐的玩法技巧和规则| 百家乐如何必胜| 网上百家乐官网真的假| 百家乐官网专打单跳投注法| 合法赌博网站| 大发888网页在线游戏| 长江百家乐的玩法技巧和规则| 上海玩百家乐算不算违法| 百家乐官网发牌| 百家乐官网挂机软件| 百家乐官网论坛在线提供| 文山县| 百家乐www| 百家乐专家赢钱打法| 百家乐官网黏土筹码| 如何玩百家乐官网赢钱技巧| 百家乐官网经验在哪找| 大发888娱乐场下载 游戏平台| 百博百家乐的玩法技巧和规则| 百家乐平台出租家乐平台出租| 百家乐官网网上玩法| 百家乐官网长龙太阳城| 足球比分| bet365网址yalanad| 大发888优惠红利代码| 威尼斯人娱乐官方网|