DC中常用到的命令(示例)總結

2021-02-16 數字ICer

作者:IC_learner,

來源: http://www.cnblogs.com/IClearner/ 

本文將描述在Design Compliler中常用到的命令,這些命令按照流程的順序進行嵌套講解,主要是列舉例子;大概的講解布局如下所示:

                       

大概有11個部分,下面我們逐個部分進行(簡單的)介紹的舉例。

1、tcl的命令和結構

tcl的命令和結構請參照第二節的內容:

http://www.cnblogs.com/IClearner/p/6617207.html ,下面是簡單的常用舉例。

--> 設置變量命令: set PER 2.0

  顯示變量命令: echo $PER  # Result: 2.0

--> 表達式操作:

    set MARG  0.95

    expr  $PER  *  $MARG

    # expr: *, /, +, >, <, =, <=,>=

    set PCI_PORTS  [get_ports  A]

    set PCLPORTS   [get_ports 「Y??M Z*」]

 -->命令嵌套,顯示命令中嵌套表達式命令:

    echo 「Effctv P = [expr  $PERIOD * $MARGIN]」

    # Result with soft quotes: 「Effctv P = 1.9」

等價於:

    echo {Effctv P = [expr $PERIOD * $MARGIN]}

    # Result with hard quotes:

    # 「Effctv P = [expr $PERIOD * $MARGIN]」

-->tcl的注釋行:# Tcl Comment line

    set COMMENT injine ; # Tel inline comment

-->設置tcl中的列表變量:

    set MY_DESIGNS 「A.v  B.v  Top.v」

查看列表變量:

  foreach  DESIGN  $MY_DESIGNS {

    read_verilog  $DESIGN

    }

 

-->for循環:

  for  { set i 1}  { $i  < 10 }  { incr  i} {  

    read_verilog  BLOCK_$i.v

  }

 

 

2、獲取幫助

-->在dc_shell 中能用的命令:

  pwd 、 cd 、 Is、history、 !l 、 !7 、 Ireport 、

  sh   :加上sh後,可以執行在linux中執行的命令,如sh  gvim  xxx.v  & (&是後臺運行)、

  printenv、

  get_linux_variable  

-->在dc_shell中尋求幫助:

  下面的這些man、printvar命令都只能在dc_shell中運行:

  help -verbose *clock :列出與*clock有關的選項

  create_clock -help :查看create_clock這個命令的簡單用法

  man  create_clock :查看create_clock這個命令的詳細信息

  printvar  Mibrary :查看 Mibrary這個變量的內容

  man target_library :查看target_library這個命令的詳細信息

 

-->linux關聯DC中的幫助,獲取更多的幫助

  為了能夠在linux中使用dc_shell中的man命令,或者說能在linux中查看某些dc的命令,可以使用關聯(alias):

    $ alias  dcman 「/usr/bin/man  -M  $SYNOPSYS/doc/syn/man」

  然後我們就可以使用dcman來參看dc中的命令了,例如:

    $dcman  targetjibrary

 

3、tcl語法的檢查

當在DC可以執行tcl文件,在運行之前,我們要檢查這個tcl文件是否有語法錯誤,可以使用下面的命令:

      $dcprocheck   xxx.tcl

 

4、設計對象的操作

關於設計對象的內容(比如上面是設計對象等),請查看前面的章節,這裡我們只進行說對設計對象操作的一些命令(這些命令可以在dc_shell 中執行,或者寫在tcl文件中)。

-->獲取設計對象

  get_ports  、get_pins  、get_designs  、get_cells  、get_nets  、get_clocks  、get_nets  -of_objects  [get_pins  FF1_reg/Q] 、get_libs 、get_lib_cells    、get_lib_pins

 

-->設計對象(的集合):

設計對象的物集,總之就是多個設計對象(組成一個集合)

  all_inputs 、all_outputs  、all_clocks  、all_registers  、all_connected  、all_fanin  、all_fanout  、all_ideal_nets

 

 

