Questions tagged [brace-expansion]

A shell mechanism which is used to generate arbitrary strings.

Filter by
Sorted by
Tagged with
0
votes
2answers
49 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
1answer
38 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 ...
2
votes
1answer
181 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
1answer
57 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
1answer
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
2answers
45 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
1answer
376 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
2answers
452 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
1answer
59 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
2answers
448 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
1answer
22 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
2answers
50 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
2answers
74 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 ...
2
votes
1answer
48 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
4answers
135 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}, ...
0
votes
0answers
12 views

Can't filter file extensions when the list is in a variable [duplicate]

I guess this is a relative simple question, but I can't find the way to access the variable content when doing a git diff, so it lists all the files with specific extension. // This works fine git ...
5
votes
3answers
660 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 ...
3
votes
2answers
84 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
0answers
13 views

How can I replace either of the range endpoints with a variable? [duplicate]

for i in {1..10}; do printf '\r%2d' $i sleep 1 done printf '\n' I tryed on follow way: 1st_value=1 2nd_value=10 echo $1st_value # thats works echo $2nd_value # thats works for i in {$...
0
votes
3answers
227 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
3answers
698 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
2answers
233 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 ...
1
vote
1answer
699 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
2answers
85 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
2answers
94 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: ...
0
votes
2answers
74 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
1answer
163 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 ...
1
vote
1answer
315 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
3answers
67 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|...
1
vote
1answer
154 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
2answers
32 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 ...
1
vote
1answer
168 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
8answers
1k 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
1answer
1k 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
1answer
1k 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
1answer
591 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.....
28
votes
2answers
3k 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
2answers
2k 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
1answer
71 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
1answer
361 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 ...
2
votes
2answers
157 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'...
8
votes
3answers
2k views

Why are bash brace expansions not working for commands?

Why is this working: mkdir /dir/test{1,2,3} and this not? {chown httpd,chmod 700} /dir/test1 -bash: {chown: command not found My Bash Version is: GNU bash, version 4.2.46(2)-release
0
votes
2answers
192 views

Running multiple command against files matching a brace+glob pattern without repeating it

I would like to run a series of commands against a set of files matched by a braces-and-globs pattern, without copy-pasting the pattern all over the place. I've been trying to do this by putting the ...
0
votes
2answers
240 views

Why do tilde prefixes expand prior to assignment, but braces don't

tl;dir In bash, brace expansion occurs before tilde expansion. However, tilde prefixes seem to expand prior to variable assignment and brace expansion doesn't. Why? Details and examples Brace ...
0
votes
1answer
34 views

Can variable-substitution-syntaxes be unified?

Can these two variable-substitution-syntaxes combined into one? rm "$s_a/$domain.conf" 2>/dev/null rm "$s_e/$domain.conf" 2>/dev/null like: rm "$s_{a,e}/$domain.conf" 2>/dev/null
2
votes
3answers
305 views

Create alphabetic index with letters repeating

I am running Debian 9. In Bash I can echo {a..z} for the alphabet, or echo {a..z}{a..z} to print letter combinations. However, I would like to generate an index with: a b c d etc. then aa bb cc dd etc....
3
votes
1answer
182 views

Generate brace expansion from list of files

This brace expression will generate a list of files: $ touch {foo{.t,t.t},other.txt,test{,.{ascii,t{est.qt,x{t,xt}}}}} $ ls foo.t foot.t other.txt test test.ascii test.test.qt test.txt test.txxt ...
4
votes
1answer
416 views

bash in-line brace expansion

Does bash/readline have a binding or a function that a key combination can be binded to in order to expand in-line braces? Similar to the way M-* key combination can be used for in-line globbing ...
2
votes
1answer
548 views

'ambiguous redirect' error from Bash

I have three directories a,b,c and each have a file named old.txt I would like to copy the contents of the file new.txt to each of these files. My approach is $ cat < new.txt > {a,b,c}/old.txt ...
7
votes
1answer
402 views

Why in bash {{a,b}.{c,d}} expands to {a.c} {a.d} {b.c} {b.d}

In bash echo {{a,b}.{c,d}} expands to {a.c} {a.d} {b.c} {b.d} Though nothing is mentioned for brace expansion in bash manual for the type of input I have made My question is why the output is ...