忘记密码解决:
开机启动时长按Shift键,然后按e,找到linux开头的代码行,将ro及其之后所有内容改成rw init=/bin/bash,按F10启动,在命令行里输入passwd,用户名,然后就是输入两次新密码。
linux系统下一切皆文件,不存在文件名一说,而是称之为目录。
root权限为0,linux通过id来识别账户。
/ #根目录,所有目录都在根目录里
/boot #boot配置文件,存放内核和其他启动时所需文件
/etc #存放配置有关的文件
/home #存放普通用户目录
/mnt #硬盘上手动挂载的文件系统,挂载:将硬盘连接系统,默认是空的
/media #自动挂载
/opt #默认空
/root #管理员,根用户
/bin /sbin /usr/bin #存放命令
/tmp #临时目录,存放临时文件,系统会定期清理
/var #存放经常修改的文件,如日志、数据文件
/lib #存放程序所需的共享库
/lost+found #突然断电,非正常关机后,临时存放部分文件
/dev #存放设备文件
/proc /sys #伪文件系统,存放系统信息等
整个目录通过一个树形,由根目录/开始,指向以上所有目录。
例如:在etc下创建一个分区,需要将其他文件全部挪入分区里,否则看不见其他文件。
目录权限:
r:可以查看该目录下的文件,没有这个权限时可以进入目录,但不可查看。
w:可以修改该目录下的文件,没有权限时不可创建,不可修改。
x:表示目录是否可以被搜索,类似于门的作用。没有权限时,进不去,无法访问,不可创建,无x,则rw失去作用。
user group other
所有者 所有组 其他
rw- r-- ---
分区的概念
分区的概念类似于自己家房子的理念,分为卧室、厨房、客厅等等,房子是硬盘,卧室等就是分区,都是在根目录下,如果不指定home、etc、var等分区目录,那么就会默认放在一个默认分区里。
文件系统:
操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法,有ext2、ext4、fat等,ext2是通过i-node指向所有block,Fat是在每个分区里会存放一部分,同时这一部分会指向下一部分的索引,程序会自动根据索引一步步运行。
swap分区:
swappiness=0,最大限度的使用物理内存,然后才是swap空间。swappiness=100,积极使用swap分区,并将内存上数据及时放到swap分区。
Ctrl+c #:退出,终止任务
Ctrl+l #:清屏
Ctrl+k #:删除光标后的内容
Ctrl+w #:清楚光标左边的字段,至空格位置为止
Ctrl+a #:移动光标至最开始位置
Ctrl+e #:移动光标至最末尾位置
Ctrl+u #:删除光标之前的内容
Ctrl+y #:贴上Ctrl+u、Ctrl+k、Ctrl+w清除的内容
Ctrl+d #:退出当前终端,结束输入
Ctrl+r #:找到最后一次输入的命令
Ctrl+Alt+t #:打开终端
tab #:按两次,命令行自动补全
Alt+.#用来依次上找命令的最后的字符串。
gedit
gedit#类似于nodepad++
查看帮助信息
--help info man#
info date
man date
#查看命令的帮助信息,最多用man
locale
locale
locale -a #查看支持的语言
apt-get
apt-get
apt-get update#更新源。
apt-get upgrade#更新已安装的包。
sudo apt-get install package#安装包,sudo即对系统更改时,获取管理员权限。
sudo apt-get -f install package#强制安装 。
sudo apt-get remove package#删包,后接-purge为删去包,包括配置文件。
apt-get autoremove#自动删不需要的包。
apt-cache
apt-cache
apt-cache search package#搜索包。
apt-cache show packa#获取包的信息,如说明,大小,版本等。
/etc/apt/sources.list#:设置软件包的获取来源,若更改获取源后,需手动sudo apt-get update。
dpkg#:安装,没有apt方便,不同于apt之处:只能一个个安装,不能自动依靠依赖关系安装。
date
date
date +"%Y%m%d"#获取年月日。
sudo date -s 20200103#设置时间。
hwclock -w#设置完后输入此命令,与主板同步,同步硬盘时间。sudo tzselect#设置时区,选择Asia/Shanghai
另一种修改时区的方法:
timedatectl set-timezone Asia/Shanghai#CST中国时区。
cal
cal#日历。
cal -y#一年日历。
cal 2017#2017年的日历。
logout
logout#注销,登陆Shell
exit
exit#:退出
reboot
reboot#重启
shutdown
shutdown#:关机。
shutdown -r#:重启。
shutdown -h#:关机。
shutdown -h now#:立即关机。
shutdown -h +5 "....."#:提示使用者5分钟后关机。
shutdown -c#取消关机操作。
cd
cd
cd /etc/#转换到etc目录。
cd . #转移到当前目录。
cd .. #:返回上一层目录。
cd - #:返回来时的目录。
pwd
pwd #:展示当前工作路径
passwd
passwd#:修改当前用户密码。
passwd username#:修改username用户的密码
man
man
man -k passwd #:模糊查找passwd帮助信息。
man -f passwd #:精确查找passwd帮助信息。
man man #查man的帮助信息
ls
ls#:查看目录文件。
ls -a#:显示隐藏文件,包括 . 和 ..
ls -A#:不显示.和..的查看,显示隐藏文件。
ls -l#:查看目录信息,包括权限,修改时间等。
ls -lh#:将字节转换为xxK。
ls -lht#:按时间排序。
ls -lhtr#:反转时间排序。
ls -R#:遍历目录。
tree#:将目录文件显示成树形。
mkdir
mkdir#:创建文件目录。
mkdir -p bb/aa/cc#:创建多层目录。
touch
touch#:修改文件时间,文件不存在则创建文件。某些大项目需要文件时间一致,否则会编译失败。
rm
rm#:删除.
rm -i a.txt#:提示是否删除。
rm -rf bb#:删除目录及目录下所有内容。
rm操作很危险,注意根文件。一般删除会把文件放在tmp目录下,有系统自动清理。
rmdir
rmdir#:删除空目录
mv
mv#:重命名、移动。
mv p.py q.py#:重命名文件。
mv q.py aa#:将q.py移动到aa目录下。
mv aa bb#:重命名目录。
mv bb/q.py .#:将q.py移动到当前目录。
cp
cp #复制。
cp -r aa/ ss#复制目录,同时递归复制目录文件,此时目标文件必须是一个目录名。
cp q.py l.py#复制,重名会自动覆盖。
cp -i q.py l.py#若重名,提示是否覆盖。
cp -p aa/ ss#除复制源文件的内容外,还复制修改时间和访问权限。
stat
stat#:
stat filename#:查看文件属性。
cat
cat
cat ww.py#:链接文件,打印在屏幕上。
cat -n ww.py#:加行号。
cat -s ww.py#:多个空行合并为一个空行,注意空行内有若干空格时不行。
tac
tac#:反转行的输出,与cat输出相反
wc
wc#:统计字节数,行数,字符数,字数。
wc -c#:统计字节。
wc -l#:统计行数。
wc -m#:统计字符。
wc -w#:统计字数。
sort
sort
sort -r#:反转。
sort -n#:使用(纯数字)排序,默认是以文字型态排序。
sort -b#:忽略前面的空格符部分。
sort -f#:忽略大小写。
sort -t ':'#:分隔符,默认是以tab键分割。
sort -k 3#:以3列那个区间(field)来进行排序的意思。
sort -u#:即uniq,相同数据中仅出现一行代表。
sort -t ":" -k 3 /etc/passwd#-t -k一起用,3指3列,/etc/passwd只是个例。
uniq
uniq#:忽略或报告重复行。
uniq -c#:进行计数。
uniq -u#:不显示重复的。
uniq -i#:忽略大小写字符的不同。
cut
cut#:从一个文本文件或文件流里提取文本列。
cut -d #:后面接分割字符,与-f一起用
cut -d : -f 1 filename# -f 依据 -d 的分割字符将一段信息分割成数段,用-f取出第几段的意思。
cut -c#:以字符的单位取出固定字符区间。
cut -c 5或1-5或1,5或1-5,3 filrname
tee#:读取标准输入的数据,并将内容保存输出成文件。
如tee a.log
history
history#:查看执行过的命令。上限为1000条,文件里最多存储2000条。
history 5#:查看最近的5条执行过的命令。
!number#:执行第number行命令。
!py#:执行最后一条以py开头的命令。
more
more
more qq.txt#:查看qq.txt文件的内容,若内容过长,会显示一个--更多--(9%)
按space翻页,按Enter一行一行往下翻,按b向上翻
less#与more操作基本一致,也是用来查看文件内容。
head
head
head qq.txt#:默认查看文件前10行的内容。
head -n 20 qq.txt#:查看前20行内容。
tail
tail
tail qq.txt#:显示文件最后10行内容。
tail -f qq.txt#:执行此命令后,命令不会马上结束,可以实时的监控文件内容的更新。
tail -n 5 qq.txt#:查看文件最后5行的内容。
witch
which
which ls#:查看命令ls的位置。
chmod
chmod#:更改权限。
chmod 。qq.py#中间。的位置可以是u=rwx,a+x,755这三种类型,u,g,o=rwx,a,u,o,g+(-)x
#a:所有,u:user,g:group,o:others
#r:4,w:2,x:1,rwx:7。
chmod 755 qq.py
chmod a=rwx qq.py
chmod a+x qq.py
chmod u-r qq.py
chmod -R o=r#:递归的修改当前目录及之下所有文件和目录的权限。
chown
chown#:改变所有者、所有组。
chown username user1#:改变所有者。
chown :username user1#:改变所有组。
chown qq:qq user1#改变所有者和所有组。
id
id#:查看当前用户
useradd
useradd#:添加账户。
useradd -c#:加备注。
useradd -d#加目录。
useradd -e#:有效期。
useradd -f#:缓冲天数。
useradd -g#:主要组,一个。
useradd -G#:次要组,可以多个。
useradd -u uid#:指定id,最好大于1000,
useradd -s shell#:指定shell,可以是/bin/bash
userdel
userdel#:删除账户。
sudo userdel user1#:删除账户user1,但不会删除/home里的user1,只在配置文件里删除。
sudo userdel -r user1#:全删去,包括/home里的user1
usermod
usermod#:修改用户信息。
usermod -c#:修改备注。
usermod -d#:改家目录。
usermod -l#:修改账户名称。
usermod -L#:锁定密码,使密码无效。
usermod -U#:解除密码锁定,然后要进行更新密码:
sudo usermod -p 新密码 user1。
usermod -G staff user1#:将user1添加到组staff中。
groupadd
groupadd group1#:添加组。
group -g 1000 group1#:添加的同时指定gid为1000。
groupdel#:删除组。
#linux下一般用 %group_name 来代表整个用户群组。
su
su#:切换用户,无参数时默认切换到root用户。
su - user1#切换到user1,并加载user1环境配置。
sudo
sudo#:一般情况下,以管理员权限运行程序,通过修改配置文件可以让指定用户使用sudo命令。
#配置格式为:USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD : COMMAND_FLAG。
#例如:user1 host1=(:group_name) /bin/kill。
sudo su#可以直接su到root用户,不需要密码
不需要密码原因:sudoers文件里有一行命令:xxx ALL=NOPASSWD:/bin/su。
alias
alias#:给命令起别名。
alias l='ls -cF'
alias la='ls -A'
别名一般只会在当前终端下可用,如果想设置成永久有效,需要将别名命令写入.bashrc里。
echo
echo #类似python中print
echo "shsh"#:打印shsh,换行。
echo -n "shsh"#:打印shsh,不换行。
locate
locate#:查找文件。
locate /etc/sh#:查找以/etc/sh开头的所有文件。
locate ~/a#:在家目录查找以a开头的文件。
locate -i ~/a#:忽略大小写的查找。
locate是通过linux生成的一个数据库进行查找,这个数据库会在每天定时更新,如果查当天创建的文件,而数据库未更新,此时需要手动更新数据库,通过sudo updatedb实现。
注意locate查找文件不扫描磁盘,通过数据库查找。
find
find#:在磁盘里查找。
通用格式:find path -option
find / -name filename#:通过文件名查找。
find / -i -name filename#不区分大小写
find /home/ -type#:通过文件类型查找。f普通文件,d目录,l符号连接。
find /home/ -maxdepth 2 -type f#:最多2层查找普通文件。
find /home/ -mindepth 4 -type f#:从第四层开始查找普通文件。
find /home/ -size +10M#:找大于10M的文件。b块(512字节),c字节
find /home/ -size -10k#:找小于10k的文件。w字,k千字节,M兆字节,G
find /home/ -atime (+|-)n#:查找n天以前被读取过的文件。若无+-,则查第n天内
find /home/ -mtime (+|-)n#:查找n天以前文件内容发生修改的文件。
find /home/ -ctime (+|-)n#查找n天以前文件属性发生改变的文件。+之前,-之内
find -newer file#:查找所有比file新的文件。
find -newer file1 ! -newer file2#:查找比file1新但没有file2新的文件。
find -user#
find -group#
find -uid n#
find -nouser#:查在/etc/passwd下不存在的文件
find -nogroup#:/etc/group
find -perm 777#根据权限777查找
sudo find /home/ -user axe -a -perm 664#查/home/下属于axe账户和权限是664的文件
对查询结果进行处理:
-exec shell命令 {} \;
-ok shell命令 {} \;#推荐,会在执行shell命令前询问。
find /home -name "*.txt" -ok ls -l {} \;
df
df -Th#:显示分区如何挂载。
df -h:#以能显示的最大单位显示。
du
du
du -sh dirname#:显示目录大小。
du -s dirname#:若后面是目录,只显示一层。
mount#:查挂载设备及属性。
sudo mount /dev/cdrom /mnt#:/dev/cdrom是光盘,/mnt是挂载点。
sudo umount /mnt#:卸载
sudo mount -o remount,rw /mnt#:重新挂载设备并设置rw属性。
sudo mount a.iso -o loop /mnt#:挂载iso镜像文件。
sudo umount -l /mnt#:强制卸载
crontab
crontab#:计划任务
-e#:编辑,不指定用户则为当前用户。
-l#:显示计划任务
-u user#:设定某个用户的crontab服务。
-r#:从/var/spool/cron目录中删除某个用户的crontab任务。该目录是用来保存计划任务的位置。
* * * * * command#:前5个*指代时间,分别是min h d H W,最后command是要定期执行的任务,预执行命令。第一个*表示每分钟,改为*/3表示每3分钟
例如* * * * * date >>/tmp/date.txt,注意命令不能超过64个字节
或者也可以用文件,如* * * * * date /tmp/cron.sh
tar
tar#:压缩
-f#:使用档名,后面立即接文件名,放在参数最后
-c#:建立压缩文件
-x#:解压缩文件
-t#:查看tarfile里的文件
-z#:是否用gzip压缩
-j#:是否用bzip2压缩
-v#:压缩过程中显示文件,常用,但不建议用在背景执行过程中
-p#:使用原文件的原来属性。(属性不会根据使用者而变更)
-P#:使用绝对路径压缩。绝对路径是指定,而相对路径是依据当前目录开始,如../home/user
-N#:比后面接的日期还要新的才会被打包进新建的文件中
tar -zcvf a.tar.gz ./*.py#:将所有.py文件打包并给档到文件a.tar.gz里,做例子用。
linux三剑客之grep
grep#:做检索
grep [OPTIONS] PATTERN [FILE....]
grep [OPTIONS] [-e PATTERN] [FILE.....]
例如 grep better qq.txt
OPTIONS:
-c#:计算符合样式的列数
-l#:列出文件内容符合指定样式的文本
-v#:显示不包含匹配文本的所有行
-i#:忽略大小写的差别
-o#:只显示检索到的
-on#:显示行号与检索到的
-E#:后面跟正则表达式,等价于egrep
grep -E "." z.txt#全部显示
grep -E "d$" z.txt#检索以d结尾的
greo -E "[0-9]" z.txt#
grep -E "^[0-9]" z.txt#匹配到除数字以外的内容
grep -E "[0-9a-zA-Z]@[0-9a-zA-Z]+\.[a-zA-Z]+" z.txt#匹配邮箱
linux三剑客之sed
sed:流编辑器,一次处理一行内容
使用格式为:sed [-nefr] [动作] [文件],-nefr是参数位。
参数:
-n#:使用silent模式,在一般sed的用法里,所有来自STDIN的数据一般都会列出到终端上,但如果加上-n参数后,则只有经过sed特殊处理的那一行(或动作)才会被列出来。
-e#:直接在命令列模式上进行sed的动作编辑。
-f#:直接将sed的动作写在一个文件里
-f filename# 可以运行filename里的sed动作。
-r#:sed的动作支持的是延伸型正规表示法的语句,(默认是基础正规表示法。这个参数的意思就是一般在用的时候,“”内用正则表达式会要用\转义,但是加上这个参数,就不用转义了,看起来更简洁易读。
-i#:直接修改读取的文件内容,而不是输出到终端。
动作
说明:[n1[,n2]] 动作:
n1,n2不一定存在,一般代表选择进行动作的行数,比如如果我的动作是需要在10到20行之间进行的,则:10,20[动作]。
a#:新增,a的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)。
c#:取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行。
d#:因为是删除,所以后面通常不接任何东西。
p#:打印,在用法上和d的用法差不多
先写出来两个特别的:
"$=":显示文件行数。
"$"p或"\$p":显示最后一行。
i#:插入,在当前行上一行插入,与a相反,a是在当前行下一下增加。
s#:替换,可以直接进行取代的操作。通常这个s的动作可以搭配正规表示法。
具体例子:
sed "3"a'sssss'#:在第3行的下一行新增ssssss内容。
sed "3"c'sssss'#:用ssssss取代第3行的内容。
sed "3d" file#:删除第3行。
sed "1,3d" file#:删除前3行。
sed "1d;3d;5d" file#:删除1,3,5行。
sed "/^$/d" file#:删除空行。
sed "/abc/d" file#:删除所有含有abc的行。
sed "/abc/,/def/d" file#:删除abc到def之间的行,包括abc行自身。
sed "1,/def/d" file#:删除第1行到def之间的行,包括第1行自身。
sed "/abc/,~3d" file#:从含有abc的行开始,共删除3行。
sed "/abc/,+3d" file#:从含有abc的行开始,再删除3行。
sed "1~2d" file#:从第1行开始,每2行删除1行,删除奇数行。
sed "2~2d" file#:从第2行开始,每2行删除1行,删除偶数行。
sed "\$d" file#:删除最后一行。
sed "/dd\|cc/d" file#:删除内容含有dd或cc的行。
sed "3p" file#:将以上d的操作换成p,操作一样。就不一一赘述
sed "3"i"ssss'"file#:在第3行上一行插入ssss内容。
sed "10,20s/old/new/g" file#:g代表全替换,若无则只替代行的第一个。将10到20行的所有old字符换成new字符。
sed "s/\(all\)/bb/" file#:将all换成bb
sed -r "s/(all)/bb/" file#:加-r参数,引号里的正则表示法就不用转义了
sed -r "s/(all)(and)/\2bb\1/" file#:将alland换成andbball,1指向all,2指向and。
linux三剑客之awk
awk:
一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的输入,以空格为默认分隔符将每行切片,切片的部分再进行各种分析处理。
awk工作流程:
读入"\n"换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域。$0表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是“空格键”或“【tab】键“。
命令行调用格式:
command是awk的命令,[-F 域分隔符]是可选的,input-file(s)是待处理文件。在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。awk [-F field-separator] 'command' input-file(s)
cat /etc/passwd |awk -F':' '{print $1}'
cat /etc/passwd |awk -F':' '{print $1"\t"$7}'
cat /etc/passwd |awk -F':' '{print $1}'
awk常用内置变量:
ARGC#:命令行参数个数
ARGV#:命令行参数排列
ENVIRON#:支持队列中系统环境变量的使用
FILENAME#:awk浏览的文件名
FNR#:浏览文件的记录数,也就是行数
FS#:设置输入域分隔符,等价于命令行-F参数。
NF#:浏览记录的域的个数。
NR#:已读的记录数
OFS#:输出域分隔符
ORS#:输出记录分隔符
RS#:控制记录分隔符
awk '{print FNR}' z.txt
awk '{print NR}' /etc/passwd
tail z.txt |awk 'BEGIN'{OFS="_";}{print $1,$2,$3}END{}
#BEGIN表示后面的OFS是预执行动作,先执行它,{print....}是真正要执行的动作,END{}表示结束后还可以进行...动作。
vim/vi
vim是vi的升级版,功能强大的编辑器。分三种模式:命令模式,文本编辑模式,末行模式。关于vim的操作实在是太多了,我会只附上部分可能会常用的。
vi filename#由终端工作模式进入命令模式。
退出命令模式:输入:wq!#w保存,q退出,!强制操作。
输入:set nu:显示行号。
输入:set autoindent:设置自动缩进
#写编程代码时可用,同步上一行的缩进。
命令模式进入文本编辑模式:直接按某某键
i:光标不动,进入编辑模式。
I:光标移动到行首,进入编辑模式。
a:光标向右移动一个位置,进入编辑模式。
A:光标移动到行末,进入编辑模式。
s:删除光标所在字符,进入编辑模式。
S:删除光标所在行,进入编辑模式。
o:在当前行的下一行开新空白行,进入编辑模式。
O:在当前行的上一行开新空白行,进入编辑模式。
r:输入某个字符替换光标所在字符,进入编辑模式。
R:替换当前字符并将输入的内容覆盖其后的内容,直至按ESC结束。
命令模式:
h:左移。l:右移。j:下移。k:上移。
gg:光标移动到文件开头
GG:光标移动到文件末尾
nG:光标移动到第n行
n+:光标下移n行
n-:光标下移n行
(:光标移动到句首
):光标移动到句尾
{:光标移动到段落开头
}:光标移动到段落结尾
nh(或l或j或k):光标上下左右移动n个字符
$:光标移动到行尾
^:光标移动到行首
删除
d:删除。
dd删一行。
3dd删三行。
d$删当前位置到行尾。
d^删...到行首。
x删光标处的单个字符。
复制
yy:复制。
3yy复制三行。
y$复制到行尾。
粘贴
p:粘贴。
撤销
u:撤销。
Ctrl r:重做
w:光标每次向后移动一个单词
b:光标移动到上一个单词
e:光标移动到下一个单词
查找
/word:向下查找word,
再按n,定位下一个匹配的被查找字符串。N,上一个。
?word:向上查找word,n,N等操作与/word相反。
替换
:s/old/new/g:当前行的第一个"old"字符替换为新字符"new"。/g作用是行中所有替换。
:%s/old/new/g:所有文本内容替换
:1,3s/old/new/g:在行号1,3范围内替换所有
环境变量
添加环境变量:一般是用vim ~/.profile#,在最后一行加PATH="要增加的路径:$PATH",这个操作是针对当前用户,如果是对所有用户,那么在/etc/profile里加,这样需要管理员权限,也不推荐。
env:查看当前环境变量。
export:设置或查看环境变量,一般情况下设置环境变量,用export name="SH",当然这是临时的,永久需要写入配置文件~/.profile里。
source file:在当前bash环境下读取并执行file中的命令,该file可以是无执行权限。
管道符:|
将前一条命令执行的结果交给后一条去使用。
重定向
>qq.txt 文件存在,则清空内容,然后写入内容,覆盖。若文件不存在,则创建一个文件。
>>qq.txt 向文件追加内容。
cat qq.txt 1>qw 将qq.txt内容写入qw,若提前有内容,则先清空再写入。覆盖
cat qq.txt 1>>qw 追加内容,不清空。
cat sadwa 2>qw 将错误信息输出到qw,覆盖
2>> 追加错误信息输出到qw。若正确,则qw为空
cat qq.py &>qw:标准正确输出和标准错误输出的结合,也就是1>和2>的结合。
-rwxrwxrwx:
第一个-是文件类型:-普通文件,d目录文件,b块设备文件,c字符设备文件,l链接文件,p管道文件,s socket文件。。。user:rwx,group:rwx,other:rwx
r读w写x执行。
./执行文件时,程序必须有x执行权限。如./p.py:这样启动需要先修改p.py权限,再在文件最开始一行写入
#!/usr/bin/env python3
其中env作用:会自动寻找python3,指定程序编译器。
修改权限命令:chmod a+x p.py
创建用户
sudo useradd user1
sudo mkdir /home/user1
sudo passwd user1
su - user1
登陆进去后会发现输入提示符只有一个$,这代表缺配置文件,缺 /home/axe/.bashrc,/home/axe/.bash_logout,/home/axe/.bash_history这三个文件
要拷贝,但是不能在/home/axe里拷贝,要去/etc/skel/里拷贝,命令如下。
cp /etc/skel/.bash* /home/user1。
最后再在/etc/passwd文件里,在user1最后加上/bin/bash,命令为:
sudo vi /etc/passwd
上面的内容可以通过一行命令搞定。
sudo useradd -m -s /bin/bash user1。
然后设置密码就可以了
两个可能会出现的删系统的用法上的错误
1
echo $b
rm -rf $b/
在创建时如果b为空,那么在进行删除操作时,会直接删/:根,删去整个系统。严重
2
useradd -d /user1
userdel -r user1
在创建账户时,目录应该指向/home/user1,如果没有/home,默认会在根目录里添加账户,同时删除账户时,应该是删去/home/user1全部,在这两行命令里,删除账户时,删除了/user1,此时会连系统一块删去,严重。
反引号:
`.....`
linux系统会把中间的内容当命令来执行,$(....)也是这个作用。