shell script REGEX e File Globbing

Linux shell script REGEX e File Globbing

---

Alguns comandos para usar no linux:

cd
cd ~
cd ..
cd ../../
cd -
cd ~/Documentos/
cd ~/Vídeos/Legendas/Niver-Legendas/

pwd

clear

ls
ls -ltr
ls -ltC
ls -1

ps
ps axu
ps axu | more

touch nome-do-arquivo-a-ser-criado
touch arquivo-existente-atualiza-o-horário

man touch

echo palavra-a-ser-ecoada
echo 'palavra a ser ecoada'
echo -e '\nAcima \n\tNo meio \nAbaixo\n'
echo -e "\ncoluna1\tcoluna2\tcoluna3\t\n"
man echo

mkdir nome-do-diretório
mkdir -p nome-do-diretório/nome-do-sub-diretório/

rm -f nome-do-arquivo
rm -r nome-do-diretório

cp nome-do-arquivo-original nome-da-cópia-do-arquivo-original

cp -r nome-do-diretório-original nome-da-cópia-do-diretório-original

mv nome-do-arquivo-original novo-nome-para-o-arquivo

sleep 10

cat nome-do-arquivo
cat -b nome-do-arquivo
cat -A nome-do-arquivo

tac nome-do-arquivo

tail nome-do-arquivo
tail -n3 nome-do-arquivo

head nome-do-arquivo
head -n1 nome-do-arquivo
head -c8 nome-do-arquivo

wc nome-do-arquivo
wc -l nome-do-arquivo
wc -c nome-do-arquivo
wc -m nome-do-arquivo
wc nome-do-arquivo*

tail -n5 nome-do-arquivo | wc -w

sort nome-do-arquivo
sort -r nome-do-arquivo
sort -k2 nome-do-arquivo

tail /etc/passwd
tail /etc/passwd | sort -k3 -t ":" -g

uniq nome-do-arquivo
sort nome-do-arquivo | uniq
sort nome-do-arquivo | uniq -u
sort nome-do-arquivo | uniq -d
sort nome-do-arquivo | uniq -c

sort nome-do-arquivo | uniq -c | sort
sort nome-do-arquivo | uniq -c | sort -r
sort nome-do-arquivo | uniq -c | sort -r | head -n1

---

Funcionamento do Linux:

hardware > kernel > shell > usuário

---

O shell interpreta o script.

---

O shell padrão no linux é o bash. Ele é melhoria do shell sh e incorpora csh e ksh.

O shell csh traz recursos da linguagem C é diferentes e faz coisas que os outros não fazem.

---

echo $0
echo $SHELL
tail /etc/passwd

---

Uso de aspas:

caracteres especiais.

* / $ ``

As `` fazem um sub-comando dentro do shell.

---

Aspas protegem.

echo *

echo "*"

aspas duplas protegem o caractere.

Pode usar apóstrofos para proteger.

echo '*'

Mas aspas simples se comportam diferente de aspas duplas.

A barra invertida protegeo caractere seguinte. O shell não interpreta o caractere.

echo \*

ls "aluno*"

ls 'aluno*'

ls aluno\*

---

Aspas duplas não protegem cifrão, crase e a barra normal:

$ ` /

---

Quando temos variável cifrão ele estará buscando uma variável.

---

Aspas simples (apóstrofo) protegem tudo. 3 Exemplos:

1) echo $SHELL

2) echo "$SHELL"

3) echo 'SHELL'

---

Todos tem utilidade depende do caso. As aspas duplas são mais usadas.

---

Exemplo de barra invertida:

echo '5espaços 5espaços 5espaços'

echo 5espaços\ \ \ \ \ \5espaços 5espaços

---

Abro o editor de texto Gedit ou nano.

---

Expressões regulares:

File Globbing é diferente de Regex.

File Globbing: Forma do bash de selecionar arquivos de diretórios. Usa carcteres especiais para selecionar arquivos de diretórios.

---

Exemplo de File Globbing:

touch Aula1.txt Aula2.txt Aula3.txt Aula4.txt Aula5.txt aula6.txt

---

OBS:
Note que todos os arquivos começam com maiúsculas menos aula6.txt

---

ls Aula*

ls Aula2*

ls -la Aula[1234]*

ls -la Aula[1-5]*

ls -la Aula[1-6]*

ls -la [Aa]ula[1-6]*

ls -la [Aa]ula[156]*

ls -la *[12]*

ls {Aula,aula}[16]*

ls {Aula,aula}[16].txt

ls -l *5*

ls -l *5.txt

ls -l {Aula,aula}4*

ls -l {Aula,aula}4.txt

---

OBS File Globbing:

Os colchetes [] fazem listas e as chaves {} escolho as strings que me interessam.

---

Mais exemplos File Globbing:

ls -la Aula2*

ls -la Aula2?

ls -la Aula2????

---

File Globbing funciona com quase todos os comandos GNU/Linux.

---

Regex: Expressão regular. Usa caracteres para selecionar um padrão de texto. É para seleção de texto.

---

Usando o Regex:

---

Exemplos comando:

--

echo -e '\nEste texto vai para Aula1.txt.\n\nEle contém algumas palavras:\n\nCada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse \nNunca \n \n# Um comentário \n \nnever\nOpera \nopus \nbaiog \nbeirag \nbicag \nquerer \nQueijo \nLeva \nLinux \nlinux \nLinuxDistro \nHostel \nhostel \nLinux \nlinux \nSistema operacional Linux \nGNU \ngnu \nGNULinux \ngnulinux \n' > Aula1.txt

---

Comandos para imprimir o texto no terminal:

cat Aula1.txt
cat Aula1*

---

Usar grep ou egrep ou grep -e.

---

Para aparecer colorido criam um alias para o egrep pode ser em ~/.bashrc (muitos .bashrc já vem com esta opção):

#
alias egrep='egrep --color=auto'
#

---

OBS:
Abro o terminal onde está o arquivo Aula1.txt e executo:

egrep "[Hh]ostel" Aula1.txt

---

Resultado do comando acima:

$ egrep "[Hh]ostel" Aula1.txt
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
Hostel
hostel

---

Executo os REGEX abaixo:

egrep [Gg]NULinux Aula1*

egrep [GgNnUu][Ll]inux Aula1*

---

Resultados da execução do REGEX:

$ egrep [Gg]NULinux Aula1*
GNULinux

$ egrep [GgNnUu][Ll]inux Aula1*
GNULinux
gnulinux

---

Executo o REGEX "b[a]*" com File Globbing (Aula1*):

egrep "b[a]*" Aula1*

---

Resultado do REGEX com File Globbing:

$ egrep "b[a]*" Aula1*
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
baiog
beirag
bicag

---

O REGEX trabalha com o texto ou com as strings que estão escritas dentro de um arquivo. O File Globbing trabalha por fora do arquivo ou diretório, ajudando a localizar. Por exemplo Aula1*.

---

Comando REGEX:

egrep "b[a-i]*" Aula1*

---

Resultado:

$ egrep "b[a-i]*" Aula1*
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
baiog
beirag
bicag

---

Comando REGEX:

egrep "^Linux" Aula1.txt

---

Resultado do comando REGEX:

$ egrep "^Linux" Aula1.txt
Linux
LinuxDistro
Linux

---

Comando REGEX:

egrep -v "^[Ll]inux" Aula1.txt

---

Resultado do comando REGEX:

$ egrep -v "^[Ll]inux" Aula1.txt
Este texto vai para Aula1.txt.
Ele contém algumas palavras:
Cada, Cardo, Arame, Arca, Bote, boca, vira, Voa, Dura, dedo, Elfo, eifel, fardo, Fargo, guia, Guria, hostel, Hostil, Juno, jim, Inca, indo, Karma, kraken, Lele, lili, Mosca, mouse
Nunca
# Um comentário
never
Opera
opus
baiog
beirag
bicag
querer
Queijo
Leva
Hostel
hostel
Sistema operacional Linux
GNU
gnu
GNULinux
gnulinux

---

Comando REGEX:

egrep "Linux" Aula1.txt

---

Resultado:

$ egrep "Linux" Aula1.txt
Linux
LinuxDistro
Linux
Sistema operacional Linux
GNULinux

---

REGEX para linhas em branco:

egrep "^$" Aula1*

egrep -v "^$" Aula1*

---

OBS:
No uso de caracteres especiais há diferenças entre REGEX e File Globbing

---

Asterisco *

Comando exemplos REGEX asterisco:

egrep "A[a-r]*" Aula1*
egrep "A[a-r]e*" Aula1*

---

OBS:
e* Pode não existir ou pode exitir uma ou várias vezes.

---

Para por aqui hoje. Sabe, aqui no Brasil a crise tá braba mesmo!

A gente paga para aprender qualquer coisa na internet.

Paga para aprender a digitar, paga para saber shell script, para para saber File Globbing e para caro para aprender REGEX e eu também pago.

Mas não cobro nada para transmitir o conhecimento meu, que foi adquirido por mim através do meu estudo e esforço pessoal.

Existem bloqueios para conteúdo gratúito oferecido por outros sites em outros países, em universidades gratúitas do exterior que você poderia aprender tudo de graça se souber estudar estas coisas em inglês. Mas se você está no Brasil tudo passa por um filtro e quem quer aprender é rastreado e muitas vezes corre o risco de ser hackeado. Não por estrangeiros, mas talvez pelos nossos irmãos brasileiros que precisam sobreviver. Talvez. Ou não. Ou não.

---

Até Breve!

---

:)

---



Me zipa, me unzipa!



Linux comandos para compactar diretórios e arquivos

---

OBS:

Sem enrola VPN Gratis

---

O Zip é uma ferramenta de compactação que está disponível na maioria dos sistemas operacionais até ontem.

---

Vamos ver como instalar, usar e dicas sobre o comando zip.

---

Instalação:

Instalar zip e unzip pela central de programas da sua Distro Linux.

---

Tutorial começa

Abra o terminal onde está/estão o(s) arquivo/diretório(s) a ser(em) compactado/descompactado(s) em zip.

---

Zipando arquivos individualmente:

zip -r nome-para-o-arquivo.zip arquivo-a-ser-zipado1 arquivo-a-ser-zipado2 diretório-a-ser-zipado

---

OBS:

Será criado um arquivo zip chamado de nome-para-o-arquivo.zip.

O -r do zip -r é usado para o caso de existirem sub-diretórios dentro do diretório a ser compactado e nesta anotação aqui, estou usando -r em tudo pois, se for apenas um arquivo acredito faz o serviço do mesmo jeito.

---

Para descompactar:

unzip nome-para-o-arquivo.zip

---

OBS:

Se está em outro lugar do sistema acho que dá para descompactar por exemplo:

unzip ~/Downloads/nome-para-o-arquivo.zip

---

Zipando um diretório:

zip -r nome-para-o-diretório-a-ser-zipado.zip ~/caminho/para/o/diretório/

---

Veja só isto abaixo

---

Exemplo terminal aberto onde está o arquivo a ser zipado e então zipando diretório ~/bin/ da home do usuário:

zip -r bin-zipado-2018.zip ~/bin/

---

OBS: Será criado um pacote chamado de bin-zipado-2018.zip.

---

Para descompactar o pacote bin-zipado-2018.zip:

unzip bin-zipado-2018.zip

---

Pode saber informações sobre os pacotes criados com o comando:

ls -lC nome-do-arquivo.zip

ls -lhC caminho/para/o/pacote/zip/nome-do-arquivo.zip

---

Zipar um diretório para um local diferente no sistema?

---

Veja só este exemplo aqui.

Criar um arquivo zip de um PDF que está ~/Documentos/ e se chama fulano.pdf para o diretório ~/Imagens e estou em ~/Vídeos/

---

Exemplo abaixo.

---

1) Criar arquivo fulano.pdf em Documentos com o comando:

touch ~/Documentos/fulano.pdf

2) Ir para o diretório Vídeo:

cd ~/Vídeos/

3) Do diretório Vídeo criar pacote fulano.zip em Imagens sendo que o arquivo está em Documentos:

zip -r ~/Imagens/fulano.zip ~/Documentos/fulano.pdf

---

Conferindo arquivos e pacotes pelo terminal:

1) ls -tlC ~/Imagens/ | head

2) ls -tlC ~/Documentos/ | head

3) ls -tlC ~/Vídeos/ | head

4) pwd

---

OBS:

Abra o seu gerenciador de arquivos e confere se está tudo certo. Para mim funcionou direitinho. Este conhecimento é útil para fazer coisas muitíssimo importantes.

---

Leia o conteúdo de um arquivo compactado sem extrair o arquivo

---

Como posso ler o conteúdo de um determinado arquivo em um arquivo sem extrair o arquivo .zip em que ele está contido?

---

Listar o conteúdo de um arquivo ZIP para saber o que tem dentro dele:

unzip -l nome-do-arquivo.zip

---

Use a opção -c para gravar o conteúdo dos arquivos nomeados na stdout (tela) sem precisar descompactar todo o arquivo. Canalize a saída para menos, caso contrário, todo o arquivo irá para a tela antes que você possa lê-lo.

---

unzip -c nome-do-arquivo.zip | less

unzip -c nome-do-arquivo.zip | head

unzip -c nome-do-arquivo.zip | tail

---

Para saber melhor:

Visite

---

Até Breve!

---

Dicas, críticas e comentários positivos são muito bem-vindos!

🙂

---

fonte

---

Post do semanickz (apenas um "average joe")

---

Quem precisar entrar em contato comigo, por favor, siga o procedimento abaixo por sua própria conta e risco (Kkkkk):

Contate-me!

Tranquilo(a)!


Saber arquivos por data e hora da modificação

Como localizar e classificar arquivos com base na data e hora da modificação no Linux


---
Normalmente, temos o hábito de salvar muitas informações em forma de arquivos em nosso sistema. Alguns, arquivos ocultos, alguns mantidos em uma pasta separada criada para nossa facilidade de compreensão, enquanto alguns são como são. Mas toda essa coisa preenche nossos diretórios; geralmente o desktop, fazendo com que pareça uma bagunça. Mas, o problema surge quando precisamos procurar por um arquivo específico modificado em determinada data e hora nesta enorme coleção.
---
O Linux tem comandos que, se usados separadamente ou juntos, podem ajudar a procurar um arquivo ou classificar uma coleção de arquivos de acordo com o nome, data de modificação, hora da criação ou até mesmo qualquer filtro que você possa aplicar para obter seu resultado.
---
Alguns Comandos:

ls | sort | head
find | cat


Sobre estes comandos e exemplos:


ls -t
lista arquivos no formato de listagem longo e classifica arquivos com base na data de modificação, a mais nova primeiro.
---
OBS:
Para ordenar em ordem inversa, use a opção '-r' com este comando.
---
ls -ltu
Lista arquivos com base no horário do último acesso. Faz listagem de arquivos no diretório com base no horário do último acesso, ou seja, com base na hora em que o arquivo foi acessado pela última vez, não modificado.
---
ls -ltc
Lista arquivos com base no horário da última modificação. Realiza listagem de arquivos no diretório com base na hora da última modificação das informações de status do arquivo ou no "ctime". Esse comando listaria esse arquivo primeiro, cujas informações de status, como proprietário, grupo, permissões, tamanho etc., foram alteradas recentemente.
---
OBS:
Se a opção '-a' for usada com os comandos acima, eles podem listar e ordenar até mesmo os arquivos ocultos no diretório atual, e a opção '-r' lista a saída na ordem inversa
---
Para uma classificação mais aprofundada, pode usar a classificação no comando 'output' do find, no entanto, o ls também pode ser usado, mas é mais útil, pois a saída pode não ter apenas o nome do arquivo, mas quaisquer campos desejados pelo usuário.
---
Classificando arquivos com base no mês:

Aqui, usamos o comando find para localizar todos os arquivos no diretório raiz (‘/’) e, em seguida, imprimir o resultado como:
Mês em que o arquivo foi acessado e, em seguida, nome do arquivo. Desse resultado completo, aqui listamos as 11 primeiras entradas.
find / -type f -printf "\n%Ab %p" | head -n 11
---
O comando abaixo classifica a saída usando a chave como primeiro campo, especificado por '-k1' e, em seguida, classifica em Mês conforme especificado por 'M' antes dele.
find / -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M
---
Classificar arquivos com base na data.
Aqui, novamente, usamos o comando find para localizar todos os arquivos no diretório raiz, mas agora vamos imprimir o resultado como: última data em que o arquivo foi acessado, última vez que o arquivo foi acessado e depois nome do arquivo. Disso tiramos as 11 primeiras entradas.
find / -type f -printf "\n%AD %AT %p" | head -n 11
---
O comando de classificação abaixo primeiro classifica com base no último dígito do ano, depois classifica com base no último dígito do mês na ordem inversa e finalmente classifica com base no primeiro campo. Aqui, "1,8" significa 8ª coluna do primeiro campo e "n" à frente significa "ordenação numérica", enquanto "r" indica ordenação inversa.
find / -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.8n -k1.1nr -k1
---
Classificando arquivos com base no tempo.
Aqui, novamente, usamos o comando find para listar os 11 principais arquivos no diretório raiz e imprimir o resultado no formato: o arquivo da última vez foi acessado e, em seguida, nome do arquivo.
find / -type f -printf "\n%AT %p" | head -n 11
---
O comando abaixo classifica a saída com base na primeira coluna do primeiro campo da saída, que é o primeiro dígito da hora.
find / -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n
---
Ordenação de Ouptut de ls -l com base em Data.
Esse comando classifica a saída do comando 'ls -l' com base no sexto mês de campo, e então com base no sétimo campo que é data, numericamente.
ls -l | sort -k6M -k7n
---
Da mesma forma, por ter algum conhecimento do comando sort, você pode classificar quase qualquer listagem com base em qualquer campo e até mesmo em qualquer coluna que desejar.

Todos estes comandos acima podem ser usados no bash scripting (shell script) de acordo com a necessidade.

Esses foram alguns dos truques para ajudar você a classificar arquivos com base em Data ou Hora. Você pode ter seus próprios truques construídos com base neles.

Dicas e sugestões são muito bem vindas.


Até Breve!
:)

Fonte
---

:: Extra ::


---
Linux comando sort exemplos simples...
---
Crie um texto em uma pasta da tua home. Abra o terminal onde está o texto. Execute:
---
1) sort meu-txt-frases-linhas-palavras-numeros.txt
2) sort meu-txt-frases-linhas-palavras-numeros.txt > sorteado.txt
3) cat sorteado.txt
4) sort -r sorteado.txt > reversorteado.txt
5) cat reversorteado.txt
6) ls -l /home/$USER > /home/$USER/Downloads/lsl.txt
7) cd Downloads/ ; cat lsl.txt
8) sort -nk2 lsl.txt
---
Como o próprio nome indica, o comando de ordenação Unix/Linux permite classificar informações de texto. Este artigo compartilha vários exemplos do comando de classificação do Linux.
Ordenar a saída do comando "ls"
Você pode usar o comando de classificação do Linux para classificar todos os tipos de saída de outros comandos. Por exemplo, aqui está um exemplo que classifica a saída do comando ls -al:

ls -al | sort -n -k5
---
O -n no exemplo significa "ordenar numericamente", e a opção -k5 significa desativar a coluna cinco. Como outros comandos Unix/Linux, essas opções de comando de classificação podem ser combinadas e encurtadas, assim:

ls -al | sort -nk5
---
Ordenação da saída do comando "ps" - De tempos em tempos, você desejará classificar a saída do comando ps do Linux e, novamente, o comando sort pode ser seu amigo. Você pode apenas ordenar alfabeticamente pela primeira coluna (nome de usuário):

ps auxw | sort
---
Ou você pode ordenar numericamente pela coluna dois (o campo PID):

ps auxw | sort -nk2
---
Você também pode reverter esse tipo com a opção -r:

ps auxw | sort -rnk2
---
Classificando o conteúdo do arquivo com 'cat' - Você também pode classificar o conteúdo de um arquivo com o comando de classificação do Linux. Aqui está o comando 'cat' que no terminal mostrará o que um arquivo chamado 'arquivos' parece antes de ser visto posteriormente com o comando 'sort':

cat files
sort files
---
É muito importante notar que este comando não classifica o arquivo atual, apenas exibe a saída ordenada no seu terminal. Para ter a saída classificada para outro arquivo, você executaria um comando como este:

sort files > arquivos-sorted.txt
---
FINALIZANDO:
1) sort texto.txt - Organiza o arquivo texto.txt em ordem crescente.
2) sort texto.txt -r - Organiza o conteúdo do arquivo texto.txt em ordem decrescente.
3) cat texto.txt|sort - Faz a mesma coisa que o primeiro exemplo, só que neste caso a saí­da do comando cat é redirecionado a entrada padrão do comando sort.
4) sort -f texto.txt - Ignora diferenças entre letras maiúsculas e minúsculas durante a organização.
5) sort 1 -3 texto.txt - Organiza o arquivo texto.txt usando como referência a segunda até a quarta palavra (segundo ao quarto campo) que constam naquela linha.
6) sort -t : 2 -3 passwd - Organiza o arquivo chamado passwd usando como referência a terceira até a quarta palavra (terceiro ao quarto campo).
- OBS:
Note que a opção -t especifica o caracter ":" como delimitador de campos ao invés do espaço. Neste caso, o que estiver após ":" será considerado o próximo campo.
---

Variáveis, Bash shell e sub shell

Linux - Variáveis, Bash shell e sub shell

Como atribuir a saída de um comando shell a uma variável de shell sob o sistema operacional Unix? Por exemplo, armazenar a saída do comando date em uma variável chamada $AGORA ou $VAR. Como faz isso? E outras coisas fáceis e úteis sobre variáveis tem muita? Alguma coisa? Qualquer coisa?

Anotações interessantes... Veja só:


Um computador deve ser capaz de armazenar informações e, posteriormente, fazer operações com essas informações. Deveria haver uma maneira de armazenar informações e depois recuperar essas informações. Os programas de computador também lidam com armazenamento e recuperação de informações. Para armazenar informações, precisamos de espaço de armazenamento (memória do computador). Para recuperar as informações armazenadas na memória, precisamos especificar o local de armazenamento onde as informações são armazenadas. Então, basicamente, precisamos de um nome ou algum tipo de identificador para recuperar as informações armazenadas. É aqui que as variáveis entram em cena...

VAR=$(nome-do-comando-aqui)

VAR=$(nome-do-comando-aqui arg1)

VAR=$(/caminho/para/comando)

VAR=$(/caminho/para/comando arg1 arg2)



OBS:
Não coloque nenhum espaço após o sinal de igual e o comando deve estar no lado direito de =


Exemplos, para armazenar a saída do comando date em uma variável chamada VAR, insira:


VAR=$(date)

OU:

VAR=`date`

Para exibir o resultado de retorno (ou a saída armazenada em uma variável chamada $now), use o comando echo ou printf:

echo "$VAR"

OU:

printf "%s\n" "$VAR"


Lembrando das variáveis de ambiente...
Você pode usar qualquer um dos seguintes comandos para exibir as variáveis de ambiente e seus valores.


a) printenv command
Imprime todo ou parte do ambiente.

b) env command
Imprima todo o ambiente exportado ou execute um programa em um ambiente modificado.

c) set command
Imprima o nome e o valor de cada variável do shell.


Exemplos:

printenv

OU:

printenv | less

OU:

printenv | more


Você pode combinar o comando echo e as variáveis do shell da seguinte maneira:


echo "Hoje é $VAR"


Executando no Bash comando dois em um... Substituição de comandos.


E se alguém quisesse que sempre que executasse o comando cd em um diretório ele automaticamente executasse um comando ls?


Você pode fazer isso com uma função:

cdls () {cd "$@" && ls;}


O && significa 'cd para um diretório e, se for bem-sucedido (por exemplo, o diretório existe), execute ls'. Usando o operador && é melhor, em seguida, usando um ponto e vírgula; operador entre os dois comandos, como com {cd "$ @"; ls; }. Este segundo comando executará ls independentemente de o cd funcionar ou não. Se o cd falhou, ls irá imprimir o conteúdo do seu diretório atual, o que será confuso para o usuário. Como prática recomendada, use "&&" e não ";".
E mais uma coisa... quase sempre, é uma prática ruim renomear um comando que já existe, especialmente para um comando comumente chamado como cd. Em vez disso, crie um novo comando com um nome diferente. Se você sobrescrever cd com uma função ou alias que também é chamado cd, o que aconteceria quando você entra em um diretório com 100.000 arquivos? Existem muitos utilitários que usam cd, e eles podem ficar confusos com esse comportamento incomum. Se você usar uma conta compartilhada (como root quando estiver trabalhando com outros administradores de sistema), pode ser muito perigoso substituir um comando existente porque o ambiente é diferente do que as pessoas esperam.


---


Substituição de Comandos


Sintaxe:

Você pode usar o acento grave (`) para executar uma substituição de comando. A sintaxe é:


`echo $VAR`

OU

echo $(nome-do-comando)


Substituição de comando em um comando echo


echo "Text $(nome-do-comando)

Variáveis de substituição e shell do comando


Você pode armazenar a saída do comando em uma variável shell usando a seguinte sintaxe:


echo var=$(command-name)


Armazene a data e a hora atuais em uma variável chamada NOW:


echo NOW=$(date)
echo "$NOW"


Armazene o nome do host do sistema em uma variável chamada SERVERNAME:


echo SERVERNAME=$(hostname)
echo "Running command @ $SERVERNAME...."


Armazene o nome do diretório de trabalho atual em uma variável chamada CWD:


echo CWD=$(pwd)
echo cd /caminho/para/algum/lugar
echo "Diretório atual $(pwd) e agora voltando ao antigo dir ..."
echo cd $CWD


Substituição de comando e loops de shell


O loop de shell pode usar a substituição de comando para obter entrada:


for f in $(ls /etc/*.conf)
do
echo "$f"
done


No entanto, uma sintaxe recomendada é a seguinte para as seleções de arquivos:


for f in /etc/*.conf
do
echo "$f"
done



---

Fico por aqui. Até breve!


🙂

---


Fontes:
https://bash.cyberciti.biz/guide/What_is_a_Subshell%3F
https://unix.stackexchange.com/questions/23179/how-to-send-variable-to-sub-shell
https://stackoverflow.com/questions/34799161/difference-between-linux-variables-bash-subshell-vs-shlvl