-->對設計對象的操作:

  獲取設計對象(get_ports pci_*)後賦予給變量PCI__PORTS:

    set  PCI__PORTS  [get_ports pci_*]

    echo $PCI__PORTS # -≫ _sel184

  查詢設計對象:

    query_objects  $PCI__PORTS  # -> {pci_1 pci_2 ...}

  獲取設計對象的名字:

    get_object_name  $PCIMPORTS # -> pci_1  pci_2 ...

  獲取設計對象物集的大小:

    sizeof_collection  $PCI_PORTS   # -> 37

  往設計對象物集裡面增加設計對象:

    set PCI_PORTS [add_to_collection  $PCI_PORTS  [get_ports CTRL*]]

  從設計對象物集裡面減少設計對象:

    set ALL_INP_EXC_CLK  [remove_from_collection  [alljnputs] [get_ports CLK]]

  比較設計對象:

    compare_collections

  設計對象的索引:

    index_collection

  分類設計對象:

    sort_collection

 

  循環查看(進行遍歷)設計對象物集的內容:

    foreach_in_collection  my_cells  [get_cells  -hier  *  -filter 「is_hierarchical == true」] {

      echo 「Instance [get_object_name $cell] is hierarchical」

    }

 

  過濾運算符:

    # Filtering operators: ==, !=, >, <,>=, <=, =~, h

    filter_collection [get_cells *]  「ref_name AN*」

    get_cells * -filter 「dontjouch == true」

    get_clocks * -filter 「period < 10」

 

  列出所有單元屬性並將輸出重定向到文件:

  # List all cell attributes and redirect output to a file

    redirect -file cell_attr {list_attributes -application -class cell}

 

  Grep以dont_為開頭的單元屬性文件:

  # Grep the file for cell attributes starting with dont_

    $grep dont_ cell__attr | more

 

  列出屬性為dont_touch的單元名字:

    # List the value of the attribute dont_touch

    get_attribute  dont_touch

 

  識別當前設計集中的膠合單元(GLUE_CELLS):

  # Example: Identify glue cells in the current design 

    set GLUE_CELLS  [get_cells *-filter 「is_hierarchicai == false」]

 

5、啟動環境的配置

這些設置主要是在.synopsys_dc.setup文件中;或者在common_setup.tcl和dc_setup.tcl文件中,然後.synopsys_dc.setup文件把這兩個文件包含。

·common_setup.tcl文件中:

    set   ADDITIONAL_SEARCH_PATH   「./libs/sc/LM   ./rtl ./scripts」

    set   TARGET_LIBRARY_FILES  sc_max.db

    set   ADDL_LINK_LIBRARY_FILES  IP_max.db

    set   SYMBOL_LIBRARY_FILES   sc.sdb

    set   MW_DESIGN_LIB  MY_DESIGN_LIB

    set   MW_REFERENCE_LIB_DIRS  「./libs/mw_lib/sc   ./libs/mw_libs/IP」

    set   TECH_FILE    ./Iibs/tech/cb13_6m.tf

    set   TLUPLUS_MAX__FILE   ./Iibs/tlup/cb13_6m_max.tluplus

    set    MAP FILE   ./Iibs/tlup/cb13_6m.map

·dc_setup.tcl文件中:

#庫的設置:

    set_app_var   search_path   "$search_path  $ADDITIONAL_SEARCH_PATH"

    set_app_var   target_library   $TARGET_LIBRARY_FILES

    set_app_var   link_library    "*  $target_library  $ADDL_LINK_LIBRARY_FILES"

    set_app_var   symbol_library   $SYMBOL_LIBRARY_FILES

    set_app_var   mw_reference_library   $MW_REFERENCE_LIB_DIRS

    set_app_var   mw_design_library    $MW_DESIGN_LIB

    get_app_var   -list   -only_changed_vars   *

#如果存在Milkyway design庫,那就不創建;否則創建Milkyway design庫

  if {![file  isdirectory  $mw_design Jibrary ]} {

    create_mw_lib  -technology  $TECH_FILE  -mw_reference_library  $mw_reference_library  $mw_design_library

  }

  open_mw_lib  $mw_design_library

  check_library

  set_tlu_plus_tiles  -max_tluplus  $TLUPLUS_MAX_FILE  -tech2itf_map  $MAP_FILE

  check_tlu_plus_files

  history  keep  200

  set_app_var  alib_library_analysis_path   ../ ;  # ALIB files

  define_design_lib   WORK   -path   ./work

  set_svf    

  set_app_var   sh_enable_page_mode   false

  suppress_message   {LINT-28   LINT-32   LINT-33   UID-401}

  set_app_var  alib_library_analysis_path   [get_unix_variable   HOME]

  alias  h   history

  alias  rc 「report_constraint   -all_violators」

 

 

