External Commands
So far, the commands we've practiced are native operating system commands that already have instructions in Nushell (those 430 commands) that generate structured data outputs.
Do the CLIs we use daily generate structured data? Let's test with kubectl.
Inside Nushell...
~> kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-668d6bf9bc-2trtq 0/1 Running 1 (23s ago) 15d
kube-system coredns-668d6bf9bc-2w7pp 0/1 Running 1 (23s ago) 15d
kube-system etcd-kind-control-plane 1/1 Running 0 19s
kube-system kindnet-qrvhz 1/1 Running 1 (23s ago) 15d
kube-system kube-apiserver-kind-control-plane 1/1 Running 0 19s
kube-system kube-controller-manager-kind-control-plane 1/1 Running 3 (23s ago) 15d
kube-system kube-proxy-hcx2w 1/1 Running 1 (23s ago) 15d
kube-system kube-scheduler-kind-control-plane 1/1 Running 3 (23s ago) 15d
We can see that even in Nushell the output was plain text, which is expected by the CLI, but we can convert this by piping that output to detect columns and then the data will be structured.
kubectl get pods --all-namespaces | detect columns
โญโโโโโฌโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโฎ
โ # โ NAMESPACE โ NAME โ READY โ STATUS โ RESTARTS โ AGE โ
โโโโโโผโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโค
โ 0 โ kube-system โ coredns-668d6bf9bc-2trtq โ 1/1 โ Running โ 1 โ 15d โ
โ 1 โ kube-system โ coredns-668d6bf9bc-2w7pp โ 1/1 โ Running โ 1 โ 15d โ
โ 2 โ kube-system โ etcd-kind-control-plane โ 1/1 โ Running โ 0 โ 43s โ
โ 3 โ kube-system โ kindnet-qrvhz โ 1/1 โ Running โ 1 โ 15d โ
โ 4 โ kube-system โ kube-apiserver-kind-control-plane โ 1/1 โ Running โ 0 โ 43s โ
โ 5 โ kube-system โ kube-controller-manager-kind-control-plane โ 1/1 โ Running โ 3 โ 15d โ
โ 6 โ kube-system โ kube-proxy-hcx2w โ 1/1 โ Running โ 1 โ 15d โ
โ 7 โ kube-system โ kube-scheduler-kind-control-plane โ 1/1 โ Running โ 3 โ 15d โ
โ 8 โ kube-system โ node-shell-a1cb3985-2609-4946-bbdd-aae156e50d0a โ 0/1 โ Completed โ 0 โ 15d โ
โ 9 โ kube-system โ node-shell-bd1ea152-5ef3-4da0-8f4c-3236ff264f3c โ 0/1 โ Unknown โ 0 โ 13d โ
โ 10 โ local-path-storage โ local-path-provisioner-58cc7856b6-j8w6t โ 0/1 โ Error โ 1 โ 15d โ
โฐโโโโโดโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโฏ
The detect columns command analyzed the text, discovered the column headers and values, and used that to generate Nushell data, allowing us to use the data the same way we did before. Let's use this data.
~> kubectl get pods --all-namespaces | detect columns | where status == "Completed"
โญโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโฎ
โ # โ NAMESPACE โ NAME โ READY โ STATUS โ RESTARTS โ AGE โ
โโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโค
โ 0 โ kube-system โ node-shell-a1cb3985-2609-4946-bbdd-aae156e50d0a โ 0/1 โ Completed โ 0 โ 15d โ
โฐโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโฏ
Let's get all running pods by name...
~> kubectl get pods --all-namespaces | detect columns | where status == "Running" | get name
โญโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ 0 โ coredns-668d6bf9bc-2trtq โ
โ 1 โ coredns-668d6bf9bc-2w7pp โ
โ 2 โ etcd-kind-control-plane โ
โ 3 โ kindnet-qrvhz โ
โ 4 โ kube-apiserver-kind-control-plane โ
โ 5 โ kube-controller-manager-kind-control-plane โ
โ 6 โ kube-proxy-hcx2w โ
โ 7 โ kube-scheduler-kind-control-plane โ
โ 8 โ local-path-provisioner-58cc7856b6-j8w6t โ
โฐโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Now let's take the YAML text output from the command kubectl get pods -n kube-system kube-scheduler-kind-control-plane -o yaml and structure it...
~> kubectl get pods -n kube-system kube-scheduler-kind-control-plane -o yaml | from yaml
โญโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ apiVersion โ v1 โ
โ kind โ Pod โ
โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ metadata โ โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ
โ โ โ annotations โ โ kubernetes.io/config.hash โ 9c2438caa1b59cbb78b0b03f9f4aaee6 โ โ โ
โ โ โ โ โ kubernetes.io/config.mirror โ 9c2438caa1b59cbb78b0b03f9f4aaee6 โ โ โ
โ โ โ โ โ kubernetes.io/config.seen โ 2025-01-26T10:47:47.286614565Z โ โ โ
โ โ โ โ โ kubernetes.io/config.source โ file โ โ โ
โ โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ
โ โ โ creationTimestamp โ 2025-01-26T10:47:51Z โ โ
โ โ โ โ โญโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฎ โ โ
โ โ โ labels โ โ component โ kube-scheduler โ โ โ
โ โ โ โ โ tier โ control-plane โ โ โ
โ โ โ โ โฐโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโฏ โ โ
โ โ โ name โ kube-scheduler-kind-control-plane โ โ
โ โ โ namespace โ kube-system โ โ
โ โ โ โ โญโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ
โ โ โ ownerReferences โ โ # โ apiVersion โ controller โ kind โ name โ uid โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโผโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ
โ โ โ โ โ 0 โ v1 โ true โ Node โ kind-control-plane โ 7af4cd53-251f-4de2-b37e-c12e081b4f92 โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโดโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ
โ โ โ resourceVersion โ 75695 โ โ
โ โ โ uid โ acf18d3c-41bf-4bfe-9707-dbb8b19ed395 โ โ
โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ spec โ โ โ โญโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโฎ โ โ
โ โ โ containers โ โ # โ command โ env โ ... โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโค โ โ
โ โ โ โ โ 0 โ โญโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โญโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฎ โ ... โ โ โ
โ โ โ โ โ โ โ 0 โ kube-scheduler โ โ โ # โ name โ value โ โ โ โ โ
โ โ โ โ โ โ โ 1 โ --authentication-kubeconfig=/etc/kubernetes/scheduler.conf โ โ โโโโโผโโโโโโโโโโโผโโโโโโโโโโโค โ โ โ โ
โ โ โ โ โ โ โ 2 โ --authorization-kubeconfig=/etc/kubernetes/scheduler.conf โ โ โ 0 โ NO_PROXY โ *.local; โ โ โ โ โ
โ โ โ โ โ โ โ 3 โ --bind-address=127.0.0.1 โ โ โ โ โ 169.254/ โ โ โ โ โ
โ โ โ โ โ โ โ 4 โ --kubeconfig=/etc/kubernetes/scheduler.conf โ โ โ โ โ 16 โ โ โ โ โ
โ โ โ โ โ โ โ 5 โ --leader-elect=true โ โ โฐโโโโดโโโโโโโโโโโดโโโโโโโโโโโฏ โ โ โ โ
โ โ โ โ โ โ โฐโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโฏ โ โ
โ โ โ dnsPolicy โ ClusterFirst โ โ
โ โ โ enableServiceLinks โ true โ โ
โ โ โ hostNetwork โ true โ โ
โ โ โ nodeName โ kind-control-plane โ โ
โ โ โ preemptionPolicy โ PreemptLowerPriority โ โ
โ โ โ priority โ 2000001000 โ โ
โ โ โ priorityClassName โ system-node-critical โ โ
โ โ โ restartPolicy โ Always โ โ
โ โ โ schedulerName โ default-scheduler โ โ
โ โ โ โ โญโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ
โ โ โ securityContext โ โ โ โญโโโโโโโฌโโโโโโโโโโโโโโโโโฎ โ โ โ
โ โ โ โ โ seccompProfile โ โ type โ RuntimeDefault โ โ โ โ
โ โ โ โ โ โ โฐโโโโโโโดโโโโโโโโโโโโโโโโโฏ โ โ โ
โ โ โ โ โฐโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ
โ โ โ terminationGracePeriodSeconds โ 30 โ โ
โ โ โ โ โญโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโฎ โ โ
โ โ โ tolerations โ โ # โ effect โ operator โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโผโโโโโโโโโโโค โ โ
โ โ โ โ โ 0 โ NoExecute โ Exists โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโดโโโโโโโโโโโฏ โ โ
โ โ โ โ โญโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโฎ โ โ
โ โ โ volumes โ โ # โ hostPath โ name โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค โ โ
โ โ โ โ โ 0 โ โญโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ kubeconfig โ โ โ
โ โ โ โ โ โ โ path โ /etc/kubernetes/scheduler.conf โ โ โ โ โ
โ โ โ โ โ โ โ type โ FileOrCreate โ โ โ โ โ
โ โ โ โ โ โ โฐโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโฏ โ โ
โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โ โญโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ status โ โ โ โญโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ โ
โ โ โ conditions โ โ # โ lastProbeTime โ lastTransitionTime โ status โ type โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ โ
โ โ โ โ โ 0 โ โ 2025-02-10T19:50:32Z โ True โ PodReadyToStartContainers โ โ โ
โ โ โ โ โ 1 โ โ 2025-02-10T19:50:32Z โ True โ Initialized โ โ โ
โ โ โ โ โ 2 โ โ 2025-02-10T19:50:45Z โ True โ Ready โ โ โ
โ โ โ โ โ 3 โ โ 2025-02-10T19:50:45Z โ True โ ContainersReady โ โ โ
โ โ โ โ โ 4 โ โ 2025-02-10T19:50:32Z โ True โ PodScheduled โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ โ
โ โ โ โ โญโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโฎ โ โ
โ โ โ containerStatuses โ โ # โ containerID โ image โ ... โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโค โ โ
โ โ โ โ โ 0 โ containerd://ed754765bd1040b8435023f4a3af8c3ace6ebd16ea225e91e019b811fdd8f031 โ registry.k8s.io/kube-schedul โ ... โ โ โ
โ โ โ โ โ โ โ er-arm64:v1.32.0 โ โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโฏ โ โ
โ โ โ hostIP โ 10.89.0.2 โ โ
โ โ โ โ โญโโโโฌโโโโโโโโโโโโฎ โ โ
โ โ โ hostIPs โ โ # โ ip โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโค โ โ
โ โ โ โ โ 0 โ 10.89.0.2 โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโฏ โ โ
โ โ โ phase โ Running โ โ
โ โ โ podIP โ 10.89.0.2 โ โ
โ โ โ โ โญโโโโฌโโโโโโโโโโโโฎ โ โ
โ โ โ podIPs โ โ # โ ip โ โ โ
โ โ โ โ โโโโโผโโโโโโโโโโโโค โ โ
โ โ โ โ โ 0 โ 10.89.0.2 โ โ โ
โ โ โ โ โฐโโโโดโโโโโโโโโโโโฏ โ โ
โ โ โ qosClass โ Burstable โ โ
โ โ โ startTime โ 2025-02-10T19:50:32Z โ โ
โ โ โฐโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โฐโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