added profile files, removed personal figlet font
This commit is contained in:
@@ -13,7 +13,7 @@ export DEP_install_profile="install_pkg"
|
|||||||
|
|
||||||
install_profile()
|
install_profile()
|
||||||
{
|
{
|
||||||
installfile ansi_shadow.flf /usr/share/figlet/ansi_shadow.flf
|
#installfile ansi_shadow.flf /usr/share/figlet/ansi_shadow.flf
|
||||||
|
|
||||||
local usrlist="/root"
|
local usrlist="/root"
|
||||||
if find /home -mindepth 1 -maxdepth 1 -type d | read; then
|
if find /home -mindepth 1 -maxdepth 1 -type d | read; then
|
||||||
|
|||||||
115
repo/common/.bashrc
Normal file
115
repo/common/.bashrc
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||||
|
# for examples
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
case $- in
|
||||||
|
*i*) ;;
|
||||||
|
*) return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# don't put duplicate lines or lines starting with space in the history.
|
||||||
|
# See bash(1) for more options
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
|
||||||
|
# append to the history file, don't overwrite it
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||||
|
HISTSIZE=1000
|
||||||
|
HISTFILESIZE=2000
|
||||||
|
|
||||||
|
# check the window size after each command and, if necessary,
|
||||||
|
# update the values of LINES and COLUMNS.
|
||||||
|
shopt -s checkwinsize
|
||||||
|
|
||||||
|
# If set, the pattern "**" used in a pathname expansion context will
|
||||||
|
# match all files and zero or more directories and subdirectories.
|
||||||
|
#shopt -s globstar
|
||||||
|
|
||||||
|
# make less more friendly for non-text input files, see lesspipe(1)
|
||||||
|
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
|
# set variable identifying the chroot you work in (used in the prompt below)
|
||||||
|
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||||
|
debian_chroot=$(cat /etc/debian_chroot)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||||
|
case "$TERM" in
|
||||||
|
xterm-color|*-256color) color_prompt=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# uncomment for a colored prompt, if the terminal has the capability; turned
|
||||||
|
# off by default to not distract the user: the focus in a terminal window
|
||||||
|
# should be on the output of commands, not on the prompt
|
||||||
|
#force_color_prompt=yes
|
||||||
|
|
||||||
|
if [ -n "$force_color_prompt" ]; then
|
||||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
|
# We have color support; assume it's compliant with Ecma-48
|
||||||
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||||
|
# a case would tend to support setf rather than setaf.)
|
||||||
|
color_prompt=yes
|
||||||
|
else
|
||||||
|
color_prompt=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$color_prompt" = yes ]; then
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
else
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
|
fi
|
||||||
|
unset color_prompt force_color_prompt
|
||||||
|
|
||||||
|
# If this is an xterm set the title to user@host:dir
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*)
|
||||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enable color support of ls and also add handy aliases
|
||||||
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
#alias dir='dir --color=auto'
|
||||||
|
#alias vdir='vdir --color=auto'
|
||||||
|
|
||||||
|
#alias grep='grep --color=auto'
|
||||||
|
#alias fgrep='fgrep --color=auto'
|
||||||
|
#alias egrep='egrep --color=auto'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# colored GCC warnings and errors
|
||||||
|
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
||||||
|
|
||||||
|
# some more ls aliases
|
||||||
|
#alias ll='ls -l'
|
||||||
|
#alias la='ls -A'
|
||||||
|
#alias l='ls -CF'
|
||||||
|
|
||||||
|
# Alias definitions.
|
||||||
|
# You may want to put all your additions into a separate file like
|
||||||
|
# ~/.bash_aliases, instead of adding them here directly.
|
||||||
|
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
||||||
|
|
||||||
|
if [ -f ~/.bash_aliases ]; then
|
||||||
|
. ~/.bash_aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
# enable programmable completion features (you don't need to enable
|
||||||
|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||||
|
# sources /etc/bash.bashrc).
|
||||||
|
if ! shopt -oq posix; then
|
||||||
|
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||||
|
. /usr/share/bash-completion/bash_completion
|
||||||
|
elif [ -f /etc/bash_completion ]; then
|
||||||
|
. /etc/bash_completion
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
. ~/profile
|
||||||
27
repo/common/.profile
Normal file
27
repo/common/.profile
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# ~/.profile: executed by the command interpreter for login shells.
|
||||||
|
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
|
||||||
|
# exists.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files for examples.
|
||||||
|
# the files are located in the bash-doc package.
|
||||||
|
|
||||||
|
# the default umask is set in /etc/profile; for setting the umask
|
||||||
|
# for ssh logins, install and configure the libpam-umask package.
|
||||||
|
#umask 022
|
||||||
|
|
||||||
|
# if running bash
|
||||||
|
if [ -n "$BASH_VERSION" ]; then
|
||||||
|
# include .bashrc if it exists
|
||||||
|
if [ -f "$HOME/.bashrc" ]; then
|
||||||
|
. "$HOME/.bashrc"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set PATH so it includes user's private bin if it exists
|
||||||
|
if [ -d "$HOME/bin" ] ; then
|
||||||
|
PATH="$HOME/bin:$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set PATH so it includes user's private bin if it exists
|
||||||
|
if [ -d "$HOME/.local/bin" ] ; then
|
||||||
|
PATH="$HOME/.local/bin:$PATH"
|
||||||
|
fi
|
||||||
987
repo/common/profile
Normal file
987
repo/common/profile
Normal file
@@ -0,0 +1,987 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Begin profile
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Initial version from Beyond Linux From Scratch by
|
||||||
|
# * James Robertson <jameswrobertson@earthlink.net>
|
||||||
|
# * Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Current version from Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
|
||||||
|
# 16/02/2013 Version 1.0.0 : Initial version
|
||||||
|
# 24/10/2015 Version 2.0.0 : Added some advanced functionnalities (clean, srr, etc.)
|
||||||
|
# 04/02/2017 Version 2.0.1 : clean improvements (--shell)
|
||||||
|
# 16/09/2018 Version 2.1.0 : Added rmhost, setc, setfr, review of locales management
|
||||||
|
# 23/09/2019 Version 2.1.1 : [bugfix] dpkgs
|
||||||
|
# 24/09/2019 Version 2.1.2 : [bugfix] bug in profile version display
|
||||||
|
# 16/12/2019 Version 2.2.0 : Added showinfo, primary write of showdiskmap (to be finished)
|
||||||
|
# 08/01/2020 Version 2.3.0 : Added use of figlet and neofetch as an equivalent to motd
|
||||||
|
# 16/01/2020 Version 2.3.1 : [bugfix] non-interactive mode were blocked with some functions
|
||||||
|
# 31/01/2020 Version 2.3.2 : Figlet : changed default font to ansi_shadow
|
||||||
|
# 02/03/2020 Version 2.4.0 : Added command auzip
|
||||||
|
# 03/03/2020 Version 2.5.0 : Added command taz and rmspc, auzip renamed utaz and improved
|
||||||
|
# 05/03/2020 Version 2.5.1 : Language consistancy fix, added pigz support in taz
|
||||||
|
# 06/03/2020 Version 2.5.2 : Few aliases sorted out
|
||||||
|
# 11/09/2020 Version 2.5.3 : Few more aliases, improved code consistancy and typo,
|
||||||
|
# : improved utaz, removed showdiskmap, removed remaining French,
|
||||||
|
# : added license information for future publication
|
||||||
|
# 24/10/2020 Version 2.6.0 : Added session save and restore for Konsole
|
||||||
|
# 25/12/2020 Version 2.6.1 : Add check on rmhost, improvements rmspc, created expendlist
|
||||||
|
# 26/02/2021 Version 2.6.2 : taz: corrected bug with trailing slash on directories
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Copyright (c) 2013-2020 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
|
||||||
|
# Protected by the BSD3 license. Please read bellow for details.
|
||||||
|
#
|
||||||
|
# * Redistribution and use in source and binary forms,
|
||||||
|
# * with or without modification, are permitted provided
|
||||||
|
# * that the following conditions are met:
|
||||||
|
# *
|
||||||
|
# * Redistributions of source code must retain the above
|
||||||
|
# * copyright notice, this list of conditions and the
|
||||||
|
# * following disclaimer.
|
||||||
|
# *
|
||||||
|
# * Redistributions in binary form must reproduce the above
|
||||||
|
# * copyright notice, this list of conditions and the following
|
||||||
|
# * disclaimer in the documentation and/or other materials
|
||||||
|
# * provided with the distribution.
|
||||||
|
# *
|
||||||
|
# * Neither the name of the copyright holder nor the names
|
||||||
|
# * of any other contributors may be used to endorse or
|
||||||
|
# * promote products derived from this software without
|
||||||
|
# * specific prior written permission.
|
||||||
|
# *
|
||||||
|
# * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
# * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
# * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
# * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
# * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
# * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
# * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
# * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
# * OF SUCH DAMAGE.
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
export PROFVERSION="2.6.1"
|
||||||
|
|
||||||
|
export DEFAULT_CITY="Toulouse"
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# path* : private functions for PATH variable management
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
pathremove ()
|
||||||
|
{
|
||||||
|
local ifs=':'
|
||||||
|
local newpath
|
||||||
|
local dir
|
||||||
|
local pathvar=${2:-PATH}
|
||||||
|
for dir in ${!pathvar} ; do
|
||||||
|
if [ "$dir" != "$1" ] ; then
|
||||||
|
newpath=${newpath:+$newpath:}$dir
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
export $pathvar="$newpath"
|
||||||
|
}
|
||||||
|
|
||||||
|
pathprepend ()
|
||||||
|
{
|
||||||
|
pathremove $1 $2
|
||||||
|
local pathvar=${2:-PATH}
|
||||||
|
export $pathvar="$1${!pathvar:+:${!pathvar}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
pathappend ()
|
||||||
|
{
|
||||||
|
pathremove $1 $2
|
||||||
|
local pathvar=${2:-PATH}
|
||||||
|
export $pathvar="${!pathvar:+${!pathvar}:}$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# expandlist : treat wildcards in a file/directory list
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
expandlist()
|
||||||
|
{
|
||||||
|
local result=""
|
||||||
|
for item in "$1"; do
|
||||||
|
for content in "$item"; do
|
||||||
|
result+="\"$content\" "
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo $result
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# timer_* functions : internal timing function for prompt
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
function timer_now
|
||||||
|
{
|
||||||
|
date +%s%N
|
||||||
|
}
|
||||||
|
|
||||||
|
function timer_start
|
||||||
|
{
|
||||||
|
timer_start=${timer_start:-$(timer_now)}
|
||||||
|
}
|
||||||
|
|
||||||
|
function timer_stop
|
||||||
|
{
|
||||||
|
local delta_us=$((($(timer_now) - $timer_start) / 1000))
|
||||||
|
local us=$((delta_us % 1000))
|
||||||
|
local ms=$(((delta_us / 1000) % 1000))
|
||||||
|
local s=$(((delta_us / 1000000) % 60))
|
||||||
|
local m=$(((delta_us / 60000000) % 60))
|
||||||
|
local h=$((delta_us / 3600000000))
|
||||||
|
# Goal: always show around 3 digits of accuracy
|
||||||
|
if ((h > 0)); then timer_show=${h}h${m}m
|
||||||
|
elif ((m > 0)); then timer_show=${m}m${s}s
|
||||||
|
elif ((s >= 10)); then timer_show=${s}.$((ms / 100))s
|
||||||
|
elif ((s > 0)); then timer_show=${s}.$(printf %03d $ms)s
|
||||||
|
elif ((ms >= 100)); then timer_show=${ms}ms
|
||||||
|
elif ((ms > 0)); then timer_show=${ms}.$((us / 100))ms
|
||||||
|
else timer_show=${us}us
|
||||||
|
fi
|
||||||
|
unset timer_start
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Function triguered internaly by bash : defining prompt
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
set_prompt ()
|
||||||
|
{
|
||||||
|
Last_Command=$? # Must come first!
|
||||||
|
Blue='\[\e[0;34m\]'
|
||||||
|
White='\[\e[01;37m\]'
|
||||||
|
Yellow='\[\e[01;93m\]'
|
||||||
|
Red='\[\e[01;31m\]'
|
||||||
|
Green='\[\e[01;32m\]'
|
||||||
|
OnGrey='\[\e[47m\]'
|
||||||
|
OnRed='\[\e[41m\]'
|
||||||
|
OnBlue='\[\e[44m\]'
|
||||||
|
ICyan='\[\e[0;96m\]'
|
||||||
|
Default='\[\e[00m\]'
|
||||||
|
FancyX='\342\234\227'
|
||||||
|
Checkmark='\342\234\223'
|
||||||
|
|
||||||
|
# Begin with time
|
||||||
|
PS1="$Blue$OnGrey[ \t ]$Default "
|
||||||
|
|
||||||
|
# Add a bright white exit status for the last command
|
||||||
|
|
||||||
|
# If it was successful, print a green check mark. Otherwise, print
|
||||||
|
# a red X.
|
||||||
|
if [[ $Last_Command == 0 ]]; then
|
||||||
|
PS1+="$White$OnBlue[ \$Last_Command "
|
||||||
|
PS1+="$Green$Checkmark "
|
||||||
|
else
|
||||||
|
PS1+="$White$OnRed[ \$Last_Command "
|
||||||
|
PS1+="$Yellow$FancyX "
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add the ellapsed time and current date
|
||||||
|
timer_stop
|
||||||
|
PS1+="($timer_show)$White ]$Default "
|
||||||
|
|
||||||
|
# If root, just print the host in red. Otherwise, print the current user
|
||||||
|
# and host in green.
|
||||||
|
if [[ $EUID -eq 0 ]]; then
|
||||||
|
PS1+="$Red\\u$Green@\\h "
|
||||||
|
else
|
||||||
|
PS1+="$Green\\u@\\h "
|
||||||
|
fi
|
||||||
|
# Print the working directory and prompt marker in blue, and reset
|
||||||
|
# the text color to the default.
|
||||||
|
PS1+="$ICyan\\w \\\$$Default "
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Show profile version
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
ver ()
|
||||||
|
{
|
||||||
|
echo "Profile version $PROFVERSION."
|
||||||
|
}
|
||||||
|
export ver
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Change locale to French
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
setfr ()
|
||||||
|
{
|
||||||
|
# Set fr locale definitions
|
||||||
|
export LANG=fr_FR.UTF-8
|
||||||
|
export LC_MESSAGES=fr_FR.UTF-8
|
||||||
|
export LC_ALL=fr_FR.UTF-8
|
||||||
|
}
|
||||||
|
export setfr
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Change locale to C standard
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
setc ()
|
||||||
|
{
|
||||||
|
# Locale definitions
|
||||||
|
export LANG=C
|
||||||
|
export LC_MESSAGES=C
|
||||||
|
export LC_ALL=C
|
||||||
|
}
|
||||||
|
export setc
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Change locale to US (needed by Steam)
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
setus ()
|
||||||
|
{
|
||||||
|
# Locale definitions
|
||||||
|
export LANG=en_US.UTF-8
|
||||||
|
export LC_MESSAGES=en_US.UTF-8
|
||||||
|
export LC_ALL=en_US.UTF-8
|
||||||
|
}
|
||||||
|
export setc
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Display weather of the given city (or default one)
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
meteo ()
|
||||||
|
{
|
||||||
|
cities=$@
|
||||||
|
[[ $# -eq 0 ]] && local cities=$DEFAULT_CITY
|
||||||
|
|
||||||
|
for city in $cities; do
|
||||||
|
curl wttr.in/$city
|
||||||
|
done
|
||||||
|
}
|
||||||
|
export meteo
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Clean a directory or a tree from temporary or backup files
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
clean ()
|
||||||
|
{
|
||||||
|
for opt in $@ ; do
|
||||||
|
case $opt in
|
||||||
|
"-r"|"--recurs")
|
||||||
|
local recursive=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "clean : erase backup files in the given directories."
|
||||||
|
echo
|
||||||
|
echo "Usage : clean [option] [directory1] [...[directoryX]]"
|
||||||
|
echo
|
||||||
|
echo "Options :"
|
||||||
|
echo " -h, --help Display that help screen"
|
||||||
|
echo " -r, --recurs Do a recursive cleaning"
|
||||||
|
echo " -f, --force Do not ask for confirmation (use with care)"
|
||||||
|
echo " -s, --shell Do nothing and display what will be executed"
|
||||||
|
echo
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-s"|"--shell")
|
||||||
|
local outshell=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-f"|"--force")
|
||||||
|
local force=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-"*)
|
||||||
|
echo "Invalid option, use \"clean --help\" to display usage."
|
||||||
|
echo
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
local dirlist="$dirlist $opt"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ ! $dirlist ]] && local dirlist=$(pwd)
|
||||||
|
|
||||||
|
[[ ! $recursive ]] && local findopt="-maxdepth 1"
|
||||||
|
[[ ! $force ]] && local rmopt="-i"
|
||||||
|
unset recursive force
|
||||||
|
|
||||||
|
for dir in $dirlist; do
|
||||||
|
local dellist=$(find $dir $findopt -type f -name "*~" -o -name "#*#" -o -name "*.bak" -o -name ".~*#")
|
||||||
|
for f in $dellist; do
|
||||||
|
if [[ ! $outshell ]]; then
|
||||||
|
rm $rmopt $f
|
||||||
|
else
|
||||||
|
echo "rm $rmopt $f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
unset outshell dirlist dellist findopt rmopt
|
||||||
|
}
|
||||||
|
export clean
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Login root via SSH on the given machine
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
ssr ()
|
||||||
|
{
|
||||||
|
for opt in $@ ; do
|
||||||
|
case $opt in
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "ssr: do a root user ssh login."
|
||||||
|
echo
|
||||||
|
echo "Usage : ssr <server [ssh options]>"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ ! $1 ]] &&
|
||||||
|
echo "Please specify the server you want to log in." && return 1
|
||||||
|
|
||||||
|
local srv=$1 && shift
|
||||||
|
|
||||||
|
ssh -x root@$srv $@
|
||||||
|
}
|
||||||
|
export ssr
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Look for a package within installed one
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
dpkgs ()
|
||||||
|
{
|
||||||
|
local count=0
|
||||||
|
for opt in $@ ; do
|
||||||
|
case $opt in
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "dpkgs: look for an installed package by it's name."
|
||||||
|
echo
|
||||||
|
echo "Usage: dpkgs <string>"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-"*)
|
||||||
|
echo "Invalid option, use \"dpkgs --help\" to display usage."
|
||||||
|
echo
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
local pkg=$1 && shift
|
||||||
|
count=$(( $count + 1 ))
|
||||||
|
[[ $count -gt 1 ]] &&
|
||||||
|
echo "*** Error: Please specify a package name, without space, eventually partial." && return 1
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
[[ $count -lt 1 ]] && echo "*** Error: Please specify a package name, without space, eventually partial." && return 1
|
||||||
|
|
||||||
|
[[ -x /usr/sbin/dpkg ]] && "*** Error: dpkg command seems unavialable." && return 2
|
||||||
|
|
||||||
|
dpkg -l | grep $pkg
|
||||||
|
}
|
||||||
|
export dpkgs
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Search processes matching the given string
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
ppg ()
|
||||||
|
{
|
||||||
|
ps -edf | grep $@ | grep -v "grep $@"
|
||||||
|
}
|
||||||
|
export ppg
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Create a directory then goes inside
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
mcd () {
|
||||||
|
if [[ ! $# -eq 1 ]] ; then
|
||||||
|
echo "Create a directory then goes inside."
|
||||||
|
echo "Usage : mcd <directory>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
mkdir -pv $1 && cd $1
|
||||||
|
}
|
||||||
|
export mcd
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Get PID list of the given process name
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
gpid () {
|
||||||
|
[[ $# -eq 1 ]] && local single=1
|
||||||
|
for pid in $@; do
|
||||||
|
local result=$(ps -A | grep $pid | awk '{print $1}')
|
||||||
|
if [[ $single ]]; then
|
||||||
|
[[ $result ]] && echo "$result"
|
||||||
|
else
|
||||||
|
[[ $result ]] && echo "$pid: $result"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[[ $result ]] || return 1
|
||||||
|
}
|
||||||
|
export gpid
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Remove host from know_host (name and IP) for the active user
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
rmhost () {
|
||||||
|
if [[ "$#" -ne 1 ]]; then
|
||||||
|
echo "Error: incorrect number of parameters."
|
||||||
|
echo "Usage: rmhost <hostname>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
hst=$1
|
||||||
|
ip=$(host $hst | grep "has address" | awk '{print $NF}')
|
||||||
|
[[ ! $? ]] && echo "*** rmhost(): Error extracting IP from hostname." && return 1
|
||||||
|
|
||||||
|
echo "Removing host $hst from ssh known_host..."
|
||||||
|
ssh-keygen -R $hst > /dev/null
|
||||||
|
echo "Removing IP $ip from ssh known_host..."
|
||||||
|
ssh-keygen -R $ip > /dev/null
|
||||||
|
}
|
||||||
|
export rmhost
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Rename all files in current directory to replace spaces with _
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
rmspc () {
|
||||||
|
local lst=""
|
||||||
|
for opt in $@ ; do
|
||||||
|
case $opt in
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "rmspc : remove spaces from all filenames in current directories"
|
||||||
|
echo
|
||||||
|
echo "Usage : rmspc [option]"
|
||||||
|
echo
|
||||||
|
echo "Options :"
|
||||||
|
echo " -h, --help Display that help screen"
|
||||||
|
echo " -r, --recursive Treat subdiretories of the given directories"
|
||||||
|
echo " -c, --subst-char Change the replacement character (default is underscore)"
|
||||||
|
echo " -v, --verbose Display what is being done"
|
||||||
|
echo " -s, --shell Do nothing and display commands that would be executed"
|
||||||
|
echo
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-r"|"--recursive")
|
||||||
|
local recurs=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-c"?*|"--subst-char"?*)
|
||||||
|
local substchar=$(echo "$opt" | cut -f 2- -d '=')
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-v"|"--verbose")
|
||||||
|
local verb=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-s"|"--shell")
|
||||||
|
local shell=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Invalid parameter, use \"rmspc --help\" to display options list"
|
||||||
|
echo
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ ! $substchar ]] && substchar="_"
|
||||||
|
[[ $verb ]] && local mvopt="-v"
|
||||||
|
|
||||||
|
for f in *\ *; do
|
||||||
|
[[ $recurs ]] && [[ -d "$f" ]] && (
|
||||||
|
#[[ $verb ]] && echo "Entering directory $f ..."
|
||||||
|
pushd "$f" > /dev/null
|
||||||
|
rmspc --subst-char="$substchar" $mvopt --shell
|
||||||
|
popd > /dev/null
|
||||||
|
#[[ $verb ]] && echo "Leaving directory $f"
|
||||||
|
)
|
||||||
|
|
||||||
|
if [[ $(echo $f | grep " ") ]]; then
|
||||||
|
local newf="${f// /${substchar}}"
|
||||||
|
local command="mv $mvopt \"$f\" \"$newf\""
|
||||||
|
if [[ $shell ]]; then
|
||||||
|
echo $command
|
||||||
|
else
|
||||||
|
$command
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset lst substchar verb shell newf command mvopt
|
||||||
|
}
|
||||||
|
export rmspc
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Smartly uncompress archives (zip only)
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
utaz()
|
||||||
|
{
|
||||||
|
for opt in $@ ; do
|
||||||
|
case $opt in
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "utaz : uncompress all the given files and/or the ones found in the given"
|
||||||
|
echo " directories creating an host directory where needed."
|
||||||
|
echo
|
||||||
|
echo "Usage : utaz [option] [directorie(s)|file(s)]"
|
||||||
|
echo
|
||||||
|
echo "Options :"
|
||||||
|
echo " -h, --help Display that help screen"
|
||||||
|
echo " -d, --delete If decompression success, delete the source file"
|
||||||
|
echo " -c, --create-dir Always create a host directory"
|
||||||
|
echo " -n, --no-dir Never create a host directory"
|
||||||
|
echo
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-d"|"--delete")
|
||||||
|
local willrm=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-c"|"--create-dir")
|
||||||
|
local createdir=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-n"|"--no-dir")
|
||||||
|
local nodir=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-"*)
|
||||||
|
echo "Invalid option, use \"utaz --help\" to display options list"
|
||||||
|
echo
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# The ${opt%/} writing is to remove trailing / if any
|
||||||
|
local LIST="$LIST ${opt%/}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ $createdir && $nodir ]] && echo "*** Error: --create-dir and --no-dir options are mutually exclusive."
|
||||||
|
|
||||||
|
[[ ! $LIST ]] && local LIST="."
|
||||||
|
|
||||||
|
for zitem in $LIST; do
|
||||||
|
[[ $(ls $zitem/*.zip 2> /dev/null | wc -l) -eq 0 ]] &&
|
||||||
|
echo "$zitem contains no supported archive file, skipping." &&
|
||||||
|
continue
|
||||||
|
|
||||||
|
for f in $zitem/*.zip; do
|
||||||
|
echo -n "Processing archive $zitem/$f... "
|
||||||
|
local dir=${f::-4}
|
||||||
|
|
||||||
|
mkdir -p $dir
|
||||||
|
[[ $? -gt 0 ]] &&
|
||||||
|
echo "[ filesystem can't create directories, exit ]" &&
|
||||||
|
return 1
|
||||||
|
|
||||||
|
unzip -o $f -d $dir > /dev/null 2>&1
|
||||||
|
case $? in
|
||||||
|
0)
|
||||||
|
[[ $willrm ]] && rm -f $f && echo -n "Deleted ! "
|
||||||
|
;;
|
||||||
|
|
||||||
|
1)
|
||||||
|
echo "No deletion on warnings "
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "[ zip file corrupted, failed ]"
|
||||||
|
rm -rf $dir > /dev/null 2>&1
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ $createdir ]]; then
|
||||||
|
echo -n "[ subdir created, "
|
||||||
|
elif [[ $nodir ]]; then
|
||||||
|
mv ./$dir/* ./ && rmdir $dir
|
||||||
|
echo -n "[ No subdir, "
|
||||||
|
else
|
||||||
|
subdirs=$(find $dir -maxdepth 1 | wc -l)
|
||||||
|
if [[ $subdirs -eq 2 ]]; then
|
||||||
|
mv ./$dir/* ./ && rmdir $dir
|
||||||
|
echo -n "[ No subdir, "
|
||||||
|
else
|
||||||
|
echo -n "[ subdir created, "
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo " OK ]"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
export utaz
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Compress directories or files into one or more archive
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
taz()
|
||||||
|
{
|
||||||
|
_doxz()
|
||||||
|
{
|
||||||
|
command -v xz >/dev/null 2>&1 || {
|
||||||
|
echo -e >&2 "\t*** The program 'xz' is not installed, aborting."
|
||||||
|
return 127
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $4 ]] && local verb='-v'
|
||||||
|
|
||||||
|
# Display a warning for this format
|
||||||
|
echo -e "\t! Warning: xz format is not suited for long term archiving."
|
||||||
|
echo -e "\t See https://www.nongnu.org/lzip/xz_inadequate.html for details."
|
||||||
|
|
||||||
|
# Compresse to xz (lzma2) - Deprecated
|
||||||
|
xz $verb --compress --keep -$3 -T $2 $1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
_dolz()
|
||||||
|
{
|
||||||
|
local procopt="--threads $2"
|
||||||
|
local command=plzip
|
||||||
|
|
||||||
|
command -v plzip >/dev/null 2>&1 || {
|
||||||
|
command -v lzip >/dev/null 2>&1 || {
|
||||||
|
echo -e >&2 "\t*** Program 'plzip' or 'lzip' are not installed, aborting."
|
||||||
|
return 127
|
||||||
|
}
|
||||||
|
local command=lzip
|
||||||
|
local procopt=""
|
||||||
|
[[ $2 -gt 1 ]] &&
|
||||||
|
echo -e "\t! Warning: lzip doesn't support multithreading, falling back to 1 thread." &&
|
||||||
|
exho -e "\t* Consitder installing plzip to obtain multithreading abilities."
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $4 ]] && local verb="-vv"
|
||||||
|
|
||||||
|
# Compresse au format lzip (lzma)
|
||||||
|
$command $verb $procopt --keep -$3 $1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
_dogz()
|
||||||
|
{
|
||||||
|
local procopt="--processes $2"
|
||||||
|
local command=pigz
|
||||||
|
|
||||||
|
command -v pigz >/dev/null 2>&1 || {
|
||||||
|
command -v gzip >/dev/null 2>&1 || {
|
||||||
|
echo -e >&2 "\t*** Programs 'pigz' or 'gzip' are not installed, aborting."
|
||||||
|
return 127
|
||||||
|
}
|
||||||
|
local command="gzip --compress"
|
||||||
|
local procopt=""
|
||||||
|
[[ $2 -gt 1 ]] &&
|
||||||
|
echo -e "\t! Warning: gzip doesn't support multithreading, falling back to 1 thread." &&
|
||||||
|
exho -e "\t* Consitder installing pigz to obtain multithreading abilities."
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $4 ]] && local verb="--verbose"
|
||||||
|
|
||||||
|
# Compresse au format bz2
|
||||||
|
$command $verb $procopt --keep -$3 $1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
_dobz2()
|
||||||
|
{
|
||||||
|
local procopt="-p$2"
|
||||||
|
local command=pbzip2
|
||||||
|
|
||||||
|
command -v pbzip2 >/dev/null 2>&1 || {
|
||||||
|
command -v bzip2 >/dev/null 2>&1 || {
|
||||||
|
echo -e >&2 "\t*** The program 'pbzip2' or 'bzip2' are not installed, aborting."
|
||||||
|
return 127
|
||||||
|
}
|
||||||
|
local command=bzip2
|
||||||
|
local procopt=""
|
||||||
|
[[ $2 -gt 1 ]] &&
|
||||||
|
echo -e "\t! Warning: bzip2 doesn't support multithreading, falling back to 1 thread." &&
|
||||||
|
exho -e "\t* Consitder installing pbzip2 to obtain multithreading abilities."
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $4 ]] && local verb="-v"
|
||||||
|
|
||||||
|
# Compresse au format bz2
|
||||||
|
$command $verb --compress $procopt --keep -$3 $1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
_dolzo()
|
||||||
|
{
|
||||||
|
command -v lzop >/dev/null 2>&1 || {
|
||||||
|
echo -e >&2 "\t*** The program 'lzop' is not installed, aborting."
|
||||||
|
return 127
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ $4 ]] && local verb='-v'
|
||||||
|
[[ $2 -gt 1 ]] && echo -e "\t! Warning: lzop doesn't support multithreading, falling back to 1 thread."
|
||||||
|
|
||||||
|
# Compresse au format lzo
|
||||||
|
lzop --keep -$3 $1
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
for opt in $@ ; do
|
||||||
|
case $opt in
|
||||||
|
"-h"|"--help")
|
||||||
|
echo "taz : archive all files of a directory."
|
||||||
|
echo
|
||||||
|
echo "Usage: taz [option] [--parallel=<n>] [--format=<format>] [directory1 ... directoryN]"
|
||||||
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo " -h, --help Display that help screen"
|
||||||
|
echo " -d, --delete Delete source file or directory after success"
|
||||||
|
echo " -f, --format Chose archive format in the given list. If several format are"
|
||||||
|
echo " given, the smalest is kept"
|
||||||
|
echo " -p, --parallel Number of threads to use (if allowed by underlying utility)"
|
||||||
|
echo " -v, --verbose Display progress where possible"
|
||||||
|
echo " -1, .., -9 Compression level to use [1=fast/big, 9=slow/small]"
|
||||||
|
echo
|
||||||
|
echo "Supported archive format:"
|
||||||
|
echo " Param.| programs | Algo. | Description"
|
||||||
|
echo " ------+---------------+-------+----------------------------------------"
|
||||||
|
echo " lz | plzip, lzip | lzma | Safe efficient default format"
|
||||||
|
echo " xz | xz | lzma2 | Unsafe, not for long term"
|
||||||
|
echo " bz2 | pbzip2, bzip2 | bzip2 | Historical but less efficient than lz"
|
||||||
|
echo " gz | pigz, gzip | lz77 | Historical, safe, fast"
|
||||||
|
echo " lzo | lzop | lzo | Very fast but no multithread"
|
||||||
|
echo " tar | tar | tar | No compression"
|
||||||
|
echo
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-d"|"--delete")
|
||||||
|
local willrm=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-f"?*|"--format"?*)
|
||||||
|
local compform=$(echo "$opt" | cut -f 2- -d '=')
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-p"?*|"--parallel"?*)
|
||||||
|
local nproc=$(echo "$opt" | cut -f 2- -d '=')
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-v"|"--verbose")
|
||||||
|
local verbose=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-"[1..9])
|
||||||
|
local complevel=${opt:1:1}
|
||||||
|
;;
|
||||||
|
|
||||||
|
"-"*)
|
||||||
|
echo "Invalid option, use taz --help to display options list"
|
||||||
|
echo
|
||||||
|
return 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
local LIST="$LIST ${opt%/}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ ! $compform ]] && compform=lz # safe and efficient (unless data are already compressed)
|
||||||
|
[[ ! $nproc ]] && nproc=1
|
||||||
|
[[ ! $complevel ]] && complevel=6
|
||||||
|
|
||||||
|
for item in $LIST; do
|
||||||
|
local donetar=0
|
||||||
|
echo "--- Processing $item..."
|
||||||
|
|
||||||
|
if [[ -d $item ]]; then
|
||||||
|
echo -ne "\t* Creating $item.tar... "
|
||||||
|
|
||||||
|
tar -cf $item{.tar,}
|
||||||
|
if [[ ! $? -eq 0 ]]; then
|
||||||
|
echo "[ failed, skipping ]"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
local donetar=1
|
||||||
|
echo "[ OK ]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local fname=$item
|
||||||
|
[[ $donetar -gt 0 ]] && fname=$item.tar
|
||||||
|
|
||||||
|
# Skip compression part if tar is asked
|
||||||
|
if [[ $compform != "tar" ]]; then
|
||||||
|
echo -e "\t* Compressing archive..."
|
||||||
|
_do$compform $fname $nproc $complevel $verbose
|
||||||
|
[[ ! $? -eq 0 ]] && case $? in
|
||||||
|
127)
|
||||||
|
echo -e "\t*** Compression program unavailable, aborting."
|
||||||
|
return 127
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "\t*** Compression program returned an error, not deleting anything if asked, skipping to next item."
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[[ $donetar -gt 0 ]] && rm $fname
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $willrm ]]; then
|
||||||
|
echo -en "\t* Deleting original source as asked... "
|
||||||
|
rm -r $item && echo '[ OK ]' || echo '[ failed ]'
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "--- Done"
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
export taz
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Display system genal information
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
showinfo() {
|
||||||
|
echo ""
|
||||||
|
figlet $(hostname) -t -k
|
||||||
|
echo ""
|
||||||
|
neofetch
|
||||||
|
}
|
||||||
|
export showinfo
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# Save or restore Konsle session manually
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
ksession() {
|
||||||
|
# Configuration
|
||||||
|
local command=''
|
||||||
|
local savepath="${HOME}/.konsole/"
|
||||||
|
local savefile="$savepath/current-tabs"
|
||||||
|
|
||||||
|
# Restore if asked to
|
||||||
|
if [[ "$1" = "restore" ]]; then
|
||||||
|
|
||||||
|
echo "Restoring..."
|
||||||
|
konsole --tabs-from-file $savefile -e 'bash -c exit' &
|
||||||
|
|
||||||
|
elif [[ "$1" = "save" ]]; then
|
||||||
|
|
||||||
|
pid=$(pgrep konsole -u $USER)
|
||||||
|
if [[ $pid ]]; then
|
||||||
|
echo "# Most recent session list " $(date) > $savefile
|
||||||
|
for p in $pid; do
|
||||||
|
local sessions=$(qdbus org.kde.konsole-$p | grep /Sessions/)
|
||||||
|
if [[ $sessions ]] ; then
|
||||||
|
[[ ! -d $savepath ]] && mkdir $savepath
|
||||||
|
for i in $sessions; do
|
||||||
|
local format=$(qdbus org.kde.konsole-$p $i tabTitleFormat 0)
|
||||||
|
local processid=$(qdbus org.kde.konsole-$p $i processId)
|
||||||
|
local cwd=$(pwdx $processid | sed -e "s/^[0-9]*: //")
|
||||||
|
if [[ $(pgrep --parent $processid) ]] ; then
|
||||||
|
childpid=$(pgrep --parent $processid)
|
||||||
|
command=$(ps -p $childpid -o args=)
|
||||||
|
fi
|
||||||
|
echo "workdir: ${cwd};; title: ${format};; command:${command}" >> ${savefile}
|
||||||
|
command=''
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "ksession: save and restore KDE's Konsole sessions"
|
||||||
|
echo
|
||||||
|
echo "Usage: ksession <save|restore>"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export ksession
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# **************************************** MAIN PROGRAM ************************************
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
# ------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Former PS1, stopped for much better function
|
||||||
|
# Set the prompt look'n'feel
|
||||||
|
# NORMAL="\[\e[0m\]"
|
||||||
|
# RED="\[\e[1;31m\]"
|
||||||
|
# GREEN="\[\e[1;32m\]"
|
||||||
|
# PURPLE="\[\e[1;35m\]"
|
||||||
|
# BLUEONGREY="\[\e[0;34m\e[47m\]"
|
||||||
|
# if [[ $EUID == 0 ]] ; then
|
||||||
|
# export PS1="$BLUEONGREY[\t]$NORMAL $PURPLE\$?$NORMAL|$RED\u@\H:$NORMAL\w$RED\$ $NORMAL"
|
||||||
|
# else
|
||||||
|
# export PS1="$BLUEONGREY[\t]$NORMAL $PURPLE\$?$NORMAL|$GREEN\u@\H:$NORMAL\w$GREEN\$ $NORMAL"
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# Build PATH environment variable
|
||||||
|
if [[ $EUID -eq 0 ]] ; then
|
||||||
|
pathappend /sbin:/usr/sbin
|
||||||
|
fi
|
||||||
|
[[ -d ~/.gem/ruby/2.3.0/bin ]] && pathappend ~/.gem/ruby/2.3.0/bin
|
||||||
|
[[ -d /share/services/gestparc ]] && pathappend /share/services/gestparc
|
||||||
|
|
||||||
|
# Set bash history
|
||||||
|
export HISTSIZE=10000
|
||||||
|
export HISTIGNORE="&:[bf]g:exit"
|
||||||
|
|
||||||
|
# Set default pager
|
||||||
|
export PAGER=less
|
||||||
|
|
||||||
|
# Execute optionnal config script if any
|
||||||
|
for script in ~/profile.d/*.sh ; do
|
||||||
|
if [ -r $script ] ; then
|
||||||
|
. $script
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Interactive shell detection, two methods available each one of those might have different result
|
||||||
|
# depending on distribution
|
||||||
|
#shopt -q login_shell && INTERACTIVE=1
|
||||||
|
[[ $- == *i* ]] && INTERACTIVE=1
|
||||||
|
|
||||||
|
if [[ $INTERACTIVE ]]; then
|
||||||
|
# For compiling (as we often compile with LFS/0linux...)
|
||||||
|
export MAKEFLAGS='-j4'
|
||||||
|
export PKGSOURCES='/share/src/archives'
|
||||||
|
|
||||||
|
#Aliases
|
||||||
|
alias ll='ls -laFh --color=auto'
|
||||||
|
alias la='ls -Ah --color=auto'
|
||||||
|
alias l='ls -CF --color=auto'
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias qfind="find . -name "
|
||||||
|
|
||||||
|
alias mkck='make check'
|
||||||
|
alias mkin='make install'
|
||||||
|
alias mkdin='make DESTDIR=$PWD/dest-install install'
|
||||||
|
alias ssh='ssh -x'
|
||||||
|
|
||||||
|
alias wget='wget -c' # resume mode by default
|
||||||
|
alias myip='curl ip.appspot.com'
|
||||||
|
|
||||||
|
# Human readable by default
|
||||||
|
alias df='df -H'
|
||||||
|
alias du='du -ch'
|
||||||
|
|
||||||
|
alias sdu='du -sk ./* | sort -n'
|
||||||
|
|
||||||
|
# Define PS1
|
||||||
|
trap 'timer_start' DEBUG
|
||||||
|
PROMPT_COMMAND='set_prompt'
|
||||||
|
|
||||||
|
# Set default language
|
||||||
|
setfr
|
||||||
|
showinfo
|
||||||
|
echo "Profile version $PROFVERSION chargé..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
unset pathremove pathprepend pathappend
|
||||||
|
|
||||||
|
#return 0
|
||||||
|
# End /etc/profile
|
||||||
Reference in New Issue
Block a user