Linux_Aron
2018-02-26 10:09:10 0 举报仅支持查看
AI智能生成
Linux常用命令,求点赞,谢谢支持,凑字数,凑字数.....................
模版推荐
作者其他创作
大纲/内容
配置安装
.bash_alias
配置 ...............................
无root权限安装应用
zsh
Download
<div>mkdir ~/tmp</div><div>cd ~/tmp</div>
wget http://sourceforge.net/projects/zsh/files/zsh/5.0.7/zsh-5.0.7.tar.gz
5.0.7版本
http://sourceforge.net/projects/zsh/files/zsh
wget http://sourceforge.net/projects/zsh/files/zsh/5.4.2/zsh-5.4.2.tar.gz<br>
5.4.2版本
2020
5.7.1和5.8版本了
wget http://sourceforge.net/projects/zsh/files/zsh/5.7.1/zsh-5.7.1.tar.xz<br>
wget -O zsh.tar.gz https://sourceforge.net/projects/zsh/files/latest/download<br>
最新版本
解压
tar xzvf zsh-5.4.2.tar.gz<br>
tar xzvf zsh.tar.gz<br>
tar xvJf zsh.tar.xz<br>
tar xvJf zsh.tar.gz
编译
<br>
依赖libncursesw.so.6
ncurses<br>
cd ~/tmp/zsh-5.4.2
./configure --prefix=$HOME<br>
make<br>
make install
则会安装到/home/wenrong.liu/share/zsh<br>和/home/wenrong.liu/bin/zsh<br>
<div>最后就是设置成默认的shell。chsh这个命令是不能用了,因为没有root权限,<br>所以只能在 .bash_profile 里面做手脚了。在 .bash_profile里面添加如下内容:</div>
exec $HOME/bin/zsh -l<br>
.bashrc无效
zsh打不开
error while loading shared libraries: libncursesw.so.6: cannot open shared object file: No such file or directory
取消设置LIBS
<div>C compiler cannot create executables</div>
取消设置LIBS
oh my zsh
git 下载
.zshrc配置
zsh?
<div># 下载</div><div>wget -O zsh.tar.gz https://sourceforge.net/projects/zsh/files/latest/download</div>
<div># 解压</div><div>mkdir zsh && tar -xvzf.tar.gz -C zsh --strip-components 1</div><br>
cd zsh
切换到解压后的目录,运行 ./configure。其选项可以通过 ./configure –help来获取,非root用户下最重要的应该是定义安装目录,即应该定义 ./configure –prefix=/yulong/liuwenrong/usr/bin 注:绝对路径, 对于一些依赖库,可能还需要使用 ./configure –prefix=xxx –with-xx-dir=xxx这种形式。
<div># 配置,比如将Zsh安装到~/usr下</div><div>./configure --prefix=$HOME/usr/bin</div><div>make</div><div>make install</div><br>
修改.bash_profile
<div>export ZSH_HOME=~/usr/bin</div><div>export PATH=$ZSH_HOME/bin:$JAVA_HOME/bin:$PATH</div>
source .bash_profile
vim
git clone https://github.com/vim/vim.git
<div>cd src</div><div>make distclean # if you build Vim before</div><div>make</div><div>sudo make install</div>
<div>./configure --prefix=/usr/local/vim –enable-multibyte。</div><div>接着输入make && make install。</div>
autojump
git clone git://github.com/joelthelion/autojump.git<br>
执行install.py
把文件复制到用户的软件目录
添加到.bashrc
[[ -s /home/wenrong.liu/.autojump/etc/profile.d/autojump.sh ]] && source /home/wenrong.liu/.autojump/etc/profile.d/autojump.sh
拷贝.autojump
tmux
<div>$ git clone https://github.com/tmux/tmux.git</div><div><span> </span>$ cd tmux</div>
sh autogen.sh
<div>./autogen.sh: 15: ./autogen.sh: aclocal: not found</div><div>aclocal failed</div>
安装automake
<div>/bin/autoconf failed with exit status: 1</div><div>autoreconf failed</div>
aclocal -I .
./configure --prefix=$HOME && make
--libexecdir=$HOME/lib
configure: error: "libevent not found"
<div>1。编译安装libevent</div><div>tar -zxvf libevent-2.0.19-stable.tar.gz </div><div>cd libevent-2.0.19-stable/</div><div>./configure</div><div>make && make install</div><div>此时会生成libevent.pc在本地目录。拷贝到pkgconfig目录下。</div><div>cp ./libevent.pc /usr/share/pkgconfig/.</div><div>无此操作,编译tmux会报错</div>
CFLAGS="-I$HOME/include" LDFLAGS="-L$HOME/lib"
LIBS="-l$HOME/lib"
tmux1.8
configure: error: "curses not found"
apt-get source curses
/usr/bin/ld: cannot find -lncursesw
libncursesw5-dev
tmux2.5
<div>./configure: line 5156: syntax error near unexpected token `newline'</div><div>./configure: line 5156: `PKG_CHECK_MODULES('</div>
dpkg
<div>选择安装.deb软件到其他目录</div><div>sudo dpkg -i --instdir=/opt/apache apache2</div><div>然后可以建立一个软链接 </div><div>ln -s /opt/gsopcast/usr/local/bin/gsopcast /usr/local/bin</div>
基本流程
下载源码
apt-get source 包名
apt-get source libbsd-dev
wget 源码网站
linux配置java环境变量
1. 修改/etc/profile文件 全局用户<br>
a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录
<br>b. linux下用冒号“:”来分隔路径
<br>c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值
<br>在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种
<br>常见的错误。
<br>d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
<br>e. export是把这三个变量导出为全局变量。
<br>f. 大小写必须严格区分。
修改.bash_profile文件<br>
export JAVA_HOME=~/java/jdk1.8.0_121 注:一定要~,否则失败<br>export JAVA_HOME=~/usr/lib/jvm/java-8-openjdk<br>export PATH=$JAVA_HOME/bin:$PATH<br>export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source .bash_profile
查看已经安装的Java : update-alternatives --config java
常见问题
没有make命令
端口不对,22-->8701
SecureCRT
vim按Backspace不能向前删除
<div>设置一下secureCRT就可以了.</div><div>Options-->Session Options-->Terminal-->Emulation-->Mapped Keys-->Other mappings</div><div>选中复选框 Backspace sends delet</div><div> Delete sends backspac</div>
vim 高亮问题
选项-会话选项-终端-仿真-选择Linux
Android 源码编译
repo sync -j8
error.GitError: manifests rev-list ('^HEAD', u'7edad705a660c3299a67afcacc034a4220b63e2b', '--'): <br>fatal: bad object 7edad705a660c3299a67afcacc034a4220b63e2b
git命令更新.repo/manifest的代码
git pull --rebase
常见问题
子主题
子主题
1/1 100%
Android.mk 格式可能为PC
1. 用 NotePad++改成Unix
2. 内容复制到test.mk<br> mv test.mk Android.mk
项目没有改变
尝试删除之前编译生成的apk或jar
子主题
加了aidl编不过
需要按依赖顺序一个个加到Android.mk
子主题
error: 'out/target/common/obj/APPS/AntHalService_intermediates/with-local/classes.dex', needed by 'out/target/common/obj/APPS/AntHalService_intermediates/classes.dex', missing and no known rule to make it
1,尝试修改端口号 .jack-setting 和 .jack-server/config.properties
“ServerException: './config.properties' musthave permission rw------- but have rwx------Caused by: java.io.IOException: './config.properties' must have permissionrw------- but have rwx------”如果有权限问题,根据提示修改对应文件的权限即可。不过我没遇到过
2. 数字设定法 我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。 例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。 数字设定法的一般形式为: chmod [mode] 文件名¼
chmod 600 config.properties<br><br>成功了
搜索相关命令Tools
搜索文件
find <指定目录> <指定条件> <指定动作><br>find [搜索范围] [匹配条件]
搜索文件名
find / -name 'interfaces'
从根目录root开始寻找
find . -name zsh<br>
从当前目录开始递归寻找<br>
find . -name TelephonyManager.java
-iname
忽略大小写
-size
+n,-n,n<br>n为数据块,<br>1数据块=512字节=0.5k
find / -size +204800
大于100M的文件
根据时间
-amin
访问时间access
find /etc -cmin -5
5分钟内修改过的
-cmin
文件属性change
-mmin
文件内容modify
-type
f文件,d目录, l软链接文件
子主题
-a
and
find / -size +163840 -a -size -204800
查找/根目录下大于80M且小于100M的文件
-o
or
-inum
根据i节点
可以找到硬链接文件
指定动作
-exec/-ok ls -l {} \
find / -name init -exec ls -l {} \
查找init文件并显示详细信息
-ok 会提示确认
locate搜索linux系统中的文件,它比find命令快
使用”whereis“命令可以搜索linux系统中的所有可执行文件即二进制文件
whereis grep
whereis zsh
使用which命令查看系统命令是否存在,并返回系统命令所在的位置
which gerp.exe
Windows下的grep
which grep
得到alias
使用type命令查看系统中的某个命令是否为系统自带的命令
type cd
type zsh.exe
搜索内容
grep
从指定文件中搜索内容
grep -i hello a.txt b.txt<br>
忽略大小写搜索hello 在a.txt和b.txt中<br>
grep -in hello *.txt<br>
忽略大小写并打印行号 搜索hello在所有 .txt后缀结尾的文件<br>
grep -inr hello *<br>
忽略大小写 打印行号并递归搜索 hello 在所有文件中<br>
grep "text" . -r -n<br>
<div>.表示当前目录。</div>
<div>grep -e "is" -e "line" -o file</div>
<div>选项 -e 制动多个匹配样式</div>
从当前目录查找内容
grep -rn content
<div>grep搜索结果中包括或者排除指定文件</div>
<div>#只在目录中所有的.php和.html文件中递归搜索字符"main()" <br>grep "main()" . -r --include *.{php,html} <br>#在搜索结果中排除所有README文件 <br>grep "main()" . -r --exclude "README" <br>#在搜索结果中排除filelist文件列表里的文件 <br>grep "main()" . -r --exclude-from filelist</div>
正则表达式RE
BRE基础正则
单个字符匹配
.
任意字符
[]
指定字符
[^]
取反字符
次数匹配
*
任意次
\?
0或1次
\+
1次或多次
\{m}或者\{m,n\}
至少m次,至多n次
位置锚定
^
行首
$
行尾
\<, \>
词首,词尾
分组及引用
ERE扩展正则
次数匹配
*
?
+
{m}或者{m,n}
常用命令
目录文件处理
ln
link
软链接
创建快捷方式
ln -s ~/.Config4Roger/.vimrc ~/_vimrc
<div>ln -s 源目录 目标快捷方式</div><div>比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是</div><div>ln -s /home/LXBC /etc/LXBC553</div>
硬链接
ln 源文件 目标快捷方式
相当于复制,但是文件可以同步更新
删除源文件,硬链接依然可以访问
ls -i
id 相同
不能跨分区
如 C盘到D盘 ,root分区到boot分区
不能针对目录
lnif ~/.Config4Roger/.vimrc ~/.vimrc
查看文件夹大小
du -ah --max-depth=1
挺慢的
df -h
权限管理命令
chmod
change the permissions mode of a file
chmod [{ugoa}{+-=}{rwx} [文件或目录]
chmod a=rwx a.txt
chmod [mode=421] [文件或目录]
r=4 w=2 x=1 -=0<br>
chmod 777 a.txt
-R 递归修改
chown
change
chown [用户] [文件或目录]
umask
umask -S
查看新建文件和文件夹权限
u=rwx,g=rx,o=rx
umask
022
即777-755
如果要把默认权限改成rwxr-xr--
umask 023
即754
修改密码
若修改其他用户,如oracle 的密码,可直接输入passwd oracle.
若修改root自己的密码,直接输入 passwd .
smbpasswd(选项)(参数)
<div>-a:向smbpasswd文件中添加用户; <br>-c:指定samba的配置文件; <br>-x:从smbpasswd文件中删除用户; <br>-d:在smbpasswd文件中禁用指定的用户; <br>-e:在smbpasswd文件中激活指定的用户;<br> -n:将指定的用户的密码置空。</div>
用户名:指定要修改SMB密码的用户。<br>
压缩和解压xz压缩包
压缩
tar -czf systemUI.tar.gz SystemUI
解压
tar -xJf xx.tar.xz 简写,有效
tar -x -xz -f xx.tar.xz 会出错
tar -c -xz -f filename.tar.xz /folder
tar -xzvf file.tar.gz //解压tar.gz
tar –xvf file.tar //解压 tar包 <br>tar -xzvf file.tar.gz //解压tar.gz <br>tar -xjvf file.tar.bz2 //解压 tar.bz2 <br>tar –xZvf file.tar.Z //解压tar.Z <br>unrar e file.rar //解压rar <br>unzip file.zip //解压zip
系统
查看系统版本
uname -a
高级命令
子主题
Linux连接PC电脑的共享
Linux连接PC电脑的共享
smbclient -L 172.16.55.173
查看共享目录
smbclient //172.16.55.173/目录
secure copy
scp -r yangzhulin@172.16.7.41://home/users/yangzhulin/BM_app /home/users/liuwenrong/0Work
Linux 在一个命令行上执行多个命令
1. [ ; ]<br>如果被分号(;)所分隔的命令会连续的执行下去,就算是错误的命令也会继续执行后面的命令。<br>2. [ && ]<br>如果命令被 && 所分隔,那么命令也会一直执行下去,但是中间有错误的命令存在就不会执行后面的命令,没错就直行至完为止。<br>3. [ || ]<br>如果每个命令被双竖线 || 所分隔,那么一遇到可以执行成功的命令就会停止执行后面的命令,而不管后面的命令是否正确与否。如果执行到错误的命令就是继续执行后一个命令,一直执行到遇到正确的命令为止。
编译Android相关
下载Android源码
Zs_1.0
安卓根目录如:new android_n
tar -xzvf repo.tar.gz
解压 注: 不要在Windows下解压36G的大文件
cd android_n
.repo/repo/repo sync -j8
sync 命令会将代码同步到当前目录,即android_n
repo工具在tools下<br>android_n 目录下
../tools/repo/repo sync -j16
当没有repo工具时
tools目录下
tar -xzvf repo.tar.gz 注:2.6M的文件
得到 repo.git文件夹
git clone repo.git/ 生成repo文件夹
复制repo 和repo.git到android_n下
cp -R repo ../android_n/repo
cp -R repo.git ../android_n/repo.git
repo init -u ssh://10.3.11.45:29418/ZS/.repo/manifests -b default -m zeusis/JV_8953_Dev.xml
会在android_n/.repo下更新一些文件
T6
下载前配置
[下载前配置]:<br>在文件 ~/.ssh/config中添加下面信息,以保证25和21代码都能下载<br>
Host 172.16.7.21<br>User gerrit账号<br>Port 29418<br>Hostname 172.16.7.21<br><br>Host 172.16.7.25<br>User gerrit账号<br>Port 29418<br>Hostname 172.16.7.25
Host 172.16.7.21<br>User liuwenrong<br>Port 29418<br>Hostname 172.16.7.21<br><br>Host 172.16.7.25<br>User liuwenrong<br>Port 29418<br>Hostname 172.16.7.25
注意:user是名字,不是邮箱
否则出现Permission denied (publickey) 问题<br><br>
init T6的仓库
repo init -u ssh://172.16.7.21:29418/qcom/spf.2.0/platform/manifest -b release -m yota/msm8953_t6_dev.xml<br>
repo工具要指定好
我的../zs_1.0/.repo/repo/repo
../tools/repo/repo
如果出现Permission denied (publickey) 问题,则
cat ~/.ssh/id_rsa.pub
复制到21服务器的Settings-SSH Public Key
如果出现please re-run 'repo init' with --config-name,则
../tools/repo/repo init --config-name -u ssh://172.16.7.21:29418/qcom/spf.2.0/platform/manifest -b release -m yota/msm8953_t6_dev.xml
../tools/repo/repo init --config-name "liuwenrong <liuwenrong@yotamobile.com>"
../tools/repo/repo init --config-name "liuwenrong <liuwenrong@yotamobile.com>" -u ssh://172.16.7.21:29418/qcom/spf.2.0/platform/manifest -b release -m yota/msm8953_t6_dev.xml
然后填写名字和邮箱,输入y确认
同步代码
repo sync -c -j4 -no-tags
../tools/repo/repo sync -c -j4 -no-tags
编译流程
cd 源码根目录
repo sync -j8
repo sync -c -j4
-c 是指当前分支。可以加快下载速度。
-j8 指启动8个线程
source build/envsetup.sh<br>
lunch
输入数字选择编译的手机型号
make update-api -j8<br>
当framework代码有修改,都需要执行该命令<br>
make
编译出错
有个项目编不过,如
make YotaDevicesSDK -j16
cd vendor/yotadevices/frameworks/yotadevices-api/sdk
mm -j16
make snod
编译好的内容打包成image,不用重新编译
make sdk
编出源码jar
Linux编译
mk语法
LOCAL_DEX_PREOPT := true
预优化
LOCAL_DEX_PREOPT := false
Android.mk引入jar包
LOCAL_STATIC_JAVA_LIBRARIES := \ #add<br> okhttp \ #/为jar起一个别名 <br> okio \ #add<br>
include $(BUILD_PACKAGE) <br>................. #标志<br>
include $(CLEAR_VARS) #add<br># //冒号前面为jar别名,后面为jar文件的实际路径 <br>LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \ okhttp:libs/okhttp-3.6.0.jar \<br>okio:libs/okio.jar \ #add<br>include $(BUILD_MULTI_PREBUILT) #add<br>
签名
子主题
子主题
在build\target\product\security\下有platform、shared、testkey、media四个密钥
1. signapk.jar:signapk可执行文件,在out/host/Linux-x86/framework/signapk.jar;<br>2. signapk用法:到out/host/linux-x86/framework/目录下执行<br>Java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk;
命令 Android根目录
清除
make clean -j32
更新过时的api
make update-api -j32
全编
make -j32
编译 某个模块
make xx -j32
如: make SystemUI -j32
make systemimage -j32
Linux操作
修改用户密码
<span>passwd</span>
修改当前用户
<span>若修改其他用户,如oracle 的密码,可直接输入passwd oracle.</span>
修改映射密码
smbpasswd
手动输入一次旧密码和两次新密码
编译framework
<div>2,在frameworks/base/core/res/res/drawable目录下执行touch pic.png.</div><div><br></div><div>3,进入目录frameworks/base/core/res/ 执行mm命令, 编译 framework-res.apk</div><div><br></div><div>4,执行完后com.android.internal.R 会新生成一个R.drawable.pic的引用.在程序中使用即可.</div><div><br></div><div>5,在目录frameworks/base/ 下执行mm 编译 framework.jar.</div><div><br></div><div>6,在WindowManagerService.java中使用com.android.internal.R.drawable.pic,使用完后保存文件.</div><div><br></div><div>7,进入目录frameworks/base/services/java/ 执行mm 编译 services.jar</div><div><br></div><div>8,替换机器上(虚拟机或者真机)的jar apk文件.</div><div><br></div><div> adb push framework-res.apk /system/framework/</div><div><br></div><div> adb push services.jar /system/framework/</div><div><br></div><div> adb push framework.jar /system/framework/</div><div><br></div><div> 执行命令时注意framework-res.apk 的真实路径.</div>
添加apk
新建项目变添加apk和Android.mk
若要将该APK集成到system.img,需要apk的包名添加到PRODUCT_PACKAGES中,一般在device/product.mk文件中听见,比如Y3.mk。
需要在repo/mainfest.xml中配置,才能将项目 放到服务器编译
<span>build/target/product/generic.mk添加你的应用程序名字</span>
<div> PRODUCT_PACKAGES := \</div><div> AccountAndSyncSettings \</div><div> CarHome \</div><div> DeskClock \</div><div> AlarmProvider \</div><div> Bluetooth \</div><div> Calculator \</div><div> Calendar \</div><div> Camera \</div><div> CertInstaller \</div><div> DrmProvider \</div><div> Email \</div><div> Gallery3D \</div><div> LatinIME \</div><div> Launcher2 \</div><div> Mms \</div><div> Music \</div><div> Provision \</div><div> Protips \</div><div> QuickSearchBox \</div><div> Settings \</div><div> Sync \</div><div> Updater \</div><div> CalendarProvider \</div>
这样才会调用项目的Android.mk
其他
jack
jack-admin
jack-admin list-server
jack-admin kill-server
jack-admin start-server
编译某个Moudle或app
cd android_n
make update-api<br>
非必须,的操作sync同步代码后需要
源码根目录下 source build/envsetup.sh
lunch
选择一个模式如eng,userdebug 输入对应数字如44
cd frameworks/base/packages/SystemUI/
mm -B -j32
mm -j8
JDK需要1.8.x 去官网下载 后解压
<a href="http://blog.csdn.net/luvzhan/article/details/53282968" style="color: rgb(102, 102, 102); text-decoration: none; font-family: 'Microsoft YaHei'; font-size: 20px; line-height: 30px;">android N编译</a>
Android刷机
刷机问题
target didn't report max-download-size<br><br>sending 'system' (1 KB)...<br><br>FAILED (command write failed (Unknown error))<br><br>finished. total time: 0.016s
收藏
立即使用
收藏
立即使用
收藏
立即使用
收藏
立即使用
Collect
Get Started
Collect
Get Started
Collect
Get Started
Collect
Get Started
评论
0 条评论
下一页