Zsh: source scripts recursively
Clash Royale CLAN TAG#URR8PPP
up vote
4
down vote
favorite
I have ~/scripts/
folder that contains multiple subfolders with arbitrary directory levels.
This folder only for scripts that need to be sourced when start zsh
, how to recursively source all files under its folder and its subfolders in an short and effective way?
scripting zsh
add a comment |
up vote
4
down vote
favorite
I have ~/scripts/
folder that contains multiple subfolders with arbitrary directory levels.
This folder only for scripts that need to be sourced when start zsh
, how to recursively source all files under its folder and its subfolders in an short and effective way?
scripting zsh
add a comment |
up vote
4
down vote
favorite
up vote
4
down vote
favorite
I have ~/scripts/
folder that contains multiple subfolders with arbitrary directory levels.
This folder only for scripts that need to be sourced when start zsh
, how to recursively source all files under its folder and its subfolders in an short and effective way?
scripting zsh
I have ~/scripts/
folder that contains multiple subfolders with arbitrary directory levels.
This folder only for scripts that need to be sourced when start zsh
, how to recursively source all files under its folder and its subfolders in an short and effective way?
scripting zsh
scripting zsh
asked 2 hours ago
Tuyen Pham
415111
415111
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
4
down vote
accepted
Sourcing all non-hidden regular files in there, in collation order:
for f (~/scripts/**/*(N.)) . $f
I would suggest however that you name those files using a specific template like with a .zsh
extension (and use *.zsh
instead of *
above) to avoid problems if there are backup files lying about in there for instance.
Or you could at least exclude some common ones like file~
, file.dpkg-dist
, file.back
...:
set -o extendedglob
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak))(N.)) . $f
etc.
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With.zsh
means<..>s/**/^*.zsh("~"|dpkg<...>
?
– Tuyen Pham
1 hour ago
You had redundant extra)
inbak)))
.
– Tuyen Pham
42 mins ago
1
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is/*.zsh
, and the blacklist is/^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in.zsh
, then you could at least opt for using a blacklist.
– JoL
27 secs ago
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
4
down vote
accepted
Sourcing all non-hidden regular files in there, in collation order:
for f (~/scripts/**/*(N.)) . $f
I would suggest however that you name those files using a specific template like with a .zsh
extension (and use *.zsh
instead of *
above) to avoid problems if there are backup files lying about in there for instance.
Or you could at least exclude some common ones like file~
, file.dpkg-dist
, file.back
...:
set -o extendedglob
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak))(N.)) . $f
etc.
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With.zsh
means<..>s/**/^*.zsh("~"|dpkg<...>
?
– Tuyen Pham
1 hour ago
You had redundant extra)
inbak)))
.
– Tuyen Pham
42 mins ago
1
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is/*.zsh
, and the blacklist is/^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in.zsh
, then you could at least opt for using a blacklist.
– JoL
27 secs ago
add a comment |
up vote
4
down vote
accepted
Sourcing all non-hidden regular files in there, in collation order:
for f (~/scripts/**/*(N.)) . $f
I would suggest however that you name those files using a specific template like with a .zsh
extension (and use *.zsh
instead of *
above) to avoid problems if there are backup files lying about in there for instance.
Or you could at least exclude some common ones like file~
, file.dpkg-dist
, file.back
...:
set -o extendedglob
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak))(N.)) . $f
etc.
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With.zsh
means<..>s/**/^*.zsh("~"|dpkg<...>
?
– Tuyen Pham
1 hour ago
You had redundant extra)
inbak)))
.
– Tuyen Pham
42 mins ago
1
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is/*.zsh
, and the blacklist is/^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in.zsh
, then you could at least opt for using a blacklist.
– JoL
27 secs ago
add a comment |
up vote
4
down vote
accepted
up vote
4
down vote
accepted
Sourcing all non-hidden regular files in there, in collation order:
for f (~/scripts/**/*(N.)) . $f
I would suggest however that you name those files using a specific template like with a .zsh
extension (and use *.zsh
instead of *
above) to avoid problems if there are backup files lying about in there for instance.
Or you could at least exclude some common ones like file~
, file.dpkg-dist
, file.back
...:
set -o extendedglob
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak))(N.)) . $f
etc.
Sourcing all non-hidden regular files in there, in collation order:
for f (~/scripts/**/*(N.)) . $f
I would suggest however that you name those files using a specific template like with a .zsh
extension (and use *.zsh
instead of *
above) to avoid problems if there are backup files lying about in there for instance.
Or you could at least exclude some common ones like file~
, file.dpkg-dist
, file.back
...:
set -o extendedglob
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak))(N.)) . $f
etc.
edited 26 mins ago
answered 2 hours ago


Stéphane Chazelas
292k54544884
292k54544884
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With.zsh
means<..>s/**/^*.zsh("~"|dpkg<...>
?
– Tuyen Pham
1 hour ago
You had redundant extra)
inbak)))
.
– Tuyen Pham
42 mins ago
1
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is/*.zsh
, and the blacklist is/^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in.zsh
, then you could at least opt for using a blacklist.
– JoL
27 secs ago
add a comment |
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With.zsh
means<..>s/**/^*.zsh("~"|dpkg<...>
?
– Tuyen Pham
1 hour ago
You had redundant extra)
inbak)))
.
– Tuyen Pham
42 mins ago
1
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is/*.zsh
, and the blacklist is/^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in.zsh
, then you could at least opt for using a blacklist.
– JoL
27 secs ago
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With .zsh
means <..>s/**/^*.zsh("~"|dpkg<...>
?– Tuyen Pham
1 hour ago
for f (~/scripts/**/^*("~"|dpkg-(dist|old|new)|.(tmp|back|bak)))(N.)) . $f
. With .zsh
means <..>s/**/^*.zsh("~"|dpkg<...>
?– Tuyen Pham
1 hour ago
You had redundant extra
)
in bak)))
.– Tuyen Pham
42 mins ago
You had redundant extra
)
in bak)))
.– Tuyen Pham
42 mins ago
1
1
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham, thanks. Fixed.
– Stéphane Chazelas
26 mins ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is
/*.zsh
, and the blacklist is /^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in .zsh
, then you could at least opt for using a blacklist.– JoL
27 secs ago
@TuyenPham No, there is no sense in combining them like that. It's about using a whitelist vs a blacklist. The whitelist is
/*.zsh
, and the blacklist is /^*("~"|dpkg<...>)
. It's safer to use a whitelist, but if you have naming requirements that don't allow for files ending in .zsh
, then you could at least opt for using a blacklist.– JoL
27 secs ago
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f480766%2fzsh-source-scripts-recursively%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password