How to properly use Terminal Emulator shortcut widget commands? - General Questions and Answers

Hello!
I want to create a homescreen widget shortcut for Terminal Emulator to do the following command line:
Code:
killall -9 mediaserver
To do so, I created a sh file type with the following lines and moved it to /system dir with rwxrwxrwx permissions:
Code:
#!/system/bin/sh
su
killall -9 mediaserver
exit
exit
And then created a widget with Term shortcut with this text on argument window:
Code:
su -c "sh /system/camscript.sh"
The problem is: When I select the Terminal Icon on my homescreen, it open the terminal emulator appears
Code:
[email protected]:/ $ su -c "sh /system/camscript.sh"
[email protected]:/ #
The thing is that I want it to execute the command and exit the terminal emulator prompt by itself.
Can anyone help me?
Thanks

Please! Someone??

teforeon said:
Code:
#!/system/bin/sh
su
killall -9 mediaserver
exit
exit
And then created a widget with Term shortcut with this text on argument window:
Code:
su -c "sh /system/camscript.sh"
The problem is: When I select the Terminal Icon on my homescreen, it open the terminal emulator appears
Code:
[email protected]:/ $ su -c "sh /system/camscript.sh"
[email protected]:/ #
The thing is that I want it to execute the command and exit the terminal emulator prompt by itself.
Click to expand...
Click to collapse
Thanks for your command example. It works for me and I can live with the disadvantage that the "Terminal Emulator" does not close after command execution. In my case I need even a running "Terminal Emulator" before I can run the "Term shortcut" although the "Term shortcut" opens a "Terminal Emulator"-window (strange ).
By the way you have written "#!/system/bin/sh" . In my case it is enough to write just "#!/bin/sh"

schnick_schnack said:
Thanks for your command example. It works for me and I can live with the disadvantage that the "Terminal Emulator" does not close after command execution. In my case I need even a running "Terminal Emulator" before I can run the "Term shortcut" although the "Term shortcut" opens a "Terminal Emulator"-window (strange ).
By the way you have written "#!/system/bin/sh" . In my case it is enough to write just "#!/bin/sh"
Click to expand...
Click to collapse
Hhaha yes, I seem to have to open it too. But the command not always works for what I need anymore (reset camera on custom firmware).

I know that I'm a little late to the party but, why not use "am force-stop jackpal.androidterm" at the end of your script.
This kills the terminal emulator app.

bamoka said:
I know that I'm a little late to the party but, why not use "am force-stop jackpal.androidterm" at the end of your script.
This kills the terminal emulator app.
Click to expand...
Click to collapse
I am even later to the party LOL
Your am force command did not work for me as it says that I need special permissions to force close an app
What did work is to add a "&& exit"
e.g.
Code:
su -c "sh /system/camscript.sh" && exit

Related

[GUIDE] SManager - How to use Commands

