aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.bash_utils
diff options
context:
space:
mode:
authorEgor Tensin <Egor.Tensin@gmail.com>2016-09-21 19:11:48 +0300
committerEgor Tensin <Egor.Tensin@gmail.com>2016-09-21 19:11:48 +0300
commitd3ebc21eadc5c32edc1ffaa026f51c260c2536fe (patch)
treee0ca691b6eddf5fd558141c95937e02bef3b0b54 /.bash_utils
parentexport .appdata/ to another project (diff)
downloadlinux-home-d3ebc21eadc5c32edc1ffaa026f51c260c2536fe.tar.gz
linux-home-d3ebc21eadc5c32edc1ffaa026f51c260c2536fe.zip
add replace_word, swap_files
Diffstat (limited to '')
-rw-r--r--.bash_utils/file.sh35
-rw-r--r--.bash_utils/text.sh14
2 files changed, 49 insertions, 0 deletions
diff --git a/.bash_utils/file.sh b/.bash_utils/file.sh
new file mode 100644
index 0000000..0321833
--- /dev/null
+++ b/.bash_utils/file.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2016 Egor Tensin <Egor.Tensin@gmail.com>
+# This file is part of the "Cygwin configuration files" project.
+# For details, see https://github.com/egor-tensin/cygwin-home.
+# Distributed under the MIT License.
+
+swap_files() (
+ set -o errexit -o nounset -o pipefail
+
+ if [ "$#" -ne 2 ]; then
+ echo "usage: ${FUNCNAME[0]} PATH1 PATH2" >&2
+ return 1
+ fi
+
+ local path1="$1"
+ local path2="$2"
+
+ if [ ! -f "$path1" ]; then
+ echo "${FUNCNAME[0]}: must be a regular file: $path1" >&2
+ return 1
+ fi
+
+ if [ ! -f "$path2" ]; then
+ echo "${FUNCNAME[0]}: must be a regular file: $path2" >&2
+ return 1
+ fi
+
+ local tmp_path
+ tmp_path="$( mktemp "$( dirname "$path1" )/XXX" )"
+
+ mv "$path1" "$tmp_path"
+ mv "$path2" "$path1"
+ mv "$tmp_path" "$path2"
+)
diff --git a/.bash_utils/text.sh b/.bash_utils/text.sh
index 5a678ee..cb34073 100644
--- a/.bash_utils/text.sh
+++ b/.bash_utils/text.sh
@@ -25,3 +25,17 @@ lint() {
doslint() {
trim "$@" && trimdoseol "$@" && doseol "$@"
}
+
+replace_word() (
+ set -o errexit -o nounset -o pipefail
+
+ if [ "$#" -lt 3 ]; then
+ echo "usage: ${FUNCNAME[0]} OLD NEW PATH [PATH...]" >&2
+ return 1
+ fi
+
+ local old="$1"
+ local new="$2"
+
+ shift && shift && sed --binary --in-place "s/\\b$old\\b/$new/g" "$@"
+)