Questions tagged [brace-expansion]
A shell mechanism which is used to generate arbitrary strings.
150
questions
0
votes
2
answers
111
views
Pass a variable that contains a comma as a -v option to qsub
After seeing the reactions on Stack Overflow on this question and an unfamiliarity with qsub, I believe thqt U&L is better suited for this question.
In qsub, we can pass environment variables (a ...
3
votes
3
answers
371
views
Brace expansion to run program multiple times with different arguments
I just learned about brace expansion and hoped I could make use of them to launch the same C++ program with different command line arguments.
My code is run like this from the terminal:
mpirun -n 1 ...
0
votes
1
answer
62
views
Bash - for range no longer works as wanted when one of the ends is a variable [duplicate]
#!/bin/bash
myfirstarray=(1 3 5 7 9 11)
for i in {2..4}
do
for j in {1..${myfirstarray[$((i-1))]}}
do
echo ${j}
done
done
In the code above the range of the ...
3
votes
1
answer
180
views
Why am I not able to use * with touch in path? [duplicate]
This is the output of tree:
[xyz@localhost Semester1]$ tree
.
├── Eng
├── IT
├── IT_workshop
├── LA
├── OS
├── OS_lab
├── Psy
├── Python
└── Python_lab
9 directories, 0 files
I want to create 3 ...
2
votes
1
answer
349
views
How to preserve parameter expansion passed to a function?
I have this function:
cyan=`tput setaf 6`
reset=`tput sgr0`
function Info()
{
echo "${cyan}$1${reset}"
}
And I use it in my other scripts as simple as Info some message.
However, when I ...
8
votes
2
answers
2k
views
Avoiding non-zero exit code when running `ls` using multiple patterns
Say I have two possible paths I want to list directories and files under on a Linux machine:
/some/path1/
/some/path2/
If I do the following in tcsh, I get 0 exit code, if at least one of path1 or ...
4
votes
3
answers
616
views
Store expanded array in a variable using a brace expansion
I want to store node1 node2 node3 in a variable so that it may be used as an input to other scripts.
However, I want to do so by using brace expansion given by bash like so: node{1..3}
I tried to have ...
0
votes
1
answer
75
views
Is it possible to get the entire result of bash brace expansion between double quotes?
I would like to use Bash brace expansion and get the final result quoted between double quotes:
I managed to get that result only by using seq as follows:
echo '"'$(seq 1 5)'"';
output (...
2
votes
2
answers
73
views
brace expansion together with non permuting lists {txtfile,index}{1..3}.{txt,html} I want `{txtfile,index}` to correspond with `{txt,html}`
{txtfile,index}{1..3}.{txt,html}
I want {txtfile,index} to correspond with {txt,html}
to produce:
txtfile1.txt
txtfile2.txt
txtfile3.txt
index1.html
index2.html
index3.html
but this code will generate ...
2
votes
2
answers
115
views
bash brace expansion: is it possible to associate another list(s) with the initial list?
Example:
$ eval echo "{x,y,z}\ --opt\; "
x --opt; y --opt; z --opt;
Assume that the 2nd list is {1,2,3} and its length is equal to the length of the 1st (initial) list.
Questions:
How to ...
4
votes
2
answers
7k
views
rsync: How to exclude multiple file types?
This is with bash on a Mac running Catalina:
This works:
rsync -Pa --rsh="ssh -p 19991" --exclude '*.jpg' --exclude '*.mp4' pi@localhost:/home/pi/webcam /Volumes/Media/Webcam\ Backups/...
0
votes
2
answers
107
views
Print expression with [ ]
I have an input in form A[BCDE]GT.
I would like my output to be:
ABGT
ACGT
ADGT
AEGT
I have tried to use echo, printf, trying to find something that might work.
Does anyone know some command that ...
0
votes
1
answer
938
views
How to retrieve items from an array of arrays?
Hello StackExchange pros!
I am working on a zsh project for macOS. I used typeset to create three associative arrays to hold values, and a fourth array to reference the individual arrays. Is it ...
1
vote
1
answer
273
views
What does {A,B} mean in shell?
I am reading this file, a manifest for a flatpak application.
There is the following command:
ln -s /app/{extra,bin}/masterpdfeditor5
What {extra,bin} mean?
0
votes
1
answer
65
views
How does the {,string} syntax work?
I have some hard time understanding the {,string} syntax. I mainly use it to rename a files like mv test{,.original} But I don't really understand it:
echo asdf{,.fdsa}
Output:
asdf asdf.fdsa
But
...
6
votes
1
answer
1k
views
How do bash loops work precisely?
for i in {0..999999999}; do echo "hi"; done
takes a long time to write it's output, as if all the echos are first executed and then sent to stdout. The effect is even more pronounced with ...
0
votes
2
answers
81
views
Bash brace extension for 2 identical ranges
I wanted to download a bunch of numbered text files by:
curl https://www.grc.com/sn/sn-{472..807}.txt > sn-{472..807}.txt
but that gave me:
bash: sn-{472..807}.txt: ambiguous redirect
so I ended ...
6
votes
1
answer
434
views
Bash expansion asymmetry when opening and creating files
I have come upon the following example of asymmetry in a Bash regex that is confusing me. I would like to know what I am doing which is non-standard and causes this behaviour, or else what is the ...
3
votes
2
answers
682
views
Unwanted space in brace expansion
I have the following brace expansion (bash shell):
echo -e {0..4..2}" "{0..2..2}"\n"
I expected this to produce
0 0
0 2
2 0
2 2
4 0
4 2
but every line of the output except the ...
0
votes
1
answer
62
views
Is my simpler shell snippet the same as original?
I am in a process of doing a yearly review of my POSIX shell code.
I may have found one weird line, which I did not know better before:
original
[ $# -eq 3 ] && exit_code=$3 || exit_code=1
...
4
votes
2
answers
2k
views
Bash script - variables in curly braces [duplicate]
The following bash script
#!/bin/bash
startNumber=$(( 1 ))
endNumber=$(( $startNumber + 3 ))
#for number in {$startNumber..$endNumber}
for number in {1..4}
do
echo $number
done
exit 0
...
0
votes
1
answer
30
views
Printing Jan, Feb, March and April of 2020 with Cal [closed]
I learnt brace expansion today and tried the following command
$ cal {1...4} 2020
I expected the output to display the calendar of Jan, Feb, March and April for the year 2020. But I got the following ...
0
votes
2
answers
532
views
Directory creation using brace expansion
mkdir Public/1 2 3 ----- This line creates folder 1 in the Public folder and creates folders named 2 and 3 in my pwd.
mkdir Public/{1..3} ---- This line creates folders 1,2,3 in Public only as ...
0
votes
2
answers
192
views
Pathname expansion inside brace expansion
The following code is working:
mkdir /home/karan/{Pictures,Public}/yo
The above line creates a yo named directory in the directories named Public and Pictures. However when I use the below code I get ...
3
votes
1
answer
160
views
zsh get numbered log files in backwards order
I have rolling log files that are numbered such that most recent queries are in x.log until that file hits a threshold size, then it's renamed to x.log.1 and a new x.log starts.
I am writing a basic ...
0
votes
4
answers
760
views
Bash ls with double substitution
I am writing a bash script that reads a directory from the command line arguments and performs an ls on it.
If I specify a simple directory, then all is OK.
But I want do something like /home/{x,y}, ...
9
votes
3
answers
4k
views
Prepend and append a string to each element of $* in shell
I'm looking for the simplest solution that takes $* as input, and expands to each element prefixed and suffixed with a given string:
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
I can do ...
4
votes
2
answers
544
views
Brace expansion with elements of an array
In Bash we can already do this:
echo foo.{a,b,c}
# == foo.a foo.b foo.c
How do we get roughly:
arr=(a b c)
echo foo.{${arr[@]}}
# == foo.a foo.b foo.c
0
votes
3
answers
766
views
bash counting script, counts fine ascending, doing error by counting descending
The follow bash script works fine for for high counting number ranges from 1..1000
By high counting number ranges, bigger than 1..1000000, it needs some time to start. In general, it's working fine.
...
4
votes
3
answers
2k
views
What is the difference between double-quoting and not double-quoting an array in Bash?
While tracking down an error in my shellscript, I found the following behavior in this code snippet:
declare -a filelist
readarray filelist < <(ls -A)
readonly filelist
for file in "${filelist[@...
0
votes
2
answers
463
views
Bash brace expansion with variables for pattern matching
I want to loop through all files matching a pattern of the form
for file in {prefix1, prefix2, ...}*{postfix1, postfix2, ...}; do
How can I programmatically replace {prefix1, prefix2, ...} with a ...
5
votes
1
answer
3k
views
rsync command doesn't work when run as a systemd service
summary:
I am trying to set up a systemd timer to regularly backup a directory using the rsync command. I made an rsync command that works when run manually in a terminal, but it doesn't work ...
0
votes
2
answers
460
views
Why is Brace expansion with variables not working as expected? [duplicate]
I would like to set a variable (x=100) in the brackets such as
x=100
for i in {0.."$x"..50} ;do
echo $i
done
the desire output for i should be
0
50
100
although I get as an output
{0..100.....
0
votes
2
answers
747
views
How to create file names containing spaces when using brace expansion?
If this command:
touch Test{1..3}.txt
Allows me to create:
Test1.txt
Test2.txt
Test3.txt
What syntax would I need in order to batch create files containing a space in the file names?
For example:
...
1
vote
2
answers
417
views
Create multiples files with brace expansion combining letters and numbers
I am trying to create a series of files with brace expansions. I want create the files fileA1 to fileZ100 with all possible combinations (Something like touch file[A..Z][1..100]).
If I run the ...
0
votes
1
answer
494
views
trying bash brace expansion (discrete numbers) using while read line and echo, doesn't expand
I'm going to give a short version of the kind of issue I'm facing. The real application I'm trying to write has many parts, so I've tried to isolate the part where I'm stuck with a small example. My ...
2
votes
1
answer
1k
views
how do I loop through selected file extensions in ZSH?
I am looking for a ZSH equivalent to this BASH construct:
for file in *.{abc,def,ghi}; do #loop through all files with the extensions .abc, .def and .ghi
I cannot find a similar construct for ZSH. ...
0
votes
3
answers
192
views
How do I join the results of a command substitution?
I want to create a list of mp3 files like a 1.mp3|a 2.mp3.
I have tried echo ${(j:|:)$(echo *.mp3)} and some variations of it, but they don’t work:
# too much splitting
01|The|Magic|Finger|01.mp3|...
2
votes
1
answer
327
views
Paste & Brace Expansion vs Wildcard
Why does a brace expansion behave differently than wildcard in combination with paste?
Example:
Assume we have multiple folders, each containing the same-structured tsv and want to create a 'all.tsv' ...
-1
votes
2
answers
33
views
bash: why can't I copy 3 files into 3 directories that share a name with the files?
So if I can do this:
$ mkdir ./blah_{007,011,090}
And end up with three directories...
Why can't I do this...
cp ../blah_{007,011,090}.swf ./blah_{007,011,090}_src
And copy the files into 3 ...
3
votes
1
answer
699
views
Understanding fetching mutiple URLs and documents using curl
It's not clear to me how to fetch multiple documents using curl mainly because I do not fully understand the explanation in the curl documentation
The curl documentation says:
-o, --output <file&...
22
votes
8
answers
2k
views
Apply brace expansion in "reverse order"
For example {a..c}{1..3} expands to a1 a2 a3 b1 b2 b3 c1 c2 c3.
If I wanted to print a1 b1 c1 a2 b2 c2 a3 b3 c3, is there an analogous way to do that? What's the simplest way?
1
vote
1
answer
2k
views
bash for loop multiple number ranges
I want to run a bash numeric 'for' loop but I want to skip some numbers in between.
Example:
for num in {1..4, 7..11, 23..34}; do (echo num $num); done
or
for num in {17..24, 41..48}; do (echo num ...
1
vote
1
answer
2k
views
Why does this rsync call not work properly?
I made a simple script to perform backup of my NAS. I do it as follows:
date="$(date +%Y-%m-%d)"
base="/backup"
newest="$(ls -1td "$base"/*-*-*/ | head -n 1)"
today="$base/$date"
dirs="pub,data,...
1
vote
1
answer
1k
views
cp runs from command line but file not found from script [duplicate]
I have a script to reorganize my directory structure that contains:
files=./*"$pattern"I{"$ifirst".."$ilast"}.ext
cp ${files} ../"$pattern"/"$i"/
When I run the script, I get an error:
./*S6I{001.....
29
votes
2
answers
4k
views
What is the difference between `a[bc]d` (brackets) and `a{b,c}d` (braces)?
What is the difference between a[bc]d and a{b,c}d? Why do people use a{b,c}d when there is already a[bc]d?
6
votes
2
answers
4k
views
Loop in macOS not working
I need to execute the following shell script in my macOS terminal.
The loop never executes more than its first iteration.
function execute_function() {
# Launch job
number_of_jobs=$1
echo "...
2
votes
1
answer
157
views
Combine brace and variable expansion in one line
I would like to have a logging function that takes filenames as arguments and replicate the stdout to all of these files. This is what I have come up so far:
function logger() {
exec > >(...
6
votes
1
answer
401
views
Bash: Why does this Brace Expression work this way?
this is a bash 4 specific question. I am somewhat familiar with the bash Brace Expressions and I have read the manual but I do not understand how it actually works.
I guess it has to do with the ...
3
votes
2
answers
1k
views
How do ranges in dash work?
I'm trying to figure out how to rush the following bash script in dash.
for x in {1..5}
do
for y in {a..c}
do
echo $HOME$x$y
done
done
Dash does not support brace expansion and I don'...