Hi,
I want to learn some of the commands for use in SManager (Script Manager) for ANDROID.
https://sites.google.com/site/devwom/script-manager
Does anyone know a suitable thread with guide or commands for SManager? I tried searching the web and XDA but did not find anything myself.
Specifically I want to know the cmd line to start an app.
EDIT 1:
Spent a good few hours trying to google a solution but drawn a blank.......Maybe Shell Scripts for Linux are not same as for Android...?
I would like to be able to run a script that does the following:
Checks if a directory exists on the sdcard
then executes a command (renaming of 2 directories)
then starts a program
EDIT 2:
well a few emails with the author of SManager and I was able to write my first script to check if the app is running and then if not, to rename folders and start the other version of the app. (I have Navigon Europe as well as Navigon Australia and was looking for a solution to allow both to co exist on my One-X at the same time. As both apps share the same directory structure the issue was that starting one version would overwrite the critical files of the other).
Now with my script installed as a widget I can toggle between each version without problem.
Here is some useful information on shell language for others (credits to the author of SManager Devwom):
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
Here are some critical bits of info received during my emails with him:
Thanks a lot for your interest in SManager.
The requested commands is a mix between linux commands and android os commands.
To get info about each command you can search in google and select the preferred page.
But the commands available in each Android device depends on running rom.
To get all available commands in your device, simply execute a ls (lower case LS) in system directories, that is:
ls /system/bin
ls /system/sbin
ls /system/xbin
ls /system/usr/bin
ls /system/usr/sbin
ls /system/usr/xbin
These are the most common directories where binaries resides in android devices.
May be you also can have commands at:
ls /bin
ls /sbin
ls /usr/bin
ls /usr/sbin
usually android rooted roms have the well known busybox, to get a list all comands inside it simply execute
busybox
to get all installed packages (and running names) from your device you can execute:
pm list packages
to get info about running process
ps
or
ps aux
or
ps -aux
depending on ps version installed
If conditions are based on test bash command this command is a bit confused, because usually it is named as [, and other times it is built-in inside shell
read "test man page" to get a full list of test command flags.
To check if an app is running:
if [ -n "$(ps|grep os.tools.scriptmanager)" ] ; then
echo SManager is running
fi
To check if app is NOT running:
if [ -z "$(ps|grep os.tools.scriptmanager)" ] ; then
echo SManager is NOT running
fi
To check if a file exist:
if [ -e /sdcard/file ] ; then
echo /sdcard/file exists
fi
To check if a file exist and it is a directory:
if [ -d /sdcard/file ] ; then
echo /sdcard/file exists and is directory
fi
To rename a directory simply use mv command:
I hope you can build your script with this info.
Start app it is very easy but getting correct info to start app is a bit confused.
starting app uses "am command"
To get correct info to start app you should execute:
logcat |grep Starting
in a terminal on device
then go to launcher and launch desired app
then go back to the terminal and you will see a line with info about how to fill am command.
For example if you execute SManager
in
logcat|grep Starting
output you will see
I/ActivityManager(* 275): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=os.tools.scriptmanager/.launcherActivity } from pid 377
so to start scriptmanager you need the following command
am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n os.tools.scriptmanager/.launcherActivity
I do not know how to stop apps from command line, I usually use killall command:
killall os.tools.scriptmanager
if you do not have killall command you can use grep and awk or cut commands
kill "$(ps|grep os.tools.scriptmanager|grep -v grep|awk '{print $2;}')"
or
kill "$(ps|grep os.tools.scriptmanager|grep -v grep|cut -f5 -d" ")"
may you need adjust -f5 flag
To execute script as shortcut install SMWidgets.
Scripts usually ends with last line , ie, not special action is required, it will exit with the last executed command return code
Also you can add
exit 0
or preferred exit value, but 0 usually means OK
To end script in the middle use
exit value
where value usually it is not 0
Also it is better use mv command instead rename command.
rename command it is not linux standard, but mv command is in all linux shells.
Android shell programing it is not equals to linux shell programming but this was one of my first scripting documents many years ago and it can be used as a guide. http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
Best regards,
Devwom
Thanks, this is valuable information! It's a shame this thread didn't get more replies
I've been looking to change my wallpaper by script, but so far I haven't been succesful. With your guide, I guess I'm a step closer to my goals!
Hi.
Perhaps developer of smanager or any expert is reading...
I would like to write a script for 2 purposes. Both handle with samba share running on my ubuntu.
1st situation.: I would like to move my media, download and documents files from android to the desired folder on my Ubuntu, which is shared by samba in my LAN.
The goal is to start this script with just touching a widget.
2nd situation: I would like to copy files from my samba shared folder in ubuntu to a specific folder on sdcard in android. All files in folder on sdcard should be deleted before copying. Again just by touching a widget.
Shared folder on samba are with password and rw.
Till now I am doing it manually with esexplorer...
I would like to do it with script.
Sent from my Incredible S using xda app-developers app

[Q] Disable proximity sensor via terminal emulator

