2-命令行入門

来源:https://www.cnblogs.com/rongyupan/archive/2019/09/14/11520730.html
-Advertisement-
Play Games

2 命令行入門 2019.9.14 五大命令行工具 二進位可執行文件 shell內置命令 解釋性腳本 shell函數 別名 1. shell函數 shell函數就是由shell自己執行的函數,在我們這裡就是由 Bash 執行的函數 我們定義了一個 fac() 函數,使用 seq 生成一串數字,用 p ...


2-命令行入門

2019.9.14

五大命令行工具

  • 二進位可執行文件
  • shell內置命令
  • 解釋性腳本
  • shell函數
  • 別名
  1. shell函數
$ fac() { (echo 1; seq $1) | paste -s -d\* | bc}

$ fac 5
120
  • shell函數就是由shell自己執行的函數,在我們這裡就是由 Bash 執行的函數
  • 我們定義了一個 fac() 函數,使用 seq 生成一串數字,用 paste 函數將這些數字放到一行中並用 * 分隔開,然後將這個等式傳給 bc,由它求值並顯示結果
  • 文件 ~/.bashrc 是 Bash 的配置文件,所有的 shell 函數皆可在此定義,這樣的好處是 shell 函數隨時可用
  1. 別名
$ alias l = 'ls -1 --group-directories-first'
  • 別名沒有參數,所以 fac() 這樣的函數不能用別名定義。
  • 別名能減少敲擊鍵盤的次數;
  • 別名經常是在 '.bashrc' or '.bash_aliases' 配置文件中定義
  • 不帶參數運行 alias 即可查看所有的參數的別名。一般 ubuntu 上的預設別名有以下幾個,不得不說,不看一下還是真的不知道

    $alias
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l='ls -CF'
    alias la='ls -A'
    alias ll='ls -alF'
    alias ls='ls --color=auto'
  1. type -a 用法
$ type -a cd
cd is a shell builtin

$type -a fac
fac is a function
fac () 
{ 
    ( echo 1;
    seq $1 ) | paste -s -d\* | bc
}

命令行工具的組合--管道組合

  • 將一個工具的輸出傳遞給下一個工具,這樣可以幾乎沒有限制的不斷傳遞
$ seq 30 | grep 3
3
13
23
30
# 生成1-30的序列傳給 grep,篩選出含有3的元素顯示
# grep: 篩選元素

$ seq 30 | grep 3 | wc -l
4

# 在上一步的基礎上統計行數
# wc: 計數功能;參數 -l 只輸出行數量

輸入和輸出重定向

  • 管道中最後一個命令行工具是輸出到終端,我們也可以將其保存到文件中;
# 我們在當下目錄下新建文件 test
$ seq 1 > test
$ cat test
1
# 用序列1 覆蓋test文件

$ seq 3 >> test
$ cat test
1
1
2
3
# 在test文件末尾加上序列3

$ echo -n "hello" > test
$ cat test
hello$...
# echo -n:就像上面的效果,hello 之後緊接著就是下一個 bash 語句

$ echo "hello" > test
$ cat test
hello
$ ...
# 沒有參數 -n,hello後面相當於有個 \n;
# 同樣的,> 和 >> 的區別在於覆蓋還是在末尾添加

$ echo "hello, world" >> test
$ cat test
hello
hello, world

$ cat test | wc -w
3
# 使用管道組合,wc -w 這個參數表示只統計單詞數量
# 這條語句也有很多的等價寫法:
$ < test wc -w
3
$ wc -w test
3 test
# 這些等價寫法的好處在於不進行額外的進程

處理文件

  • mv
  • cp
  • mkdir

  • 以上所有命令都可以加參數 -v(verbose 詳細),讓工具輸出正在進行的操作
  • 除了 mkdir 都可以加 -i(interactive 交互),能讓工具向你確認請求

尋求幫助

  • man (manual)
  • help
  • tool -h / --help
$ man cat
# 輸出不止一頁,所以我們可以控制頁面寬度

$ man cat | head -n 20
# 只輸出前20行,也可以用fold;將較長的行變為80字元長度
$ man cat | fold

# 使用 help 可以查看 shell內置命令
$ help cat | head -n 20

# 第三方工具可以使用 -h 查看自帶的幫助信息
$ java -h 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • from django.shortcuts import render,redirect # Create your views here. import datetime def login(request): print("COOKIES",request.COOKIES) print("SES... ...
  • springboot里連接elk里的logstash,然後寫指定index索引的日誌,而之後使用kibana去查詢和分析日誌,使用elasticsearch去保存日誌。 添加引用 添加配置 指定配置 logstash配置索引 kibana里建立索引 通過kiban菜單去建立索引:Management ...
  • [TOC] 1. C與C++的關係 C++繼承了所有的C特性 C++在C的基礎上提供了更多的新的語法和特性 C++的設計目標是運行效率與開發效率的統一,其開發效率高於C語言 2. 變數聲明與定義 變數可以在使用時定義 C++更強調語言的實用性,所有的變數都可以在需要使用時再定義 C語言中的變數必須在 ...
  • 之前我們說網站反爬蟲的一個常用方法是檢測ip,限制訪問頻率。所以我們要通過設置代理ip的辦法繞過這個限制。有不少提供免費代理ip的網站,像https://www.xicidaili.com/nt/,我們可以從網站上拿到很多代理ip。但是這些ip並不是每個都能用的,或者說,沒幾個能用的。 我們可以用b ...
  • 一、前言 對公司或者對個人來說,經過一段時間的沉澱之後,都會有一些框架或者模塊,為了對這些框架或者模塊進行更好的管理和維護,也為了方便後面的開發或者其他同事,我們可以在我們本地或者內網搭建一個Nuget伺服器。當然也可以把相關的Package提交到Nuget官方上去,只是提交上之後,就相當於公開了。 ...
  • ​ 實際工作中,有時DataGrid控制項某一列顯示數據是從Enum集合裡面選擇出來的,那這時候設置列模版為ComboBox就能滿足需求。而關於顯示的實際內容,直接是Enum的string()返回值可能不太適合,這時候採用System.ComponentModel.Description是一個很好用的 ...
  • 一、前言 上一篇【分層架構設計】我們已經有了架構的輪廓,現在我們就在這個輪廓裡面造輪子。項目要想開始,肯定先得確定ORM框架,目前市面上的ORM框架有很多,對於.net人員來說很容易就想到以ADO.NET為基礎所發展出來的ORM框架EntityFramework。不得不說EntityFramewor ...
  • 一、前言 都說”不想做架構師的開發不是好前端“,”一千個讀者心中有一千個哈姆雷特“。我相信每個開發者心中,都有一個屬於自己的框架,所以今天我就給大家探討一下我心中的簡單分層架構設計。 在說分層架構設計之前,先說下我對架構設計的理解,不足之處還希望大神指點。《.NET應用架構設計》這本書裡面寫到:架構 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...