1. 程式人生 > >android 7.1 找不到 ll (ls -l)命令

android 7.1 找不到 ll (ls -l)命令

平臺

rk3288 + android 7.12

描述

在使用android 5.1 時, 在adb shell 下, 可以使用ls 和 ll 命令, 但在7.1中, 發現 ll 命令無法使用:
/system/bin/sh: ll: not found

分析

在linux下, ll 命令的是由alias產生的, 它的宿主是ls:
alias ll=‘ls -l’

在android 中應該也是這樣的, 在搜尋5.1系統檔案內容時, 找到了檔案: /system/etc/mkshrc
基中對ll 的定義如下:

# Copyright (c) 2010, 2012, 2013, 2014
#	Thorsten Glaser <
[email protected]
> # This file is provided under the same terms as mksh. #- # Minimal /system/etc/mkshrc for Android # # Support: https://launchpad.net/mksh ... alias l='ls' alias la='l -a' alias ll='l -l' alias lo='l -a -l'

mkshrc檔案存放於external目錄下:
$ ls external/mksh/
Android.mk Makefrag.inc mkmf.sh

mkshrc MODULE_LICENSE_BSD_LIKE NOTICE src

而在7.1中的mkshrc中, 並沒有找到 ll 命令相關的定義.

解決

只需要把相應的 ll 定義加到 mkshrc中即可.

# Copyright (c) 2010, 2012, 2013, 2014
#	Thorsten Glaser <[email protected]>
# This file is provided under the same terms as mksh.
#-
# Minimal /system/etc/mkshrc for Android
#
# Support: https://launchpad.net/mksh

: ${HOSTNAME:=$(getprop ro.product.device)}
: ${HOSTNAME:=android}
: ${TMPDIR:=/data/local/tmp}
export HOSTNAME TMPDIR

if (( USER_ID )); then PS1='$'; else PS1='#'; fi
PS4='[$EPOCHREALTIME] '; PS1='${|
	local e=$?

	(( e )) && REPLY+="$e|"

	return $e
}$HOSTNAME:${PWD:-?} '"$PS1 "

#add-start
alias l='ls'
alias la='l -a'
alias ll='l -l'
alias lo='l -a -l'
alias find='busybox find'
#add-end

find 命令也比較常用, 所以我也把它加進去