Hi @ all,
I have that following problem: My phones display turns off automatically while im receiving or doing a call. My proximity sensor is broken and i would like disable it and i found a good solution here in this formus:
http://forum.xda-developers.com/showthread.php?t=925814&page=5
# cd /data/local
# touch userinit.sh
# echo "#!/system/bin/sh" > userinit.sh
# echo "#" >> userinit.sh
# echo "chmod 0000 /dev/cm3602" >> userinit.sh
# echo "chmod 000 /dev/cm3602" >> userinit.sh
# chmod 777 userinit.sh
But there's a little problem. I'm not well in programming - now my question is: can someone cange the code that it fit's to my phone. It's a Desire S with CyanogenMod 10 Beta.
Would be very thankful!
our phone has a /dev/cm3602 as well, so it probably uses the same chip.
note: the following is untested
Code:
cat>/etc/init.d/98-disable-sensor<<EOF
#`which sh`
chmod 000 /dev/cm3602
EOF
run that through adb shell and if your kernel has init.d support it will automatically disable your proximity sensor every boot. disable the sensor for your current session by running a simple 'chmod 000 /dev/cm3602' through adb shell.
THX! I will try it out soon.
Sent from my Desire S using xda app-developers app
I've just figured out that those commands won't work as is -- I stupidly forgot you need to remount system r/w and make the file executable for it to run. This should work (still didn't test it) -- run it all in an adb shell:
Code:
mount -o remount,rw /system
cat>/etc/init.d/98-disable-sensor<<EOF
#!`which sh`
chmod 000 /dev/cm3602
EOF
chmod 755 /etc/init.d/98-disable-sensor
mount -o remount,ro /system
i just tried it out and it says
[email protected]:/ # mount -o remount,rw /system
mount -o remount,rw /system
[email protected]:/ # cat>/etc/init.d/98-disable-sensor<<EOF
cat>/etc/init.d/98-disable-sensor<<EOF
> #!'which sh'
#!'which sh'
> chmod 000 /dev/cm3602
chmod 000 /dev/cm3602
> EOF
EOF
sh: can't create temporary file /sqlite_stmt_journals/mksh.vXIer13043: No such file or directory
but simply 'chmod 000 /dev/cm3602' works fine for one session! thanks!
Ooh, joy, it's that bug in the android shell that I'd forgotten about.
Try this instead:
In an adb shell, run 'which sh'. Note the path it returns.
On your computer, copy the following to a text file named '98-disable-sensor'. Be sure to use an editor (e.g. Notepad++) that can save with LF newline bytes and make sure you tell it to do that! (Under Windows, a newline is marked by the bytes \r\n, which is wrong for Linux - it should be just \n. Save the file as 'Unix text file' or something like that when asked.)
Code:
#!/path/to/sh/you/wrote/down/earlier
chmod 000 /dev/cm3602
Push it to your device: 'adb remount' + 'adb push 98-disable-sensor /etc/init.d/'
Make it executable: 'adb shell chmod 755 /etc/init.d/98-disable-sensor'
Remount system r/o again: 'adb shell mount -o remount,ro /system'
Aquous said:
Ooh, joy, it's that bug in the android shell that I'd forgotten about.
Try this instead:
In an adb shell, run 'which sh'. Note the path it returns.
On your computer, copy the following to a text file named '98-disable-sensor'. Be sure to use an editor (e.g. Notepad++) that can save with LF newline bytes and make sure you tell it to do that! (Under Windows, a newline is marked by the bytes \r\n, which is wrong for Linux - it should be just \n. Save the file as 'Unix text file' or something like that when asked.)
Code:
#!/path/to/sh/you/wrote/down/earlier
chmod 000 /dev/cm3602
Push it to your device: 'adb remount' + 'adb push 98-disable-sensor /etc/init.d/'
Make it executable: 'adb shell chmod 755 /etc/init.d/98-disable-sensor'
Remount system r/o again: 'adb shell mount -o remount,ro /system'
Click to expand...
Click to collapse
Hi
Do you know what is the command to turn off all sensors ?
i want to execute the command when screen is off (by xposed edge)
and turn on again when screen is on
loopypalm said:
Hi
Do you know what is the command to turn off all sensors ?
i want to execute the command when screen is off (by xposed edge)
and turn on again when screen is on
Click to expand...
Click to collapse
I use the below command on low battery trigger via Tasker
Code:
cmd statusbar click-tile com.android.settings/.development.qstile.DevelopmentTiles\$SensorsOff
varunpilankar said:
I use the below command on low battery trigger via Tasker
Code:
cmd statusbar click-tile com.android.settings/.development.qstile.DevelopmentTiles\$SensorsOff
Click to expand...
Click to collapse
Thx but i don't want to use tasker or any extra app
loopypalm said:
Thx but i don't want to use tasker or any extra app
Click to expand...
Click to collapse
Us can use the via adb or shell script event trigger.
varunpilankar said:
Us can use the via adb or shell script event trigger.
Click to expand...
Click to collapse
what is the adb comand ?
loopypalm said:
what is the adb comand ?
Click to expand...
Click to collapse
Code:
adb shell cmd statusbar click-tile com.android.settings/.development.qstile.DevelopmentTiles\$SensorsOff
varunpilankar said:
Code:
adb shell cmd statusbar click-tile com.android.settings/.development.qstile.DevelopmentTiles\$SensorsOff
Click to expand...
Click to collapse
it work on PC but no luck in terminal/xposed edge
Edit : i found a way !
replace "adb shell" with "#!/bin/sh" work
If you have root then you can use Su directly
varunpilankar said:
If you have root then you can use Su directly
Click to expand...
Click to collapse
and the comand is ?
terminal - type
su
cmd statusbar click-tile com.android.settings/.development.qstile.DevelopmentTiles\$SensorsOff

[SCRIPT] Pause command in Bash (Shell scripts)

For those of you who write scripts in bash, I have come up with a simple quick solution to adding the "pause" command easily.
This is meant for linux users to use to make writing scripts easier
In order to do this, follow these simple steps:
1) Open Gedit
2) add the following code:
Code:
#!/bin/bash
read -n1 -r -p "Press any key to continue..." key
exit 0
This starts the script, waits for a key to be pressed, and then ends, and the script accessing it continues.
3) Now we need to save it, so save it to your desktop as
Code:
pause //WITH NO EXTENSION
4) now we need to copy it to /bin. To do this, open your teminal window with CTRL+ALT+T, then type:
Code:
cd Desktop
sudo mv pause /bin
5) Now, make the file executable:
Code:
sudo chmod +x pause
And that's it! Now, whenever you are writing scripts, just write "pause" without quotes and it will work
**NOTE**
If you are writing this for release, you cannot simply write pause in your scripts or they will fail on the user's machine (if they don't have the pause script installed). In release scripts, just write the line:
Code:
read -n1 -r -p "Press any key to continue..." key
Thanks for looking!

