Limux Terminal
【chmod 修改文件权限】
文件权限通常是 rw-rw-r--(644);如果要将该文件变成可执行文件,并且不让其他人修改此文件,则只需将此文件的权限该为 rwxr-xr-x(755)即可;
另外,一般文件设置为 644, 文件夹设置为755
chmod 644 test.v
chmod 755 test_case/
$文件所有者:读、写、执行权限
$同组用户:读、执行权限
$其他用户:执行权限
系统函数 diff [参数] [文件1] [文件2]
1、默认用法:diff a b 会将不同的信息打印到终端
2、打印到文件::diff a b > c 会将不同的信息打印到文件,不显示在终端
3、打印常用选项:diff -H -q a b
-H : 大文件时可加快速度
-q : 不打印详细信息,只显示“Files a and b differ”
打开doc、xls
soffice file_name.xlsx &
打开PDF
evince 文件名 &
【depth表示只显示一层文件夹大小,即深度为1】
du -h --max-depth=1
【查看当前目录正在被哪些进程在使用】
路径 用户 进程号 权限 命令
/home/test: test 3022 ..c.. (test)gnome-session-b
【查看当前文件正在被哪些进程在使用】
lsof 文件名
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
simv 57284 liu mem REG 0,47 10081360 214752576388 文件名
强制删除进程
kill -9 57284
将一个文件复制到多个目录
echo /home/dir1 /home/dir2 /home/dir3 | xargs -n 1 cp -v /home/dir*/file
dir1 dir2 dir3分别是三个不同的目标文件夹,如果有需要,还可以继续往下加。dir*/file表示需要复制的文件
-n 1:表示每一命令行只能有一个参数,并传给cp命令
cp:表示复制
-v:表示将复制过程详细罗列出来,这样就可以清楚看到文件是如何复制到不同的文件夹内的
或者 echo * | xargs -n 1 cp -v *txt
前面 * 号,表示当前目录下所有的文件夹(当碰到非文件夹时会警告);后面 * 号+文件后缀,表示某类文件,但不能直接使用* 。
> cp: target \u2018test_cfg.txt\u2019 is not a directory
> cp: target \u2018wave_dump_system.txt\u2019 is not a directory
exec命令功能:
用于调用并执行指定的命令,
exec命令常用于shell脚本程序中,运行其它命令
exec命令的语法格式:
exec [参数]
-----常用参数说明------
-c:在空环境中执行指定的命令
---exec注意事项---
当exec命令运行完毕后,
会自动退出终端
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
-i 将前一个命令的输出,一一个一个传输到下个命令后的{}作为输入
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
语法: ls [-alrtAFR] [name...]
参数 :
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
命令行中查找路径下文件指定内容
1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file
2、以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
grep -r update /etc/acpi
grep size_only ./ -r
3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
grep -v test *test*
4、将搜索到的内容打印到文件
grep -r 名字 | g -
建立软链接
ln -s 源文件或目录 目标文件或目录
文件的链接:ln -s a.py b.py
文件夹的链接:ln -s a b
终端进程操作
ctrl + c
ctrl + z
fg
bg
kill -9 进程id
在终端:jobs 查看当前终端进程,kill -9 %NUM 杀死
终端窗口操作
Ctrl + Alt + T
Ctrl + shift + T
Alt + 1
Alt + 2
终端窗口查看历史命令
history N 显示最近的N条命令,例如history 5
或直接 history
文件操作
-f filename
if [ -f /etc/sysconfig/network ]; then
./etc/sysconfig/network
fi
补充:
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
-z STRING “STRING” 的长度为零则为真。
cp simv ../common_sim_dir/simv
cp -a A/. B 把文件夹中的内容复制到另一个文件夹中
cp file /usr/men/tmp/file1
cp -r -u /././filer/* ./
rm -rf /access
将会删除/access目录以及其下所有文件、文件夹
删除文件使用实例:
rm -f /s.log
将会强制删除/s.log这个文件
mv path/filename path/filename
移动文件;
可用来修改文件名,mv oldname newname
Shell
alias 命令用于设置指令的别名
alias [别名]=[指令名称]
命令行参数传递:
通过$argv[1],$argv[2]或$1,$2来访问命令行参数。命令行参数的个数为$#argv
Shift:
shift(shift 1) 命令每执行一次,变量的个数($#)减一(之前的$1变量被销毁,之后的$2就变成了$1),而变量值提前一位。同理,shift n后,前n位参数都会被销毁
命令替换
在bash中,$( )与` `(反引号)都是用来作命令替换的。
变量替换
一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围
+incdir+${PROJ_DEV}/system_vrf/tb/test_top/
+define+SYNOPSYS_SV +define+UVM_PACKER_MAX_BYTES=1500000
+define+<macro_name>[=<macro_text>]
`define <macro_name> <macro_text>
vlog +define+one=r1 +two=r2 +three=r3 test.v
`define定义的相同名字的宏定义
+define+<macro>
ln -s ../script/run_sim .
diff ddr_storeif_wdata.chk ./current_case/ddr_storeif_wdata.dat > ddr_storeif_wdata.diff
VIM
【在行首或行尾插入指定字符串】
行首 :%s/^/your_word/
行尾 :%s/$/your_word/
【vim 产生递增数据】
该命令适合在空文件中产生后,复制到需要文件;也可直接定位光标位置产生
r !seq 54 1994
54 起始数值
1094结束数值
【字母大小写转换】
~ 将光标下的字母改变大小写
【vim内部代码折叠展开】
zi 非编辑模式下直接敲击
【显示选中内容的行数和列数】
g ctrl+g
【显示两文件内容的不同】
vimdiff 文件1 文件2
【打开当前目录树,并返回】
#vim命令模式下
:Explore #当前窗口下打开
:Vexplore #竖直分割窗口打开
:Sexplore #水平分割窗口打开
:gf 编辑光标所在位置的文本go to file的缩写
:bf 返回到原来的文本处back to file的缩写
#Terminal 命令行下
# gvim /etc 直接跟文件夹
【分割窗口】
横向分割显示(小写o):$ vim -o filename1 filename2
纵向分割显示(大写O):$ vim -O filename1 filename2
如果已经用vim打开了一个文件,想要在窗口中同时再打开另一个文件:
横向分割显示::vs filename
纵向分割显示::sp filename
【撤回、关闭、切换】
撤回:返回命令模式,按 u
关闭光标所在的窗口::q #或 :close
关闭所有窗口::qa
切换窗口:ctrl + w w
【光标定位】
zz 屏幕滚动使得当前行成为屏幕的中间一行
【打开文件中路径,并返回】
gf 直接打开改路径下的文件
ctrl + ^ 退出该文件,返回之前进入的文件
【列操作】
1、esc退出编辑模式
2、鼠标选中对应列位置
3、ctrl V 进入visual block 模式
4、移动键盘上下左右键进行选中
5、d删除、y复制等
6、鼠标移动到插入位置 P粘贴
【列操作,添加多行注释】
1、esc退出编辑模式
2、鼠标选中对应列位置
3、ctrl V 进入visual block 模式
4、移动键盘上下键进行选中列
5、键盘大写模式,按 I ,进入插入模式
6、输入注释符号(只需在列首输入),ESC退出
【复制粘贴、替换插入】
Ctrl V 进入Block模式,选中后可对选中块进行处理:
y: yank 复制, P/p: (光标前/后)粘贴
P/p: 替换为buffer内容
r : 字符替换
U/u :字符大小写变换
I: 块前插入字符
A:块后插入字符
【复制多行】
1、将光标调到要复制的文本开始行,
2、使用Ctrl+v的方法进入块选择模式;
3、然后按住光标向下移动,移动到要复制文本结束的地方,按 y 复制;
4、将光标移动到要粘贴的地方,按p粘贴;
多行复制成功。
或者 直接拖动鼠标选中行,y复制,鼠标中键粘贴
单行复制
首先打开要文件,将光标调到要复制的行,按yy复制该行
将光标移动到要粘贴的地方,按p粘贴;
【全选】
Esc+gg+v+G是全选:
gg是光标定位到文件首行
v是进入可视模式
G是跳转到文件最后一行
【查找和替换】
命令模式下:查找
1、输入“/变量名”,进行查找,按n下跳、N上跳
2、或鼠标右键双击选中变量,按n下跳、N上跳
命令模式下:替换
:s/foo/bar 将当前行’foo‘全部替换为‘bar’
:5,15s/dog/cat/g 讲第5行至第15行之间进行替换
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/foo/bar/g 将所有行的’foo‘全部替换为’bar‘