cp -R "~/photo dir" /backups #method1
cp -R ~"/photo dir" /backups #method2
cp -R ~/"photo dir" /backups #method3
"$HOME/photo dir"
tendrá éxito."~/"
al directorio principal del usuario y, a continuación, agregue el nombre del directorio citado que incluye un espacio."~/"
al directorio principal del usuario y, a continuación, agregue el nombre del directorio citado que incluye un espacio."~/"
al directorio principal del usuario y, a continuación, agregue el nombre del directorio citado que incluye un espacio.$ ls -1
Beach photo1.jpg
Photo1.jpg
Photo2.jpg
Script.sh
$ cat script.sh
for i in $(ls *.jpg); do
mv $i ${i}.bak
done
( command )
sh command
{ command; }
(( command ))
echo "1 2 3" | awk '{for (i=1; i<=NF; i++) s=s+$i};END {print s}'
find / -name "finance.db" 1>results.txt 2>/dev/null
sed -i '/^$/d' textfile
sed '/^$/d' textfile
cat textfile | sed '/^$/d
sed -i 's/^$//' textfile
awk -F: '/user1/{print $1 "-" $3 "-" $6}' /etc/passwd
"set -e"
en un script Bash?mysql < file.sql > file.txt
Nota: consulte la siguiente pregunta para obtener una variante.
mysql < file.sql > out.txt
Nota: consulte la pregunta anterior para ver si hay una variante.
cat {$1,textfile}
cat textfile | awk [print $1]
cat textfile | awk '{print $1}'
awk textfile {print $1}
(reverse-i-search)`':
var=$( expr 10 / 8 )
(( var= 10 /8 ))
var=$(( 10 / 8 ))
var=$(echo 'scale=2; 10 / 8' | bc)
txt=Penguins
[[ $txt =~ [a-z]{8} ]]; echo $?
HAL>
SHELL="HAL\>"
SHELL="HAL>"
export PS1="HAL>"
PS1="HAL\>"
VAR="/var/www/html/website.com/html/"
echo "${VAR#*/html}"
/website.com/html/
/html/website.com/html/
/var/www/html/website.com/
#!/usr/bin/env bash
~/usr/bin/env bash
'$!/usr/bin/env bash
#/usr/bin/env bash
The date is: Sun Mar 24 12:30:06 CST 2019!
echo "The date is: !"
echo "The date is: date!"
echo "The date is: (date)!"
echo "The date is: $(date)!"
A. /home/demo.sh
B. ./demo.sh
C. ~/demo.sh
D. bash /home/demo.sh
E. bash demo.sh
find . -type html
find . -name *.html
find *.html
find . -name \*.html -print
El segundo parece estar bien, pero expandirá el * si hay algún archivo de .html en su directorio de trabajo.
cat < in.txt > out.txt
(( $a == $b ))
echo $?
$a
y $b
.$a
y $b
son iguales.$b
si es mayor que $a
.$a
si es mayor que $b
.; ;
: :
done
$$
#!/usr/bin/env bash
case $num in
1)
echo "one"
;;
2)
echo "two"
;;
*)
echo "a mystery"
;;
esac
touch file{1+10}.txt
touch file{1-10}.txt
touch file{1..10}.txt
touch file(1..10).txt
$$
$?
$!
$@
#!/bin/bash
fname=john
john=thomas
echo ${!fname}
A
B
C
D
Aquí hay una versión basada en texto de Q.30:
ll
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file1.txt
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file2.txt
..
ll | sed -e 's,file,text,g'
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file1.file
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file2.file
..
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file1.txt
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 file2.txt
..
-rw-r--r-- 1 frankmolev staff 68 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 374 Jun 3 19:30 .
-rw-r--r-- 1 frankmolev staff 1666 Jun 3 19:30 ..
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 text1.txt
-rw-r--r-- 1 frankmolev staff 0 Jun 3 19:30 text.txt
..
#!/bin/bash
read -p "Enter your pet type." PET
if [ $PET = dog ] ;then
echo "You have a dog"
fi
history --shared
history --combined
shopt -s histappend
$@
trata cada argumento citado como una entidad separada. $*
trata toda la cadena de argumentos como una entidad.$*
trata cada argumento citado como una entidad separada. $@
trata toda la cadena de argumentos como una entidad.$*
se utiliza para contar los argumentos pasados a un script, $@
proporciona todos los argumentos en una cadena.$*
es el comodín que incluye todos los argumentos con división de palabras, $@
contiene los mismos datos pero en una matriz.if [ -f file.txt ]; then
echo "file.txt exists"
fi
/usr/bin/test
/usr/bin/[
the built-in [ command
/usr/bin/[[
#!/bin/bash
Linux=('Debian' 'Redhat' 'Ubuntu' 'Android' 'Fedora' 'Suse')
x=3
Linux=(${Linux[@]:0:$x} ${Linux[@]:$(($x + 1))})
echo "${Linux[@]}"
/etc/bash.conf
~/.profile
/etc/bashprofile
~/profile
$ ls -l
total 0
-rwx------+ 1 user1 user1 0 Oct 27 10:54 data.txt
+
al final de la cadena de permisos de 10 dígitos significa que hay una lista de control de acceso. Esto podría dar a user2 permisos no visibles por ls -l
.ls -l
.+
al final de la cadena de permisos de 10 dígitos significa que hay un conjunto de atributos extendido. Esto podría otorgar a user2 permisos para leer, escribir y ejecutar datos.txt.#!/bin/bash
declare -A ARRAY=([user1]=bob [user2]=ted [user3]=sally)
KEYS=(${!ARRAY[@]})
for (( i=0; $i < ${#ARRAY[@]}; i+=1 ));do
echo ${KEYS[$i]} - ${ARRAY[${KEYS[$i]}]}
done
ls Hello[[.vertical-line.]]World
Hello.vertical-line.World
Hello[[.vertical-line.]]World
Hello|World
ls nonexistentfile | grep "No such file" > out.txt
#!/bin/bash
read -p "Enter text " var
if [[ "$var" =~ "^[0-9]+$" ]];then
echo "Is numeric"
else
echo "Is not numeric"
fi
^[0-9]]+$
Solo esto demostrará ser cierto y “Es numérico” se imprimirá en la pantalla debido a una sintaxis incorrecta. Al encapsular la expresión regular entre comillas dobles, todas las coincidencias fallarán, excepto la cadena de texto ^[0-9]+$
El regex no debe ser cotizado para funcionar correctamente.
[ ] historia | encontrar cp |
[x] | de historia grep cp |
bash for i in $(ls); do ... done
bash for $(ls); do ... done
bash for i in $ls; do ... done
bash for $ls; do ... done
[x] |
#!/usr/bin/env bash
greeting="Hello"
echo $greeting, everybody!
(( num -gt 5 ))
[[$num -lt 5]]
(( num > 5 ))
num > 5
$ ls -l
apple
banana
bananapple
banapple
pineapple
strawberry
$ shopt -s extglob
$ ls -l @(ba*(na)|a+(p)le)
apple
banana
apple
banana
bananapple
banapple
pineapple
strawberry
apple
banana
bananappple
banapple
pineapple
apple
banana
bananapple
banapple
pineapple
ls -l
-rwx------+ 1 user1 u1 0 Oct 1 10:00 data.txt
cd -
cat > notes -
VAR="This old man came rolling"
echo "\${VAR//man/rolling}"
Shall we play a game? yes\no
echo "Shall we play a game? yes/\no"
echo "Shall we play a game\? yes\\no"
echo "Shall we play a game? yes\\no"
echo "Shall we play a game? yes\no"
archive.tar
image1.gif
image1.jpg
image2.gif
image2.jpg
textfile1.txt
textfile2.txt
----------
`shopt -s extglob
rm !(*gif|*jpg)`
archive.tar
image1.gif
image1.jpg
image2.gif
image2.jpg
textfile1.txt
textfile2.txt
archive.tar
textfile1.txt
textfile2.txt
Todos estos archivos serán eliminados
image1.gif
image1.jpg
image2.gif
image2.jpg
#!/bin/bash
var="8"
if [ $var > 5 ]; then
echo "$var is greater than 5"
fi
w
Una constante es una variable que es una roca que no es variable
var="A constant is a variable that is a variable that isn't variable"
echo "$var" | sed _____
echo 'Hello, $(whoami)!'
[x] tar cvzf - /wwwdata | ssh root@192.168.1.201 “dd of=/backup/wwwdata.tar.gz” |
ls -lah
al comando de acceso directo lh
, ¿qué comando debe usar?[ ] lh | ls -lah |
$ ls -l
file10.txt
file1.txt
fileabc.txt
filea.txt
fileb.txt
filec.txt
$ ls -l file[^abc]*.txt
file1.txt
file10.txt
file10.txt
file1.txt
fileabc.txt
filea.txt
fileb.txt
filec.txt
fileabc.txt filea.txt fileb.txt filec.txt
filea.txt
fileb.txt
filec.txt
El caret (^
) aquí niega las coincidencias dentro del corchete. Referencia
cat <<EOF
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------
EOF
This is line 1.
This is line 2.
This is line 3.
------------------------This is line 1.This is line 2.This is line 3.------------------------
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------
------------------------
This is line 1.
This is line 2.
This is line 3.
------------------------
#!/bin/bash
echo 123446789 > out.txt
exec 3<> out.txt
read -n 4 <&3
echo -n 5 >&3
exec 3>&-
Ver también: ¿Cuál es la diferencia entre “eco” y “eco -n”?
#!/bin/bash
shopt -s extglob
VAR=' This is... a string of characters '
VAR=${VAR##+([[:space:]])}; VAR=${VAR%%+([[:space:]])};
echo "$VAR"
<pre> This is... a string of characters</pre>
<pre> This is...a string of characters</pre>
<pre>This is... a string of characters</pre>
<pre>This is...a string of characters</pre>
Referencias: