初学Linux基本命令的总结


ls 显示当前目录内容
  1)ls / (显示根目录下所有的目录和文件)
  2)ls -l / (以列表的形式显示根目录下所有的目录和文件)
  3)命令2等同于ll /


绝对路径和相对路径
  1)绝对路径,以/开头的都是绝对路径,比如/home/pzm
  2)相对路径,以./ 或者../开头的,./是指当前目录,../是指上一层目录


mkdir创建目录
  1)mkdir -m 777 /home/pzm/ (在home目录下建立pzm目录,该目录的权限为777)
  2)mkdir -p /home/pzm/1/ (如果/home/pzm/目录不存在,执行此命令创建目录,创建的结果是会同时创建pzm和1这两个目录)
  3)mkdir /home/pzm/ 就是在/home目录下新建pzm目录


rmdir删除目录
  1)rmdir /home/pzm/ (删除/home目录下的pzm目录,要求pzm目录下不能再用其他的目录或者文件,也就是说必须为空)
  2)rmdir -p /home/pzm/1/ (删除/home/pzm/目录下的名字为的1目录,如果pzm目录下除了1这个目录,没有其他目录或者文件,那么加上-p参数执行之后会把pzm/1这两个目录都删除)


touch命令
1)touch aaa,创建一个文件,名为aaa,如果aaa文件存在,则更新文件的时间
2)stat aaa 可以查看文件的相关信息


cp复制文件或者目录
  1)cp /home/test.txt /home/pzm/ (就是将/home/test.txt这个文件拷贝到/home/pzm/这个目录)
  2)cp -R /home/pzm/ /home/1/ (就是将/home/pzm/这个目录以及这个目录下的所有目录和文件统统拷贝到/home/1/这个目录下)
  3)cp -i /home/pzm/ /home/1/ (如果命令2已经执行过了,也就是说/home/1/目录下有和/home/pzm/目录下相同的目录或者文件,那么再加-i参数执行拷贝操作时会提示用户是否进行覆盖操作,输入y回车则执行覆盖操作,输入n回车则不执行覆盖操作)
  4)cp -f /home/pzm/ /home/1/ (不提示用户直接进行覆盖)


mv移动或更名现有的文件或目录 
  1)mv /home/test.txt /home/pzm/ (将/home/目录下的test.txt文件剪切到/home/pzm/目录下)
  2)mv -i /home/test.txt /home/pzm/ (如果在/home/pzm目录下已经有了test.txt这个文件,那么执行此操作将会提醒用户是否覆盖)
  3)mv -f /home/test.txt /home/pzm/ (不提醒用户直接进行覆盖)


rm删除文件或者目录,在使用rm这个命令的时候,一定要指定目录或者文件,避免误删除
  1)rm /home/test.txt (删除/home/目录下的test.txt这个文件)
  2)rm -i /home/test.txt (删除文件之前提示用户)
  3)rm -r /home/pzm/ (删除/home/pzm/目录下的所有文件和目录)
  4)rm -f /home/test.txt (不提示用户直接强行删除文件或者目录)
  5)rm -rf /home/pzm/ (强行删除/home/pzm/这个目录以及这个目录下的所有目录和文件,不提示用户)
  6)rm -rf * (建议不要使用这个命令)
  7)在使用rm、mv命令的时候,一定要注意,在需要删除或剪切目录的时候,不在进到删除或剪切的目录中再去执行操作


more、less命令
  1)more 文件名,或 less 文件名
  2)more只能翻页显示,而less可以使用上下键逐行翻看文件内容
  3)使用more或者less查看文件内容的时候,按q退出


head查看一个文件的前几行内容,默认是查看前十行
  1)head test.txt (查看此文件的前十行内容)
  2)head -n 5 test.txt (查看此文件的前五行内容,通过-n参数设定具体查看的行数)


tail查看一个文件的最后几行内容,默认是十行
  1)tail test.txt (查看此文件的最后十行内容)
  2)tail -n 5 test.txt (查看此文件的最后五行内容,通过-n参数设定具体查看的行数)
  3)tail -f test.txt (一般是用来查看日志文件,如果文件内容有更新,则会同步显示出来)


alias查看命令的别名,unalias撤销别名,别名在~/.bashrc文件中修改


hostname
1)hostname查看主机名
2)hostname pzm,修改主机名为pzm,永久修改需要改/etc/sysconfig/network这个配置文件


id
1)id,显示用户信息
2)id -u 显示用户ID号
3)id -g 显示组ID号


date
1)date显示详细的日期信息
2)date +%d%m%y 显示日期、月份、年份


13、find查找命令
  1)find / -name test.txt (在根目录/下开始以名字的方式查找test.txt这个文件,格式就是find + 路径 + 选项 + 文件名)
  2)find / -type d -name 1 (在根目录/下查找名字为1的目录)
  3)slocate、locate也可以查找文件,但是是从slocate.db数据库中来查找,需要使用updatedb命令之后再使用


14、adduser 添加用户
  1)adduser pzm (添加名字为pzm的用户)
  2)passwd pzm(修改pzm账户的密码,否则不能登录)
  3)su - pzm (彻底切换到pzm用户,-是彻底切换)
  4)/etc/login.defs (创建用户的默认属性在这个文件中设置)
  5)usermod -G root.bin pzm (把pzm用户添加到root、bin组中)


添加完用户可以查看/etc/passwd文件,看用户是否添加成功


15、userdel删除用户
  1)userdel pzm (删除名字为pzm的用户)
  2)userdel -r pzm (删除pzm用户,且删除pzm用户的主目录及相关信息)


passwd修改账户密码
  1)passwd (修改当前用户的密码)
  2)passwd pzm (root账户具有修改任何账户密码的功能,如果当前以root账户运行,执行此命令可以修改pzm账户的密码)


su切换用户
  1)su pzm(切换到pzm账户运行)
  2)exit(退出su切换到的账户)


使用非root账户登录Linux的方式和使用root账户的方式一样,只是在登录系统的时候选择其他用户即可




16、ps静态方式查看进程
  1)ps -ef (显示所有的进程)


17、top 动态方式查看进程
  1)top (动态方式查看当前所有的进程,包括cpu和内存的信息)


18、chmod 更改文件的权限
  1)chmod 777 test.txt (修改test.txt的文件权限为777,格式是chmod + 具体需要设置的权限 + 文件或者目录名字)
  2) chmod +x test (给test这个文件添加可执行权限)
  3)u表示文件的拥有者,g表示文件的拥有组,o表示文件的其他用户,比如说或要给文件的其他用户添加可写的权限,可以使用命令:chmod o+w test,如果要给文件的当前用户组去掉可执行的权限,可以使用命令:chmod g-x test


19、tar压缩解压命令
  1)tar -cvf test.tar ./ (将当前目录的所有文件和目录打包成test.tar,格式为 tar + (选项,例如 -cvf) + 打包的文件名 + 要打包的目录或者文件)
  2)tar -xvf test.tar (将test.tar包解压到当前目录,格式为 tar + (选项,例如 -xvf) + 打包的文件名)
  3)tar -xvf test.tar -C ./1/ (将test.tar包解压到指定目录,格式为 tar + (选项,例如 -xvf) + 打包的文件名 + (-C)+ 指定的目录)
  4)tar -zxvf apach-tomcat-6.0.16.tar.gz (解压缩gz包需要使用-z选项)
  5)tar -zcvf test.tar.gz ./(把当前目录的所有内容打包并压缩为为test.tar.gz包)
  6)tar -jcvf test.tar.bz2 ./(把当前目录的所有内容打包并压缩为为test.tar.bz2包)
  7) tar -jxvf test.tar.bz2 (解压缩bz2包需要使用-j选项)
  8)tar -tvf test.tar (查看包内容)


20、输出重定向
  1)> 例子:ls > ls.txt (把ls查出来的结果全部写入到ls.txt这个文件里面,如果这个文件不存在,会自动创建,效果就是,每次都会把指定的文件内容清空,再重新写入新的内容)
  2)>> 例子:ll >> ll.txt (把ll查出来的结果全部写入到ll.txt这个文件中,同>的区别是,它不是覆盖写,而是追加写,在指定文件的内容结尾追加写)


21、输入重定向
  1)cat < ll.txt (将ll.txt这个文件的内容作为cat的输入)
  2)输入重定向一般后面都是跟文件


22、管道:| 将管道前面命令的输出作为管道后面命令的输入
  1)ps -ef | grep bash (将ps -ef 这个命令的结果作为grep命令的输入)


23、vi编辑器
  1)vi config.txt (使用vi编辑器查看修改config.txt文件,如果此文件不存在则会创建一个该名字命名的文件)
  2)进入vi编辑器之后,按a或者i进入编辑模式,编辑完成后按esc键推出编辑模式
  3)如果未修改过config.txt文件,则直接输入:q可以退出vi编辑器
  4)如果修改过config.txt文件,则输入:wq保存修改并退出,也可以输入:q!不保存修改并退出
  5)在命令模式下,连按两下g回到文件的第一行,按大写的G(shift+g)回到文件的结尾
  6)在命令模式下,输入/+指定的字符,比如/q,就是在当前文件中查找q这个字符,按小写的n是往下查找下一个匹配的字符或者字符串,按大写的N是往上查找下一个匹配的字符或者字符串,输入?q,则是从下往上查找包含q关键字的内容
  7)在命令模式下,输入:set nu对当前文本中的行设置行号
  8)在命令模式下,输入dd可以删除光标所在的行
  9)直接输入vi命令,后面不跟文件名,在保存退出的时候:wq后面加文件名,即可保存为指定文件名的文件
  10)设置高亮,命令模式下输入:set hlsearch
  11)取消高亮,命令模式下输入:set nohlsearch
  12)vi无法输入中文的情况下,在vi命令行模式输入:set encoding=gb2312
  13)命令模式下,按u撤销上一次修改,按ctrl+r继续上一次撤销的修改
  14)命令模式下,x删除一个字符
  15)yy复制一行,p粘贴
  16):w aaa 将当前文件内容存到aaa这个文件中
  17):e! 去掉所有修改,恢复文件到最开始的状态
  18):% s/abc/123/g,将文本中所有的abc字符串换成123


24、wc文本统计命令
  1)cat test.txt | wc -l (将cat test.txt的内容通过管道作为wc命令的输入,-l是统计行数)
  2)cat test.txt | wc -c (统计字符数)
  3)cat test.txt | wc -w (统计单词数)
  4)wc test.txt (分别统计test.txt这个文件的行数、单词数、字符数,并在输出的结果最后显示当前的文件名)
  5)wc -l test.txt (可以在wc后面跟对应的选项-l -w -c显示文件中的行数、单词数、字符数)


25、grep搜索命令
  1)cat test.txt | grep test (将cat test.txt的结果通过管道作为grep命令的输入并且搜索test字符串,如果搜索到则显示到屏幕,区分大小写)
  2)cat test.txt | grep -c test(通过-c选项统计包含test字符串的行数,也就是说一共有多少行包含test字符串)
  3)cat test.txt | grep -v test (通过-v选项将所有不包含test字符串的行显示到屏幕)
  4)cat test.txt | grep -i Test (通过-i选项搜索时不区别大小写)
  5)grep test test.txt (不通过管道进行查找,在test.txt文件中查找所有包含test字符串的行并显示)
  6)grep -l test test.txt (通过-l选项,如果在test.txt文件中查找到test字符串则只显示当前的文件名,否则什么也不显示)
  7)grep test *在当前目录下所有的文件中查找包含test关键字的行,并且把内容打印出来
  8)grep -R test /etc/ 在etc目录下查找所有包含test关键词的文件
  9)grep -A2 -B3 test test.txt在test.txt中查找包含test关键字并将这一行的前3行和后两行打印出来


26、awk文本处理工具
  1)awk '/test/' test.txt查找test.txt文件中包含test关键字的行病打印,区分大小写
  2)awk '{print $1}' test.txt默认以空格作为分隔符去匹配test.txt中的每一行,并对每一行中的内容以空格作为间隔,$1取第一个空格前的字符串,$2取第二个空格前的字符串,依次类推,最后将每一行匹配出来的内容打印出来
  3)awk -F ":" '{print $1}' test.txt以:作为分隔符
  4)awk '$1==test {print $2}' test.txt 以空格作为间隔,如果第一段为test的时候,把第二段打印出来


ifconfig
1)ifconfig,查看网卡信息
2)ifconfig eth0 192.168.1.1 修改eth0网卡的IP地址
3)永久修改IP地址需要改这个配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
4)netconfig+service network restart也可以永久修改网络信息


mount
1)mount 显示所有挂载的点
2)mount /dev/sda1 /mnt 把/dev/sda1分区挂载到/mnt目录上
3)umount /mnt 卸载/mnt挂载点


cut
1)cut -d: -f7 /etc/passwd 以:作为分隔符,取第七段并显示


sort
1)sort -t: +2 -n /etc/passwd 以:作为分隔符,对第三部分按照数字进行排序输出
2)du | sort -n 把du输出结果的第一列按照数字进行排序输出
3)sort -r 反向排序


top
1)top 查看系统资源和进程信息
2)在top命令中按k键,再输入进程的PID,选择输入9或者15号信号,可以结束进程
3)在top命令中按?,可以查看帮助
4)在top命令中按M,按照内存排序


env查看所有的环境变量信息
set查看所有的变量信息


sed流编辑器
1)sed -e 's/root/pzm/g' /etc/passwd 将/etc/passwd中的文件内容中的root字符串替换为pzm并打印到屏幕上,但是文件内容并未修改
2)sed -n -e '/pzm/p' /etc/passwd 将/etc/passwd中包含pzm字符串的行打印出来
3)sed -e '/^#/d' /etc/squid/squid.conf 将这个文件中以#开头的内容删除不打印出来
4)info sed 查看sed的帮助


27、``反向引号的作用
  1)grep `id -un` /etc/passwd 这行命令的作用是,先执行反向引号中的命令id -un,将id -un执行的结果作为grep的输入,那么这行命令等同于如下两行命令:
   id -un  (假设这行命令的输出结果是root)
   grep root /etc/passwd


28、free -m
查看内存信息


29、gcc -o 可执行程序文件名(可任意取,不要和目录重名即可) *.c(要编译的c代码)
gcc是用来编译C程序的,c程序当然是以.c作为后缀的
-o 生成可执行文件,不加此参数只对代码做编译,不会生成可执行文件


30、执行shell脚本:
1、编写脚本,在脚本之前需要加上#!/bin/bash,表面当前的shell版本
2、给该脚本赋予可执行权限
3、sh *.sh 或者 ./*.sh执行该脚本


31、修改终端提示符:
export PS1="[\t \w \u \h]"
\t 显示时间 
\w 显示当前的目录
\u 显示当前的用户名
\h 显示当前的主机名


32、整数运算符expr
   1)expr 1 + 1 (计算结果为2,注意+号左右两边必须要有空格)
   2)expr $count + 1 (使count变量的值+1)
   3)expr $count \* 10 (乘号需要加反斜杠转义)
   4)expr $count / 10 (将count变量的值除以10)
   5)count=`expr $count + 1` (将count变量的值+1之后再赋值给count变量,运算表达式需要使用反向引号括起来)
   6)=号左右两边不能有空格,运算符左右两边要加空格
   7)给变量赋值不需要加$


33、test测试运算符
  1)test -e test.txt (判断当前目录下是否存在test.txt这个文件,该语句的执行结果保存在$?变量中,如果$?结果值为0则表示这个文件存在,如果$?结果值为非0则表示这个文件不存在)
  2)test -d log (判断当前目录下是否存在log这个目录)
  3)(定义两个字符串,判断着两个字符串是否相等)
    str1=abc
    str2=cdf
    test $str1 = $str2
    test $str1 != $str2
  4)整数判断,判断相等使用-eq 判断不等使用-ne 判断大于使用-gt 判断大于等于使用-ge 判断小于使用-lt 判断小于等于-le
    num1=10
    num2=20
    test $num1 -eq $num2


34、if程序


#!/bin/bash
#$#是指在执行此脚本时传入的参数的个数
#先判断执行脚本时传入的参数是否不等于2
#如果条件成立则打印错误提示用户,否则进入elif判断语句
if test $# -ne 2
    then echo Error: two args required
#判断用户在执行脚本输入的第二个参数是否不是文件,-f是判断是否为文件的选项,!是取反的意思
elif [ ! -f $2 ]
    then echo "Sorry: $2 is not a file! "
#用户输入的两个参数分别保存在$1 $2中,在本例执行grep语句就是为了在$2对应的文件中查找$1对应的字符串,并把输入结果重定向到/dev/null设备中,目的是为了不在屏幕打印结果,而整个语句的执行结果作为elif的判断条件,如果执行成功返回0,打印Find,否则返回非0,打印None
elif grep -s $1 $2 > /dev/null
    then  echo Find
    else  echo None
fi
if后面需要加空格,[]前后都需要加空格
else中不需要加then
一定要写fi作为结束


35、case程序
 #!/bin/bash
 #调用date命令,后面加上+%H是为了输出当前的小时为多少,通过反向引号把得到的结果保存在hour变量中
 hour=`date +%H`
 #将hour和后面的条件做判断,如果相等则执行后面的语句
 case $hour in
   #通过正则表达式判断当前的hour是否为01~11,如果是则打印早上好
   0[1-9]|1[01])echo "Good morning!";;
   #通过正则表达式判断当前的hour是否为12~17,如果是则打印下午好
   1[2-7]) echo "Good afternoon!";;
   #*)为default分支,也就是说,如果以上条件都不满足的话则进到default分支,打印晚上好
        *) echo "Good evening!";;
 esac
每一个分支可以有多条语句,但是需要单独一行,且每个分支必须以;;作为结束


36、for循环程序
  1)var作为循环变量,从1 2 3中分别取值,在do done中填写具体的循环代码,对于这个程序来说,var会分别赋值为1 2 3,循环会执行三次,分别打印var三次循环的值
  for var in 1 2 3
  do
     echo $var
  done


  2)注意,这种方式需要两个小括号括起来,同上面第一种方式类似,此循环循环5次,i分别取值为0 1 2 3 4
  for((i=0;i<5;i++))
  do
     echo $i
  done


  3)$*是指我们在运行脚本的时候传入的参数列表,然后执行for循环,var变量分别从$*参数列表中取值
  for var in $*
  do 
     echo $var
  done


37、while循环程序
#!/bin/bash
#定义个变量,名为num,赋值为0
num=0
#while循环的判断条件是num的值小于10,否则则退出while循环
while [ $num -lt 10 ]
do
    #打印num当前的值,-n是指在执行echo的时候不换行
    echo -n "$num "
    #通过反向引号包含一句整数运算表达式,目的是使num值加1
    num=`expr $num + 1`
done
#打印信息
echo
echo "Loop exit."


38、read命令
   1)执行脚本后,输入一行字符串按回车确认,输入的字符串会保存在变量str中,最后打印出来的结果和用户输入的结果一致
   #!/bin/bash
  
   read str


   echo $str


   2)执行脚本后,从标准输出中读取三个字符串分别赋值给str1 str2 str3,输入以空格为间隔,回车为结束,最后打印着三个变量
   #!/bin/bash
  
   read str1 str2 str3


   echo $str1
   echo $str2
   echo $str3


39、制作菜单程序示例
#!/bin/bash
#清屏
clear
#通过true在设置while循环的条件一直为真,除非在循环体中根据不同的条件选择退出,可以通过break(退出循环,继续执行循环后面的语句),或者exit(退出当前脚本,不再执行脚本后面的语句)
while true
do
echo  "1,  Display date"
echo  "2,  Display the number of online users "
echo  "3,  Exit"
#-e参数是为了保证在后面输出的字符串中可以使用转义\,\c是指当前输出内容之后不换行
echo -e "Please enter a choice(1, 2 or 3):\c"
#read命令是指从标准输入截取内容赋值给变量no
read  no
case  ${no}    in
     #调用date打印日期,格式安装年月日的格式输出
     1)    date   "+%Y/%m/%d";;
     #通过who命令查看当前在线的用户,通过wc -l来查询who输出的结果又几行,也就是说当前在线有几个用户
     2)    who |wc -l;;
     #退出脚本
     3)    exit;;
esac


#程序执行到这里之后,根据sleep后面的数字休眠对应的秒数
sleep 3
clear
done


40、批量建立用户
#!/bin/bash
echo -e "Input first part of username:\c"
read name
echo -e "Input start number:\c"
read startno
count=$startno
echo -e "Input end number:\c"
read endno


#如果startno变量的值小于等于endno变量的值,那么就执行循环体中的语句
while [ $startno -le $endno ]
  do 
     #在做字符串拼接的时候一定要使用${}这种方式来引用变量
     #我们强调以后所有的变量尽量都采用这种方式,避免出错
     usernames="${name}${startno}"
     echo "    add user " $usernames
     #可以直接调用useradd命令,一般不需要在前面加具体的绝对路径
     #useradd命令的-p参数是指给创建的这个用户添加密码
     /usr/sbin/useradd -p zyMnbK31XVV7Y "$usernames"
     startno=` expr $startno + 1 `
  done


count=` expr $endno - $count + 1 `
echo "$count Done! "


41、rpm软件安装命令
   1)rpm -ivh abc.rpm (安装rpm软件包,-ivh为安装使用的选项,两种方式,一种是使用绝对路径,那么你在任何地方都可以安装这个rpm包,一种是使用相对路径,进到rpm包所在的目录,直接使用rpm文件名就OK)
   2)rpm -e abc (卸载rpm软件包,-e是卸载使用的选项)


42、对于for、while、if的判断条件都可以采用类似于C语言的写法
while((i==0))


if((i==0))


for((i=0;i<10;i+=))
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值