Showing posts with label BASH. Show all posts
Showing posts with label BASH. Show all posts

Sunday, 26 February 2012

BASH - result of remote command into local variable

If you like to code in BASH this tip may be interesing for you. It is possible to call a remote command in BASH for example through SSH and put it's result into a local variable. For example you can run your script by CRON on local machine and login to remote server through SSH to check if some file appears in given directory.

It's other problem to choose a login method - by pass entered into script code or by chenge of SSH certificates keys - better is to not put password into script because of security reasons. 


To put result of remote command into a local variable in BASH use this construction:

result=$(ssh login@host remote_command)
For example:
result=$(ssh login@host ls -all|grep searched_file.txt)


Article on CC-BY-SA-3.0

Wednesday, 24 August 2011

Recursive count lines number in large programming projects.

To count lines number from for example all *.java files in directory there is simple solution with "wc" command.

wc -l *.java

If you need to count lines number of large project with subdirectories etc. you can use
combination of "wc" and "find" command:

wc -l `find . -name \*.java -print`

To many arguments for mv / cp.

If you have to copy large number of files from one directory to another from console level (for example trough ssh) and you see message like "Too many arguments to proceed" there are few solutions. The best in my opinion is these using "find" command.

find . -iname "*.EXT" -exec cp {} -l /DST_PATH/ \;
Where EXT is extension of files you want to copy. If you want to copy all files set it to "*" . DST_PATH is destination path where you want to copy files.

You have to call this command from source path, so af first change your current directory to source by "cd" command.

If you want to copy all files from current directory but not from subdirectories here is solution with -maxdepth parameter.

find . -maxdepth 1 -iname "*.EXT" -exec cp {} -l /DST_PATH/ \;

 Good luck :)