Imagine you have to dial the international phone number shown below. How would you do it? Considering you can place internation calls (i.e. its part of the dialing plan of the phone your using)Read More…
My AXIS camera (AXIS M1011-W Network Camera) captures files into files that look like this:
There are thousands of these images. The issue with lots of files of any type isRead More…
Source: http://unix.stackexchange.com/questions/84922/extract-a-part-of-one-line-from-a-file-with-sed Imagine you have a text:
# cat weird.txt
Number of ducks 120 how many of them are singers 100
15 humans in the choir class, and 12 can sing
Fat turles: 300, How many can sing: 100, How many can dance: 100
How do we extract the first number (number of animal) and the second number (number of singers). Notice that there is no pattern. so weRead More…
Once I learned about SoftEther VPN, I realized I was missing out on a lot. In this article I will show you how to setup a Client to Site VPN without needingRead More…
A normal if statement in bash looks like this
if ps ax | grep "[p]rogram" &> /dev/null; then
echo "program is running"
echo "program is not running"
# COMMENT1: the "if statement" part is this 'ps ax | grep "[p]rogram" &> /dev/null' -- well thats what I call it in these comments, it real technical name could be different
# COMMENT2: if runs the first part of if code block when the if-statement has anexit status of success (0), and it evaluates the 'else'/2nd part in this case when the if-statement returns an exist status of fail (not 0). the if statement you can also use other programs with the if statement. I choose grep because I know that grep has an exit status of fail (not 0) when it doesnt finds something and an exit status of success (0) when it doesnt find something. also note that ps exit status doesnt matter, its only the last things exit status that matters, so in this case the grep
# COMMENT3: searching for [p]rogram instead of program because this way grep doesnt find itself - read this article for more info: http://unix.stackexchange.com/questions/74185/how-can-i-prevent-grep-from-showing-up-in-ps-results
# COMMENT4: redirecting the output to garbage so that we dont see the output of ps. we just want it to print "program is running" or "program is not running", we dont want to see the ps. this is good practice for if statement, the actual if part, rarely does anyone want to see that.
# COMMENT5: I redirected with "&> /dev/null", however I could of used just "> /dev/null", but then if there was errors it would cause issues. Also note that "&>" is the same as "> /dev/null 2>&1" or "2> /dev/null > /dev/null". if your using "> /dev/null 2>&1" then make sure to do ">" first so that "2>" knows where "&1" is, meaning dont do " 2>&1 > /dev/null".
Here is how to make it one line
if ps ax | grep "[p]rogram" &> /dev/null; then echo "program is running"; else echo "program is not running"; fi;
# COMMENT1: notice there is no ; after the 'then' nor the 'else'.
# COMMENT2: the ; after the fi is optional
# COMMENT3: make sure there is a space after the "if" followed by the if-statement
# COMMENT3: make sure there is a semicolon space "; " right after the if-statement. Notice how after the "ps ax | grep "[p]rogram" &> /dev/null" there is a "; ". making it "ps ax | grep "[p]rogram" &> /dev/null; "
# COMMENT4: format: if if-statement; then success-part; else fail-part; fi;
# if-statement should be a set of commands (that can be tied with pipes) where the last command has a meaningful exit status (0 exit status which means success will run the success-part code, and anything other than 0 will run fail-part code)
And here is how to make it one line with ampersands ands andRead More…
How to change the qualities of sickbeard / sickrage tvshows all at once via sqlite instead of going one by one thru the gui (in the gui you get there by goingRead More…
Here is how you setup uTorrent Server on a Linux box. I tested with a Debian like build (my ReadyNAS 6.x box) Download the tar gzip file containing UTServer
NOTE 1:Read More…
SystemD is the newer alternative to the init.d system. Instead of service files being in /etc/init.d/, they are in /lib/systemd/system. In /etc/systemd/system/multi-user.target.wants/ there are symlinks to the /lib/systemd/system service files. Anything inRead More…
# Best Sortable Date and Time (start with the biggest go to smallest: year,month,day,hour,minute,second)
# ex: 2015-09-15-13-28-50 (which means Sept 15th 2009 at 1:28:50 pm)
# or this format where its easy to spot which one is the date and which is the time
# ex: d2015-09-15-h13-28-50
# Epoch Second (seconds since 1970/1/1 at midnight at UTC - timezone independent, so it doesn't matter what timezone your in, this second will always be the same - however even though its timezone independent your timezone has to be selected correctly - the first thing this does is convert current time to UTC time then the UTC time to seconds since 1970/1/1 00:00:00)
# Convert epoch second to a date in current timezone
# whats 12341234 seconds? (whats the date and time 12341234 seconds after the epoch)
# Sat May 23 16:07:14 EDT 1970
# Wed Dec 31 19:00:00 EST 1969
# Convert epoch second to a date in UTC (add -u)
date -d@12341234 -u
# Sat May 23 20:07:14 UTC 1970
# Thu Jan 1 00:00:00 UTC 1970 (date and time of the epoch)
Read the date man page for more info. http://ss64.com/bash/date.html Also the date –help output is very useful
# date --help
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Display the current time in the given FORMAT, or set the system date.
-d, --date=STRING display time described by STRING, not `now'
-f, --file=DATEFILE like --date once for each line of DATEFILE
-r, --reference=FILE display the last modification time of FILE
-R, --rfc-2822 output date and time in RFC 2822 format.
Example: Mon, 07 Aug 2006 12:34:56 -0600
--rfc-3339=TIMESPEC output date and time in RFC 3339 format.
TIMESPEC=`date', `seconds', or `ns' for
date and time to the indicated precision.
Date and time components are separated by
a single space: 2006-08-07 12:34:56-06:00
-s, --set=STRING set time described by STRING
-u, --utc, --universal print or set Coordinated Universal Time
--help display this help and exit
--version output version information and exit
FORMAT controls the output. Interpreted sequences are:
%% a literal %
%a locale's abbreviated weekday name (e.g., Sun)
%A locale's full weekday name (e.g., Sunday)
%b locale's abbreviated month name (e.g., Jan)
%B locale's full month name (e.g., January)
%c locale's date and time (e.g., Thu Mar 3 23:05:25 2005)
%C century; like %Y, except omit last two digits (e.g., 20)
%d day of month (e.g., 01)
%D date; same as %m/%d/%y
%e day of month, space padded; same as %_d
%F full date; same as %Y-%m-%d
%g last two digits of year of ISO week number (see %G)
%G year of ISO week number (see %V); normally useful only with %V
%h same as %b
%H hour (00..23)
%I hour (01..12)
%j day of year (001..366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n a newline
%N nanoseconds (000000000..999999999)
%p locale's equivalent of either AM or PM; blank if not known
%P like %p, but lower case
%r locale's 12-hour clock time (e.g., 11:11:04 PM)
%R 24-hour hour and minute; same as %H:%M
%s seconds since 1970-01-01 00:00:00 UTC
%S second (00..60)
%t a tab
%T time; same as %H:%M:%S
%u day of week (1..7); 1 is Monday
%U week number of year, with Sunday as first day of week (00..53)
%V ISO week number, with Monday as first day of week (01..53)
%w day of week (0..6); 0 is Sunday
%W week number of year, with Monday as first day of week (00..53)
%x locale's date representation (e.g., 12/31/99)
%X locale's time representation (e.g., 23:13:48)
%y last two digits of year (00..99)
%z +hhmm numeric time zone (e.g., -0400)
%:z +hh:mm numeric time zone (e.g., -04:00)
%::z +hh:mm:ss numeric time zone (e.g., -04:00:00)
%:::z numeric time zone with : to necessary precision (e.g., -04, +05:30)
%Z alphabetic time zone abbreviation (e.g., EDT)
By default, date pads numeric fields with zeroes.
The following optional flags may follow `%':
- (hyphen) do not pad the field
_ (underscore) pad with spaces
0 (zero) pad with zeros
^ use upper case if possible
# use opposite case if possible
After any flags comes an optional field width, as a decimal number;
then an optional modifier, which is either
E to use the locale's alternate representations if available, or
O to use the locale's alternate numeric symbols if available.
Convert seconds since the epoch (1970-01-01 UTC) to a date
$ date --date='@2147483647'
Show the time on the west coast of the US (use tzselect(1) to find TZ)
$ TZ='America/Los_Angeles' date
Show the local time for 9AM next Friday on the west coast of the US
$ date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Report date bugs to firstname.lastname@example.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report date translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'date invocation'
If you have an NTFS filesystem on a disk or a partition (or on an iSCSI Lun) & it is corrupt, then you might see symptoms like this: drive letter is shown,Read More…