这里的常用命令指的是编程c/c++与shell程序常用到的linux命令。
8/24/2017 整理一遍常用命令,希望提高Linux编程的效率
正文如下:
- cd指令
- 切换文件夹到指定的路径,可以是绝对路径,也可以是相对路径。举例:
cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path # 切换到上一层目录中的path目录中,“..”表示上一层目录
cd - # 切换到上次的工作目录中
- 切换文件夹到指定的路径,可以是绝对路径,也可以是相对路径。举例:
- ls指令
- 用于查看文件与目录指令,列出常用的参数
- -l :列出长数据串,包含文件属性以及权限等
- -a :列出全部文件(包括开头为.的隐藏文件)
- -d :只列出目录的文件本身,而不列出文件数据
- -h :读出容量(GB,MB,KB等)
- -R :连同子目录的内容一块列出(递归列出),等同于列出该目录下的所有文件
- 参数可以组合使用,比如
-ls l #以长数据串的形式列出当前目录下的文件及文件数据 -ls IR #以长数据串的形式列出当前目录下的所有文件
- 用于查看文件与目录指令,列出常用的参数
- find指令
- 用于查找功能的指令,参数与语法复杂,基本语法及常用参数如下:
find [PATH] [option] [action] #与时间有关的参数: -mtime n :n为数字,意思为列出在n天之前的一天内被改动的文件 -mtime +n :列出在n天之前(不含n天本身)被改动的文件 -mtime -n :列出在n天之内(含n天本身)被改动的文件 # 例如: find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件 #与用户或用户组有关的参数 -user name :列出所有者名为name的所有文件 -group name :列出用户组名为name的所有文件 -uid n :列出所有者ID为n的所有文件 -gid n : 列出用户组名为n的所有文件 #例如: find /home/bw98/Practice -user bw98 #列出该路径的目录中所有者名为bw98的所有文件 #与文件权限或名称有关的参数 -name FileName :查找文件名为FileName的文件 -size [+/-]SIZE :查找当前目录下大于/小于SIZE的文件 -perm mode :查找当前目录下权限数值为mode的文件 #例如: find . -name 1 #查找当前目录下文件名为1的文件 find . -perm 700 #查找当前目录下文件权限为700的文件 find . -size +12M #查找当前目录下文件大小大于12M的文件
- 用于查找功能的指令,参数与语法复杂,基本语法及常用参数如下:
- cp命令
- copy,可用于把一个或多个文件复制到某个目录下,常用参数如下:
-a #连同文件特性一起复制 -p #连同文件属性一起复制,而不用默认方式,与-a类似,常用于备份 -i #若目标目录存在同名文件,则在覆盖时会询问 #例如 cp -a file1 file2 #连同文件特性,把file1复制成文件file2 cp file1 file2 file3 dir #把file1 file2 file3这三个文件复制到目录dir中
- mv命令
- move,常用于移动文件、目录或者更名,常用参数如下:
-f #force,强制移动而不再询问是否重名 -i #若重名,则询问 -u #若重名,当且仅当要移动的文件比目标文件新的时候,才会更新 #例如 mv file1 file2 file3 dir #把file1 file2 file3 移动到目录dir中 mv file1 file2 #将file1重命名为file2 #注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。
- move,常用于移动文件、目录或者更名,常用参数如下:
- rm命令
- remove,删除文件或目录,常用参数如下:
-f #force,忽略不存在的文件,不会出现警告 -i #重名时会询问是否覆盖 -r #递归删除,常用于目录的删除 #例如 rm -i file #删除名称为file的文件,有重名文件时会询问是否覆盖 rm -rf dir #强制删除目录dir中的所有文件 //这一步需要谨慎,这是递归删除且不提示!!!
- remove,删除文件或目录,常用参数如下:
- ps命令
- process,把某个时间点的进程情况选取下来并输出,常用参数如下:
-A #显示所有进程 -a #显示不与terminal相关的所有进程 -u #有效用户的相关进程 -x #一般与-a一起用,显示较完整的信息 -l #较长,较详细地将PID的信息列出 #通常情况下我们只需要记录相关参数搭配即可,例如 ps aux #查看系统所有进程数据 ps ax #查看不与termi相关的所有进程数据 ps -lA # 查看系统所有的进程数据 ps axjf # 查看连同一部分进程树状态
- process,把某个时间点的进程情况选取下来并输出,常用参数如下:
- kill命令
- kill process,向某个进程(%jobnumber)或者是某个PID(数字)传输一个信号,常与ps、job命令配套使用,基本语法以及常用参数如下:
kill -signal PID #基本语法 signal = #signal的取值情况 1 :SIGHUP #启动被终止的进程 2 :SIGINT #相当于输入ctrl + c(d),中断一个程序的进行 9 :SIGKILL #强行中断一个进程 15 :SIGTERM #以正常关闭的方式结束一个进程 17 :SIGSTOP #暂停一个进程 #注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。
#例如: #以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程 kill -SIGTERM %1 # 重新启动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得 kill -SIGHUP PID
- kill process,向某个进程(%jobnumber)或者是某个PID(数字)传输一个信号,常与ps、job命令配套使用,基本语法以及常用参数如下:
- greap命令
- 分析一行的信息,若找到相关信息,则把包含目标信息的该行显示出来,基本语法以及常用参数如下:
#基本语法 grep [-acinv] [--color=auto] '目标字符串' FileName #常用参数 -a #将binary文件以text的形式查找目标信息 -c #计算查找到 '目标字符串' 的次数 -i #查找时候忽视大小写的区别 -v #反向选择,即选出没有查找到字符串的那一行 #例如 #取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色 grep --color=auto 'MANPATH' /etc/man.config # 把ls -l的输出中的文件1.cpp里包含字母file(不区分大小写)的内容输出 ls -l | grep -i 'file' ./1.cpp #单引号可加可不加,写成下面的形式也能输出file ls -l | grep -i file ./1.cpp
- 分析一行的信息,若找到相关信息,则把包含目标信息的该行显示出来,基本语法以及常用参数如下:
- file命令
- 该命令用于判断文件的类型,因为Linux的文件类型不以后缀区别,所以这条命令很有用。基本语法如下:
#基本语法 file FileName #例如: file ./1
- 该命令用于判断文件的类型,因为Linux的文件类型不以后缀区别,所以这条命令很有用。基本语法如下:
- tar命令
- 用于文件的打包。利用参数,可指定相对应的压缩程序(如gzip、bzip)进行压缩和解压。它的常用参数如下:
#常用参数 -c #新建打包文件 -t #查看打包文件的内容含有哪些文件名 -x #解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中 -j #通过bzip2的支持进行压缩/解压缩 -z #通过gzip的支持进行压缩/解压缩 -v #在压缩/解压缩过程中,将正在处理的文件名显示出来 -f filename #filename为要处理的文件 -C dir #指定压缩/解压缩的目录dir
- 最常用的三条tar命令如下:
压缩:tar -jcv -f FileName.tar.bz2 要被处理的文件或目录名称 查询:tar -jtv -f FileName.tar.bz2 解压:tar -jxv -f FileName.tar.bz2 -C 欲解压缩的目录 #文件后缀不一定是tar.bz2结尾,这儿是以压缩程序为bzip2为例
- 用于文件的打包。利用参数,可指定相对应的压缩程序(如gzip、bzip)进行压缩和解压。它的常用参数如下:
- | 命令
- 又称管道命令,用法:command 1 | command 2 ,功能为把command1执行的结果作为command2的输入,传给command2
- 举例:ls -l | more
- ls -l 以长数据串的形式列出所有文件,同时将执行的结果传给more,more命令分页显示文件列表
- 又称管道命令,用法:command 1 | command 2 ,功能为把command1执行的结果作为command2的输入,传给command2
- cat命令
- 查看文件内容,常与管道命令、more、less搭配使用,例如
#例子 cat 1.cpp | less #这条命令也可以用 less 1.cpp代替
- 查看文件内容,常与管道命令、more、less搭配使用,例如
- gcc命令
- 把c的源文件编译成可执行文件,由于g++与gcc参数类似,这里只列出常用的gcc参数:
#常用参数 -o #output,用于指定生成一个可执行文件的文件名 -c #把源文件生成为目标文件(.o),并阻止生成完整的程序 -l #增加编译时搜索头文件的路径 -L #增加编译时搜索静态链接库lib的路径 -S #把源文件生成为汇编文件 -lm #表示标准库目录中名为libm.a的函数库 -lpthread #连接NPTL实现的线程库 -std= #指定C语言的版本 #例如 # 把源文件test.c按照c99标准编译成可执行程序test gcc text.c -o text -lm -std=c99 #把源文件test.c转换为相应的汇编程序源文件test.s gcc text.c -S
- 把c的源文件编译成可执行文件,由于g++与gcc参数类似,这里只列出常用的gcc参数:
- time命令
- 用于测算程序的执行时间,基本语法如下,在执行命令之前加一个time命令即可:
time ./process time ps aux
-
在程序或命令运行结束后,在最后输出了三个时间,它们分别是:user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;real:实际时间,从command命令行开始执行到运行终止的消逝时间;
- 注:用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。
- 用于测算程序的执行时间,基本语法如下,在执行命令之前加一个time命令即可:
- touch指令
- 用来修改文件时间戳,或者新建一个不存在的文件。常用参数如图:
#常用参数 -a:或--time=atime或--time=access或--time=use 只更改存取时间。 -c:或--no-create 不建立任何文档。 -d:使用指定的日期时间,而非现在的时间。 -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。 -m:或--time=mtime或--time=modify 只更改变动时间。 -r:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。 -t:使用指定的日期时间,而非现在的时间。
- 基本语法及实例如下:
#基本语法 touch [选项]... 文件... #实例一:创建不存在的文件log2012.log log2013.log touch log2012.log log2013.log 实例二:更新log.log的时间和log2012.log时间戳相同 touch -r log.log log2012.log #实例三:设定文件的时间戳 touch -t 201211142234.50 log.log #说明: -t time 使用指定的时间值 time 作为指定文件相应时间戳记的新值.此处的 time规定为如下形式的十进制数: [[CC]YY]MMDDhhmm[.SS] 这里,CC为年数中的前两位,即”世纪数”;YY为年数的后两位,即某世纪中的年数.如果不给出CC的值,则touch 将把年数CCYY限定在1969--2068之内.MM为月数,DD为天将把年数CCYY限定在1969--2068之内.MM为月数,DD为天数,hh 为小时数(几点),mm为分钟数,SS为秒数.此处秒的设定范围是0--61,这样可以处理闰秒.这些数字组成的时间是环境变量TZ指定的时区中的一个时 间.由于系统的限制,早于1970年1月1日的时间是错误的。
- 还需要注意,touch创建的是是文件,不是目录,所以不能用cd命令切换到touch所创建的文件中去
- 123
- 用来修改文件时间戳,或者新建一个不存在的文件。常用参数如图:
-
mkdir命令
- 用来新目录,但要求用户需要具有写的权限并且创建的新目录不重名
- 基本语法及常用参数如下:
#基本语法 mkdir [选项] 目录... #常用参数 -m #--mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask -p #parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录; -v #verbose 每次创建新目录都显示信息 --help #显示此帮助信息并退出 --version #输出版本信息并退出 #实例1:创建一个空目录 mkdir text1 #实例二:递归创建多个目录 mkdir -p test2/test22 #实例3:创建权限为777的目录 mkdir -m 777 test3 #test3 的权限为rwxrwxrwx #实例4:创建新目录都显示信息 mkdir -v test4 #输出: [root@localhost test]# mkdir -v test4 mkdir: 已创建目录 “test4” [root@localhost test]# mkdir -vp test5/test5-1 mkdir: 已创建目录 “test5” mkdir: 已创建目录 “test5/test5-1”
- ln命令
- 它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
- 常用参数、基本语法及实例如下
#常见参数 -s #软连接(符号连接) ,其允许链接文件或者目录,且允许源文件与目标文件不在同一个文件系统中 #常用语法 sudo ln 选项 源文件 目标文件 #实例1:建链接 当前目录是/local,而我经常要访问/usr/local/linux/work 那么我就可以使用在local下建立一个文件linkwork, 然后sudo ln -s /usr/local/linux/work /local/linkwork 即建立两者之间的链接。 #实例2:删除链接 rm -rf symbolic_name 那么在例1中就是rm -rf /local/linkwork
- 它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
- 待学习中