6、DC的啟動方式(舉例)

    $dc_shell   -topographical  #交互式啟動

    dc_shell-topo>  start_gui   #啟動圖形化界面

    dc_sheli-topo>  stop_gui   #停止圖形化界面

    $design_vision  -topographical  #啟動圖形化界面的同時,調用拓撲模式

    $dc_shell  -topo  -f dc.tcl  | tee -i dc.log  #批處理模式

 

 

7、讀入設計

有下面這些讀入情況:

    ·read_db library_file.db

    ·read_verilog  {A.v  B.v   TOP.v}

    ·read_sverilog  {A.sv  B.sv  TOP.sv}

    ·read_vhdl   {A.vhd  B.vhd  TOP.vhd}

    ·read_ddc   MY_TOP.ddc

    ·analyze  -format  verilog  {A.v  B.v  TOP.v}

      elaborate  MY_TOP  -parameters 「A_WIDTH=8, B__WIDTH=16」

然後是讀入設計後的一些必要操作:

  設置頂層設計:

    current_design   MY_T0P

  檢查是否缺失子模塊:

    link

  檢查設計:

    if {[check_design] ==0} {

      echo 「Check Design Error」

      exit  #檢查出錯,退出DC

    }

  寫出讀入後的未映射設計:

  write_file  -f  ddc  -hier  -out  unmappedd/TOP.ddc

 

8、(環境、設計、時序等的)檢查和移除

      reset_design

      report_clock

      report_clock  -skew  -attr

      report_design

      report_port -verbose

      report_path_group

      report_timing

      report_timing_requirements  -ignored

      report_auto_ungroup

      report_interclock_relation

      check_timing

      reset_path  -from  FF1_reg

      remove_clock

      remove_clockJransition

      remove_clock_uncertainty

      remove_input_delay

      remove_output_delay

      remove_driving_cell

      list_libs

      redirect  -file  reports/lib.rpt {report_lib}

      report_hierarchy [-noleaf]

      # Arithmetic implementation and resource-sharing info

      report_resources

      # List area for all cells in the design

      report_cell  [get_cells  -hier  *]

      check_design

      check_design -html check_design.html

      sh firefox check_design.html

      report_constraint  -all_violators

      report_timing  [ -delay]

              [ -to]

              [ -from]

              [ -through]

              [ -group]

              [ -input__pins ]

              [ -max_paths]

              [ -nworst]

              [ -nets ]

              [ -capacitance ]

              [ -significant_digits]

      report_qor

      report_area

      report_congestion

 

9、約束的設置和執行

·預算估計:

如果實際輸出負載值未知,則用於「負載預算」。找到庫中最大的max_capacitance值,並將該值作為保守的輸出負載。

    set LIB_NAME ssc_core_slow

    set MAX_CAP 0

    set OUTPUT_PINS [get_lib_pins  $LIB_NAME/*/* \

    -filter "direction == 2"]

    Foreach_in_collection  pin  $OUTPUT_PINS {

      set  NEW_CAP  [get_attribute  Spin  max_capacitance]

      if {$NEW_CAP > $MAX_CAP} {

        set MAX_CAP  $NEW_CAP

      }

     }

    set_load  $MAX _CAP  [all_outputs]

·普通的約束:

    reset_design

############# CLOCKS###################

# 默認情況下,每一個時鐘都只對於一個時鐘,除非設置下面的命令為真:

    set_app_var  timing_enable_multiple_clocks_per_reg  true

#下面是時鐘建模的例子:

    create_clock -period 2 -name  Main_Clk [get_ports Clk1]

    create_clock -period 2.5 -waveform {0 1.5} [get_ports Clk2]

    create_clock -period 3.5 -name V_Clk; # 這是虛擬時鐘

    create_generated_clock -name DIV2CLK -divide_by2  -source  [get_ports Clk1] [get_pins I_DIV__FF/Q]

    set_clock_uncertainty -setup 0.14 [get_clocks *]

    set_clock_uncertainty -setup 0.21 -from [get_clocks Main_Clk] -to [get_clocks Clk2]

    set_clock_latency -max 0.6 [get_clocks Main_Clk] ; # 這是版圖之前的時鐘情況

    set_propagated__clock  [all_clocks]; # 這是時鐘樹綜合後的情況

    set_clock_latency  -source -max 0.3 [get_clocks Main_Clk]

    set_clock_transition  0.08  [get_clocks Main_Clk]

############# CLOCK TIMING EXCEPTIONS ########

    set_clock_group  -logically_exclusive | -physically_exclusive | -asynchronous  -group CLKA -group CLKB

    set_false_path -from [get_clocks Asynch_CLKA] -to [get_clocks Asynch_CLKB]

    set_multicycle_path -setup 4 -from -from A_reg -through U_Mult/Out -to B_reg

    set_multicycle_path -hold 3 -from -from A_reg -through U_Mult/Out -to B_reg

    set_input_delay -max 0.6 -clock Main_Clk [alljnputs]

    set_input_delay -max 0.3 -clock Clk2 -clock_fall -add_delay [get_ports 「B  E」]

    set_input_delay  -max 0.5 -clock -network_latency_included V_Clk [get_ports 「A  C  F」]

    set_output_delay -max 0.8 -clock -source_latency_included Main_Clk [all__outputs]

    set_output_delay -max 1.1 -clock V_Clk [get_ports 「OUT2  OUT7]

################ ENVIRONMENT ######################

    set_max_capacitance 1.2 [alljnputs]; # (這是用戶自定義的設計規則約束)

    set_load 0.080  [all_outputs]

    set_load [expr [load_of slow_proc/NAND2_3/A] * 4] [get_ports OUT3]

    set_load 0.12 [all_inputs]

    set_input_transition 0.12 [remove_from_collection [all_inputs][get_ports  B]]

    set_driving_cell -lib_cell FD1 -pin Q [get_ports B]

與物理設計有關的約束:

    create_bounds ...

    create_rp_groups...

    set_app_var placer_soft_keepout_channel_width...

    set_app_var placer_max_cell_density_threshold...

    set_congestion_options...

    setjgnoredjayers...

 

    set_aspect_ratio 0.5 # (高度和寬度的比值)

    set_utilization  0.7 #(利用率)

    set_placement_area  -coordinate  {0 0 600 400}

    create_die_area  -polygon {{0 0} {0 400} {200 400} {200 200} {400 200} {400 0} {0 0}}

    set_port_side {R} Port__N

    set_port_location -coordinate {0 40} PortA

    set_cell_location -coordinate {400 160} -fixed -orientation {N} RAM1

    create_placement_blockage -name Blockagel -coordinate {350 110 600 400}

    create_bounds -name 「b1」 -coordinate {100 100 200 200} INST_1

    create_site_row -coordinate {10,10} -kind CORE -space 5 -count 3 {SITE_ROW#123}

    create_voltage_area -name VA1 -coordinate {100 100 200 200} INST_1

    create_net__shape -type wire -net VSS -origin {0 0} -length 10 -width 2 -layer M1

    create_wiring_keepouts -name "my__keep1" -layer "METAL1" -coord {12 12 100 100}

    report_physical_constraints

    reset_physical_constraints

約束的執行:

    redirect -tee -file reports/precompile.rpt {source -echo -verbose TOP.con}

    redirect -append -tee -file reports/precompile.rpt {check_timing}

如果有直接的tcl約束,那麼直接約束:

    source

如果沒有的話,可以從物理設計中抽取:

    extract_physieal_constraints  

    read_floorplan   

 

 

10、綜合優化

路徑分組:

    group_path -name CLK1 -criticai_range<10% of="" clk1="" period="">-weight 5

    group_path -name CLK2 -critical_range<10% of="" clk2="" period="">-weight 2

    group_path -name INPUTS -from [alljnputs]

    group_path -name OUTPUTS -to [all_outputs]

    group_path -name COMBO -from [alljnputs] -to [all_outputs]

    set_fix_multiple_port_nets  -all  -buffer_constants

綜合時的選項:

# Licenses required to take advantage of all Design Compiler optimization

# features: DC-Ultra, DesignWare, DC-Extension (for DC-Graphical), DFTC

# Enable multi-core optimization, if applicable:

    set_host_options  -max_cores

    report_host__options

    remove_host_options

# 防止特定的子模塊被 ungrouped:

    set_ungroup   false

# 防止DesignWare層次結構被 ungrouped:

    set_app_var  compile_ultra_ungroup_dw  false

# 如果需要:禁用特定子設計的邊界優化:

    set_boundary_optimization   false

# 如果需要:從適應性重新定時中排除特定的單元/設計(-retime)(也就是放在某些模塊或者設計的寄存器被retime移動):

    set_dont_retime   true

# 如果需要:通過手動控制寄存器複製的個數

  #最大扇出的情況:

    set_register_replication [-num_copies 3 | -max_fanout 40]   [get_cells  B_reg]

# 如果需要:更改寄存器複製命名樣式:

    set_app_var  register_replication_naming_style  "%s_rep%d"

# 如果要求應用,那麼就要為測試準備的綜合選擇掃描寄存器,並且禁止自動地移位寄存器定義:

    set_scan_configuration -style

    set_app_var compile_seqmap_identify_shift_registers false

# 如果有要求保持流水線中的寄存器器輸出,就要進行約束:

    set_dont_retime   [get_cells  U_Pipeline/R12_reg*]  true

# 如果設計中包含有純的流水線設計,那麼可以進行寄存器retiming:

    set_optimize_registers  true  -design  My_Pipeline_Subdesign -clock CLK1 -delay_threshold

# 默認情況下,整個層次結構使用compile_ultra -spg進行擁塞優化,選擇性地禁用/啟用子設計上的擁塞優化:

    set_congestion_optimization  [get_designs A]  false

# 第一次編譯:根據需要啟用/禁用優化:

    compile_ultra -scan -retime -timing [-spg] \

            [-no_boundary] \

            [-no_autoungroup] \

            [-no_design_rule] \

                        [-no_seq_output_inversion]

#根據需要,更多地關注違規的關鍵路徑:

 group_path -name-from-to -critical range<10% of="" max="" delay="" goal="">-weight 5

# 執行增量編譯:

    compile_ultra -scan -timing -retime -incremental [-spg]

 

11、綜合後處理

    set_app_var verilogout_no_tri true

    change_names -rule verilog -hier

    write_file - f verilog -hier -out mapped/TOP.v

    write__file - f ddc -hier -out mapped/TOP.ddc

    write_sdc TOP.sdc

    write_scan_def -out TOP_scan.def

 最後附上兩張流程圖:

    

       

相關焦點

  • 電腦小白也需要知道的CMD常用命令總結
    下面就介紹一些「CMD 常用命令和操作」,可以作為小白入門或者備忘錄使用。如何打開 CMD 命令提示符窗口方法一:開始菜單 -> Windows 系統 -> 命令提示符。方法四:在資源管理器的地址欄輸入 cmd 並回車,cmd 打開後會自動定位到當前目錄。方法五:右鍵點擊開始菜單的 Win 圖標 -> 命令提示符。每條命令輸入後,回車運行。命令正確則執行完畢後回到 > 狀態;命令錯誤返回錯誤信息。
  • Git 中常用的 4 個命令
    使用 Git 進行版本管理時,肯定不只做提交,有時候也會需要回退修改,並且在回退的基礎上進行重新提交,這時候有幾個常用的命令就需要用到了
  • linux中的14個top命令示例
    按 (Shift+O) 通過欄位字母對欄位進行排序,例如按 a 用 PID 對進程進行排序的字母 (Process ID)。使用top對進程 ID 進行排序鍵入任意鍵以返回到已排序的主窗口PID順序如下圖所示。按 q 退出退出窗口。排序進程 ID3. 顯示特定用戶進程使用帶有u選項的top命令將顯示特定User過程細節。
  • Docker命令大全及Dockerfile詳解(附示例)
    Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發布到任何流行的 Linux或Windows 機器上,也可以實現虛擬化
  • Windows常用cmd命令總結
    cmd是command的縮寫,即命令提示符。
  • Linux常用命令 & 實用命令萬字總結
    catcat,又是一個相對高頻率的命令。比較官方的說法是命令用於連結文件並列印到標準輸出設備上。這個文本輸出命令可以用來查看文件內容,創建內容等,下面我們介紹幾個比較實用的用法。命令格式 : cat [選項]... [文件]...
  • Wireshark常用命令總結
    方法4:在TCP 頭部,通過右鍵單擊stream index 欄位並選擇Apply as Filter 命令命令總結捕獲過濾命令捕獲過濾器僅支持協議過濾。udp src port 67 and udp dst port 68: 捕獲來自埠號為67, 目標埠號為68 的所有UDP 數據(典型的DHCP 伺服器到DHCP 客戶端的數據)。4. IP位址範圍過濾命令net 192.168.0.0/24:捕獲到達/來自192.168.0.0網絡中任何主機的數據。
  • 1000+ 常用的 Linux 命令來襲
    咱言歸正傳,Linux中的命令大致分為兩類:內部命令和外部命令。內部命令也稱shell內嵌命令,這些命令是寫在bash源碼的builtins裡面的,由shell 程序識別並在 shell 程序內部完成運行,通常在 Linux 系統加載運行時 shell 就被加載並駐留在系統內存中,不需要臨時去磁碟加載命令。
  • Docker小白到實戰之常用命令演示,通俗易懂
    ,這裡先從常用命令說起,來吧,小夥伴們。2. 常用命令實操2.1 全局命令docker version:查看docker版本信息。;2.2 鏡像常用命令鏡像(image)可以理解為一種輕量級、可獨立運行的軟體包,包含了應用程式及其他運行需要的基礎設施,如運行時、配置文件、依賴的庫等,所以沒有鏡像就沒法啟動容器;就好比開發中沒有類(class),又怎麼去根據類創建實例呢。
  • Docker命令大整理,附示例!
    沒有示例的命令,將 container_name/image_name進行對應替換.docker中有REPOSITORY, TAG, IMAGE,CONTAINER的概念docker命令中的鏡像名,容器名 支持使用Tab鍵進行聯想1 Docker容器 docker中默認的命令是對容器進行操作 ,現在看到容器相關的命令是默認沒有container的。
  • Linux教程系列:Linux 中的 Watch 命令示例
    點擊上方藍字 ● 關注Linux公社 在本指南中,我們將使用易於理解的示例討論 watch 命令的一些基本功能。
  • Liunx 常用命令
    切換到根目錄    cd /usr     切換到根目錄下的usr目錄    cd ../        切換到上一級目錄 或者  cd ..    cd ~         切換到home目錄    cd -          切換到上次訪問的目錄7、目錄查看 ls    命令:ls [-al]    ls               查看當前目錄下的所有目錄和文件    ls -a           查看當前目錄下的所有目錄和文件(包括隱藏的文件)
  • MySQL 入門常用命令大全
    每次使用 quit 退出 mysql 交互模式時,會將交互過程中的所有命令操作一次性寫入 /root/.mysql_history 這個隱藏文件中。下次一登錄 mysql 時,可以使用鍵盤的向上鍵獲取歷史命令。類似於shell獲取歷史命令。
  • docker容器化實戰(常用命令實踐)
    <missing>           6 days ago          /bin/sh -c #(nop) ADD file:3e663b99b5cb560010   1.143 MB鏡像的實現原理Docker 使用Union FS 將這些不同的層結合到一個鏡像中去
  • Linux伺服器常用命令
    編輯模式下常用命令:            【1】ESC 退出編輯模式到命令行模式;      3) 底行模式(last line mode)         將文件保存或退出vi,也可以設置編輯環境,如尋找字符串、列出行號……等。
  • linux應急常用命令+技巧總結
    ps aux --sort=pcpu | head -10 # 查看cpu佔用率前十的進程,有時候可以發現top發現不了的東西netstat -anpl  # 檢查當前存在的連接與監聽埠ps -ef #查看當前系統上運行的所有進程與其使用的命令w # 查看活動用戶who # 查看當前登錄用戶(tty 本地登陸  pts 遠程登錄) /var/log/utmp
  • Linux xxd命令入門示例教程
    尋找可以執行此操作的命令行實用程序? 那,你很幸運,因為存在一個名為xxd的命令可以為你做到這一點。 在本教程中,我們將使用一些易於理解的示例來討論xxd。 但在我們這樣做之前,值得一提的是這裡的所有例子都是在Ubuntu 18.04 LTS機器上測試過的。xxd 命令可以將指定文件或標準輸入以十六進位轉儲,也可以把十六進位轉儲轉換成原來的二進位形式。
  • Vulnhub靶機DC系列-DC4
    : 1 hopService Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelTRACEROUTEHOP RTT     ADDRESS1   1.26 ms 192.168.44.136
  • linux常用命令匯總
    這三種模式的作用分別是:命令模式:用戶啟動 vi/vim,便進入了命令模式。以下是進入命令模式常用的幾個命令:i 切換到輸入模式,以輸入字符。x 刪除當前光標所在處的字符。: 切換到底線命令模式,以在最底一行輸入命令。若想要編輯文本:啟動Vim,進入了命令模式,按下i,切換到輸入模式。
  • Linux cp 命令的15個示例 - 創建文件和目錄的副本
    在Linux系統下,我們可以用cp命令來實現。copy 命令是什么正如我們在上文提到的,cp是一個用來創建文件和目錄副本的命令。在這裡我們提供了一些在日常操作中可能用到的cp命令的實例。1. 不帶任何參數下,運行cp這是 cp 命令最基礎的使用。