linux常用命令

Shell——命令行解释器

history 查询用户的过往操作

alias 别名

给原命令设置别名,alias 别名=‘原命令’

alias a='ls -l' # 给命令ls -l 设置别名a
unalias a # 取消别名

command & 后台进行

在命令后面加上一个 & 后,表示将一个进程直接丢入后台运行

nohub command & 将进程丢入后台,且控制台退出后,进程不断
ctrl+z 将正在运行的前台命令暂停,丢入后台

nohup python /opt/tensorflow_object_detection/bin/train.py \
--logtostderr \
--pipeline_config_path=/opt/tensorflow_object_detection/data/ssd_mobilenet_v2_coco.config \
--train_dir=/opt/tensorflow_object_detection/data/model \
--num_clones=3 \
--ps_tasks=1 &> /opt/tensorflow_object_detection/log/train.log &

# nohub  & 将训练模型进程丢入后他运行,关闭控制台后,进程不断
# &> 将训练的日志信息,全部写入到train.log中
# 其中的反斜杠 \ 表示命令行太长了,换个行

echo 回显

(回声)用于在屏幕上打印出指定的字符

echo arg #在屏幕上打印字符arg

name="OK"
echo "$name It is a test" # OK It is a test

mouth=8
echo "${mouth}-1-2009" # 8-1-2009

echo "OK!\n"
echo "It is a test" # 打印OK! 换行后打印 It is a test

echo "OK!\c"
echo "It is a test" # 不换行打印 OK!It is a test

echo `date` # 打印日期

rm (remove) 删除

命令用于删除一个文件或者目录

  • -i 删除前逐一询问确认。

  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

  • -r 将目录及以下之档案亦逐一删除。

    rm  test.txt 
    # rm:是否删除 一般文件 "test.txt"? y  
    rm  dirname  
    # rm: 无法删除目录"dirname": 是一个目录  
    rm  -r  dirname  
    # rm:是否删除 目录 "dirname"? y 
    
    rm  -r  * # 删除当前目录下的所有文件及目录
    
    rm -rf dirname # 删除当前目录下所有文件,且无需确认
    

mv (move file) 移动

用来为文件或目录改名、或将文件或目录移入其它位置

  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

  • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

  • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

  • -n: 不要覆盖任何已存在的文件或目录。

  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

    # 目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名
    # 目标目录与原目录不一致,没有指定新文件名,效果就是仅仅移动
    # 目标目录与原目录一致, 指定了新文件名,效果就是:移动 + 重命名
    
    # mv source_file(文件) dest_file(文件) 
    # 将源文件名 source_file 改为目标文件名 dest_file
    
    mv aaa bbb
    # 将文件aaa 改名bbb
    
    
    # mv source_file(文件) dest_directory(目录) 
    # 将文件 source_file 移动到目标目录 dest_directory 中
    
    # 批量移动,但是注意需要先执行显示隐藏文件命令,否则,隐藏文件以及隐藏文件夹不会被移动到新目录
    $ mv /usr/runoob/*  dirname
    # 如果dirname为空,则将/usr/runoob 下的所有文件和目录移到当前目录下,否则移到dianame下
    
    
    # mv source_directory(目录) dest_directory(目录)
    # 目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中
    # 目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory
    
    mv info/ logs 
    # 将 info 目录放入 logs 目录中。注意,如果 logs 目录不存在,则该命令将 info 改名为 logsls (list files) 用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
    

ls (list files) 查询文件内容

用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)

  • -a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
  • -r 将文件以相反次序显示(原定依英文字母次序)
  • -t 将文件依建立时间之先后次序列出
  • -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
  • -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/”
  • -R 若目录下有文件,则以下之文件亦皆依序列出

> 定向保存

> 前的执行结果保存到 > 后的文件中

  • 使用 > ,执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)

  • 使用 >> 向>>后的文件中追加内容

    ls /home/genius01/chenmq/image/train/*/*.jpg > /home/genius01/chenmq/file/train.txt
    # 查询train目录下,每个类别目录下的所有jpg文件,并将文件路径写入到train.txt中
    
    ls /home/genius01/chenmq/image/*/*/*.jpg >> /home/genius01/chenmq/file/all.txt
    # 查询image下所有图片,并将其绝对路径追加写入到all.txt文件中
    

