整合營銷服務商

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

          免費咨詢熱線:

          Linux查看文件大小5個常用命令

          關注本頭條號,每天堅持更新原創干貨技術文章。

          如需學習視頻,請在微信搜索公眾號“智傳網優”直接開始自助視頻學習

          1. 前言

          Linux 系統有非常好用的命令,功能也非常豐富,如果你對命令行工具熟悉,可以非常高效率完成維護工具。本文主要介紹Linux系統中,用于查看文件大小的命令。

          Linux 查看文件大小5個常用命令

          2. 使用stat命令查看

          stat命令一般用于查看文件的狀態信息。stat命令的輸出信息比ls命令的輸出信息要更詳細。

          oucanrong@zcwyou:~/iso$ stat ~/iso/CentOS-6.10-x86_64-minimal.iso 
          

          文件:/home/oucanrong/iso/CentOS-6.10-x86_64-minimal.iso

          大小:425721856 塊:831504 IO 塊:4096 普通文件

          設備:802h/2050d Inode:4471899 硬鏈接:1

          權限:(0664/-rw-rw-r--) Uid:( 1000/oucanrong) Gid:( 1000/oucanrong)

          最近訪問:2018-12-23 21:51:07.778850541 +0800

          最近更改:2018-12-21 15:24:14.446276453 +0800

          最近改動:2018-12-21 16:19:33.764230839 +0800

          創建時間:-

          可以看出文件大小為425721856字節。

          Linux使用stat命令查看文件大小

          3. 使用wc命令

          wc命令一般用于統計文件的信息,比如文本的行數,文件所占的字節數。

          oucanrong@zcwyou:~/iso$ wc -c ~/iso/CentOS-6.10-x86_64-minimal.iso
          

          425721856 /home/oucanrong/iso/CentOS-6.10-x86_64-minimal.iso

          4. 使用du命令

          du命令一般用于統計文件和目錄所占用的空間大小。

          oucanrong@zcwyou:~/iso$ du -h ~/iso/CentOS-6.10-x86_64-minimal.iso 
          

          407M /home/oucanrong/iso/CentOS-6.10-x86_64-minimal.iso

          5. 使用ls命令

          ls 命令一般用于查看文件和目錄的信息,包括文件和目錄權限、擁有者、所對應的組、文件大小、修改時間、文件對應的路徑等等信息。

          oucanrong@zcwyou:~/iso$ ls -lh ~/iso/ubuntu-18.04.1-live-server-amd64.iso 
          

          -rw-rw-r-- 1 oucanrong oucanrong 812M 12月 21 15:23 /home/oucanrong/iso/ubuntu-18.04.1-live-server-amd64.iso

          可以看出ubuntu-18.04.1-live-server-amd64.iso的大小為812M

          6. 使用ll命令(其實就是ls -l的別名)

          在大部分的Linux系統中,都已經設置了ls -l的別名為ll,所以并不存在ll的命令,ll只是一個別名命令而已。

          Linux使用ll命令查看文件大小

          oucanrong@zcwyou:~/iso$ ll -h ~/iso/ubuntu-18.04.1-live-server-amd64.iso
          

          -rw-rw-r-- 1 oucanrong oucanrong 812M 12月 21 15:23 /home/oucanrong/iso/ubuntu-18.04.1-live-server-amd64.iso

          可以看出目標文件的大小為812M。

          本文已同步至博客站,尊重原創,轉載時請在正文中附帶以下鏈接:

          https://www.linuxrumen.com/rmxx/903.html

          點擊了解更多,快速查看更多的技術文章列表。

          Vue 是一套用于構建用戶界面的漸進式框架

          • Vue 3.x 官方文檔 (cn.vuejs.org)
          • Vue Router 4.x 官方文檔 (router.vuejs.org)
          • Vue 2 備忘清單

          注意:Vue 3.x 版本對應 Vue Router 4.x 路由版本

          創建應用

          已安裝 16.0 或更高版本的 Node.js

          $ npm init vue@latest
          

          指令將會安裝并執行 create-vue,它是 Vue 官方的項目腳手架工具

          ? Project name: … <your-project-name>
          ? Add TypeScript? … No/Yes
          ? Add JSX Support? … No/Yes
          ? Add Vue Router for Single Page Application development? … No/Yes
          ? Add Pinia for state management? … No/Yes
          ? Add Vitest for Unit testing? … No/Yes
          ? Add Cypress for both Unit and End-to-End testing? … No/Yes
          ? Add ESLint for code quality? … No/Yes
          ? Add Prettier for code formatting? … No/Yes
          
          Scaffolding project in ./<your-project-name>...
          Done.
          

          安裝依賴并啟動開發服務器

          $ cd <your-project-name>
          $ npm install
          $ npm run dev
          

          當你準備將應用發布到生產環境時,請運行:

          $ npm run build
          

          此命令會在 ./dist 文件夾中為你的應用創建一個生產環境的構建版本

          應用實例

          import { createApp, ref } from 'vue'
          
          const app = createApp({
            setup() {
              const message = ref("Hello Vue3")
              return {
                message
              }
            }
          })
          app.mount('#app')
          

          掛載應用

          <div id="app">
            <button @click="count++">
              {{ count }}
            </button>
          </div>
          

          通過 CDN 使用 Vue

          <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
          <div id="app">{{ message }}</div>
          <script>
            const { createApp, ref } = Vue
            createApp({
              setup() {
                const message = ref("Hello Vue3")
                return {
                  message
                }
              }
            }).mount('#app')
          </script>
          

          使用 ES 模塊構建版本

          <div id="app">{{ message, ref }}</div>
          <script type="module">
            import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'
            createApp({
              setup() {
                const message = ref("Hello Vue3")
                return {
                  message
                }
              }
            }).mount('#app')
          </script>
          

          模板語法

          文本插值

          <span>Message: {{ msg }}</span>
          

          使用的是 Mustache 語法 (即雙大括號),每次 msg 屬性更改時它也會同步更新

          原始 HTML

          <p>Using text interpolation: {{ rawHtml }}</p>
          <p>Using v-html directive: <span v-html="rawHtml"></span></p>
          

          雙大括號{{}}會將數據解釋為純文本,使用 v-html 指令,將插入 HTML

          Attribute 綁定

          <div v-bind:id="dynamicId"></div>
          

          簡寫

          <div :id="dynamicId"></div>
          

          布爾型 Attribute

          <button :disabled="isButtonDisabled">
            Button
          </button>
          

          動態綁定多個值

          通過不帶參數的 v-bind,你可以將它們綁定到單個元素上

          <script setup>
            import comp from "./Comp.vue"
            import {ref} from "vue"
            const a = ref("hello")
            const b = ref("world")
          </script>
          
          <template>
            <comp v-bind="{a, b}"></comp>
          </template>
          

          如果你是使用的 setup 語法糖。需要使用 defineprops 聲名(可以直接使用a/b)

          const props = defineProps({
            a: String,
            b: String
          })
          

          使用 JavaScript 表達式

          {{ number + 1 }}
          {{ ok ? 'YES' : 'NO' }}
          {{ message.split('').reverse().join('') }}
          
          <div :id="`list-${id}`"></div>
          

          僅支持表達式(例子都是無效)

          <!-- 這是一個語句,而非表達式 -->
          {{ var a = 1 }}
          <!-- 條件控制也不支持,請使用三元表達式 -->
          {{ if (ok) { return message } }}
          

          調用函數

          <span :title="toTitleDate(date)">
            {{ formatDate(date) }}
          </span>
          

          指令 Directives

          <p v-if="seen">Now you see me</p>
          

          參數 Arguments

          <a v-bind:href="url"> ... </a>
          <!-- 簡寫 -->
          <a :href="url"> ... </a>
          

          綁定事件

          <a v-on:click="doSomething"> ... </a>
          <!-- 簡寫 -->
          <a @click="doSomething"> ... </a>
          

          動態參數

          <a v-bind:[attributeName]="url"> ... </a>
          <!-- 簡寫 -->
          <a :[attributeName]="url"> ... </a>
          

          這里的 attributeName 會作為一個 JS 表達式被動態執行

          動態的事件名稱

          <a v-on:[eventName]="doSomething"> ... </a>
          <!-- 簡寫 -->
          <a @[eventName]="doSomething">
          

          修飾符 Modifiers

          <form @submit.prevent="onSubmit">
            ...
          </form>
          

          .prevent 修飾符會告知 v-on 指令對觸發的事件調用 event.preventDefault()

          指令語法

          v-on:submit.prevent="onSubmit"
          ──┬─ ─┬──── ─┬─────  ─┬──────
            ┆   ┆      ┆        ╰─ Value 解釋為JS表達式
            ┆   ┆      ╰─ Modifiers 由前導點表示
            ┆   ╰─ Argument 跟隨冒號或速記符號
            ╰─ Name 以 v- 開頭使用速記時可以省略
          

          響應式基礎

          聲明狀態

          <div>{{ state.count }}</div>
          

          import { defineComponent, reactive } from 'vue';
          
          // `defineComponent`用于IDE推導類型
          export default defineComponent({
            // setup 用于組合式 API 的特殊鉤子函數
            setup() {
              const state = reactive({ count: 0 });
          
              // 暴露 state 到模板
              return {
                state
              };
            },
          });
          

          聲明方法

          <button @click="increment">
            {{ state.count }}
          </button>
          

          import { defineComponent, reactive } from 'vue';
          
          export default defineComponent({
            setup() {
              const state = reactive({ count: 0 });
          
              function increment() {
                state.count++;
              }
          
              // 不要忘記同時暴露 increment 函數
              return {
                state,
                increment
              };
            },
          })
          

          <script setup>setup語法糖

          <script setup>
          import { reactive } from 'vue';
          
          const state = reactive({ count: 0 })
          
          function increment() {
            state.count++
          }
          </script>
          
          <template>
            <button @click="increment">
              {{ state.count }}
            </button>
          </template>
          

          setup 語法糖用于簡化代碼,尤其是當需要暴露的狀態和方法越來越多時

          用ref()定義響應式變量

          reactive只能用于對象、數組和 Map、Set 這樣的集合類型,對 string、number 和 boolean 這樣的原始類型則需要使用ref

          import { ref } from 'vue';
          
          const count = ref(0);
          
          console.log(count); // { value: 0 }
          console.log(count.value); // 0
          count.value++;
          console.log(count.value); // 1
          const objectRef = ref({ count: 0 });
          
          // 這是響應式的替換
          objectRef.value = { count: 1 };
          const obj = {
            foo: ref(1),
            bar: ref(2)
          };
          // 該函數接收一個 ref
          // 需要通過 .value 取值
          // 但它會保持響應性
          callSomeFunction(obj.foo);
          
          // 仍然是響應式的
          const { foo, bar } = obj;
          

          在 html 模板中不需要帶 .value 就可以使用

          <script setup>
          import { ref } from 'vue';
          
          const count = ref(0);
          </script>
          
          <template>
            <div>
              {{ count }}
            </div>
          </template>
          

          有狀態方法

          import { reactive, defineComponent, onUnmounted } from 'vue';
          import { debounce } from 'lodash-es';
          
          export default defineComponent({
            setup() {
              // 每個實例都有了自己的預置防抖的處理函數
              const debouncedClick = debounce(click, 500);
          
              function click() {
                // ... 對點擊的響應 ...
              }
          
              // 最好是在組件卸載時
              // 清除掉防抖計時器
              onUnmounted(() => {
                debouncedClick.cancel();
              });
            },
          });
          

          響應式樣式

          <script setup>
          import { ref } from 'vue'
          const open = ref(false);
          </script>
          
          <template>
            <button @click="open = !open">Toggle</button>
            <div>Hello Vue!</div>  
          </template>
          
          <style scope>
            div{
              transition: height 0.1s linear;
              overflow: hidden;
              height: v-bind(open ? '30px' : '0px');
            }
          </style>
          

          響應式進階 —— watch 和 computed

          監聽狀態

          <script setup>
          import { ref, watch } from 'vue';
          
          const count = ref(0)
          const isEvent = ref(false)
          
          function increment() {
            state.count++
          }
          
          watch(count, function() {
            isEvent.value = count.value % 2 === 0
          })
          </script>
          
          <template>
            <button @click="increment">
              {{ count }}
            </button>
            <p>
              is event: {{ isEvent ? 'yes' : 'no' }}
            </p>
          </template>
          

          立即監聽狀態

          watch(count, function() {
            isEvent.value = count.value % 2 === 0
          }, {
            // 上例中的 watch 不會立即執行,導致 isEvent 狀態的初始值不準確。配置立即執行,會在一開始的時候立即執行一次
            immediate: true
          })
          

          計算狀態

          <script setup>
          import { ref, computed } from 'vue';
          
          const text = ref('')
          // computed 的回調函數里,會根據已有并用到的狀態計算出新的狀態
          const capital = computed(function(){
            return text.value.toUpperCase();
          })
          </script>
          
          <template>
            <input v-model="text" />
            <p>to capital: {{ capital }}</p>
          </template>
          

          組件通信

          defineProps

          <script setup>
          import { defineProps } from 'vue';
          
          // 這里可以將 `username` 解構出來,
          // 但是一旦解構出來再使用,就不具備響應式能力
          defineProps({
            username: String
          })
          </script>
          
          <template>
            <p>username: {{ username }}</p>
          </template>
          

          子組件定義需要的參數

          <script setup>
          const username = 'vue'
          </script>
          
          <template>
            <children :username="username" />
          </template>
          

          父組件參入參數

          defineEmits

          <script setup>
          import { defineEmits, ref } from 'vue';
          
          const emit = defineEmits(['search'])
          const keyword = ref('')
          const onSearch = function() {
            emit('search', keyword.value)
          }
          </script>
          
          <template>
            <input v-model="keyword" />
            <button @click="onSearch">search</button>
          </template>
          

          子組件定義支持 emit 的函數

          <script setup>
          const onSearch = function(keyword){
            console.log(keyword)
          }
          </script>
          
          <template>
            <children @search="onSearch" />
          </template>
          

          父組件綁定子組件定義的事件

          defineExpose

          <script setup>
          import { defineExpose, ref } from 'vue';
          
          const keyword = ref('')
          const onSearch = function() {
            console.log(keyword.value)
          }
          
          defineExpose({ onSearch })
          </script>
          
          <template>
            <input v-model="keyword" />
          </template>
          

          子組件對父組件暴露方法

          <script setup>
          import { ref } from 'vue'  
          
          const childrenRef = ref(null)
          const onSearch = function() {
            childrenRef.value.onSearch()
          }
          </script>
          
          <template>
            <children ref='childrenRef' />
            <button @click="onSearch">search</button>
          </template>
          

          父組件調用子組件的方法

          Provide / Inject

          import type { InjectionKey, Ref } from 'vue'
          
          export const ProvideKey = Symbol() as InjectionKey<Ref<string>>
          

          在應用中使用 ProvideKey

          <script setup lang="ts">
          import { provide, ref } from 'vue'
          import { ProvideKey } from './types'
          
          const text = ref<string>('123')
          provide(ProvideKey, text)
          </script>
          
          <template>
            <input v-model="text" />
          </template>
          

          父組件為后代組件提供數據

          <script setup lang="ts">
          import { inject } from 'vue'
          import { ProvideKey } from './types'
          
          const value = inject(ProvideKey)
          </script>
          
          <template>
            <h4>{{value}}</h4>
          </template>
          

          后代組件注入父組件提供的數據

          API 參考

          全局 API - 應用實例

          createApp()

          創建一個應用實例 #

          createSSRApp()

          以 SSR 激活模式創建一個應用實例 #

          app.mount()

          將應用實例掛載在一個容器元素中 #

          app.unmount()

          卸載一個已掛載的應用實例 #

          app.provide()

          提供一個可以在應用中的所有后代組件中注入使用的值 #

          app.component()

          注冊或獲取全局組件 #

          app.directive()

          注冊或獲取全局指令 #

          app.use()

          安裝一個插件 #

          app.mixin()

          全局注冊一個混入 #

          app.version

          當前應用所使用的 Vue 版本號 #

          app.config

          獲得應用實例的配置設定 #

          app.config.errorHandler

          為應用內拋出的未捕獲錯誤指定一個全局處理函數 #

          app.config.warnHandler

          為 Vue 的運行時警告指定一個自定義處理函數 #

          app.config.performance

          在瀏覽器開發工具中追蹤性能表現 #

          app.config.compilerOptions

          配置運行時編譯器的選項 #

          app.config.globalProperties

          注冊全局屬性對象 #

          app.config.optionMergeStrategies

          定義自定義組件選項的合并策略的對象 #

          全局 API - 通用

          version

          Vue 版本號 #

          nextTick()

          等待下一次 DOM 更新后執行回調 #

          defineComponent()

          在定義 Vue 組件時提供類型推導的輔助函數 #

          defineAsyncComponent()

          定義一個異步組件 #

          defineCustomElement()

          和 defineComponent 接受的參數相同,不同的是會返回一個原生自定義元素類的構造器 #

          組合式 API - setup()

          基本使用

          #

          訪問 Props

          #

          Setup 上下文

          #

          與渲染函數一起使用

          #

          組合式 API - 依賴注入

          provide()

          提供一個可以被后代組件中注入使用的值 #

          inject()

          注入一個由祖先組件提供的值 #

          組合式 API - 生命周期鉤子

          onMounted()

          組件掛載完成后執行 #

          onUpdated()

          狀態變更而更新其 DOM 樹之后調用 #

          onUnmounted()

          組件實例被卸載之后調用 #

          onBeforeMount()

          組件被掛載之前被調用 #

          onBeforeUpdate()

          狀態變更而更新其 DOM 樹之前調用 #

          onBeforeUnmount()

          組件實例被卸載之前調用 #

          onErrorCaptured()

          捕獲了后代組件傳遞的錯誤時調用 #

          onRenderTracked()

          組件渲染過程中追蹤到響應式依賴時調用 #

          onRenderTriggered()

          響應式依賴的變更觸發了組件渲染時調用 #

          onActivated()

          若組件實例是 <KeepAlive> 緩存樹的一部分,當組件被插入到 DOM 中時調用 #

          onDeactivated()

          若組件實例是 <KeepAlive> 緩存樹的一部分,當組件從 DOM 中被移除時調用 #

          onServerPrefetch()

          組件實例在服務器上被渲染之前調用 #

          組合式 API - 響應式: 工具

          isRef()

          判斷是否為 ref #

          unref()

          是 ref,返回內部值,否則返回參數本身 #

          toRef()

          創建一個屬性對應的 ref #

          toRefs()

          將對象上的每一個可枚舉屬性轉換為 ref #

          isProxy()

          檢查一個對象是否是由 reactive()、readonly()、shallowReactive() 或 shallowReadonly() 創建的代理 #

          isReactive()

          檢查一個對象是否是由 reactive() 或 shallowReactive() 創建的代理。 #

          isReadonly()

          檢查傳入的值是否為只讀對象 #

          組合式 API - 響應式: 核心

          ref()

          返回一個 ref 對象 #

          computed ()

          定義一個計算屬性 #

          reactive()

          返回一個對象的響應式代理 #

          readonly()

          返回一個原值的只讀代理 #

          watchEffect()

          立即運行一個函數,同時監聽 #

          watchPostEffect()

          watchEffect() 使用 flush: 'post' 選項時的別名。 #

          watchSyncEffect()

          watchEffect() 使用 flush: 'sync' 選項時的別名。 #

          watch()

          偵聽一個或多個響應式數據源 #

          選項式 API - 狀態選項

          data

          聲明組件初始響應式狀態 #

          props

          聲明一個組件的 props #

          computed

          聲明要在組件實例上暴露的計算屬性 #

          methods

          聲明要混入到組件實例中的方法 #

          watch

          聲明在數據更改時調用的偵聽回調 #

          emits

          聲明由組件觸發的自定義事件 #

          expose

          聲明當組件實例被父組件通過模板引用訪問時暴露的公共屬性 #

          選項式 API - 生命周期選項

          beforeCreate

          組件實例初始化完成之后立即調用 #

          created

          組件實例處理完所有與狀態相關的選項后調用 #

          beforeMount

          組件被掛載之前調用 #

          mounted

          組件被掛載之后調用 #

          beforeUpdate

          狀態變更而更新其 DOM 樹之前調用 #

          updated

          狀態變更而更新其 DOM 樹之后調用 #

          beforeUnmount

          組件實例被卸載之前調用 #

          unmounted

          組件實例被卸載之后調用 #

          errorCaptured

          捕獲了后代組件傳遞的錯誤時調用 #

          renderTracked Dev only

          組件渲染過程中追蹤到響應式依賴時調用 #

          renderTriggered Dev only

          響應式依賴的變更觸發了組件渲染時調用 #

          activated

          若組件實例是 緩存樹的一部分,當組件被插入到 DOM 中時調用 #

          deactivated

          若組件實例是 緩存樹的一部分,當組件從 DOM 中被移除時調用 #

          serverPrefetch SSR only

          組件實例在服務器上被渲染之前調用 #

          選項式 API - 其他雜項

          name

          顯式聲明組件展示時的名稱 #

          inheritAttrs

          是否啟用默認的組件 attribute 透傳行為 #

          components

          注冊對當前組件實例可用的組件 #

          directives

          注冊對當前組件實例可用的指令 #

          選項式 API - 渲染選項

          template

          聲明組件的字符串模板 #

          render

          編程式地創建組件虛擬 DOM 樹的函數 #

          compilerOptions

          配置組件模板的運行時編譯器選項 #

          選項式 API - 組件實例

          $data

          觀察的數據對象 #

          $props

          組件已解析的 props 對象 #

          $el

          實例管理的 DOM 根節點 #

          $options

          實例的初始化選項 #

          $parent

          父實例 #

          $root

          當前組件樹的根實例 #

          $slots

          訪問被插槽分發的內容 #

          $refs

          DOM 元素和組件實例 #

          $attrs

          包含了組件所有透傳 attributes #

          $watch()

          觀察 Vue 實例上的一個表達式或者一個函數計算結果的變化 #

          $emit()

          觸發一個自定義事件 #

          $forceUpdate()

          強制該組件重新渲染 #

          $nextTick()

          回調延遲執行 #

          選項式 API - 組合選項

          provide

          提供可以被后代組件注入的值 #

          inject

          注入一個由祖先組件提供的值 #

          mixins

          接收一個混入對象的數組 #

          extends

          要繼承的“基類”組件 #

          內置內容 - 指令

          v-text

          更新元素的 textContent #

          v-html

          更新元素的 innerHTML #

          v-show

          切換元素的 display css 屬性 #

          v-if

          有條件地渲染元素 #

          v-else

          #

          v-else-if

          #

          v-for

          多次渲染元素或模板塊 #

          v-on

          綁定事件監聽器 #

          v-bind

          動態地綁定一個或多個屬性 #

          v-model

          創建雙向綁定 #

          v-slot

          提供插槽或接收 props 的插槽 #

          v-pre

          跳過元素和它的子元素編譯過程 #

          v-once

          只渲染元素和組件一次 #

          v-memo (3.2+)

          緩存一個模板的子樹 #

          v-cloak

          保持在元素上直到實例結束編譯 #

          serverPrefetch SSR only

          組件實例在服務器上被渲染之前調用 #

          內置內容 - 組件

          <Transition>

          單個元素/組件的過渡效果 #

          <TransitionGroup>

          多個元素/組件的過渡效果 #

          <KeepAlive>

          緩存包裹在其中的動態切換組件 #

          <Teleport>

          將其插槽內容渲染到 DOM 中的另一個位置 #

          <Suspense> (Experimental)

          協調對組件樹中嵌套的異步依賴的處理 #

          內置內容 - 特殊 Attributes

          key

          用在 Vue 的虛擬 DOM 算法 #

          ref

          元素或子組件注冊引用信息 #

          is

          綁定動態組件 #

          內置內容 - 特殊元素

          <component>

          渲染一個“元組件”用于動態組件或元素 #

          <slot>

          組件模板中的插槽內容出口 #

          單文件組件 - 語法定義

          總覽

          #

          相應語言塊

          #

          自動名稱推導

          #

          預處理器

          #

          Src 導入

          #

          注釋

          #

          單文件組件 - <script setup>

          基本語法

          #

          響應式

          #

          使用組件

          #

          使用自定義指令

          #

          defineProps() 和 defineEmits()

          #

          defineExpose

          #

          useSlots() 和 useAttrs()

          #

          與普通的 <script> 一起使用

          #

          頂層 await

          #

          針對 TypeScript 的功能

          #

          限制

          #

          單文件組件 - CSS 功能

          組件作用域 CSS

          #

          CSS Modules

          #

          CSS 中的 v-bind()

          #

          進階 API - 渲染函數

          h()

          創建虛擬 DOM 節點 #

          mergeProps()

          合并多個 props 對象 #

          cloneVNode()

          克隆一個 vnode #

          isVNode()

          判斷一個值是否為 vnode 類型 #

          resolveComponent()

          按名稱手動解析已注冊的組件 #

          resolveDirective()

          按名稱手動解析已注冊的指令 #

          withDirectives()

          用于給 vnode 增加自定義指令 #

          withModifiers()

          用于向事件處理函數添加內置 v-on 修飾符 #

          進階 API - 服務端渲染

          renderToString()

          #

          renderToNodeStream()

          #

          pipeToNodeWritable()

          #

          renderToWebStream()

          #

          pipeToWebWritable()

          #

          renderToSimpleStream()

          #

          useSSRContext()

          #

          進階 API - TypeScript 工具類型

          PropType<T>

          在用運行時 props 聲明時給一個 prop 標注更復雜的類型定義 #

          ComponentCustomProperties

          增強組件實例類型以支持自定義全局屬性 #

          ComponentCustomOptions

          擴展組件選項類型以支持自定義選項 #

          ComponentCustomProps

          擴展全局可用的 TSX props #

          CSSProperties

          擴展在樣式屬性綁定上允許的值的類型 #

          進階 API - 自定義渲染

          createRenderer()

          創建一個自定義渲染器 #


          網址 https://cn.vuejs.org/

          色 發自 凹非寺

          量子位 | 公眾號 QbitAI

          作為程序員,都知道命令行的好處。

          奈何實在學不會、記不住。

          今天,恰好有一個專門總結了各種常用和冷門命令行技巧的項目,號稱《命令行的藝術》,登上了GitHub熱榜。

          一看,確實還有點來頭。

          光看標星數,就有足足112k

          而它的作者,主要由19位程序員組成,除此之外,還有數十人作出了貢獻。

          其內容主要都與Linux命令行有關(另有兩章專門講macOS和Windows系統),覆蓋了基礎、日常使用、文件及數據處理、系統調試、單行命令、“冷門但有用”等多方面的知識和技巧,用很簡潔的方式+示例予以了說明。

          最開始,該項目只是在Quora上傳播,后來挪到GitHub上后便火得一發不可收拾。

          由于實在太干貨,還被翻譯成了17種語言,其中就包括中文。

          那么,對于我們那不太熟的命令行技術,再挽救一下?

          Ps. 熟的也可以看哦,畢竟還有一些“奇技淫巧”。

          一文掌握所有命令行

          文中所用命令主要基于交互式Bash,一共分為8篇。

          基礎篇

          這篇主要需要你掌握命令行基礎知識,一共12小項,包括:

          • 會用man bash命令查閱手冊,會用apropos查找文檔,熟悉一個文本編輯器(推薦Vim)
          • 懂得> 、 <、|、>>等符號的區別,會使用通配符,會使用ssh進行遠程命令行登錄;
          • 熟悉Bash中的任務管理工具、基本的文件管理工具、基本的網絡工具;
          • 懂正則表達式,會git,懂得查找和安裝軟件包。

          日常使用篇

          基礎知識完成后,這里要教的都是一些非常日常的技巧,一共43條,比如:

          • ctrl-r可以搜索命令行歷史記錄,而按下右箭頭鍵可以不立即執行,進行修改;
          • ctrl-x+ctrl-e可再打開一個編輯器來輸入當前正編輯的命令,這對于編寫長命令很方便;
          • alias命令可以創建常用命令的快捷形式(eg. alias ll=’ls -latr’ ,就創建了一個別名 為ll新命令)
          • 當使用通配符匹配大量文件名時,常會遇到“Argument list too long”的錯誤信息,這種情況下換用find或xargs通常可以解決。

          文件及數據處理篇

          這篇有35條,比如:

          • 在當前目錄下通過文件名查找一個文件,可以使用find . -iname ‘something‘命令;
          • 想要轉換Markdown、HTML等不同格式的文件時,使用pandoc;
          • 處理棘手的XML時,用上古流傳下來的神器xmlstarlet;
          • 更改文件時除了cut和paste,別忘了join。

          系統調試篇

          本篇也不少,共20條,比如:

          • 進行web調試時用curl和curl -I命令,或者它們的好兄弟wget,或者更潮的httpie;
          • 查看磁盤使用情況時用ncdu,它比普通du -sh *更節省時間;
          • 如果刪除了一個文件,但通過du發現沒有釋放預期的磁盤空間,請用如下命令檢查文件是否被進程占用:lsof | grep deleted | grep “filename-of-my-big-file”……

          單行命令篇

          這部分指的就是我們所說的one-liners命令,一共7條,比如:

          想計算文本文件第三列中所有數的和時,下面的命令可能會比同等作用的Python代碼速度快三倍、代碼量少三倍:awk ‘{ x += } END { print x }’ myfile。

          冷門但有用篇

          這部分是也算全文最長的一篇了,一共73條,各位可各取所需~

          macOS篇和Windows篇

          最后,對于使用macOS和Windows系統的程序員來說,也有一些小技巧不容錯過。

          比如在macOS中,如果你想在終端中將Option鍵當作alt鍵使用,那么只需打開“偏好設置 -> 描述文件 -> 鍵盤”,并勾選“使用Option鍵作為Meta鍵”;

          由于macOS基于BSD UNIX,許多命令(例如ps,ls,tail,awk,sed)都和Linux中有微妙的不同,需要注意,具體區別可以通過標題為 “BSD General Commands Manual” 的man頁面查看。

          而在Windows中,只需安裝一個Cygwin,你就可以直接感受Unix shell的威力了——前6篇介紹的東西復用就ok。

          所以在這篇,作者也提供了一些Cygwin命令的使用技巧。

          更多詳細內容直接戳下面的地址~

          項目主頁:
          https://github.com/jlevy/the-art-of-command-line

          中文版:
          https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md

          — 完 —

          量子位 QbitAI · 頭條號簽約

          關注我們,第一時間獲知前沿科技動態


          主站蜘蛛池模板: 小泽玛丽无码视频一区| 日韩在线一区二区三区免费视频| 久久一区二区明星换脸| 少妇无码AV无码一区| 国产AV午夜精品一区二区入口| 亚洲视频在线观看一区| 亚洲性无码一区二区三区| 成人久久精品一区二区三区| 韩国精品一区视频在线播放| 一区二区三区在线播放| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 91秒拍国产福利一区| 久久国产一区二区三区| 毛片无码一区二区三区a片视频| 亚洲综合无码一区二区痴汉| 亚洲日韩一区二区一无码| 亚洲中文字幕在线无码一区二区| 国产精品久久无码一区二区三区网| 男人的天堂av亚洲一区2区| 亚洲第一区在线观看| 国产剧情国产精品一区| 亚洲av乱码中文一区二区三区| 欧洲精品码一区二区三区| 日韩精品人妻一区二区三区四区| 亚洲一区二区高清| 香蕉久久一区二区不卡无毒影院| 亚洲日韩AV无码一区二区三区人| 国产乱码精品一区二区三区四川人| 日韩在线一区二区三区免费视频| 中文字幕一区二区三区永久| 久久国产一区二区| 波多野结衣一区在线| 国产丝袜视频一区二区三区| 国产一区二区三区影院| 波霸影院一区二区| 久久一区二区三区免费| 国产精品一区二区久久| AV无码精品一区二区三区| 日本一区二区三区高清| 无码国产精品一区二区免费式影视| AV天堂午夜精品一区|