Linux基本命令
1. 路径表示:
./ 当前目录
../上一级目录
/ 根目录
~当前用户的家目录
2. ls查看文件列表,下面列出常用参数
-a 显示隐藏文件
-l 以长格式显示文件列表
-d 显示目录的详细信息
-k 以kB为单位显示文件大小
-S 按文件大小进行排序
-h 以更直观的方式查看文件列表,必须和-l配合使用才有效果
3. ln文件链接命令,也就是创建快捷方式
ln [option] target link_name
使用-s参数、创建软链接,不带任何参数、创建硬链接
*软硬链接的区别:软链接就可以直接理解成是快捷方式;硬链接可以看成是源文件的一个副本,只不过这个副本会随着源文件的改变而改变;同时要注意,软链接可以跨分区创建,但硬链接不可以
4. 文件名,最多允许有256个字符,不能包含/,同时也不推荐使用系统保留的、有特殊意义的符号(比如?$*等),如果确实需要使用这些特殊符号命名,需要在该特殊符号前面加\屏蔽。Linux中也允许同一目录中同时出现同名的文件夹和文件。
5. mkdir -p /a/b/c:按路径创建所有目录
6. cp -R 复制目录;cp -p 复制时保留权限;cp <file> file.iso 制作光盘镜像
7. rmdir:删除空目录
8. file:查看文件类型 file -L:查看链接指向的源文件的文件类型
9. cat -v:查看文件内容并同时显示其中的控制字符
10. tail -n:使用时,n要换成数字,查看指定的后n行 tail -f:从行尾开始动态显示变化的内容
11. head -n:使用时,n要换成数字,查看指定的前n行
12. more和less:分页显示文件内容,more可以和其他命令通过|合用
13. diff -C n file1 file2:文本内容比较命令,n表示上下文行数(也就是隔n行显示一次差异,一般设为1即可)
14. 文本统计命令wc
统计某文本文件的字数:wc -w filename
统计文件行数:wc -l filename
15. 查看某年某月的日历:cal month year
如:cal 2 2015
16. 修改日期:
首先修改时区:tzselect
修改系统日期:date -s MM/DD/YY
修改系统时间:date -s HH:MM:SS
将系统时间同步到硬件时钟:hwclock --systohc
(将硬件时钟的时间同步到系统时间:hwclock --hctosys)
*关机时,SUSE会自动将操作系统时间同步给硬件始终
17. 查看连线登录用户的详细信息:finger
18. 查看用户占用资源的情况:w
19. 与连线用户通信命令:
wall information 向所有用户发送公告
write user_name 和某用户进行即时通信
mesg n 拒绝其他用户的消息
mesg y 接受其他用户的消息
20. 以root身份运行高权限命令的sudo操作
首先要将指定的用户放到/etc/sudoers文件中,具体位置是
root ALL=(ALL) ALL的下面,再加一行与此相同的行,将root改成username即可,比如:username ALL=(ALL) ALL
以后,username就可以通过全路径的方式执行root才有权限执行的命令,如/sbin/ifconfig命令
*这里说下上面三个ALL的意义,第一个ALL表示所有客户端计算机,第二个表示所有用户,第三个表示所有命令,和前面的用户名加在 一起,就表示:允许此用户通过任何终端连接,并运行所有用户的所有文件和命令。
如果不想给某用户设置这么大的权限,可以进行更详细的设置,详见:
http://m.blog.csdn.net/blog/u011648187/12995535
http://www.2cto.com/os/201203/122820.html
21. which
显示某个命令的位置,以绝对路径的方式
*这里说下$PATH,当一个用户输入一个命令后,系统会在该变量锁包含的目录中查找命令并执行对应的命令文件
22. locate,需要slocate软件支持;安装后会在本地建一个索引数据库,每天更新一次索引,所以,通过这个搜索有可能搜不到最新变更的文件。
23. whereis 更擅长搜索一些特殊文件,比如二进制文件、源代码等。
24. apropos 关键字搜索;他会给出关键字都被包含在哪些命令的man手册中,以供学习
25. echo 回显命令
-n 输出结束后不换行,不加的话则换行
-E 禁用转义字符(默认)
-e 启用转义字符
*这里的转义字符即指C语言中的转义字符
此命令使用比较灵活,可以嵌套变量是其输出当前值,比如:
echo "Host $HOST_DOWN_NAME non-response,time is: `date +'%Y-%m-%d %T'`"
注意date前后的反引号(1左边的键),$后面是一个变量名,如果不存在则输出空。
配合重定向输出错误信息:
echo "Input error"1>&2
*注:!号在有些shell里属于保留字符
26. 接受用户输入命令read [ [option] [parameter] name
option:
a 将输入的文本按字段放入数组,默认分隔符为空格(或tab),数组下标从0开始;比如:
例:read -a name;echo "your name: ${name[*]}"
也可以只显示数组中某几个元素的内容:
例:read -a name;echo "your name: ${name[0]} ${name[1]}"
d 指定结束符,默认为换行,比如:
例:read -d "$" NAME; echo "Hello $NAME"!
当输入$号时,默认输入结束
e 从标准输入读取时、使用readline库获取输入,此时可以使用退格、方向键进行简单行编辑
例:echo -n "Please enter your message:"; read -e MESS;echo "your message is: $MESS"
如果不加-e的话,试图回退、插入字符会打出莫名其妙的符号;
n 接收指定长度的字符数n;
例:read -n 2 name;echo $name
p 将指定的字符创输出到标准错误,并读取输入,比如:
例:read -p "Unexpected error, press y key to continue. " Flag;echo "Being restored, please wati..."
r 将读取到的字符串按字段放到不同的变量中,bash shell中默认的分隔符为空格、tab,比如:
例:echo -n "Please enter the four strings: "; read -r v1 v2 v3 v4; echo -e "$v1\n$v2\n$v3\n$v4"
如果分隔符不想用空格,可以修改变量IFS来修改分隔符:
IFS="#";echo -n "Please enter the four strings: "; read -r v1 v2 v3 v4; echo -e "$v1\n$v2\n$v3\n$v4"
事后用IFS=" "改回原来的空格为分隔符
s 先锁住屏幕,然后从标准输入中读取字符;一般在需要用户输入密码等敏感信息时使用,也就是输入的字符不在屏幕上显示(但其实已经录入到对应的变量名中)
例:echo -n "Please enter your password:";read -s Pass; echo -e "\nYour password is: "$Pass
t 如果用户在指定的时间内没有输入动作,则结束读取状态
例:DEF=y;echo -n "Please select yes or no[y|n]:"; read -t 3 DEF;echo -e "\nInput timeout, Use the default options[y]."
如果超时没有动作,则使用默认值(DEF=y)。
u 从指定的文件描述符中读取,如果没有特别指定,则以换行符作为结束读取标记,即按行读取文件内容
例:详见29;
27. 邮件命令mail
mail -s 邮件主题 -c 密送地址 -b 抄送地址 username,[email protected] < file.txt
上面的意思是指将file.txt中的内容,以-s后面的主题,发送出去
查看邮件时,直接输入mail,会显示当前的未读邮件,使用f参数查看已读邮件,q为退出当前邮件并将其存入mbox中,x为直接退出
使用mail -f /var/spool/mail/user1查看用户user1的未读邮件
28. 追加命令tee
......| tee -ia a.txt
-i: 忽略内容中的标准错误
-a: 以追加的形式将...加到文件结尾;如果不加该参数则会以覆盖的方式写入
29. 启动新shell命令:exec
如下,使用 文件描述符读取某文件前三行的例子:
ifconfig > ifconfig.txt;exec 3<ifconfig.txt ;read -u 3 LINE;read -u 3 LINE1;read -u 3 LINE2;echo -e "$LINE \n $LINE1 \n $LINE2";exec 3<&-
该命令长被用来处理文件描述符,此时exec不会启动新shell替代当前shell;在上面的例子中,现将3这个文件描述符指向ifconfig.txt文件,之后使用read -u从描述符3中读取3次,并 用echo输入读取到的内容。最后的exec 3<&-表示关闭文件描述符3。由于使用read命令连续3次读取文件的过程中没有关闭文件描述符3,所以读取到的内容是文件的前三行。
*文件描述符0、1、2是系统保留的;使用和关闭时要指明,否则可能导致当前shell关闭;关于文件描述符更详细的内容,见:
http://blog.csdn.net/cywosp/article/details/38965239
输出文件描述符的例子:
exec 4>name_list;echo -n "Please enter a string:";read NAME1;echo -n "Enter the 2nd string:";read NAME2; echo -e "the first string: "$NAME1"\nThe 2nd string:"$NAME2>&4;exec 4>&-;cat name_list