cp (copy file) 复制

用于复制文件或目录

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。

  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。

  • -f:覆盖已经存在的目标文件而不给出提示。

  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。

  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

  • -l:不复制文件,只是生成链接文件。

    cp –r test/ newtest
    # 将test目录下的所有子目录和文件(包括test目录)到newtest目录下
    
    cp -r /opt/tensorflow_object_detection/bin/*  /home/genius01/chenmq/bin
    # 将bin目录下的所有文件复制到chenmq/bin目录下
    

&和&&, |和|| ,&> 与 >的区别

& 表示任务在后台执行,如要在后台运行,放在命令行后边
java -jar test.jar > log.txt &
#运行 test.jar程序 ,并且置于后台执行,执行的日志重定向 到当前默认的log.txt文件中

&& 表示前一条命令执行成功时,才执行后一条命令
ls -l && cd .. 

| 表示管道,上一条命令的输出,作为下一条命令参数(输入)
ps -aux | grep aux

|| 表示上一条命令执行失败后,才执行下一条命令
als -l || cd ..

>符号是指:将正常信息重定向
find / -name “*.txt” > /tmp/log.txt
# 在根目录下根据名字来查找*.tx输入的日志放置/tmp/log.txt文件中

&>可以将错误信息或者普通信息都重定向输出

$ 用法

  • 引用变量

    # 直接引用
    (cctf14) genius01@a4c6495c0f2f:~$ x=2014
    (cctf14) genius01@a4c6495c0f2f:~$ echo $x
    2014
    
    # 利用双引号 " 将括起来的字符串支持变量插值
    [root@localhost ~]# x=1024
    [root@localhost ~]# echo "x = $x"
    x = 1024
    
    # 使用{}作为单词边界
    [root@localhost ~]# x=1024
    [root@localhost ~]# echo "x = ${x}xy"
    x = 1024xy
    
    #使用 ${#} 获取变量字符串长度
    [root@localhost etc]# s=helloworld
    [root@localhost etc]# echo "s.length = ${#s}"
    s.length = 10
    
    #使用$[] 中括号中的表达式会被数学计算
    echo $[3+5]
    # 显示8
    
  • 上条命令返回值

    # 使用 $? 上条命令的返回值
    # 0 -表示没有错误
    # 其他任何值 -表示有错误
    [root@localhost ~]# true 1024
    [root@localhost ~]# echo $?
    0
    [root@localhost ~]# false 2048
    [root@localhost ~]# echo $?
    1
    
  • 获取当前进程ID

    (cctf14) genius01@a4c6495c0f2f:~$ echo $$
    114306
    

\ 反斜杠

  • 将特殊符号字符的特殊含义屏蔽掉,使其还是原字符
  • 用于表示一行未结束,通常一行命令很长时,用\表示换行,但命令未结束

; 分隔符

用于在一行内分隔两个命令,相当于回车

pwd ; ls -l
# 先执行pwd,再执行ls -l

’ ’ ” “ 单引号和双引号的区别

" " ,将一串字符当作一个字符串对待,包含特俗含义,则进行转义

’ ’ ,作用同上,但不进行转义

genius01@a4c6495c0f2f:~$ echo "hello,$HOSTNAME"  # 显示 hello,a4c6495c0f2f
genius01@a4c6495c0f2f:~$ echo 'hello,$HOSTNAME'  # hello,$HOSTNAME显示

`` 反引号

反引号的功能是命令替换,将反引号中的字符串做为命令来执行,我们在用shell编程时经常用的到将系统命令的执行结果赋给一个变量

genius01@a4c6495c0f2f:~$ echo `pwd`  # /home/genius01
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值