[Q] how to launch an app from the terminal, opening specified file?

From the terminal, I would like to learn how to open a file in an android app.
As an example, how would I open /storage/emulated/0/Download/test.txt in Ted lightweight text editor?
When I try this:
Code:
am start -a android.intent.action.EDIT -n fr.xgouchet.texteditor/.TedActivity -d /storage/emulated/0/Download/test.txt
I get an error that includes "Permission Denial: startActivity asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL"
I'm not sure exactly what that's about, so I try to work around it with this:
Code:
am start --user 0 -a android.intent.action.EDIT -n fr.xgouchet.texteditor/.TedActivity -d /storage/emulated/0/Download/test.txt
Now Ted editor starts, but it opens a new file and not the specified file. I tried multiple times; one time there was a message at the top saying something to the effect that the specified file could not be opened. I've also tried different test files to exclude the possibility that test.txt is corrupt.
I'm stuck. Please help!
P.S. Ted's AndroidManifest.xml is available on github. I tried posting the link but, being new to the forum, I was not permitted to do so.
------------------
OS: CM11
Device: Moto G
Relevant apps: Terminal Emulator (jackpal.androidterm 1.0.65), Ted (fr.xgouchet.texteditor 1.8.1)
1) After countless hours of trial and error, I figured it out. Entering this command in the terminal opens the file for editing in Ted:
Code:
su -c "am start -a android.intent.action.EDIT -n fr.xgouchet.texteditor/.TedActivity -d file:/storage/emulated/0/Download/test.txt"
If you are reading this thread and like to write your own shell scripts, these two commands might also come handy if your script uses both CLI and GUI utilities:
2) To see the name of the app currently in the foreground:
Code:
su -c "dumpsys window windows" | grep mCurrentFocus | cut -d'/' -f1 | cut -d' ' -f5
3) To put the terminal in the foreground again:
Code:
su -c "am start -n jackpal.androidterm/.Term"
If you know how to do 1) (see my previous post) without root privileges, please post it here.
It doesn't make sense to me that root privileges would be required to open a user-owned file in a text editor. Android is linux, after all, so I'm hoping that anything a normal user can do via the GUI can also be done from the command line.

HOW to root qubo big one

i got a new qubo big one and wanted to root it
Your phone's Android OS is rooted as soon as the cmdlet named su - what by default is left off - is present in Android's file system and executable.
Hence add a suitable version of su to Android OS: can be done via ADB.
Please can I get a step by step
xXx yYy said:
Your phone's Android OS is rooted as soon as the cmdlet named su - what by default is left off - is present in Android's file system and executable.
Hence add a suitable version of su to Android OS: can be done via ADB.
Click to expand...
Click to collapse
Instruction?
Please I need a step by step guide
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user.
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
.
xXx yYy said:
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user
xXx yYy said:
A: To run Android shell commands with super-user right from within the shell on desktop computer ( AKA Command Prompt ) you have to run within desktop computer shell
Code:
adb devices
adb push <LOCATION-OF-SUITABLE-SU-BINARY-ON-PC-HERE> /data/local/tmp/
what will 1. connect the Android device to your desktop computer and 2. upload the su binary in the Android device temporary directory always available for the user.
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
Click to expand...
Click to collapse
B: Then, in desktop computer shell type
Code:
adb shell "cd /data/local/tmp & chmod 776 su"
what makes the su binary executable: its ownership by default is set to shell.
C: Then in desktop computer shell type
Code:
adb shell "ls -l"
what will show you content and permissions on recently uploaded files.
D:
To apply a series of Android shell commands what require super-user rights you now would run
Code:
adb shell
export PATH=/data/local/tmp:$PATH"
su -c "<SHELL-CMD-HERE>"
....
su -c "<SHELL-CMD-HERE">
exit
Click to expand...
Click to collapse
Thanks

Categories

Resources