Check These Out
The (in)famous "FizzBuzz" programming challenge, answered in a single line of Bash code. The "|column" part at the end merely formats the output a bit, so if "column" is not installed on your machine you can simply omit that part. Without "|column", the solution only uses 75 characters.
The version below is expanded to multiple lines, with comments added.
for i in {1..100} # Use i to loop from "1" to "100", inclusive.
do ((i % 3)) && # If i is not divisible by 3...
x= || # ...blank out x (yes, "x= " does that). Otherwise,...
x=Fizz # ...set x to the string "Fizz".
((i % 5)) || # If i is not divisible by 5, skip (there's no "&&")...
x+=Buzz # ...Otherwise, append (not set) the string "Buzz" to x.
echo ${x:-$i} # Print x unless it is blanked out. Otherwise, print i.
done | column # Wrap output into columns (not part of the test).
Using this command you can track a moment when usb device was attached.
Send apache log to syslog-ng server without change configuration of syslog.
Just add in httpd.conf or vhost conf.
Allow to read password in a script without showing the password inserted by the user
Converts any number of seconds into days, hours, minutes and seconds.
sec2dhms() {
declare -i SS="$1"
D=$(( SS / 86400 ))
H=$(( SS % 86400 / 3600 ))
M=$(( SS % 3600 / 60 ))
S=$(( SS % 60 ))
[ "$D" -gt 0 ] && echo -n "${D}:"
[ "$H" -gt 0 ] && printf "%02g:" "$H"
printf "%02g:%02g\n" "$M" "$S"
}
Here's an annotated version of the command, using full-names instead of aliases. It is exactly equivalent to the short-hand version.
# Recursively list all the files in the current directory.
Get-ChildItem -Recurse |
# Filter out the sub-directories themselves.
Where-Object { return -not $_.PsIsContainer; } |
# Group the resulting files by their extensions.
Group-Object Extension |
# Pluck the Name and Count properties of each group and define
# a custom expression that calculates the average of the sizes
# of the files in that group.
# The back-tick is a line-continuation character.
Select-Object `
Name,
Count,
@{
Name = 'Average';
Expression = {
# Average the Length (sizes) of the files in the current group.
return ($_.Group | Measure-Object -Average Length).Average;
}
} |
# Format the results in a tabular view, automatically adjusted to
# widths of the values in the columns.
Format-Table -AutoSize `
@{
# Rename the Name property to something more sensible.
Name = 'Extension';
Expression = { return $_.Name; }
},
Count,
@{
# Format the Average property to display KB instead of bytes
# and use a formatting string to show it rounded to two decimals.
Name = 'Average Size (KB)';
# The "1KB" is a built-in constant which is equal to 1024.
Expression = { return $_.Average / 1KB };
FormatString = '{0:N2}'
}
This command will take the output of a command and color any STDERR output as a different color (red outline in this case)
Excludes other mountpoints with acavagni's "mountpoint" idea, but with -exec instead of piping to an xargs subshell. Then, calling "du" only once with -exec's "+" option. The first "\! -exec" acts as a test so only those who match are passed to the second "-exec" for du.