现在让我们把目光放到命令行最前面的位置,你应该会看到pi@raspberrypi~ $。我们一般把美元符号$称为命令符,在美元符号之前是~符号,是home文件夹的简写。在前面的一般形式是[用户名]@[计算机的名字],在这里是pi@raspberrypi,这里的信息是可以由你自己自定义的。
在系统里新建一个新用户是很容易的。输入sudo adduser jo命令后,系统会要求你输入对应的密码以及一些用户相关的信息(你可以直接按Enter键跳过这些选项)。现在有了一个新的用户,可以用ls -A查看一下对应的home文件夹/home/jo。jo还没有登录过系统,所以现在文件夹下没有什么内容,只有.bashrc与其他的一些配置文件。
并不是每一个用户都有自己的home文件夹,输入“cat /etc/passwd”后你会发现很多显示的用户并不是真实的操作者。这是因为文件与程序必须属于一个用户,所以你会看到诸如sshd这样的用户名。为了安全考虑,用户的密码肯定不会直接显示在/etc/passwd文件里。想要更改密码时,可以使用sudo passwd jo命令。如果你现在以用户pi的身份登录,那么输入passwd就可以更改pi对应的密码。
在BASH命令行里会以环境变量的形式存储一些有用的信息,比如OLDPWD以及USER。env命令可以显示所有的环境变量。
如果你以pi的身份登录系统,那么~是/home/pi的简写。类似地,~jo是/home/jo的简写。对于其他用户,也是一样的道理。
su - jo是切换用户的命令。使用这个命令后,你的命令行会加载jo这个用户的环境变量,然后会跳转到/home/jo文件夹。注意,在很多Linux系统上,su会切换到root用户。在树莓派系统上,不建议直接使用su,而是只在需要超级权限的时候使用sudo。sudo -s命令会让你接下来拥有超级用户权限,使用exit命令可以退出超级用户状态。在一般情况下,不要使用su或者sudo -s这两个命令。想要定制命令行,我们可以编辑~/.bashrc文件。接下来使用more ~/.bashrc命令查看用户jo的命令行配置。在文件里,你会看到很多大写的变量,比如HISTSIZE以及PS1。变量PS1控制了命令提示符的文本,比如现在是jo@raspberry ~ $,若要改变命令提示符,则只需要改变变量的值export PS1=“tutorial@magpi >”。
这只是一项暂时的改变,输入exit之后命令提示符又变回原来的值。如果你想要永久地改变命令提示符,那么你需要把命令提示符PS1的值保存到~/.bashrc文件里。你可以上网去寻找一些特别的定义命令提示符的方法。
每次登录Bash命令行,~/.bashrc文件都会被读取。所以,保存在里面的设置会一直生效,除非你把默认的命令行改为Bash以外的其他终端。
可以看一看自己系统上的PS1是如何定义的。例如,在笔者的机器上查看:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_ chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\ w\[\033[00m\]\$
这里的PS1定义了大量的配置信息,包含颜色、所在路径等,所以不建议对这个变量进行修改。
接下来研究一些可以帮助你进一步自定义系统的命令。可以通过以下命令查看系统上已经定义了的别名:
$ grep alias ~/.bashrc
你应该会看到条目#alias ll= 'ls -l'。
去掉#符号就可以让这个别名生效。用你习惯的文本编辑器打开.bashrc文件,去掉注释符号,然后在命令行里输入“ll”,就会得到与ls -l一样的效果。接下来做更多的更改,把这一行改为alias ll='ls -lAhF'。通过输入“ll”得到的输出会更为人性化,以KB、MB的格式代替了byte以及.、..(代表当前)、上级目录。重新打开一个命令行后别名就会生效;若想要取消别名,则可使用unalias ll。
在日常的使用过程中,别名其实是一个非常好用的工具。举例来说,你安装了一个程序,但是它的文件路径很长,手动输入它的路径会很麻烦。具体点说,比如一个可执行程序的存放路径为/example/test/test2/test3/test4/a.run,那么你肯定不希望每次都跑到目录下去执行。在这种情况下,一是选择在环境变量PATH里修改,二是使用alias定义别名。示例如下:
$ alias count='wc -l' $ alias netstate='netstat -tunlp'
可以尝试着去自定义你自己的命令别名。
创建了一个新的别名后,就没有必要每次输入那么长的文件路径了。
接下来学习如何改变键位。键盘的设置文件在/etc/default/keyboard目录下,但这个文件对所有用户都是生效的,如果只想改变自己的键位,那么可以使用sudo打开下列命令:
$ touch ~/.xsessionrc $ echo "setxkbmap el" > ~/.xsessionrc
这里的el可以改成其他语言的键盘。.xsessionrc是只对当前用户生效的,设置完成之后,对这名用户在命令行下使用的所有软件都生效。