整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Apache Groovy 運行 Shell 命令

          Apache Groovy 運行 Shell 命令

          . 問題描述

          大多數的Linux和Unix系統、及其他類Unix系統中,Shell是用戶與操作系統內核交互的主要方式。作為一種強大的命令行解釋器,它也支持編程功能,用戶可以寫腳本來處理各種任務。無論你是新手還是專業人士,掌握Shell命令都是必不可少的技能。在這篇文章中,我將逐個解讀和展示Shell腳本中最常用的100個命令,并為每個命令提供實際的例子。


          目錄

          • 文件操作命令
          • 搜索命令
          • 目錄操作命令
          • 權限操作命令
          • 網絡操作命令
          • 進程和系統控制命令
          • 文本操作命令
          • 壓縮與解壓命令
          • 磁盤使用管理命令
          • 包管理命令
          • 進程管理命令
          • 環境變量命令
          • 系統信息發布命令
          • 系統控制命令
          • 文本編輯命令
          • 其他有用命令

          文件操作命令

          以下是在Linux系統中操作文件的一些常用命令:

          1. ls:列出目錄的內容
          ls /home
          
          1. cd:改變目錄
          cd /home/user/Documents
          
          1. pwd:打印當前工作目錄
          pwd
          
          1. cat:查看文件內容
          cat /etc/passwd
          
          1. more:分頁查看文件內容
          more /var/log/syslog
          
          1. less:反向分頁查看文件內容
          less /var/log/syslog
          
          1. touch:創建一個空文件或更改文件的訪問和修改時間
          touch /home/user/newfile.txt
          
          1. cp:復制文件或目錄
          cp /home/user/file.txt /home/user/Documents
          
          1. mv:移動或重命名文件或目錄
          mv /home/user/file.txt /home/user/Documents/newfile.txt
          
          1. rm:刪除文件或目錄
          rm /home/user/unwantedfile.txt
          
          1. find:在文件系統中搜索文件或目錄
          find / -name "*.log"
          
          1. grep:在文件中搜索具有特定模式的行
          grep "error" /var/log/syslog
          
          1. head:輸出文件的開始部分
          head -n 10 /var/log/syslog
          
          1. tail:輸出文件的尾部
          tail -n 20 /var/log/syslog
          
          1. sort:對文本文件的行進行排序
          sort /etc/passwd
          
          1. wc:計算字數、行數和字節數
          wc /var/log/syslog
          
          1. cut:從文件的每一行中剪切字節、字符和字段
          cut -d: -f1 /etc/passwd
          
          1. nano,vi,emacs:常用的文本編輯器
          nano /home/user/file.txt
          vi /home/user/file.txt
          emacs /home/user/file.txt
          
          1. paste:合并文件的行。
          paste file1.txt file2.txt
          

          搜索命令

          以下命令可以幫助你搜索文件或文本:

          1. find:在文件系統中搜索文件或目錄。
          find / -name "*.log"
          
          1. grep: 在文本文件中搜索決定的文本模式。
          grep "error" /var/log/syslog
          
          1. locate: 基于文件名在數據庫中快速找到文件。
          locate myFile.txt
          
          1. which: 返回可執行文件的路徑。
          which java
          
          1. ack:特別為程序員設計的一款文件搜索工具。默認會忽略多數版本控制文件夾(如.git, .svn等)的內容。
          ack "your_search_term"
          
          1. ag(The Silver Searcher):比ack更快的代碼搜索工具,同樣默認忽略 .git 等版本控制文件夾中的內容。
          ag "your_search_term"
          
          1. whereis:此命令可用于查找二進制程序、源文件、手冊頁以及其他文件的位置。
          whereis ls
          
          1. type:此命令用于確定某個命令是內部 shell 命令、可執行文件還是別名。
          type pwd
          
          1. apropos:如果你只記得關于某個命令的部分信息,你可以使用 apropos 命令來搜索幫助手冊中的命令描述。
          apropos partition
          
          1. alias:如果你經常使用某些 Linux 命令,你可以使用 alias 命令為這些常用命令創建一個短名,以提升你的工作效率。
          alias l='ls -al'
          

          目錄操作命令

          以下是在Linux系統中操作目錄的一些常用命令:

          1. mkdir:創建一個新的目錄
          mkdir /home/user/new_directory
          
          1. rmdir:刪除一個空目錄
          rmdir /home/user/empty_directory
          
          1. tree:以樹形結構列出目錄的內容
          tree /home/user/
          
          1. du:估計文件和目錄的磁盤使用空間
          du -sh /home/user/Documents
          
          1. df:顯示磁盤使用空間
          df -h
          

          權限操作命令

          在Linux系統中,文件和目錄的訪問可以通過權限操作命令進行控制:

          1. chmod:更改文件或目錄的權限
           chmod 755 /home/user/file.txt
          表示設置文件的主用戶有讀,寫和執行權限(rwx=7),同組的用戶和其他用戶有讀和執行權限(rx=5)。
          
          1. chown:更改文件或目錄的所有者和所屬的組
          chown newuser:newgroup /home/user/file.txt
          表示將/home/user/file.txt的所有者更改為newuser,所屬的組更改為newgroup。 
          
          1. chgrp:更改文件或目錄的所屬組
          chgrp newgroup /home/user/file.txt
          表示將/home/user/file.txt的所屬的組更改為newgroup。
          

          網絡操作命令

          以下是在Linux系統中與網絡相關的一些常用命令:

          1. ping:發送網絡請求以測試網絡連接
          ping www.google.com
          
          1. ifconfig:顯示或配置網絡接口
          ifconfig eth0
          
          1. netstat:顯示網絡連接、路由表等網絡狀態信息
          netstat -ntlp
          
          1. ssh:遠程登錄或執行遠程命令
           ssh user@remote_host
          
          1. scp:在本地和遠程系統之間安全地復制文件
          scp /path/to/file user@remote_host:/remote/path/
          
          1. curl:獲取網絡資源
          curl www.google.com
          
          1. telnet:遠程登錄工具
           telnet remote_host 23
          
          1. nslookup:查詢 DNS 名稱服務器的記錄
          nslookup www.google.com
          
          1. ftp:在本地主機和FTP服務器之間建立FTP連接。
          ftp ftp_server
          
          1. wget:獲取網絡資源
          wget www.google.com -o google.html 
          

          進程和系統控制命令

          以下是在Linux系統中管理進程和控制系統的一些常用命令:

          1. ps:顯示當前進程的狀態
          ps aux
          
          1. top:動態顯示運行中的進程
          2. kill:發送信號以終止進程
          kill 1234
          
          1. shutdown:關閉機器
           shutdown -h now
          
          1. reboot:重啟機器
          2. logout:退出登錄會話

          文本操作命令

          在編寫或處理文本文件時,下列命令可以幫助你完成各種復雜任務:

          1. echo:打印信息到終端。
          echo "Hello, World!"
          
          1. printf:格式化并打印信息。
          printf "Name: %s\nAge: %d\n" "Alice" 20
          
          1. sed:流編輯器,用于對文本文件進行特定的行處理和替換。
          echo "Hello, World!" | sed 's/World/Shell/g'
          
          1. awk:在文本文件中進行模式掃描和處理語言。
          echo -e "name\tage\nAlice\t20\nBob\t22" | awk '{if ($2 >=21) print $1}'
          

          壓縮與解壓命令

          以下命令主要用于管理和操作文件壓縮及解壓:

          1. tar:創建、展開及管理tar包。
          tar -cvf archive.tar folder
          
          1. gzip:用于文件壓縮或解壓。
          gzip file
          
          1. gunzip:用于解壓gzip壓縮的文件。
          gunzip file.gz
          
          1. zip/unzip:創建和解壓zip格式的壓縮包。
          zip -r archive.zip folder
          unzip archive.zip
          

          磁盤使用管理命令

          管理和查看磁盤使用情況:

          1. df:報告文件系統磁盤空間使用情況。
          df -h
          
          1. du:估計并報告文件及文件夾的磁盤使用情況。
          du -sh folder
          
          1. fdisk:對磁盤進行分區管理。
          sudo fdisk -l
          
          1. hdparm:查看或修改SATA/ATA磁盤參數。
          sudo hdparm -i /dev/sda
          

          包管理命令

          在Debian,Ubuntu及其他基于Debian的系統中,可以使用以下命令進行軟件包管理:

          1. apt-get:APT包處理工具,用于處理包。
          sudo apt-get install package
          
          1. dpkg:Debian包管理器。
          sudo dpkg -i package.deb
          

          在RedHat, CentOS及其他基于RPM的系統中,可以使用以下命令進行軟件包管理:

          1. yum:高級軟件包管理器,用于處理rpm包。
          sudo yum install package
          
          1. rpm:RPM包管理器。
          sudo rpm -i package.rpm
          

          進程管理命令

          查看和管理正在運行的進程:

          1. ps:報告進程當前狀態。
          ps aux
           USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 
          root 1 0.0 0.4 225848 7836 ? Ss Nov10 4:05 /lib/systemd/systemd --system --deserialize 39 
          root 2 0.0 0.0 0 0 ? S Nov10 0:00 [kthreadd] 
          root 4 0.0 0.0 0 0 ? I< Nov10 0:00 [kworker/0:0H]
          
          1. top:動態顯示當前耗費系統資源最多的進程。
          2. htop:比top更友好的動態進程查看工具。
          htop
          
          1. kill: 終止或者發送一個信號到指定進程。
          2. pkill:條件地終止或者發送一個信號到指定進程。
          pkill process_name
          

          環境變量命令

          查看或設置環境變量:

          1. env:顯示當前所有的環境變量。
          輸入:env
          輸出:
              PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
              SHELL=/bin/bash
              PWD=/home/user
          
          1. set:顯示當前shell所有的環境變量及函數。
           輸入:set
          輸出:展示所環境變量以及函數
          
          1. export:設置或顯示環境變量。
          輸入:
          export VARName="Value"
          echo $VARName
          輸出結果:
          Value
          

          系統信息發布相關命令

          有時,你可能想要查看有關你的系統或硬件的信息。以下命令可以幫助你做到這一點:

          1. uname:會打印操作系統的名稱。
          輸入:
          uname
          輸出:
          Linux
          
          1. hostname:打印系統的主機名。
          輸入:
          hostname
          輸出:
          myhostname
          
          1. dmesg:打印或控制內核環形緩沖區。
          輸入:
          dmesg | less
          
          1. df:展示文件系統的磁盤空間使用情況。
           輸入:df -h
          輸出:
              Filesystem      Size  Used Avail Use% Mounted on
              udev            962M     0  962M   0% /dev
              tmpfs           200M  4.3M  196M   3% /run
              /dev/sda1        30G  4.7G   24G  17% /
          
          1. free:展示系統中未使用和已經使用的物理和swap內存。
          輸入:free -h
          輸出:
                            total        used        free      shared  buff/cache   available
              Mem:           3.8G        487M        1.9G        122M        1.4G        3.0G
              Swap:            0B          0B          0B
          
          1. uptime:展示系統已經運行了多久,有多少用戶正在登錄,以及系統負載。
          輸入:uptime
          輸出:    16:14:30 up 43 min,  1 user,  load average: 0.34, 0.36, 0.40
          
          1. last:查看系統的重啟和關機記錄。
          輸入:last reboot
          
          1. w: 展示哪些用戶正在登錄。
          輸入:w
          輸出:    16:17:51 up  1:42,  1 user,  load average: 0.45, 0.47, 0.38
              USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
              user     tty1                      14:36    1:42m  1.55s  0.06s w
          
          1. who:展示哪些用戶正在登錄,和w命令相似但信息更少。
          輸入:who
          輸出:    user     tty1         2022-01-28 14:36
          
          1. id:展示當前用戶的UID、GID以及所在的組。
           輸入:id
           輸出:uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
          

          系統控制命令

          在一些特殊情況下,你可能需要進行一些系統控制操作。以下命令可以幫助你做到這一點:

          1. halt:關機。
          輸入:sudo halt
          
          1. reboot:重啟系統。
          輸入:sudo reboot
          
          1. shutdown:關機或者重啟,和上述兩個命令一樣,但是提供更多的選項。
          關閉系統:sudo shutdown -h now
          重啟系統:sudo shutdown -r now
          
          1. passwd:更改用戶密碼。
          更改密碼:passwd
          

          文本編輯器命令

          Linux提供了多種命令行文本編輯器。以下這些可能是你需要知道的:

          1. vi/vim:vi是一個文本編輯器,而vim是vi的改進版,提供了更多的功能。
          2. nano:一個簡單易用的命令行文本編輯器。
          3. emac:一個強大的文本編輯器,也是一個定制化的計算環境。

          其他常用命令

          1. man:查看命令的幫助文檔。
          2. whatis:顯示一個命令的簡單描述。
          輸入:whatis ls
          輸出:    ls (1)               - list directory contents
          
          1. whereis:查找命令的二進制文件、源文件及幫助文檔位置。
          輸入:whereis ls
          輸出:    ls: /bin/ls /usr/share/man/man1/ls.1.gz
          
          1. which:查找并顯示給定命令的完整路徑。
           輸入:which ls
          輸出:/bin/ls
          
          1. whoami:打印當前有效的用戶名。
          輸入:whoami
          輸出:user
          
          1. date:顯示或設置系統日期和時間
          輸入:date
          輸出: Tue Dec 21 02:16:12 UTC 2021
          
          1. cal:顯示日歷
          輸入:cal
          輸出:
                 January 2022      
              Su Mo Tu We Th Fr Sa  
                                1  
              2  3  4  5  6  7  8  
              9 10 11 12 13 14 15  
              16 17 18 19 20 21 22  
              23 24 25 26 27 28 29  
              30 31                 
          
          1. alias:創建命令別名
          2. unalias:刪除別名
          3. history:顯示命令歷史
          4. clear:清除屏幕或窗口內容
          5. watch:用于實時查看當前命令打印信息
          輸入:watch -n 2 date
          解釋:watch`命令會每2秒運行一次`date`命令,并實時顯示輸出
          

          大多數人學習Shell腳本的最大動力是提高效率。使用Shell腳本,你可以編寫一個任務,然后讓計算機去做,而你可以去忙其他的事情;你可以編寫一個任務,讓計算機重復執行,而不需要你每次在命令行手動輸入;你可以更靈活地處理任務,比如管理用戶,管理程序等。就這樣,Shell腳本賦予你控制計算機的能力,在你的指尖下,一切盡在掌握。

          在未來,實踐未知,探索無限,最好的方式是動手試試看,愿這完整的100個命令清單能夠成為你在Linux世界里的指南針!掌握Shell命令并利用它們來編寫腳本能夠極大地提升你的工作效率,無論是進行系統管理還是進行程序設計,這都是一種強大的工具。善用它,享受編程帶給你的樂趣吧!

          hell腳本是一個命令語言,面向的是操作系統執行。如果寫過shell腳本的話,應該體會過編寫過程的痛苦。因為shell并不是一個編程語言,并不支持常見的數組,JSON等數據結構,也不支持面向對象編程的開發方法,因此對開發人員很不友好。

          目前針對這種情況,大家一般會用shell調用node執行JS腳本,真正的處理邏輯放在JS腳本中處理。現在谷歌推出了 ZX NPM包,它能夠用JS編寫shell腳本。


          那如何使用呢?


          1.全局安裝zx

          npm install -g zx

          安裝完后,在終端中輸入 zx 命令檢查安裝是否成功。

          2.創建一個簡單的腳本

          新建zx腳本文件:test.mjs

          #!/usr/bin/env zx
          const branch=await $`git branch --show-current`
          console.log(`Current branch: ${branch}`)

          第一行是指定腳本的執行器。

          $ 是內置的函數,能夠執行命令并配合 await 返回執行結果。其他的寫法都和JS毫無差別。

          3.執行腳本

          zx ./test.mjs

          或者:

          chmod +x ./test.mjs
          ./test.mjs

          控制臺就會輸出當前的分支。

          上面只是小試牛刀,zx 的強大遠不止如此。由于 zx 在內部實現了 Bash 的解釋器,所以可以執行全部的shell命令。另外 zx 還內置很多nodejs模塊,比如 fs, os,fetch等。所以可以直接在腳本中使用這些模塊。

          另外作為TS編寫的庫,全部的JS語法都能夠支持。包括但不限于 數組,Promise,class等。

          下面再舉一個例子:

          let resp=await fetch('http://wttr.in')
          if (resp.ok) {
            console.log(await resp.text())
          }
          
          let hosts=[...]
          await Promise.all(hosts.map(host=>
            $`rsync -azP ./src ${host}:/var/www`  
          ))
          
          try {
            await $`exit 1`
          } catch (p) {
            console.log(`Exit code: ${p.exitCode}`)
            console.log(`Error: ${p.stderr}`)
          }


          總結一下,zx 的最大優點是結合了Bash和JavaScript,解決了shell腳本復雜邏輯編程的問題。同時也讓對shell不熟悉的開發者也能用JS完成shell腳本的開發,而且更加靈活高效。


          如果你還有更多問題,可以參考NPM倉庫 zx 包的介紹,或者訪問其github地址。

          歡迎幫忙點贊,評論,轉發~


          主站蜘蛛池模板: 亚洲第一区二区快射影院| 一区二区三区福利| 国产在线一区二区杨幂| 国产成人久久精品一区二区三区| 精品在线视频一区| 无码日本电影一区二区网站| 亚洲一区中文字幕| 天堂资源中文最新版在线一区| 一区二区视频免费观看| 国产大秀视频一区二区三区 | 精品香蕉一区二区三区| 久久久国产一区二区三区| 国模极品一区二区三区| 亚洲综合无码一区二区| 三上悠亚一区二区观看| 一区二区网站在线观看| 国产suv精品一区二区6| 欧洲精品码一区二区三区免费看| 日本一区二区三区精品视频| 国产肥熟女视频一区二区三区| 人妻精品无码一区二区三区| 亚洲AV成人一区二区三区在线看 | 国产福利精品一区二区| 久久婷婷色综合一区二区| 精品视频一区二区三区| 激情综合一区二区三区| 久久精品一区二区东京热| 无码人妻精品一区二区三区东京热| 久久人妻av一区二区软件| 中文字幕在线一区二区在线 | 亚洲国产国产综合一区首页| 色欲综合一区二区三区| 成人免费观看一区二区| 秋霞日韩一区二区三区在线观看| 婷婷亚洲综合一区二区| 久久国产午夜精品一区二区三区 | 国产成人免费一区二区三区| 一区二区高清在线| 无码一区二区三区| 中文字幕av人妻少妇一区二区| 亚洲AV无码一区二区三区鸳鸯影院|