diff --git a/execve_intercept.c b/execve_intercept.c index 44f9ae8..85d358e 100644 --- a/execve_intercept.c +++ b/execve_intercept.c @@ -112,27 +112,62 @@ void write_log(const char *filename, char *const argv[]) { fclose(log); } +// 判断字符是否为 ANSI 转义序列 +int is_ansi_escape_sequence(const char *str) { + // ANSI 转义序列的常见格式是以 ESC 开头,后跟 '[', 'm' 等 + return str[0] == '\033' && str[1] == '['; +} + // 复制标准输出和错误输出到日志文件 void duplicate_output_to_log() { - int out_fd = open(LOG_OUT_FILE, O_WRONLY | O_CREAT | O_APPEND, 0644); - if (out_fd == -1) { + int log_fd = open(LOG_OUT_FILE, O_WRONLY | O_CREAT | O_APPEND, 0644); + if (log_fd == -1) { perror("Failed to open log file"); return; } - // 复制 stdout 和 stderr 到 log 文件 - if (dup2(out_fd, STDOUT_FILENO) == -1 || dup2(out_fd, STDERR_FILENO) == -1) { - perror("Failed to redirect output"); - close(out_fd); + int pipe_fds[2]; + if (pipe(pipe_fds) == -1) { + perror("Failed to create pipe"); + close(log_fd); return; } - // 关闭文件描述符,因为 stdout/stderr 现在已经指向它 - close(out_fd); + pid_t pid = fork(); + if (pid == -1) { + perror("Failed to fork"); + close(log_fd); + close(pipe_fds[0]); + close(pipe_fds[1]); + return; + } + + if (pid == 0) { // 子进程:读取 pipe,并写入日志 + close(pipe_fds[1]); // 关闭写端 + char buffer[1024]; + ssize_t n; + while ((n = read(pipe_fds[0], buffer, sizeof(buffer))) > 0) { + // 输出到终端时保留颜色 + if (isatty(STDOUT_FILENO)) { + write(STDOUT_FILENO, buffer, n); // 输出到终端 + } else { + // 不支持颜色输出时,直接输出内容 + write(STDOUT_FILENO, buffer, n); + } + write(log_fd, buffer, n); // 写入日志 + } + close(pipe_fds[0]); + close(log_fd); + _exit(0); + } else { // 父进程:写入 pipe + close(pipe_fds[0]); // 关闭读端 + dup2(pipe_fds[1], STDOUT_FILENO); + dup2(pipe_fds[1], STDERR_FILENO); + close(pipe_fds[1]); + close(log_fd); + } } - - typedef int (*orig_execve_type)(const char *filename, char *const argv[], char *const envp[]); diff --git a/intercept.so b/intercept.so index 49bbfac..028375a 100755 Binary files a/intercept.so and b/intercept.so differ diff --git a/logs/execve.log b/logs/execve.log index 84246e8..141806f 100644 --- a/logs/execve.log +++ b/logs/execve.log @@ -188,3 +188,89 @@ arg[2]: python arg[0]: /usr/lib/command-not-found arg[1]: -- arg[2]: pip +[Wed Mar 26 16:09:32 2025 +] Command: /usr/bin/lesspipe +arg[0]: lesspipe +[Wed Mar 26 16:09:32 2025 +] Command: /usr/bin/dircolors +arg[0]: dircolors +arg[1]: -b +[Wed Mar 26 16:09:34 2025 +] Command: /usr/bin/make +arg[0]: make +[Wed Mar 26 16:09:40 2025 +] Command: /usr/bin/lesspipe +arg[0]: lesspipe +[Wed Mar 26 16:09:40 2025 +] Command: /usr/bin/dircolors +arg[0]: dircolors +arg[1]: -b +[Wed Mar 26 16:09:41 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +[Wed Mar 26 16:11:44 2025 +] Command: /usr/bin/lesspipe +arg[0]: lesspipe +[Wed Mar 26 16:11:44 2025 +] Command: /usr/bin/dircolors +arg[0]: dircolors +arg[1]: -b +[Wed Mar 26 16:11:44 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +[Wed Mar 26 16:11:47 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +[Wed Mar 26 16:11:47 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +arg[2]: -alF +[Wed Mar 26 16:11:53 2025 +] Command: /usr/lib/command-not-found +arg[0]: /usr/lib/command-not-found +arg[1]: -- +arg[2]: pip +[Wed Mar 26 16:11:56 2025 +] Command: /usr/bin/rm +arg[0]: rm +[Wed Mar 26 16:14:18 2025 +] Command: /usr/bin/lesspipe +arg[0]: lesspipe +[Wed Mar 26 16:14:18 2025 +] Command: /usr/bin/dircolors +arg[0]: dircolors +arg[1]: -b +[Wed Mar 26 16:14:19 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +[Wed Mar 26 16:14:20 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +arg[2]: -alF +[Wed Mar 26 16:14:31 2025 +] Command: /usr/bin/lesspipe +arg[0]: lesspipe +[Wed Mar 26 16:14:31 2025 +] Command: /usr/bin/dircolors +arg[0]: dircolors +arg[1]: -b +[Wed Mar 26 16:14:34 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +[Wed Mar 26 16:14:36 2025 +] Command: /usr/bin/ls +arg[0]: ls +arg[1]: --color=auto +arg[2]: -alF +[Wed Mar 26 16:14:59 2025 +] Command: /usr/bin/git +arg[0]: git +arg[1]: add +arg[2]: . diff --git a/logs/execve_out.log b/logs/execve_out.log new file mode 100644 index 0000000..1aa58a4 --- /dev/null +++ b/logs/execve_out.log @@ -0,0 +1,91 @@ +export LESSOPEN="| /usr/bin/lesspipe %s"; +export LESSCLOSE="/usr/bin/lesspipe %s %s"; +LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'; +export LS_COLORS +make: 对“all”无需做任何事。 +export LESSOPEN="| /usr/bin/lesspipe %s"; +export LESSCLOSE="/usr/bin/lesspipe %s %s"; +LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'; +export LS_COLORS +config +execve_intercept.c +intercept.so +logs +Makefile +README.md +test_bash.sh +export LESSOPEN="| /usr/bin/lesspipe %s"; +export LESSCLOSE="/usr/bin/lesspipe %s %s"; +LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'; +export LS_COLORS +config +execve_intercept.c +intercept.so +logs +Makefile +README.md +test_bash.sh +config +execve_intercept.c +intercept.so +logs +Makefile +README.md +test_bash.sh +总计 62 +drwxrwxr-x 5 qcqcqc qcqcqc 10 3月 26 16:11 ./ +drwxrwxr-x 12 qcqcqc qcqcqc 12 3月 20 21:08 ../ +drwxrwxr-x 2 qcqcqc qcqcqc 3 3月 26 09:04 config/ +-rw-rw-r-- 1 qcqcqc qcqcqc 9139 3月 26 16:11 execve_intercept.c +drwxrwxr-x 8 qcqcqc qcqcqc 14 3月 26 16:09 .git/ +-rwxrwxr-x 1 qcqcqc qcqcqc 21912 3月 26 16:11 intercept.so* +drwxrwxr-x 2 qcqcqc qcqcqc 4 3月 26 16:09 logs/ +-rw-rw-r-- 1 qcqcqc qcqcqc 222 3月 26 09:02 Makefile +-rw-rw-r-- 1 qcqcqc qcqcqc 973 3月 26 10:08 README.md +-rwxrwxr-x 1 qcqcqc qcqcqc 31 3月 26 09:02 test_bash.sh* +找不到命令 “pip”,但可以通过以下软件包安装它: +sudo apt install python3-pip +export LESSOPEN="| /usr/bin/lesspipe %s"; +export LESSCLOSE="/usr/bin/lesspipe %s %s"; +LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'; +export LS_COLORS +config +execve_intercept.c +intercept.so +logs +Makefile +README.md +test_bash.sh +总计 62 +drwxrwxr-x 5 qcqcqc qcqcqc 10 3月 26 16:14 ./ +drwxrwxr-x 12 qcqcqc qcqcqc 12 3月 20 21:08 ../ +drwxrwxr-x 2 qcqcqc qcqcqc 3 3月 26 09:04 config/ +-rw-rw-r-- 1 qcqcqc qcqcqc 9595 3月 26 16:14 execve_intercept.c +drwxrwxr-x 8 qcqcqc qcqcqc 14 3月 26 16:09 .git/ +-rwxrwxr-x 1 qcqcqc qcqcqc 26104 3月 26 16:14 intercept.so* +drwxrwxr-x 2 qcqcqc qcqcqc 4 3月 26 16:09 logs/ +-rw-rw-r-- 1 qcqcqc qcqcqc 222 3月 26 09:02 Makefile +-rw-rw-r-- 1 qcqcqc qcqcqc 973 3月 26 10:08 README.md +-rwxrwxr-x 1 qcqcqc qcqcqc 31 3月 26 09:02 test_bash.sh* +export LESSOPEN="| /usr/bin/lesspipe %s"; +export LESSCLOSE="/usr/bin/lesspipe %s %s"; +LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:'; +export LS_COLORS +config +execve_intercept.c +intercept.so +logs +Makefile +README.md +test_bash.sh +总计 62 +drwxrwxr-x 5 qcqcqc qcqcqc 10 3月 26 16:14 ./ +drwxrwxr-x 12 qcqcqc qcqcqc 12 3月 20 21:08 ../ +drwxrwxr-x 2 qcqcqc qcqcqc 3 3月 26 09:04 config/ +-rw-rw-r-- 1 qcqcqc qcqcqc 9595 3月 26 16:14 execve_intercept.c +drwxrwxr-x 8 qcqcqc qcqcqc 14 3月 26 16:09 .git/ +-rwxrwxr-x 1 qcqcqc qcqcqc 26104 3月 26 16:14 intercept.so* +drwxrwxr-x 2 qcqcqc qcqcqc 4 3月 26 16:09 logs/ +-rw-rw-r-- 1 qcqcqc qcqcqc 222 3月 26 09:02 Makefile +-rw-rw-r-- 1 qcqcqc qcqcqc 973 3月 26 10:08 README.md +-rwxrwxr-x 1 qcqcqc qcqcqc 31 3月 26 09:02 test_bash.sh*